﻿function computeForm(form){
	//toggle();
	var pmt1 = document.getElementById('payment').value;
	var pmt2 = document.getElementById('payment').value / 2;
	var prin1 = document.getElementById('principal').value;
	var prin2 = document.getElementById('principal').value;
	var intPort1 = 0;
	var intPort2 = 0;
	var prinPort1 = 0;
	var prinPort2 = 0;
	var accumInt1 = 0;
	var accumPrin1 = 0;
	var accumInt2 = 0;
	var accumPrin2 = 0;
	var i = document.getElementById('intRate').value;
	if (i > 1.0){
		i = i / 100.0;
		document.getElementById('intRate').value = i;
	}
	var i1 = i / 12;
	var i2 = i / 26;
	var count1 = 0;
	var count2 = 0;
	while(prin1 > 0 && count1 <= 600){
		intPort1 = prin1 * i1;
		prinPort1 = pmt1 - intPort1;
		prin1 = prin1 - prinPort1;
		accumPrin1 = accumPrin1 + prinPort1;
		accumInt1 = accumInt1 + intPort1;
		count1 = count1 + 1;
	}
	if(count1 > 600){
		alert("Using your entered terms you will never pay off this amount. Please either lower the principal amount, lower the interest rate, or increase the payment amount.");
		document.getElementById('origInt').value = "";
		document.getElementById('biwkInt').value = "";
		document.getElementById('intSave').value = "";
		//document.getElementById('time').value = "";
		return false;
	}
	else{
		document.getElementById('origInt').value = "$" + parseInt(accumInt1,10);
		while(prin2 > 0 && count2 <= 600){
			intPort2 = prin2 * i2;
			prinPort2 = pmt2 - intPort2;
			prin2 = prin2 - prinPort2;
			accumPrin2 = accumPrin2 + prinPort2;
			accumInt2 = accumInt2 + intPort2;
			count2 = count2 + 1;
		}
		document.getElementById('biwkInt').value = "$" + parseInt(accumInt2,10);
		document.getElementById('intSave').value = "$" + parseInt(accumInt1 - accumInt2,10);
		document.getElementById("resultText").innerHTML = "In essence, what you are really doing is adding a 13th payment to your annual number of payments and splitting it up between 26 bi-weekly payments. By paying an extra $" + parseInt(pmt1 / 26,10) + " every two weeks you will pay off your mortgage in " + parseInt(count2 /26*12,10) + " months instead of the current " + count1 + " months. You'll save $" + parseInt(accumInt1 - accumInt2) + " in mortgage interest in the process.";
	}
	return false;
}
function clearForm(form){
	document.getElementById('principal').value = "";
	document.getElementById('payment').value = "";
	document.getElementById('intRate').value = "";
	document.getElementById('intSave').value = "";
	document.getElementById('origInt').value = "";
	document.getElementById('biwkInt').value = "";
	document.getElementById('time').value = "";
}
function toggle(){
	if(document.getElementById("results").style.display == "none"){
		document.getElementById("results").style.display = "";
		document.getElementById("inputs").style.display = "none"
	}
	else{
		document.getElementById("results").style.display = "none";
		document.getElementById("inputs").style.display = ""
	}
}
function ClearInput(form){
	document.getElementById('price').value="";
	document.getElementById('year').value="";
	document.getElementById('rate').value="";
	document.getElementById('down_0').value="";
	document.getElementById('down_1').value="";
	document.getElementById('down_3').value="";
	document.getElementById('down_1').value="";
	document.getElementById('down_2').value="";
	document.getElementById('down_3').value="";
	document.getElementById('down_4').value="";
	document.getElementById('month_0').value="";
	document.getElementById('month_1').value="";
	document.getElementById('month_3').value="";
	document.getElementById('month_1').value="";
	document.getElementById('month_2').value="";
	document.getElementById('month_3').value="";
	document.getElementById('month_4').value="";
	return true;
}
function help(helponwhat){
	if (helponwhat == "value"){
		alert("Enter the amount you need to borrow.");
	}
	else{
		if (helponwhat == "year"){
			alert("Enter the number of years you want to repay your home loans. ");
		}
		else if (helponwhat == "rate"){
			alert("Parrish & Associates offers a variety of home loan products to suit your needs.");
		}
	}
}
function CheckForm(form){
	if (document.getElementById('price').value==null||document.getElementById('price').value.length==0){
		alert("Please enter the amount financed for your purchase");
		return false;
	}
	else{
		if (document.getElementById('price').value<20000){
			alert("Please enter a price greater than 20000. Please reenter");
			return false;
		}
		else{
			if (document.getElementById('year').value==null||document.getElementById('year').value.length==0){
				alert("Please enter the length of your mortgage.");
				return false;
			}
			else{
				if (document.getElementById('rate').value<2||document.getElementById('rate').value>20){
					alert("The interest rate should be between 5% and 20%.");
					return false;
				}
				else{
					return true;
				}
			}
		}
	}
}
function MakeMoney(numb){
	money='';
	for (var i=0;i<numb.value.length; i++){
		j=i+1;
		money+=numb.value.substring(i,j);
		if (numb.value==Math.round(numb.value)){
			pos=numb.value.length-j;
		}
		else{
			pos=numb.value.length-3-j;
		}
		tmp=Math.round(pos/3);
		if (pos == tmp*3 && pos != 0){
			money+=",";
		}
	}
	return money;
}
function PVIFA(annual_rate, years, period){
	var monthly_rate=annual_rate/period;
	var factor=0;
	var base_rate=1+monthly_rate;
	var denominator=base_rate;
	for (var i=0;i<(years*period);i++){
		factor+=(1/denominator);
		denominator*=base_rate;
	}
	return factor;
}
function Calculate(form){
	if (CheckForm(form)){
		var down_0=document.getElementById('price').value*0.00;
		var down_1=document.getElementById('price').value*0.01;
		var down_2=document.getElementById('price').value*0.03;
		var down_3=document.getElementById('price').value*0.05;
		var down_4=document.getElementById('price').value*0.10;
		var down_5=document.getElementById('price').value*0.15;
		var down_6=document.getElementById('price').value*0.20;
		document.getElementById('down_0').value="$" + Math.round(down_0);
		document.getElementById('down_1').value="$" + Math.round(down_1);
		document.getElementById('down_2').value="$" + Math.round(down_2);
		document.getElementById('down_3').value="$" + Math.round(down_3);
		document.getElementById('down_4').value="$" + Math.round(down_4);
		document.getElementById('down_5').value="$" + Math.round(down_5);
		document.getElementById('down_6').value="$" + Math.round(down_6);
		var interest_rate=(document.getElementById('rate').value/100);
		var monthly_factor=PVIFA(interest_rate, document.getElementById('year').value, 12);
		var base_amount=document.getElementById('price').value-down_0;
		document.getElementById('month_0').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_1;
		document.getElementById('month_1').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_2;
		document.getElementById('month_2').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_3;
		document.getElementById('month_3').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_4;
		document.getElementById('month_4').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_5;
		document.getElementById('month_5').value="$" + Math.round(base_amount/monthly_factor);
		base_amount=document.getElementById('price').value-down_6;
		document.getElementById('month_6').value="$" + Math.round(base_amount/monthly_factor);
		return false;
	}
}

function floor(number){
	return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
}
function dosum(){
	var mi = document.getElementById('IR').value / 1200;
	var base = 1;
	var mbase = 1 + mi;
	for (i=0; i<document.getElementById('YR').value * 12; i++){
		base = base * mbase
	}
	document.getElementById('PI').value = "$" + floor(document.getElementById('LA').value * mi / ( 1 - (1/base)));
	document.getElementById('MT').value = "$" + floor(document.getElementById('AT').value / 12);
	document.getElementById('MI').value = "$" + floor(document.getElementById('AI').value / 12);
	var dasum = document.getElementById('LA').value * mi / ( 1 - (1/base)) + document.getElementById('AT').value / 12 + document.getElementById('AI').value / 12;
	document.getElementById('MP').value = "$" + floor(dasum);
	return false;
}

window.onerror=null;
bState = true;
oReq = new Collection("AMOUNT","RATE","","","","");
oVal = new Collection("AMOUNT","RATE","","","","");
oTst = new Collection("N","N","","","","");
function controller(oForm, oBtn){
	while (bState){
		if (!Required(oForm)) break;
		if (!Validate(oForm)) break;
		if (!SetValue(oForm)) break;
		if (!NewPage(oForm, oBtn)) break;
		if (bState){
			bState = false
		}
	}
	bState = true
}
function Required(oView){
	for (i in oView){
		for (j in oReq){
			if (i==oReq[j]){
				if (isMissing(oView[i])){
					return(false);
				}
			}
		}
	}
	return(true);
}
function Validate(oView){
	for (i in oView){
		for (j in oVal){
			if (i==oVal[j] && oTst[j]=="N"){
				if (isTest(oView[i], oTst[j])){
					return(false);
				}
			}
		}
	}
	return(true);
}
function SetValue(oView){
	Mortgage = new Loan(oView.AMOUNT.value, oView.RATE.value, get_selection(oView.YEARS), 0, 0, get_selection(oView.FREQUENCY), 0 );
	Mortgage.calcPeriods();
	Mortgage.calcPayment();
	Mortgage.calcInterest();
	oView.PAYMENT.value = calcRound(Mortgage.Payment);
	oView.INTEREST.value = calcRound(Mortgage.Interest);
	setCookie("_Prin", Mortgage.Amount);
	setCookie("_Int", Mortgage.Rate);
	setCookie("_Year", Mortgage.Term);
	setCookie("_Tot", Mortgage.Interest);
	return(true);
}
function isMissing(oCtrl){
	if (oCtrl.value == ""){
		alert("You have left a required value blank. Please type a number");
		oCtrl.focus();
		oCtrl.select();
		return(true);
	}
	else{
		return(false);
	}
}
function isTest(oCtrl, oTest){
	if (oTest=="N" && !isNumber(oCtrl.value) ){
		alert(oCtrl.value+" contains an invalid character. Please type a number");
		oCtrl.focus();
		oCtrl.select();
		return(true);
	}
	else{
		return(false);
	}
}
function isNumber(input){
	for (var i=0;i<input.length;i++){
		var oneChar = input.substring(i, i+1);
		if (oneChar < "0" || oneChar > "9"){
			if (oneChar != "." ){
				return(false);
			}
		}
	}
	return(true);
}
function Collection(item1, item2, item3, item4, item5, item6){
	this.item1 = item1;
	this.item2 = item2;
	this.item3 = item3;
	this.item4 = item4;
	this.item5 = item5;
	this.item6 = item6;
}
function Loan(Amount, Rate, Term, Payment, Interest, Frequency, Periods ){
	this.Amount = Amount;
	this.Rate = Rate;
	this.Term = Term;
	this.Payment = Payment;
	this.Interest = Interest;
	this.Frequency = Frequency;
	this.Periods = Periods;
	this.calcPeriods = calcPeriods;
	this.calcPayment = calcPayment;
	this.calcInterest = calcInterest;
}
function calcPayment(){
	this.Payment = (this.Amount*((this.Rate/(this.Periods*100))/(1-(Math.pow(1+(this.Rate/(this.Periods*100)),((this.Term*this.Periods)*-1))))));
}
function calcInterest(){
	this.Interest = ((this.Payment*(this.Term*this.Periods))-this.Amount);
}
function calcPeriods(){
	if (this.Frequency=="Monthly"){
		this.Periods=12
	}
	else{
		this.Periods=26
	}
}
function calcRound(num){
	result="$"+Math.floor(num)+".";
	n = result.length;
	if (num>1000 && num<999999){
		result="$"+result.substring(1,n-4)+","+result.substring(n-4,n);
	}
	if (num>1000000){
		result = "$"+result.substring(1,n-7)+","+result.substring(n-7,n-4)+","+result.substring(n-4,n);
	}
	var cents=100*(num-Math.floor(num))+0.5;
	result += Math.floor(cents/10);
	result += Math.floor(cents%10);
	return(result);
}
function select_item(name, value){
	this.name = name;
	this.value = value;
}
function get_selection(select_object){
	contents = new select_item();
	for(var i=0;i<select_object.options.length;i++){
		if(select_object.options[i].selected == true){
			contents.name = select_object.options[i].text;
			contents.value = select_object.options[i].value;
		}
	}
	return(contents.name);
}
function setfocus(){
	document.MORTGAGE.AMOUNT.focus();
	document.MORTGAGE.AMOUNT.select();
}

