pd = 'paydata'; /* SAVING CALCULATOR DATA */

/*  THE FOLLOWING TWO FUNCTIONS CHECK THAT ALL NUMERIC VALUES ARE REAL NUMBER AND REMOVE DOUBLE DECIMALS */

function reset_fields(){
			document.getElementById('amperiod').options.length=0
			document.getElementById('amperiod').options[0]=new Option("select", "0", true, true)
			document.getElementById('amperiod').options[1]=new Option("2 years", "2", false, false)
			document.getElementById('amperiod').options[2]=new Option("3 years", "3", false, false)
			document.getElementById('amperiod').options[3]=new Option("4 years", "4", false, false)
			document.getElementById('amperiod').options[4]=new Option("5 years", "5", false, false)
			document.getElementById('amperiod').options[5]=new Option("10 years", "10", false, false)
			document.getElementById('amperiod').options[6]=new Option("15 years", "15", false, false)

			document.getElementById('finterm').options.length=0
			document.getElementById('finterm').options[0]=new Option("select", "0", true, true)
			document.getElementById('finterm').options[1]=new Option("2 years", "24", false, false)
			document.getElementById('finterm').options[2]=new Option("3 years", "36", false, false)
			document.getElementById('finterm').options[3]=new Option("4 years", "48", false, false)
			document.getElementById('finterm').options[4]=new Option("5 years", "60", false, false)
}

function check(a)
{
	var pest = 0;
	var b = "";

	for(i=0;i<=a.length;i++)
	{
		var u = a.charAt(i);
		if((u>="0"&&u<="9")||u==".")
		{
			if(u=="."){
				var pest = pest+1;
				if(pest==2){break;}}
				var b = b + u;
		}
	}
	return b;
}


function doSum(a){
	a.value = check(a.value);
}

/* TESTS VERSIONS FOR WHICH WILL SUPPORT POP UP WINDOWS */

function versTest()
{
	var one = '';
	var two = '';

	if (
	(navigator.appName.substring(0,8)=="Netscape" && (navigator.appVersion.substring(0,3) == "3.0" ||  navigator.appVersion.substring(0,3) =="4.0")))
	{var one='true';}

	if(
	(navigator.appName.substring(0,9) == "Microsoft" && navigator.appVersion.substring(0,3) == "3.0" && navigator.appVersion.indexOf("Macintosh")>=0))
	{var two='true';}

	if(one=='true' || two=='true' ||
	(navigator.appName.substring(0,9) == "Microsoft" && navigator.appVersion.indexOf("MSIE 3.0")>=0 &&
	navigator.appVersion.indexOf("Windows 3.1")>=0)
	)
	{return true;}
	else
	{return false;}
}


/* TESTS IF VERSION IS MSIE 3.0 FOR MAC */
function msTest()
{
	if(navigator.appName.substring(0,9) == "Microsoft" && 		(navigator.appVersion.substring(0,3) == "3.0" && navigator.appVersion.indexOf("Macintosh")>=0))
	{return true;}
	else
	{return false;}
}


function nineTest()
{
	if(navigator.appName.substring(0,9) == "Microsoft" && (navigator.appVersion.substring(0,3)=="3.0" || navigator.appVersion.indexOf("MSIE 3.0")>=0) && (navigator.appVersion.indexOf("Macintosh")==-1 || navigator.appVersion.indexOf("Windows 3.1")== -1)
	)
	{return true;}
	else
	{return false;}
}

/* OPENS POP UP WINDOW TO DISPLAY VALIDATION MESSAGES IN NETSCAPE 3.0 AND 4.0 */

function fixpro(n,q)
{
	if(versTest() == true){
		if(msTest()==true){
			var winNam='';
		}
		else{
			var slash = location.href.lastIndexOf("/")+1;
			var filNam = location.href.substring(0,slash);
			var winNam = filNam+'empty.html';
		}
		fix = window.open(winNam,'FIX','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=300,height=100');

		if(navigator.appName.substring(0,8) == "Netscape"){
			fix.focus();
		}

		fix.document.write('<html><head><title>Calculators</title>');
		fix.document.write('</head><body bgcolor=ffffff><fOrM METHOD="POST" NAME="fixer" >');
		fix.document.write('<font size=2 face="Arial, Helvetica" color=306798>'+n+'</font><p><FONT SIZE=2 FACE="Arial, Helvetica">'+q+'<p>');
		fix.document.write('<center><input type=button value=OK onClick=self.close()>');
		fix.document.write('</center></form></body></html>');
		fix.document.close();
	}
	else{alert(n+'\n'+q)}
}

/* FUNCTION CONFIRMS THAT THE VALUE ENTERED INTO A FIELD FALLS WITHIN THE PRE-DETERMINED MINIMUM AND MAXIMUM VALUES, AND DISPLAYS AN ERROR MESSAGE WITH THE ALLOWABLE NUMERIC RANGE FOR THE FIELD DATA IN A POP UP VALIDATION WINDOW */
function checkNumber(quest,input, min, max, msg)
{
	var str = input.value;

	for (var i = 0; i < str.length; i++) {
		var ch = str.substring(i, i + 1)
		if ((ch < "0" || "9" < ch) && ch != '.') {
			alert(msg);
			return false;
		}
	}

	if(input.value!="")
	{
		var num = 0 + str
		if (num < min || max < num) {
			var sendn = "Question " + quest + ": ("+ msg + ")";
			var sendq = "You have entered " + input.value + ". Please enter a number between " + min + " and " + max + ".";
			fixpro(sendn,sendq);
			return false;
		}
		input.value = str;
		return true;
	}
}

/* CALLS UPON THE FUNCTIONS TO DETERMINE IF THE NUMBERS ENTERED ARE VALID AND TO CALCULATE THE RESULTS OF THE ENTERED DATA FOR EXAMPLE - MORTGAGE PAYMENT, GDS AND TDS RATIOS, AND LOAN TO VALUE. THIS FUNCTION IS EXECUTED EVERYTIME A VALUE IS CHANGED IN A FIELD */

function dorate(quest,input,min,max,msage){
	var calcrate;
	var amount = input.value;
	var check = checkNumber(quest,input,min,max,msage);
	if(check == true){

			document.getElementById('mp').value=''

			document.getElementById('finterm').options.length=0
			document.getElementById('finterm').options[0]=new Option("select", "", false, false)
			document.getElementById('finterm').options[1]=new Option("2 years", "24", false, false)
			document.getElementById('finterm').options[2]=new Option("3 years", "36", false, false)
			document.getElementById('finterm').options[3]=new Option("4 years", "48", false, false)
			document.getElementById('finterm').options[4]=new Option("5 years", "60", true, true)

		if(amount <= 4999){
			calcrate = 9.95;
			document.getElementById('amperiod').options.length=0
			document.getElementById('amperiod').options[0]=new Option("2 years", "2", false, false)
			document.getElementById('amperiod').options[1]=new Option("3 years", "3", false, false)
			document.getElementById('amperiod').options[2]=new Option("4 years", "4", false, false)
			document.getElementById('amperiod').options[3]=new Option("5 years", "5", true, true)

			document.getElementById('finterm').options.length=0
			document.getElementById('finterm').options[0]=new Option("select", "", false, false)
			document.getElementById('finterm').options[1]=new Option("2 years", "24", false, false)
			document.getElementById('finterm').options[2]=new Option("3 years", "36", false, false)
			document.getElementById('finterm').options[3]=new Option("4 years", "48", false, false)
			document.getElementById('finterm').options[4]=new Option("5 years", "60", true, true)

		}

		if(amount >= 5000 && amount <= 12499){
			calcrate = 8.50;
			document.getElementById('amperiod').options.length=0
			document.getElementById('amperiod').options[0]=new Option("2 years", "2", false, false)
			document.getElementById('amperiod').options[1]=new Option("3 years", "3", false, false)
			document.getElementById('amperiod').options[2]=new Option("4 years", "4", false, false)
			document.getElementById('amperiod').options[3]=new Option("5 years", "5", false, false)
			document.getElementById('amperiod').options[4]=new Option("10 years", "10", true, true)

			document.getElementById('finterm').options.length=0
			document.getElementById('finterm').options[0]=new Option("select", "", false, false)
			document.getElementById('finterm').options[1]=new Option("2 years", "24", false, false)
			document.getElementById('finterm').options[2]=new Option("3 years", "36", false, false)
			document.getElementById('finterm').options[3]=new Option("4 years", "48", false, false)
			document.getElementById('finterm').options[4]=new Option("5 years", "60", false, false)
			document.getElementById('finterm').options[5]=new Option("10 years", "120", true, true)
		}
		if(amount >= 12500 && amount <= 200000){
			calcrate = 8.15;
			document.getElementById('amperiod').options.length=0
			document.getElementById('amperiod').options[0]=new Option("2 years", "2", false, false)
			document.getElementById('amperiod').options[1]=new Option("3 years", "3", false, false)
			document.getElementById('amperiod').options[2]=new Option("4 years", "4", false, false)
			document.getElementById('amperiod').options[3]=new Option("5 years", "5", false, false)
			document.getElementById('amperiod').options[4]=new Option("10 years", "10", false, false)
			document.getElementById('amperiod').options[5]=new Option("15 years", "15", true, true)

			document.getElementById('finterm').options.length=0
			document.getElementById('finterm').options[0]=new Option("select", "", false, false)
			document.getElementById('finterm').options[1]=new Option("2 years", "24", false, false)
			document.getElementById('finterm').options[2]=new Option("3 years", "36", false, false)
			document.getElementById('finterm').options[3]=new Option("4 years", "48", false, false)
			document.getElementById('finterm').options[4]=new Option("5 years", "60", false, false)
			document.getElementById('finterm').options[5]=new Option("10 years", "120", false, false)
			document.getElementById('finterm').options[6]=new Option("15 years", "180", true, true)
		}

		document.paycalc.rate.value = calcrate;
	} else {
		return false;
	}
}

function computeField(quest,input,min,max,msage)
{
	doSum(input);
	checkNumber(quest,input,min,max,msage);
}

/* RETURNS THE SELECTED INDEX VALUE OF SELECT LISTS IN THE CALCULATOR TO BE USED IN CALCULATIONS */
function getIndex(n){return n.selectedIndex;}

function calcRdefine(intrate,COMPOUND, freq){
	return Math.pow((1.0 + ((intrate/100)/COMPOUND)),(COMPOUND/freq))-1.0;
}

function calcBal(mortgage,intrate,COMPOUND,freq,payment,term){
	rdefine = calcRdefine(intrate,COMPOUND, freq);
	return (mortgage*(Math.pow((1.0 + rdefine),(term)))) -  ((payment * ((Math.pow((1.0 + rdefine),(term))) - 1.0))/rdefine);
}

/* ROUNDS OFF MONETARY NUMBERS TO TWO DECIMALS (PENNIES) */

function roundPen(n)
{
	if(n > 0){
		pennies = n*100;
		pennies = Math.round(pennies);
		strPennies = "" + pennies;
		len = strPennies.length;
		return strPennies.substring(0, len - 2) + "." + strPennies.substring(len -2, len);
	}
	else return 0;
}

/* THIS FUNCTION CALCULATES THE LOAN TO VALUE RATIO */

function LTVcalc(MORTGAGE, MORTGAGE2, APPRAISE){
	return (MORTGAGE/APPRAISE) + (MORTGAGE2/APPRAISE);
}

function Ratios(PAY1, PAY2, HEAT, TAX, DEBT, INCOME){
	return (PAY1/INCOME)+(PAY2/INCOME)+(HEAT/INCOME)+(TAX/INCOME)+(DEBT/INCOME);
}

/* THIS FUNCTION CALCULATES THE MONTHLY MORTGAGE PAYMENT BASED ON THE USER'S INPUT */

function calcPay(MORTGAGE, AMORT, INRATE, COMPOUND, FREQ){
	//alert(COMPOUND);
	//alert(AMORT);
	var COMPOUND = COMPOUND/12;
	var monTime = AMORT * 12;

	var J= INRATE/1200;
	var LT= 1 - Math.pow((1 + J),-monTime)
	var MT=J/LT;
	var M= MORTGAGE * MT
	return M;
	//alert(J);
	//alert(LT);

	//alert (MT);
	//alert (M);
	var RATE = (INRATE*1.0)/100;
	var yrRate = RATE/COMPOUND;
	alert(RATE);
	var rdefine    = Math.pow((1.0 + yrRate),COMPOUND)-1.0;
	var PAYMENT = (MORTGAGE*rdefine * (Math.pow((1.0 + rdefine),monTime)))/  ((Math.pow((1.0 + rdefine),monTime)) - 1.0);
	if(FREQ==12){
		alert(PAYMENT);
		return PAYMENT;}
		if(FREQ==26||FREQ==24){
			return PAYMENT/2.0;}
			if(FREQ==52){
					alert(PAYMENT/4.0);
				return PAYMENT/4.0;

				}
}

function retTerm(n){
	if(n==0){return 0;}
	if(n==1){return 6;}
	if(n==2){return 12;}
	if(n==3){return 24;}
	if(n==4){return 36;}
	if(n==5){return 60;}
	if(n==6){return 84;}
	if(n==7){return 120;}
}


function retFreq(n){
	if(n==0){return 0;}
	if(n==1){return 12;}
	if(n==2){return 24;}
	if(n==3){return 26;}
	if(n==4){return 52;}
}

function calcTotal(MORTGAGE, LTV){
	if(LTV>.75&&LTV<=.80){
		return MORTGAGE*1.0125;}
		if(LTV>.80&&LTV<=.85){
			return MORTGAGE*1.02;}
			if(LTV>.80){
				return MORTGAGE*1.025;}
				if(LTV<=.75){
					return MORTGAGE}
}

/* SAVES COOKIE CONTAINING DATA TO BE USED IN AMORTIZATION SCHEDULE */

/*
function quickCook(MTGAMT,AMORT,RATE,TERM,FREQ)
{
	var AMORTPMT = calcPay(MTGAMT, AMORT, RATE, 2, FREQ);
	var intrate = RATE/100;
	var INTFACTOR = Math.pow((1+intrate/2),(2/FREQ))-1;
	var expire = new Date ();
	expire.setTime (expire.getTime() + (numDays * 24 * 3600000));
	var pdData = " " ;
	pdData = pdData + '`' + MTGAMT + '`' + AMORTPMT + '`' + INTFACTOR + '`' + FREQ + '`' + (AMORT*FREQ) + '`' + 0 + '`' + 0 +'`' + 3 + '`' + 1 + '`' + RATE*1.0/100 + '`' + 0 + '`' + 0 + '`' + 0 + '`' + 0 + '`' + 0 + '`' + 0 + '`' + 0;
	document.cookie = pd +"=" + escape(pdData) +"; expires=" + expire.toGMTString()+"; path=/" ;
}
*/
/* VALIDATES ALL THE FIELDS AND CALCULATES VALUES TO BE ENTERED INTO THE TEXT BOXES AT THE BOTTOM OF THE PAGE WHEN THE USER CLICKS ON compute OR compute AMORTIZATION */

function compute(form){
	if(document.paycalc.desterm.selectedIndex == 0){
		fixpro('(Finance Term)','You have not selected this field, click on the SELECT button to select your option.');return false;}
			if((document.paycalc.NAMORT.value == null || document.paycalc.NAMORT.value.length == 0)|| (document.paycalc.NAMORT.value < 1 || document.paycalc.NAMORT.value > 40)){
				fixpro('(Amortization Period)','You have not selected this field, click on the SELECT button to select your option.');return false;}
				if((document.paycalc.mortamt.value == null|| document.paycalc.mortamt.value.length == 0)|| (document.paycalc.mortamt.value <100|| document.paycalc.mortamt.value > 1000000) )
				{fixpro('(Finance Amount)','Please enter a number between 100 and 1000000.');return false;}
				if((document.paycalc.rate.value == null || document.paycalc.rate.value.length == 0))
				{fixpro('(Interest Rate)','Please enter a number');return false;}
				if(document.paycalc.desterm.value/12>document.paycalc.NAMORT.value){
					fixpro('(Finance Term)','The selected finance term is greater than the amortization period entered.  Increase the amortization period or choose a shorter finance term.');return false;}

					term = document.paycalc.desterm.value;

					freq = document.paycalc.PFREQ.value;
					amort = document.paycalc.NAMORT.value;
					mortgage = document.paycalc.mortamt.value;
					intrate = document.paycalc.rate.value;
					if(intrate == 0) intrate = 0.0001;
					//alert(mortgage);
					//alert(intrate);
					//alert(freq);
					var payment = calcPay(mortgage, amort, intrate, 2, freq);
					//alert (payment);
					form.mainpay.value = '$' + roundPen(payment);
					form.mainpay7.value = '$' + roundPen(payment);
					form.mainyr1.value = '$' + roundPen(calcBal(mortgage,intrate,2,freq,payment,(12/(12/freq))));
					form.mainyr2.value = '$' + roundPen(calcBal(mortgage,intrate,2,freq,payment,(24/(12/freq))));
					form.mainyr3.value = '$' + roundPen(calcBal(mortgage,intrate,2,freq,payment,(36/(12/freq))));
					form.mainyr5.value = '$' + roundPen(calcBal(mortgage,intrate,2,freq,payment,(60/(12/freq))));
					form.mainyr10.value = '$' + roundPen(calcBal(mortgage,intrate,2,freq,payment,(120/(12/freq))));
					//quickCook(mortgage,amort,intrate,term,freq);
					return true;
}

/* OPENS WINDOW USED TO DISPLAY HELP MESSAGES WHEN THE USER CLICKS ON A HELP BUTTON. THE HELP MESSAGE DISPLAYED IS DETERMINED IN THE ARRAY WHICH IS REFERENCED ACCORDING TO THE HELP BUTTON WHICH WAS CLICKED */

/*function winopen(name)
{
	var linkit = "help/"+name;
	if(versTest() == true||nineTest()==true){
		qc=window.open(linkit,'helpscreen','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=250,height=180');
		if(navigator.appName.substring(0,8) == "Netscape")
		{qc.focus();}
	}
	else{location.href=linkit;}
}
*/
function StringArray(n)
{
	this.length = n;
	for (var i = 1; i <= n; i++)
	this[i] = ''
	return this
}


function payBal()
{
	//alert("hello");
	if(document.paycalc.mortamt.value < 3000)
		{
			alert("Finance Amount must be between 3,000 and 200,000");
			return false;
		}
	if(document.paycalc.mortamt.value > 200000)
		{
			alert("Finance Amount must be between 3,000 and 200,000");
			return false;
		}
	if(navigator.appVersion.substring(0,3) == 2.0 &&  navigator.appName.substring(0,8)=="Netscape" && navigator.appVersion.indexOf("Macintosh")>=0){
		setTimeout("compute(document.forms[0])",200);
	}
	//else{compute(document.forms[0]);}
	else{compute(document.getElementById('paycalc'));}
}

