﻿// Calculates Mortgage
function CalculateMortgage(txtMortPrice,txtMortDownPayment,ddlLoanRate,ddlLoanTerm)
{
    var price = txtMortPrice.value;
    var downPayment = txtMortDownPayment.value;   

    // Gets selected value from dropdownlist
    var loanRate = parseFloat(ddlLoanRate.options[ddlLoanRate.selectedIndex].value);
    var loanTerm = parseFloat(ddlLoanTerm.options[ddlLoanTerm.selectedIndex].value);

    if(isNaN(price) == true)
    {
        alert("Please enter a valid price for the price field.");	    
	    //txtMortPrice.value = "";
	    txtMortPrice.focus();
	    return false;
    }
    if(isNaN(downPayment) == true)
    {
        alert("Please enter a valid amount or 0 for the down payment.");	    
	    //txtMortDownPayment.value = "";
	    txtMortDownPayment.focus();		    
	    return false;
    }
    
    var price = parseInt(price);
    var downPayment = parseInt(downPayment);               
    
    var PriceRegExp="^[\\d]+[\\d\,]*[\.]?[\\d]*$";
    var regexpPrice=new RegExp(PriceRegExp);
    var result1 = regexpPrice.test(price);
    var result2 = regexpPrice.test(downPayment);
    
    if (result1 == false || result1 == null)
    {
	    alert("Please enter a valid price for the price field.");
	    //txtMortPrice.value = "";
	    txtMortPrice.focus();
	    return false;
    }
    if (result2 == false)
    {
	    alert("Please enter a valid amount or 0 for the down payment.");
	    //txtMortDownPayment.value = "";
	    txtMortDownPayment.focus();
	    return false;
    }
	 
	// If Down Payment is greater than Price
    if(downPayment >= price)
    {
        alert("To use this calculator your Principal amount has to be higher than your Downpayment!");
        //txtMortDownPayment.value = "";
	    txtMortDownPayment.focus();
        return false;
    }
        
    var i = 0.0;    // i = interest rate
    var n = 0;      // n = number of days
    
    var principalAmount = price - downPayment;            
    
    i = loanRate / 1200;
    n = loanTerm * 12;

    // Mortgage Formula: (1+i)n, n is basically the power here, not multiplyer. 
    //M = P [ i(1 + i)n ] / [ (1 +  i)n - 1]
    
    var  b  = 1 + i;
    
    //Math.pow(a,b)    a to the power b
    var res = Math.pow(b, n);
    
    var res1 = i * res;
    var res2 = res - 1;        
    var res3 = res1 / res2;

    var mortgate = principalAmount * res3;
    
    //Math.round(a)    integer closest to a                 
    return Math.round(mortgate);
}

function CalcAfford(loanterm,loanrate )
{
	var Gross = document.getElementById("Gross");
	if (Gross.value == "") 
	{
		alert("Please enter Gross Annual Income");
		Gross.focus();
		return false;
	}
	var monthlyOb = document.getElementById("monthlyOb");
	if (monthlyOb.value == "")
	{
		monthlyOb.value = '0';
	}
	
	if (parseInt(monthlyOb.value) > parseInt(Gross.value))
	{
		alert("Monthly Obligations cannot exceed your income");		
		monthlyOb.focus();
		return false;
	}
	
	var v_income = parseInt(Gross.value);
	var v_monthlytotal = v_income * 36/1200;
	var MonthlyTotal = document.getElementById("MonthlyTotal");
	MonthlyTotal.value = v_monthlytotal;
	
	var v_expenses = parseInt(monthlyOb.value);
	var v_housing = v_monthlytotal - v_expenses;
	
	if (v_housing > (v_income * 28/1200))	
		v_housing = v_income * 28/1200;

	var housing = document.getElementById("housing");
	housing.value = parseInt(v_housing);
	
	var v_payment = v_housing * 0.8;
	var payment = document.getElementById("payment");	
	payment.value = parseInt(v_payment);
	
//	var loanterm = document.getElementById('<%=loanterm1.ClientID%>');
//	var loanrate = document.getElementById('<%=loanrate1.ClientID%>');
	var years =  parseFloat(loanterm.options[loanterm.selectedIndex].value);
	var interest = parseFloat(loanrate.options[loanrate.selectedIndex].value);

	var v_mortgage = PV(years*12, v_payment, interest/1200);
	var loan10percent = document.getElementById("loan10percent");
	var loan20percent = document.getElementById("loan20percent");
	var mortgage = document.getElementById("mortgage");	
	mortgage.value = parseInt(v_mortgage);	
	loan10percent.value = parseInt(v_mortgage * 10/9);
	loan20percent.value = parseInt(v_mortgage * 10/8);
	
	return false;
}

function PV(y,pmt,i)
{
    // Returns original loan amount based on number of monthly payments (y), monthly payment (pmt) and monthly interest (i).
	var result =  pmt / i * ( 1 - Math.pow(1 + i,-y) );
	return result;
}
function numberOnly(e)
{
	var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode
	//status = charCode // see ASCII character value!
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {	
		alert("number only");
		return false
	}
	return true
}