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(document.getElementById("txtPurchasePrice").value.replace(/,/g,""));
    DownPayment = GetValue(document.getElementById("txtDownPayment").value.replace(/,/g,""));
    Interest = GetValue(document.getElementById("txtInterest").value);
    InterestRate = Interest/100;
    Years = GetValue(document.getElementById("txtYears").value);
    AnnualPropertyTax = GetValue(document.getElementById("txtAnnualPropertyTax").value.replace(/,/g,""));
    AnnualInsurance = GetValue(document.getElementById("txtAnnualInsurance").value.replace(/,/g,""));
    
    if( PurchasePrice != 0 && Interest != 0 && Years != 0)
    {
        ClearErrors();
        var AmountFinanced = PurchasePrice - DownPayment;
        
        ListWisconsin.MapService.GetPayment(InterestRate/12,Years*12,AmountFinanced, GetResults);
    }
    else
    {
        ClearResults();
        document.getElementById("rowMonthlyMortgagePayment").style.visibility = "hidden";
        document.getElementById("rowError").style.visibility = "visible";
        if( PurchasePrice == 0 )
            document.getElementById("errPrice").style.visibility = "visible";
        else
            document.getElementById("errPrice").style.visibility = "hidden";
        if( Interest == 0 )
            document.getElementById("errInterest").style.visibility = "visible";
        else
            document.getElementById("errInterest").style.visibility = "hidden";
        if( Years == 0 )
            document.getElementById("errYears").style.visibility = "visible";
        else
            document.getElementById("errYears").style.visibility = "hidden";
    }
}

function GetValue(value)
{
    if( value == "" || isNaN(value/1) || value/1 < 0 )
        return "0";
    else
      return value/1;      
}

function ClearErrors()
{
    document.getElementById("rowError").style.visibility = "hidden";
    document.getElementById("errPrice").style.visibility = "hidden";
    document.getElementById("errInterest").style.visibility = "hidden";
    document.getElementById("errYears").style.visibility = "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;
    
    document.getElementById("MonthlyMortgagePayment").innerHTML = formatCurrency(MonthlyMortgagePayment);
    document.getElementById("rowMonthlyMortgagePayment").style.visibility = "visible";
    
    if( AnnualPropertyTax != 0 || AnnualInsurance != 0 )
    {
        var TotalMonthlyPayment = MonthlyMortgagePayment;
        document.getElementById("rowHR1").style.visibility = "visible";
        if( AnnualPropertyTax != 0 )
        {
            var TaxPerMonth = AnnualPropertyTax/12;
            document.getElementById("TaxPerMonth").innerHTML = formatCurrency(TaxPerMonth);
            document.getElementById("rowTaxPerMonth").style.visibility = "visible";
            TotalMonthlyPayment += TaxPerMonth;
        }
        else
        {
            document.getElementById("TaxPerMonth").innerHTML = "";
            document.getElementById("rowTaxPerMonth").style.visibility = "hidden";
        }
        if( AnnualInsurance != 0 )
        {
            var InsurancePerMonth = AnnualInsurance/12;
            document.getElementById("InsurancePerMonth").innerHTML = formatCurrency(InsurancePerMonth);
            document.getElementById("rowInsurancePerMonth").style.visibility = "visible";
            TotalMonthlyPayment += InsurancePerMonth;
        }
        else
        {
            document.getElementById("InsurancePerMonth").innerHTML = "";
            document.getElementById("rowInsurancePerMonth").style.visibility = "hidden";
        }
        document.getElementById("rowHR2").style.visibility = "visible";
        document.getElementById("TotalMonthlyPayment").innerHTML = formatCurrency(TotalMonthlyPayment);
        document.getElementById("rowTotalMonthlyPayment").style.visibility = "visible";
    }
    else
    {
        ClearResults();
    }
}

function ClearResults()
{
    document.getElementById("TaxPerMonth").innerHTML = "";
    document.getElementById("rowTaxPerMonth").style.visibility = "hidden";
    document.getElementById("InsurancePerMonth").innerHTML = "";
    document.getElementById("rowInsurancePerMonth").style.visibility = "hidden";
    document.getElementById("rowHR1").style.visibility = "hidden";
    document.getElementById("rowHR2").style.visibility = "hidden";
    document.getElementById("TotalMonthlyPayment").innerHTML = "";
    document.getElementById("rowTotalMonthlyPayment").style.visibility = "hidden";
}