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

    // All fields that must trigger calculation
    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",
        "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) {
        return parseFloat(document.getElementsByName(id)[0].value) || 0;
    }

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

    function calculate() {

        // 1️ Base Values
        let gross_total_income = getVal("gross_total_income");
        let disallowance_14a = getVal("disallowance_14a");
        let disallowance_37 = getVal("disallowance_37");

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

        // 3️ Formula: TOTAL DEDUCTION
        let total_deductions = d80_business + deduction_sec37;
        // (deduction_80ia_business + deduction_sec37_disallowance)

        // 4️ Net Taxable Income
        let net_taxable_income =
            (gross_total_income + disallowance_14a + disallowance_37)
            - total_deductions
            - deduction_80g;

        setVal("net_taxable_income", net_taxable_income);

        // 5️ Tax @ 30%
        let tax_30_percent = net_taxable_income * 0.30;
        setVal("tax_30_percent", tax_30_percent);

        // 6️ Book Profit – Tax Payable
        let tax_payable = getVal("tax_book_profit_18_5");
        // (tax_payable = tax_book_profit_18_5)

        // 7️ Surcharge
        let surcharge_12 = tax_30_percent * 0.12;
        setVal("surcharge_12", surcharge_12);

        // 8️ Education Cess
        let edu_cess_3 = (tax_30_percent + surcharge_12) * 0.03;
        setVal("edu_cess_3", edu_cess_3);

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

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

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

        // 1️2️ Assessment side – 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);

        // 1️3️ Refund / Payable
        let refund = total_tax - tax_on_assessment;
        setVal("refund", refund);
    }

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