// JavaScript Document
function put_commas(input) {
    var result, len;

    input += "";
    len = input.indexOf(".");
    if(len == -1) {
        len = input.length;
        result = "";
    } else {
        result = input.substring(len, input.length);
    }
    while(len > 3) {
        result = input.substring(len-3, len) + result;
        result = "," + result;
        len -= 3;
    }
    result = input.substring(0, len) + result;
    return result;
}

function strip_commas(input) {
        var newnum;
        var ch;

        newnum ="";
        for(var i=0; i<input.length; i++) {
                ch = input.charAt(i);
                if(ch != ",") {
                        newnum += ch;
                }
        }
        return parseFloat(newnum);
}

function checkNum(input) {
	var oldnum;
	var newnum;
	var ch;
	
	oldnum = input.value;
	newnum ="";
	for(var i=0; i<oldnum.length; i++) {
		ch = oldnum.charAt(i);
		if(ch != ",") {
			newnum += ch;
		}
	}
	return parseFloat(newnum);
}

function ValidInteger(inStr)
{
	if (inStr == "," )
		return false

	var len = inStr.length
	var i
	for(i=0; i<len; i++){
		if(inStr.charAt(i) != "1" &&
		   inStr.charAt(i) != "2" &&
		   inStr.charAt(i) != "3" &&
		   inStr.charAt(i) != "4" &&
		   inStr.charAt(i) != "5" &&
		   inStr.charAt(i) != "6" &&
		   inStr.charAt(i) != "7" &&
		   inStr.charAt(i) != "8" &&
		   inStr.charAt(i) != "9" &&
		   inStr.charAt(i) != "0" &&
		   inStr.charAt(i) != ",")
			return false;
	}
	return true;
} 
function selectFactorA(ratio){
		if (ratio <= .85){
			return(.0040);}
		if (ratio <= .90 && ratio > .85){
			return(.0062);}
		if (ratio <= .95 && ratio > .90){
			return(.0078);} 
		if (ratio <= .97 && ratio > .95){
			return(.0104);} 
		if (ratio > .97){
			return(.0104);}
	}
	function selectFactorB(ratio){
		if (ratio <= .85){
			return(.0021);}
		if (ratio <= .90 && ratio > .85){
			return(.0041);}
		if (ratio <= .95 && ratio > .90){
			return(.0067);} 
		if (ratio <= .97 && ratio > .95){
			return(.0093);} 
		if (ratio > .97){
			return(.0093);}
	}

function formatResult(obj2BFormated){
		obj2BFormated.value = obj2BFormated.value * 100;
		var temp=Math.round(obj2BFormated.value);
		obj2BFormated.value= temp/100;
		temp = obj2BFormated.value.substring((obj2BFormated.value.indexOf(".")+1),obj2BFormated.value.length);
		if (temp.length == 1){ obj2BFormated.value = obj2BFormated.value + "0"; }
		if (temp.length == 0){ obj2BFormated.value = obj2BFormated.value + ".00"; }
		if (temp.length == obj2BFormated.value.length){ obj2BFormated.value = obj2BFormated.value + ".00"; }
	}

function convertMonths(i) {
		switch(i) {
			case 0:
			 return(480);
			 break;  
			case 1:
			 return(360);
			 break;  
			case 2:
			 return(300);
			 break;  
			case 3:
			 return(240);
			 break;  	
			case 4:
			 return(180);
			 break;  
			case 5:
			 return(120);
			 break;		
		}
	}
function PMT(ir,np,pv){
		var q;
		q=Math.pow (1+ir,np);
		return((ir*(0+q*pv))/(-1+q));

	}

function estimatePMI(){
		//check for empty values------------------------------------------------
		if (document.calc.LoanAmount.value == "") {
			alert("Please enter the amount of your loan.");
			document.calc.LoanAmount.focus();
			return;
		 	}
		if (!ValidInteger(document.calc.LoanAmount.value)){
			alert("Please enter a numeric value for the amount of your loan.");
			document.calc.LoanAmount.focus();
			return;
			}
		if (document.calc.SalesPrice.value == "") {
			alert("Please enter the sales price of your home.");
			document.calc.SalesPrice.focus();
			return;
		 	}
		if (!ValidInteger(document.calc.SalesPrice.value)){
			alert("Please enter a numeric value for sales price of your home.");
			document.calc.SalesPrice.focus();
			return;
			}

		if (document.calc.InterestRate.value == "") {
			alert("Please enter an interest rate.");
			document.calc.InterestRate.focus();
			return;
		 	}	 	 
		
		//calculate P & I payment-----------------------------------------------
		var I;
		var T;
		var P; 
		var Result;
		I = document.calc.InterestRate.value
		I = (I * 0.01) / 12;
		T = convertMonths(document.calc.LenOfLoan.selectedIndex);
		P= strip_commas(document.calc.LoanAmount.value);
		document.calc.PI.value = PMT(I,T,P);
		Result = formatResult(document.calc.PI);
		//calculate PMI payment-------------------------------------------------
		var ltv;
		var months;
		var factor;
		var PMI;
		var SP;
		SP = strip_commas(document.calc.SalesPrice.value);
		ltv = P/SP; 
		if (ltv < .80001){
				document.calc.PMI.value = 0;}
		else{		
			months = convertMonths(document.calc.LenOfLoan.selectedIndex);
			if (months > 240){
				factor = selectFactorA(ltv);}
				
			else{
				factor = selectFactorB(ltv);}	
			PMI = factor * P/12;
			document.calc.PMI.value = PMI;
			Result = formatResult(document.calc.PMI);

			}
		//format loan-to-value and downpayment amounts
		var percent, downpayment, ltvper;
	      downpayment	= SP - P;
		document.calc.downpayment.value =downpayment; 
		percent = (downpayment / SP ) * 100;
		document.calc.percent.value = percent;
		ltvper = 100 - percent;
		document.calc.ltvper.value = ltvper;
		
		
		}