﻿/*global window: true, alert: true */

var CBCMortgageCalculator = {};
var i;
var interestPayment;

CBCMortgageCalculator.roundToCents = function (n) {
    var Cents = n * 100;
    Cents = Math.round(Cents);
    var strCents = "" + Cents;
    var len = strCents.length;
    return strCents.substring(0, len - 2) + "." + strCents.substring(len - 2, len);
};

CBCMortgageCalculator.Monthly = function (principal, years, apr) {
    var rate = apr / 12;
    var payments = years * 12;
    return CBCMortgageCalculator.roundToCents(principal * rate / (1 - (1 / Math.pow(1 + rate, payments))));
};

CBCMortgageCalculator.MonthlyAmortization = function (principal, years, apr) {
    var payments = years * 12;
    var monthlyInterest = apr / 12;
    var monthlyPayment = CBCMortgageCalculator.Monthly(principal, years, apr);

    var newWin = window.open("", "", "width=300,height=500,scrollbars=1,resizable=1");

    newWin.document.open();

    newWin.document.write('<HTML><HEAD><TITLE></TITLE><style>body{color:#555555;}</style></HEAD><BODY>');
    newWin.document.write("<CENTER><p>");

    newWin.document.write("<strong>Amortization Table</strong>");
    newWin.document.write("<HR>");

    newWin.document.write("<TABLE cellspacing=\"0\" cellpadding=\"4px\" style=\"border:1px solid #ccc\">");

    newWin.document.write("<TR>");
    newWin.document.write("<TH COLSPAN=4>");
    newWin.document.write("$" + CBCMortgageCalculator.roundToCents(principal));
    newWin.document.write(" at " + (apr * 100) + "%");
    newWin.document.write(" over " + years + " years.<BR>");
    newWin.document.write("Monthly payment: $" + CBCMortgageCalculator.Monthly(principal, years, apr));
    newWin.document.write("</TH>");
    newWin.document.write("</TR>");

    newWin.document.write("<TR >");
    newWin.document.write("<TH style=\"border-bottom:1px solid #ccc\" COLSPAN=4>Payment</TH>");
    newWin.document.write("</TR>");

    newWin.document.write("<TR bgcolor=\"#aaaaaa\">");
    newWin.document.write("<TH>Month</TH>");
    newWin.document.write("<TH>Interest</TH>");
    newWin.document.write("<TH>Principal</TH>");
    newWin.document.write("<TH>Balance</TH>");
    newWin.document.write("</TR>");

    for (i = 1; i <= payments; i++) {

        if (i % 2 === 0) {
            newWin.document.write("<TR>");
        } else {
            newWin.document.write("<TR bgcolor=\"#E9E9E9\">");
        }

        newWin.document.write("<TD>" + i + "</TD>");

        interestPayment = principal * monthlyInterest;
        newWin.document.write("<TD>$" + CBCMortgageCalculator.roundToCents(interestPayment) + "</TD>");



        var principalPayment = monthlyPayment - interestPayment;

        principal -= CBCMortgageCalculator.roundToCents(principalPayment);

        if (i == payments) {
            principalPayment = principalPayment + principal;
            principal = 0;
        }

        newWin.document.write("<TD>$" + CBCMortgageCalculator.roundToCents(principalPayment) + "</TD>");

        newWin.document.write("<TD>$" + CBCMortgageCalculator.roundToCents(principal) + "</TD>");

        newWin.document.write("</TD>");
    }
    newWin.document.write("</TABLE>");

    newWin.document.write("<form method='post'><input type='button' value='Close Window' onClick='window.close()'></p></CENTER>");

    newWin.document.close();
};

CBCMortgageCalculator.compute = function (form) {
    if ((form.CBCMortgageCalculator_principal.value.length !== 0) &&
 (form.CBCMortgageCalculator_apr.value.length !== 0) &&
 (form.CBCMortgageCalculator_years.value.length !== 0)) {
        var principal = form.CBCMortgageCalculator_principal.value;
        var apr = form.CBCMortgageCalculator_apr.value / 100.0;
        var years = form.CBCMortgageCalculator_years.value;

        if (years === 0.0) {
            alert(
 "You have no monthly payment, since the number of years is zero.");
        }
        else {
            CBCMortgageCalculator.MonthlyAmortization(principal, years, apr);
        }
    }
    else {
        alert("You must fill in all the fields.");
    }
};
CBCMortgageCalculator.Morgcal = function (formName) {
    //form = document.myform
    //form = document.forms[formName];
    var form = formName;
    var principal = form.CBCMortgageCalculator_principal.value;

    var DownPayment = "0";
    var Annualapr = form.CBCMortgageCalculator_apr.value / 100;
    var years = form.CBCMortgageCalculator_years.value;
    var MonthRate = Annualapr / 12;
    var NumPayments = years * 12;
    var Prin = principal - DownPayment;

    var MonthPayment = Math.floor((Prin * MonthRate) / (1 - Math.pow((1 + MonthRate), (-1 * NumPayments))) * 100) / 100;
    form.CBCMortgageCalculator_payments.value = NumPayments;
    form.CBCMortgageCalculator_monthlyPayment.value = MonthPayment.toFixed(2);
};
