// Browser Detection
isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
NS4 = (document.layers) ? true : false;
IEmac = ((document.all)&&(isMac)) ? true : false;
IE4plus = (document.all) ? true : false;
IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
IE5 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false;
ver4 = (NS4 || IE4plus) ? true : false;
NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1)?true:false;


// Body onload utility
var gSafeOnload = new Array();
function SafeAddOnload(f)
{
	if (IEmac && IE4){
		window.onload = SafeOnload;
		gSafeOnload[gSafeOnload.length] = f;
	}
		else if  (window.onload){
				if (window.onload != SafeOnload){
					gSafeOnload[0] = window.onload;
					window.onload = SafeOnload;
				}
		gSafeOnload[gSafeOnload.length] = f;
		}
	else
		window.onload = f;
}

function SafeOnload()
{
	for (var i=0;i<gSafeOnload.length;i++)
		gSafeOnload[i]();
}

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);
}


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;
    }
}

function computeField(quest,input,min,max,msage)
{
doSum(input);
checkNumber(quest,input,min,max,msage);
}

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);
}


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;
}


function calcPay(MORTGAGE, AMORT, INRATE, COMPOUND, FREQ){
var compound = COMPOUND/12;
var monTime = AMORT * 12;
var RATE = (INRATE*1.0)/100;
var yrRate = RATE/COMPOUND;
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){
return PAYMENT;}
if(FREQ==26||FREQ==24){
return PAYMENT/2.0;}
if(FREQ==52){
return PAYMENT/4.0;}
}


function calculate(form){
if((document.calc.period.value == null || document.calc.period.value.length == 0)|| (document.calc.period.value < 1 || document.calc.period.value > 30)){
alert('Amortization period must be a number between 1 and 30.');return false;}
if((document.calc.amount.value == null || document.calc.amount.value.length == 0)|| (document.calc.amount.value <10000|| document.calc.amount.value > 1000000) ){
alert('Mortgage amount must be a number between 10000 and 1000000.');return false;}
if((document.calc.rate.value == null || document.calc.rate.value.length == 0)||(document.calc.rate.value < 1 || document.calc.rate.value > 25)){
alert('Interest must be a number between 1.0 and 25.0.');return false;}
if((document.calc.term.value/12)>document.calc.period.value){
alert('Mortgage term is greater than the amortization period entered.');return false;}

term = document.calc.term.value;
freq = document.calc.frequency.value;
compound = document.calc.compound.value;
amort = document.calc.period.value;
mortgage = document.calc.amount.value;
intrate = document.calc.rate.value;

//alert(mortgage +' '+ amort +' '+ intrate +' '+ freq +' '+ term +' '+ compound);

var payment = calcPay(mortgage, amort, intrate, compound, freq);

document.calc.mainpay.value = roundPen(payment);

//alert(mortgage +' '+ amort +' '+ intrate +' '+ freq +' '+ payment +' '+ term +' '+ compound);

var formObj = GetFormObj();

term = formObj.term.value;
freq = formObj.frequency.value;
compound = formObj.compound.value;
amort = formObj.period.value;
mortgage = formObj.amount.value;
intrate = formObj.rate.value;
payment = formObj.mainpay.value;


//alert(mortgage +' '+ amort +' '+ intrate +' '+ freq +' '+ payment +' '+ term +' '+ compound);

UpdateForm(mortgage, amort, intrate, freq, payment, term, compound);

return true;
}


function calcMortgage()
{
calculate(document.form);
}


function calcRdefine(intrate,compound, freq){
 return Math.pow((1.0 + ((intrate/100)/compound)),(compound/freq))-1.0;
}

function UpdateForm(mortgage, amort, intrate, freq, payment, term, compound)
{
	var htmlStr = GetFormHTML(mortgage, amort, intrate, freq, payment, term, compound);
		
	if (IE4plus){
		document.all.formlayer.innerHTML = htmlStr;
	}
	else if (NS4){
		document.formlayer.document.open();
		document.formlayer.document.write(htmlStr);
		document.formlayer.document.close();
	}
	else if (NS6){
		document.getElementById("formlayer").innerHTML = htmlStr;
	}
}
 
 
function GetFormHTML(mortgage, amort, intrate, freq, payment, term, compound)
{

	var oneshot = true;
	var htmlStr = '';
	
	htmlStr += ('<FORM name=calc method=post>');
	htmlStr += ('    <TABLE cellSpacing=3 cellPadding=3 border=1>');
	htmlStr += ('       <TBODY> ');
	
	htmlStr += ('        <TR>	 ');
	htmlStr += ('          <TD class=bluetext>Mortgage Amount:    ');
	htmlStr += ('          </TD>	    ');
	htmlStr += ('          <TD class=bluetext><INPUT size=15 name=amount value="'+mortgage+'">  ');
	htmlStr += ('          </TD>	 ');
	htmlStr += ('        </TR>  ');
	
	htmlStr += ('        <TR>     ');
	htmlStr += ('          <TD class=bluetext>Interest Rate:  ');
	htmlStr += ('          </TD>  ');
	htmlStr += ('          <TD class=bluetext><INPUT size=15 value="'+intrate+'" name=rate> ');
	htmlStr += ('          </TD> ');
	htmlStr += ('        </TR> ');
	htmlStr += ('        <TR>   ');

	htmlStr += ('        <TR>  ');
	htmlStr += ('          <TD class=bluetext>Mortgage Term:  ');
	htmlStr += ('          </TD>  ');
	htmlStr += ('          <TD class=bluetext><SELECT name=term style="width:113">');
	if (term == 6){
		htmlStr += ('          	<OPTION value=6 selected>6 Months');
	}else{
		htmlStr += ('          	<OPTION value=6 >6 Months');
	}
	if (term == 12){
		htmlStr += ('          <OPTION value=12 selected>1 Year<OPTION');
	}else{
		htmlStr += ('          <OPTION value=12>1 Year<OPTION');
	}
	if (term == 24){
		htmlStr += ('              value=24 selected>2 Years');
	}else{
		htmlStr += ('              value=24>2 Years');
	}
	if (term == 36){
		htmlStr += ('          <OPTION value=36 selected>3 Years');
	}else{
		htmlStr += ('          <OPTION value=36>3 Years');
	}
	if (term == 60){
		htmlStr += ('          <OPTION value=60 selected>5 ');
	}else{
		htmlStr += ('          <OPTION value=60 >5 ');
	}
	if (term == 84){
		htmlStr += ('              Years<OPTION value=84 selected>7 Years');
	}else{
		htmlStr += ('              Years<OPTION value=84>7 Years');
	}
	if (term == 120){
		htmlStr += ('          <OPTION value=120 selected>10  ');
	}else{
		htmlStr += ('          <OPTION value=120>10  ');
	}
	if (term == 180){
		htmlStr += ('            Years<OPTION value=180 selected>15 Years</OPTION></SELECT>   ');
	}else{
		htmlStr += ('            Years<OPTION value=180>15 Years</OPTION></SELECT>   ');
	}
	htmlStr += ('          </TD>  ');
	htmlStr += ('        </TR>  ');	
	
	htmlStr += ('        <TR>    ');
	htmlStr += ('          <TD class=bluetext>Payment Frequency:  ');
	htmlStr += ('          </TD>	 ');
	htmlStr += ('          <TD class=bluetext><SELECT name=frequency style="width:113"><OPTION   ');
	if (freq == 12){
		htmlStr += ('              value=12 selected>Monthly');
	}else{
		htmlStr += ('              value=12>Monthly');
	}
	if (freq == 24){
		htmlStr += ('          <OPTION value=24 selected>Semi-Monthly<OPTION  ');
	}else{
		htmlStr += ('          <OPTION value=24>Semi-Monthly<OPTION  ');
	}
	if (freq == 26){
		htmlStr += ('              value=26 selected>Bi-Weekly');
	}else{
		htmlStr += ('              value=26>Bi-Weekly');
	}
	if (freq == 52){
		htmlStr += ('          <OPTION value=52 selected>Weekly</OPTION></SELECT>	');
	}else{
		htmlStr += ('          <OPTION value=52>Weekly</OPTION></SELECT>	');
	}
	htmlStr += ('          </TD>  ');
	htmlStr += ('          <TD>  ');
	htmlStr += ('        </TR>  ');
	
	htmlStr += ('        <TR> ');
	htmlStr += ('          <TD class=bluetext>Compounding: ');
	htmlStr += ('          </TD>  ');
	htmlStr += ('          <TD class=bluetext><SELECT name=compound style="width:113"><OPTION  ');
	if (compound == 12){
		htmlStr += ('              value=12 selected>Monthly');
	}else{
		htmlStr += ('              value=12 >Monthly');
	}
	if (compound == 2){
		htmlStr += ('          <OPTION value=2 selected>Semi-Annually</SELECT> ');
	}else{
		htmlStr += ('          <OPTION value=2 >Semi-Annualy</SELECT> ');
	}
	htmlStr += ('          </TD>  ');
	htmlStr += ('          <TD>');
	htmlStr += ('        </TR>');	
   
	htmlStr += ('        <TR>   ');
	htmlStr += ('          <TD class=bluetext>Amortization Period:</TD>  ');
	htmlStr += ('          <TD class=bluetext><INPUT size=15  ');
	htmlStr += ('            value="'+amort+'" name=period> <FONT face="Verdana, Arial, Helvetica, sans-serif" size=2></FONT> ');
	htmlStr += ('          </TD> ');
	htmlStr += ('        </TR>  ');
	
	htmlStr += (' 		  <TD> ');
	htmlStr += (' 		  </TD>	  ');
	htmlStr += ('          <TD align=right class=bluetext><input type="button" value="Calculate" onClick="calcMortgage()" style="width:113">');
	htmlStr += ('          </TD> ');
	htmlStr += ('        </TR>   ');
	htmlStr += ('        <TR>     ');
	htmlStr += ('          <TD align=middle class=bluetext><B>Mortgage Payment:</B>	 ');
	htmlStr += ('          </TD>	     ');
	htmlStr += ('          <TD><INPUT onchange=calcMortgage() size=15 name=mainpay value="' + roundPen(payment) +'">  ');
	htmlStr += ('          </TD>   ');
	htmlStr += ('        </TR>     ');
	htmlStr += ('      </TBODY>  ');
	htmlStr += ('      </TABLE>  ');

	htmlStr += ('<TABLE BORDER=1 CELLPADDING=3 CELLSPACING=3>');
	htmlStr += ('<TR><TD ALIGN=CENTER><FONT FACE="Verdana, Arial, Helvetica, sans-serif" COLOR="#990000" SIZE="2"><B>Payment #</B></FONT></TD>'); 
	htmlStr += ('<TD ALIGN=CENTER><FONT FACE="Verdana, Arial, Helvetica, sans-serif" COLOR="#990000" SIZE="2"><B>Interest</B></FONT></TD>'); 
	htmlStr += ('<TD ALIGN=CENTER><FONT FACE="Verdana, Arial, Helvetica, sans-serif" COLOR="#990000" SIZE="2"><B>Principal</B></FONT></TD>'); 
	htmlStr += ('<TD ALIGN=CENTER><FONT FACE="Verdana, Arial, Helvetica, sans-serif" COLOR="#990000" SIZE="2"><B>Balance</B></FONT></TD> ');
	htmlStr += ('</TR>'); 

	var BAL= mortgage; 

	//for(i=1;i<=(term/(12/freq))&&BAL> 0;i++){ 
	for(i=1;BAL> 0;i++){ 
	
		if (i <= (term/(12/freq))){
		htmlStr += ('<TR>'); 
          	  }
          	  else{
		     if(oneshot){
		       oneshot=false;
		       htmlStr += ('<tr>');
		       htmlStr += ('<td colspan=4 class=redtext>');
		       htmlStr += ('Please call us for refinancing.');
		       htmlStr += ('</tr>');
		       htmlStr += ('</td>');
		      }
		   htmlStr += ('<TR bgcolor=CCCCCC>'); 
		}
		 
		htmlStr += ('<TD ALIGN=CENTER class=bluetext>' + i+'</TD>');
		var residual=calcBal(mortgage,intrate,2,freq,payment,i);
		principalPayment = BAL  - residual; 
		interestPayment= payment-principalPayment;
	
		htmlStr += ('<TD ALIGN=CENTER class=bluetext> $'+roundPen(interestPayment)  + '</TD>'); 
		var BAL = residual;	 
		htmlStr += ('<TD ALIGN=CENTER class=bluetext> $' + roundPen(principalPayment) +'</TD>');
		htmlStr += ('<TD ALIGN=CENTER class=bluetext> $' + roundPen(residual) +'</TD></TR>');

	}

htmlStr += ('</TABLE>');
htmlStr += ('</FORM>');

return htmlStr;
}


function GetFormObj()
{
	var returnObj = null;
	if (IE4plus){
		returnObj =  document.calc;
	}
		else if (NS4){
			returnObj =  document.formlayer.document.windows_form;
		}
			else if (NS6){
				returnObj =  document.getElementById("windows_form");
			}	
	return returnObj;
}

