﻿var _TARGET_CALCULATOR = "";

function contentPageLoad() {
    //ddtabmenu.definemenu("ddtabs4", 0);  //initialize Tab Menu #4 with 3rd tab selected

    // Calculator 1
    $("#txtIncome").keyup(function(event) {
        $("#txtInstallment").attr("value", $("#txtIncome").attr("value") * 0.35);
    });
    $("#btnCalculate").click(Calculate1);

    // Calculator 2
    $("#cal2_btnCalculate").click(Calculate2);

    // Calculator 3
    $("#cal3_btnCalculate").click(Calculate3);
    $("#cal4_btnReset").click(function(event) {
        $("#tblCalculator3").css("display", "none");
    });

    // Calculator 4
    $("#cal4_btnCalculate").click(Calculate4);
    $("#cal4_btnReset").click(function(event) {
        $("#tblCalculator4").css("display", "none");
    });

    // Show default calculator
    $("#ct1").show();

    // Link
    $("#menu_ct1").hover(ShowMenu, MoveOut);
    $("#menu_ct2").hover(ShowMenu, MoveOut);
    $("#menu_ct3").hover(ShowMenu, MoveOut);
    $("#menu_ct4").hover(ShowMenu, MoveOut);

    _TARGET_CALCULATOR = "1";
    $(document).keydown(CalculatorEnter);
    $("#menu_ct1").addClass("current");
}

function ShowMenu(event) {
    event.preventDefault();

    var obj = "#" + $(this).attr("rel");
    _TARGET_CALCULATOR = obj;
    
    var other = "#ct";
    for (var i = 1; i <= 4; i++) {
        var test = other + i;
        if (test != obj) {
            $(test).hide();
            $("#menu_ct" + i).removeClass("current");
        } else {
            $("#menu_ct" + i).addClass("current");
        }
    }

    $(obj).show();
}

function CalculatorEnter(event) {
    if (event.keyCode == 13) {
        if (_TARGET_CALCULATOR.indexOf("1") > -1) {
            Calculate1(event);
        } else if (_TARGET_CALCULATOR.indexOf("2") > -1) {
            Calculate2(event);
        } else if (_TARGET_CALCULATOR.indexOf("3") > -1) {
            Calculate3(event);
        } else if (_TARGET_CALCULATOR.indexOf("4") > -1) {
            Calculate4(event);
        }
        return false;
    }    
}

function MoveOut(event) { $(this).addClass("active"); }

function CheckForDigit(checkValue) {
    var valid = true;

    if (isNaN(checkValue))
        valid = false;

    if (checkValue == "")
        valid = false;

    return valid;
}

function Calculate1(event) {
    var income = $("#txtIncome").attr("value");
    var installment = $("#txtInstallment").attr("value");
    var tenor = $("#txtTenor").attr("value");
    var interestRate = $("#txtInterestRate").attr("value");

    if (CheckForDigit(income) && CheckForDigit(installment) && CheckForDigit(tenor) && CheckForDigit(interestRate)) {
        var ir = (interestRate * 1) + 1; // For LH, add 1 more
        var interest = 1 + ((ir * .01) / 12);
        var totalMonths = tenor * 12;
        var PV = 0;

        for (var month = 1; month <= totalMonths; month++) {
            var iPow = Math.pow(interest, month);
            PV = PV + (installment / iPow);
        }

        PV = Math.round(PV);

        $("#txtLoan").attr("value", FormatNumberToString(PV));
    }
    else
        alert("ไม่สามารถคำนวนวงเงินสินเชื่อเพื่อการซื้อบ้านได้");
}

function Calculate2(event) {
    var years = $("#cal2_txtTenor").attr("value");
    var rate = $("#cal2_txtInterestRate").attr("value");
    var pv = $("#cal2_txtLoan").attr("value");

    if (CheckForDigit(years) && CheckForDigit(rate) && CheckForDigit(pv)) {
        var ir = (rate * 1) + 1; // For LH, add 1 more
        var installment = CalculatePMT(pv, ir, years);
        $("#cal2_txtInstallment").attr("value", FormatNumberToString(installment));
        $("#cal2_txtMinimumIncome").attr("value", FormatNumberToString(installment / 0.4));
    }
    else
        alert("ไม่สามารถคำนวนได้");
}

function Calculate3(event) {
    var interestRate = $("#cal3_txtInterestRate").attr("value");
    var tenor = $("#cal3_txtTenor").attr("value");
    var loanAmount = $("#cal3_txtLoanAmount").attr("value");

    if (CheckForDigit(interestRate) && CheckForDigit(tenor) && CheckForDigit(loanAmount)) {
        $("#tblCalculator3").css("display", "block");
        $("#tblCalculator3 tbody").empty();

        var totalBegin = loanAmount;
        var totalEnd = 0;

        var totalInstallment = 0;

        for (var currentMonth = 1; currentMonth <= tenor * 12; currentMonth++) {
            var installment = CalculatePMT(loanAmount, interestRate, tenor);
            var installmentInterest = CalculatePMT(totalBegin, interestRate, tenor * 12);

            var installmentNet = installment - installmentInterest;

            totalBegin = totalBegin - installmentNet;

            $("#tblCalculator3 tbody").append("<tr><td>" + currentMonth + "</td><td>" + FormatNumberToString(installment) + "</td><td>" + FormatNumberToString(installmentInterest) + "</td><td>" + FormatNumberToString(installmentNet) + "</td><td>" + FormatNumberToString(totalBegin) + "</td></tr>");
        }
    }
    else
        alert("ไม่สามารถคำนวนได้");
}

function Calculate4(event) {

    var interestRate = $("#cal4_txtInterestRate").attr("value");

    if (CheckForDigit(interestRate)) {

        $("#tblCalculator4").css("display", "block");
        $("#tblCalculator4 tbody").empty();

        for (var amount = 500000; amount <= 12000000; amount += 500000) {
            var installment5 = CalculatePMT(amount, interestRate, 5);
            var installment10 = CalculatePMT(amount, interestRate, 10);
            var installment15 = CalculatePMT(amount, interestRate, 15);
            var installment20 = CalculatePMT(amount, interestRate, 20);
            var installment25 = CalculatePMT(amount, interestRate, 25);
            var installment30 = CalculatePMT(amount, interestRate, 30);

            $("#tblCalculator4 tbody").append("<tr><td>" + FormatNumberToString(amount) + "</td><td>" + FormatNumberToString(installment5) + "</td><td>" + FormatNumberToString(installment10) + "</td><td>" + FormatNumberToString(installment15) + "</td><td>" + FormatNumberToString(installment20) + "</td><td>" + FormatNumberToString(installment25) + "</td><td>" + FormatNumberToString(installment30) + "</td></tr>");
        }
    }
    else
        alert("ไม่สามารถคำนวนได้");
}

function CalculatePV(interestRate, tenor, installment) {
    var interest = 1 + ((interestRate * .01) / 12);
    var totalMonths = tenor * 12;
    var PV = 0;

    for (var month = 1; month <= totalMonths; month++) {
        var iPow = Math.pow(interest, month);
        PV = PV + (installment / iPow);
    }

    PV = Math.round(PV);
    return PV;
}

function CalculatePVinPeriod(interestRate, period, installment) {
    var interest = 1 + ((interestRate * .01) / 12);
    var iPow = Math.pow(interest, period);
    return (installment / iPow);
}

function CalculatePMT(pv, rate, years) {
    return Math.round(pv * ((rate * 0.01 / 12) / (1 - Math.pow(1 / (1 + ((rate * 0.01 / 12))), years * 12))));
}

function FormatNumberToString(nStr) {
    //nStr = nStr.toFixed(2);
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}