function showCalculator() {
	txt = '<div style=" width:500px;margin: 20px  0px 0px 40px">';
	txt += '<table width="341" cellspacing="8" style="margin: 10px  0px 20px 0px">';
	txt += '  <tbody>';
	txt += '    <tr>';
	txt += '      <td width="142" align="right" style="padding-right:10px;">Mortgage Term:</td>';
	txt += '      <td width="169"><select id="desterm">';
	txt += '        <option value="0" selected="selected">Please choose</option>';
	txt += '        <option value="6">6 Months</option>';
	txt += '        <option value="12">1 Year</option>';
	txt += '        <option value="24">2 Years</option>';
	txt += '        <option value="36">3 Years</option>';
	txt += '        <option value="60" selected>5 Years</option>';
	txt += '        <option value="84">7 Years</option>';
	txt += '        <option value="120">10 Years</option>';
	txt += '      </select></td>';
	txt += '    </tr>';
	txt += '    <tr>';
	txt += '      <td align="right" style="padding-right:10px;">Payment Frequency:</td>';
	txt += '      <td><select id="PFREQ">';
	txt += '        <option value="0">Please choose</option>';
	txt += '        <option value="12" selected="selected">Monthly</option>';
	txt += '        <option value="24">Semi-Monthly</option>';
	txt += '        <option value="26">Bi-Weekly</option>';
	txt += '        <option value="52">Weekly</option>';
	txt += '      </select></td>';
	txt += '    </tr>';
	txt += '    <tr>';
	txt += '      <td align="right" style="padding-right:10px;">Amortization Period:</td>';
	txt += '      <td><input onfocus="this.select()" onchange="computeField(\'3\',this,1,40,\'Amortization Period\')" size="9" value="25" id="NAMORT" />';
	txt += '        <span style="text-align:right">Year(s)</span></td>';
	txt += '    </tr>';
	txt += '    <tr>';
	txt += '      <td align="right" style="padding-right:10px;">Mortgage Amount:</td>';
	txt += '      <td><input onfocus="this.select()" onchange="computeField(\'4\',this,10000,1000000,\'Mortgage Amount\')" size="9" id="mortamt" /></td>';
	txt += '    </tr>';
	txt += '    <tr>';
	txt += '      <td align="right" style="padding-right:10px;">Interest Rate:</td>';
	txt += '      <td><input onfocus="this.select()" onchange="computeField(\'5\',this,2,25,\'Interest Rate\')" size="9" value="5" id="rate" />';
	txt += '        &#160;(e.g. 5.75)</td>';
	txt += '    </tr>';
	txt += '  </tbody>';
	txt += '</table>';
	txt += '<a  class="rounded" href="javascript:compute();">Calculate</a><br>';
	txt += '<div id="calc-res" style="display: none;">';
	txt += '	<table width="308"  cellspacing="0">';
	txt += '	  <tbody>';
	txt += '		<tr>';
	txt += '		  <td width="150" align="right" valign="bottom" style="padding-right:10px;">Mortgage Payment:</td>';
	txt += '		  <td align="left" valign="bottom"  style="padding-left:10px;"><input class="inputnoborder" onchange="compute()" size="10" id="mainpay" /></td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td colspan="2" align="left" valign="bottom">Mortgage Balance Remaining After:</td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td align="right" style="padding-right:10px;">1 Year: </td>';
	txt += '		  <td style="padding-left:10px;"><input class="inputnoborder" size="10" id="mainyr1" /></td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td align="right" style="padding-right:10px;">2 Years: </td>';
	txt += '		  <td style="padding-left:10px;"><input class="inputnoborder" size="10" id="mainyr2" /></td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td align="right" style="padding-right:10px;">3 Years: </td>';
	txt += '		  <td style="padding-left:10px;"><input class="inputnoborder" size="10" id="mainyr3" /></td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td align="right" style="padding-right:10px;">5 Years: </td>';
	txt += '		  <td style="padding-left:10px;"><input class="inputnoborder" size="10" id="mainyr5" /></td>';
	txt += '		</tr>';
	txt += '		<tr>';
	txt += '		  <td align="right" style="padding-right:10px;">10 Years </td>';
	txt += '		  <td style="padding-left:10px;"><input class="inputnoborder" size="10" id="mainyr10" /></td>';
	txt += '		</tr>';
	txt += '	  </tbody>';
	txt += '	</table>';
	txt += '	</div>';
	txt += '	</div>';
	message2(txt);
	try
	{
		$("#mortamt").val($("#activePrice").val());	
	}
	catch (ex)
	{
	}
	
}

function showCalculator2() {
	showCalculator();
	$("#mortamt").val($("#calcAmount").val());	
	$("#NAMORT").val($("#calcYears").val());	
	$("#rate").val($("#calcInterest").val());	
	compute();
}
var irate, mi, cmi, years, tprinc, princ, paym, cpaym, osp,v,downp,downr,comp;
function calcPaym(cdn){
	 document.getElementById("calc-res").style.display="block";
   tprinc = round2d(parseFloat(document.smpc.tprinc.value));
   downp = .01*parseFloat(document.smpc.downp.value);
   downr = ceil2d(downp*tprinc);
   princ = tprinc-downr;
   
   document.smpc.princ.value = fmt2d(princ,0);
   document.smpc.downr.value = fmt2d(downr,0);
   
   if(cdn)comp="Canadian"; else comp="U.S";
   document.smpc.comp.value = comp;
   
   irate = .01*parseFloat(document.smpc.percent.value);
   years=parseFloat(document.smpc.years.value);
   term = parseFloat(document.smpc.term.value);
   if(term > years)term=years;
   
   if (term==0 || years==0||irate<.0001||princ<1)
   {alert("values must be numeric");}
   else 
   {
       if(cdn)mi = Math.pow(1+ irate/2,1/6) 
       else   mi = 1+(irate/12);
       v = 1/mi;
       paym = ceil2d(princ*(mi-1)/(1-Math.pow(mi,-(years*12))));
       osp = (princ-(v*paym*(1-Math.pow(v,12*term)))/(1-v))/Math.pow(v,12*term);
       if(osp<0)osp = 0;
       
       document.smpc.paym.value=fmt2d(paym,0);
       document.smpc.owed.value = fmt2d(osp,0);
   }
}
function round2d(n){return(.01* Math.round(100*n));}
function floor2d(n){return(.01* Math.floor(100*n));}
function ceil2d(n){return(.01* Math.ceil(100*n));}
// format number n as string width w with 2 decimal places
function fmt2d(n,w)
{
   var work,dp,sl,dl;
   
   work = ""+floor2d(n); // force only 2 decimals
   sl=work.length;
   
   if(-1 == (dp = work.indexOf(".")))work=work+".00";
   else if(3 > sl-dp)work = work+".00".substring(sl-dp,3);
   sl = work.length;
   if(0 != w && w !=sl)
      if(w<sl){work = "*";for(sl=1;sl<w;sl++)work=work+"*";}
      else for(;sl<w;sl++)work=" "+work; 
   return work;
  
}
 
/*  THE FOLLOWING TWO FUNCTIONS CHECK THAT ALL NUMERIC VALUES ARE REAL NUMBER AND REMOVE DOUBLE DECIMALS */
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);
}

 
/* 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+'maxem.asp';
		}
 
if(navigator.appName.substring(0,8) == "Netscape")
{
			alert(n+'\n'+q)
			
		}
 
}
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 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){
	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 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
		}
}
 
 
function compute(){
 
term = retTerm($("#desterm").attr("selectedIndex"));
freq = retFreq($("#PFREQ").attr("selectedIndex"));
amort = $("#NAMORT").val();
mortgage = $("#mortamt").val();
intrate = $("#rate").val();
var payment = calcPay(mortgage, amort, intrate, 2, freq);
 
$("#mainpay").val('$' + numberFormat(roundPen(payment)));
$("#mainyr1").val('$' + numberFormat(roundPen(calcBal(mortgage,intrate,2,freq,payment,(12/(12/freq))))));
$("#mainyr2").val('$' + numberFormat(roundPen(calcBal(mortgage,intrate,2,freq,payment,(24/(12/freq))))));
$("#mainyr3").val('$' + numberFormat(roundPen(calcBal(mortgage,intrate,2,freq,payment,(36/(12/freq))))));
$("#mainyr5").val('$' + numberFormat(roundPen(calcBal(mortgage,intrate,2,freq,payment,(60/(12/freq))))));
$("#mainyr10").val('$' + numberFormat(roundPen(calcBal(mortgage,intrate,2,freq,payment,(120/(12/freq))))));

 $("#calc-res").css("display", "block");
return true;
}

