document.onkeypress = keyPress;
var PurchasePrice = 0;
var DownPayment = 0;
var Interest = 0;
var InterestRate = 0;
var Years = 0;
var AnnualPropertyTax = 0;
var AnnualInsurance = 0;
var MonthlyMortgagePayment = 0;

function Calculate() {
    PurchasePrice = GetValue($("#txtPurchasePrice").val().replace(",", ""));
    DownPayment = GetValue($("#txtDownPayment").val().replace(",", ""));
    Interest = GetValue($("#txtInterest").val());
    InterestRate = Interest/100;
    Years = GetValue($("#txtYears").val());
    AnnualPropertyTax = GetValue($("#txtAnnualPropertyTax").val().replace(",", ""));
    AnnualInsurance = GetValue($("#txtAnnualInsurance").val().replace(",", ""));
    
    if( PurchasePrice != 0 && Interest != 0 && Years != 0) {
        ClearErrors();
        var AmountFinanced = PurchasePrice - DownPayment;
        ListWisconsin.MapService.GetPayment(InterestRate/12,Years*12,AmountFinanced, GetResults);
    }
    else {
        ClearResults();
        Visible("#rowMonthlyMortgagePayment", "hidden");
        Visible("#rowError", "visible");
        Visible("#errPrice", PurchasePrice == 0 ? "visible" : "hidden");
        Visible("#errInterest", Interest == 0 ? "visible" : "hidden");
        Visible("#errYears", Years == 0 ? "visible" : "hidden");
    }
}

function Visible(element, visible) {
    $(element).css("visibility", visible);
}

function GetValue(value) {
    if( value == "" || isNaN(value/1) || value/1 < 0 )
        return "0";
    else
      return value/1;      
}

function ClearErrors() {
    Visible("#rowError", "hidden");
    Visible("#errPrice", "hidden");
    Visible("#errInterest", "hidden");
    Visible("#errYears", "hidden");
}

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));
    if( cents != "00" )
      return (((sign)?'':'-') + '$' + num + '.' + cents);
    else
      return (((sign)?'':'-') + '$' + num);
}

// capture key press
function keyPress(e) {
    var key = e ? e.which : window.event.keyCode;
    if (key == 13) {
        Calculate();
        return false;
    }
    else
        return true;
}

function GetResults(mmp) {
    MonthlyMortgagePayment = mmp/1;
    $("#MonthlyMortgagePayment").html(formatCurrency(MonthlyMortgagePayment));
    Visible("#rowMonthlyMortgagePayment", "visible");
    if( AnnualPropertyTax != 0 || AnnualInsurance != 0 ) {
        var TotalMonthlyPayment = MonthlyMortgagePayment;
        Visible("#rowHR1", "visible");
        if( AnnualPropertyTax != 0 ) {
            var TaxPerMonth = AnnualPropertyTax/12;
            $("#TaxPerMonth").html(formatCurrency(TaxPerMonth));
            Visible("#rowTaxPerMonth", "visible");
            TotalMonthlyPayment += TaxPerMonth;
        }
        else {
            $("#TaxPerMonth").html("");
            Visible("#rowTaxPerMonth", "hidden");
        }
        if( AnnualInsurance != 0 ) {
            var InsurancePerMonth = AnnualInsurance/12;
            $("#InsurancePerMonth").html(formatCurrency(InsurancePerMonth));
            Visible("#rowInsurancePerMonth", "visible");
            TotalMonthlyPayment += InsurancePerMonth;
        }
        else {
            $("#InsurancePerMonth").html("");
            Visible("#rowInsurancePerMonth", "hidden");
        }
        Visible("#rowHR2", "visible");
        $("#TotalMonthlyPayment").html(formatCurrency(TotalMonthlyPayment));
        Visible("#rowTotalMonthlyPayment", "visible");
    }
    else {
        ClearResults();
    }
}

function ClearResults() {
    $("#TaxPerMonth").html("");
    Visible("#rowTaxPerMonth", "hidden");
    $("#InsurancePerMonth").html("");
    Visible("#rowInsurancePerMonth", "hidden");
    Visible("#rowHR1", "hidden");
    Visible("#rowHR2", "hidden");
    $("#TotalMonthlyPayment").html("");
    Visible("#rowTotalMonthlyPayment", "hidden");
}
