﻿function Morgcal() {

    if (ValidateCalc()) {
        var loanAmount = $("txtLoanAmount").value;
        var interestRate = $("txtInterestRate").value;
        var term = $("txtNumberOfYears").value;

        var paymentCount = $("divNumberOfPayments");
        var monthlyPayment = $("divMonthlyPayment");

        DownPayment = "0"
        AnnualInterestRate = interestRate / 100
        MonthRate = AnnualInterestRate / 12
        NumPayments = term * 12
        Prin = loanAmount - DownPayment

        MonthPayment = Math.floor((Prin * MonthRate) / (1 - Math.pow((1 + MonthRate), (-1 * NumPayments))) * 100) / 100
        paymentCount.innerHTML = NumPayments
        monthlyPayment.innerHTML = formatCurrency(MonthPayment)
    }
    else
        ClearCalculationValues();
}

function ClearCalculationValues() {

    $("divNumberOfPayments").innerHTML = "";
    $("divMonthlyPayment").innerHTML = "";
}

function ValidateCalc() {

    var loanAmount = $("txtLoanAmount").value;
    var interestRate = $("txtInterestRate").value;
    var term = $("txtNumberOfYears").value;

    var message = "";
    if (loanAmount == "")
        message += "\n\rLoan Amount is required";
    else if (!IsNumeric(loanAmount))
        message += "\n\rLoan Amount is Invalid";

    if (interestRate == "")
        message += "\n\rAnnual Interest Rate is Required";
    else if (!IsNumeric(interestRate))
        message += "\n\rAnnual Interest Rate is Invalid";

    if (term == "")
        message += "\n\rTerm of Loan is Required";
    else if (!IsNumeric(term))
        message += "\n\rTerm of Loan is Invalid";
    else if (parseInt(term) <= 0)
        message += "\n\rTerm of Loan must be greater than 0";


    if (message != "") {
        alert(message);
        return false;
    }
    else
        return true;
}
function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}
function IsNumeric(sText) {
    var ValidChars = "0123456789.";
    var Char;
    var decimalUsed = false;

    for (i = 0; i < sText.length; i++) {
        Char = sText.charAt(i);
        if (!(i == 0 && Char == "-")) {
            if (Char == '.') {
                if (decimalUsed)
                    return false;
                else
                    decimalUsed = true;
            }            
            if (ValidChars.indexOf(Char) == -1) {
                return false;
            }
        }
    }
    return true;
}
function $(element) {
    return document.getElementById(element);
}

function HandleCalcEnterCommand(e) {
    var keynum;

    if (window.event) // IE
    {
        keynum = e.keyCode;
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which;
    }
    if (keynum == 13)
        Morgcal();
}
