document.addEventListener("DOMContentLoaded", function () {

    const fields = [
        "gross_total_income", "disallowance_14a", "disallowance_37",
        "deduction_80ia_business", "deduction_sec37_disallowance", "deduction_80g",
        "net_taxable_income", "tax_30_percent", "tax_book_profit_18_5",
        "tax_payable", "surcharge_12", "edu_cess_3", "total_tax_payable",
        "mat_credit", "interest_234c", "total_tax",
        "advance_tax", "tds", "tcs", "tax_on_assessment", "refund"
    ];

    function getVal(id) {
        let el = document.getElementsByName(id)[0];
        return el ? parseFloat(el.value) || 0 : 0;
    }

    function setVal(id, value) {
        let el = document.getElementsByName(id)[0];
        if (el) el.value = Number(value).toFixed(2);
    }

    function calculate() {

        // Base values
        let gross_total_income = getVal("gross_total_income");
        let disallowance_14a = getVal("disallowance_14a");
        let disallowance_37 = getVal("disallowance_37");

        // Deductions
        let d80_business = getVal("deduction_80ia_business");
        let deduction_sec37 = getVal("deduction_sec37_disallowance");
        let deduction_80g = getVal("deduction_80g");

        // Net Taxable Income
        let net_taxable_income =
            (gross_total_income + disallowance_14a + disallowance_37)
            - (d80_business + deduction_sec37)
            - deduction_80g;

        setVal("net_taxable_income", net_taxable_income);

        // 30% tax
        let tax_30_percent = net_taxable_income * 0.30;
        setVal("tax_30_percent", tax_30_percent);

        // Book profit tax (user input)
        let tax_payable = getVal("tax_book_profit_18_5");
        setVal("tax_payable", tax_payable);

        // Surcharge 12%
        let surcharge_12 = tax_payable * 0.12;
        setVal("surcharge_12", surcharge_12);

        // Education Cess 3%
        let edu_cess_3 = (tax_payable + surcharge_12) * 0.03;
        setVal("edu_cess_3", edu_cess_3);

        // Total Tax Payable
        let total_tax_payable = tax_payable + surcharge_12 + edu_cess_3;
        setVal("total_tax_payable", total_tax_payable);

        // MAT + Interest
        let mat_credit = getVal("mat_credit");
        let interest_234c = getVal("interest_234c");

        // Total Tax
        let total_tax = total_tax_payable + mat_credit + interest_234c;
        setVal("total_tax", total_tax);

        // Assessment → Advance Tax + TDS + TCS
        let advance_tax = getVal("advance_tax");
        let tds = getVal("tds");
        let tcs = getVal("tcs");

        let tax_on_assessment = advance_tax + tds + tcs;
        setVal("tax_on_assessment", tax_on_assessment);

        // Refund (or payable)
        let refund = total_tax - tax_on_assessment;
        setVal("refund", refund);
    }

    // Attach listeners
    fields.forEach(id => {
        let el = document.getElementsByName(id)[0];
        if (el) el.addEventListener("input", calculate);
    });

});
