document.oncontextmenu = function() { return false }
window.onerror=null
bState = true
oReq = new Collection("AMOUNT","RATE","","","","")
oVal = new Collection("AMOUNT","RATE","","","","")
oTst = new Collection("N","N","","","","")
function makeadlist (obj){
var ccount=0;
var y=document.createElement('option');
var x=document.getElementById(obj);
while (ccount < adcount) {
var y=document.createElement('option');
y.text=adlist[ccount];
y.value=adlist[ccount];
try
  {
  x.add(y,null); // standards compliant
  }
catch(ex)
  {
  x.add(y); // IE only
  }
ccount++;
}
}

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)
   setCookie("_Prin", Mortgage.Amount)
   setCookie("_Int", Mortgage.Rate)
   setCookie("_Freq",Mortgage.Frequency)
   setCookie("_Year", Mortgage.Term)
   setCookie("_Tot", Mortgage.Interest)
   return(true)
}
function setCookie (name, value ) {
  document.cookie = name + "=" + escape (value) + "; path=/"; 
}   

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))))))
   erate = Math.pow(1+(this.Rate/100)/2,2/this.Periods)-1;
   this.Payment = this.Amount*erate/(1-Math.pow(1+erate,this.Periods*this.Term*-1));

}

function calcInterest() {
   this.Interest = ((this.Payment*(this.Term*this.Periods))-this.Amount)
}
function calcPeriods() {
   if (this.Frequency=="Monthly") { this.Periods=12 } else 
   { if (this.Frequency=="Semi-Monthly") { this.Periods=24 } else
   { if (this.Frequency=="Bi-Weekly") { this.Periods=26 } else
   {this.Periods=52 }
}}}
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 NewPage(oForm, oBtn) {
   if (oBtn.name == "cmdCalc") {
      return(false)
    }
//   if (confirm("An Amortization Table calculates the periodic payment breakdown for each specific category listed.")) 
    {
      text = ("<HEAD><TITLE>Amortization Table</TITLE></HEAD>");
      text = (text +"<BODY BGCOLOR =  '#FFFFFF'>");
      text = (text +"<H2 ALIGN=CENTER><FONT COLOR=#c60042>Amortization Table</FONT></H2>"); 
      text = (text +"<form><p align='right'><input type='submit' value='Close this  window' onClick='window.close(); return false;' name='submit'></form>");
      text = (text +"<form><p align='right'><input type='submit' value='Print this page' onClick='window.print(); return false;' name='submit'></form>");
      text = (text +"<UL><FONT SIZE=+1 COLOR=#c60042>Mortgage Amount: </FONT>" +calcRound(Mortgage.Amount));
      text = (text +"<BR><FONT SIZE=+1 COLOR=#c60042>Interest Rate: </FONT>" + Mortgage.Rate + " %");
      text = (text +"<BR><FONT SIZE=+1 COLOR=#c60042>Amortization Period: </FONT>" +get_selection(oForm.YEARS) + " Years "+"<BR>");
      text = (text +"<BR><FONT SIZE=+1 COLOR=#c60042>Payment Amount: </FONT>" + calcRound(Mortgage.Payment)); 
      text = (text +"<BR><FONT SIZE=+1 COLOR=#c60042>Total Interest Paid: </FONT>" + calcRound(Mortgage.Interest)+"</UL>"); 
      text = (text +"<H4 ALIGN=CENTER><FONT COLOR=#c60042>This table is courtesy of </font><BR><FONT COLOR=#0000ff>A. Mark Argentino</font><BR><FONT COLOR=#c60042>P.Eng., Associate Broker<BR>RE/MAX Realty Specialists Inc.<BR>905-828-3434<BR><a href='mailto:mark@mississauga4sale.com?subject=Please send me more Real Estate information' title='Ask a Real Estate Question'>mark@mississauga4sale.com  <img src='images/email.gif' width=30 height=15></a></FONT></H4>");
      text = (text +"<BR><CENTER><table border='1' width='100%'>");
      text = (text +"<TR><TD ALIGN=CENTER BGCOLOR=#c60042><FONT COLOR=WHITE><B>Year</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#c60042><FONT COLOR=WHITE><B>Interest&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#c60042><FONT COLOR=WHITE><B>Principal&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#c60042><FONT COLOR=WHITE><B>Balance&nbsp;</B></FONT></TD></TR>\n");
      makeTable(oForm)
      text = (text +"</TABLE></CENTER>");
      text = (text +"<H4 ALIGN=CENTER><FONT COLOR=#c60042>If you have any questions, please contact <BR>Mark Argentino, 905-828-3434 or mark@mississauga4sale.com</FONT></H4>");
msgWindow=window.open("","","toolbar=no,width=500,directories=no,scrollbars=yes,menubar=no")
      msgWindow.document.write(text)
      msgWindow.document.close()
      return(true)
    }
  return(false)
}

function makeTable(oView) {
   var currInt = 0
   var currPrin = 0
   prevBalance = Mortgage.Amount
//   InterestRate = ( Mortgage.Rate /100) / Mortgage.Periods
   InterestRate = erate
   MonthlyPayment = Mortgage.Payment
   currStart = get_selection(oView.START)
   for(i=1;i<=30;i++) {
      for(j=1;j<=Mortgage.Periods;j++) {
         periodInt = prevBalance * InterestRate
         periodPrin = MonthlyPayment - periodInt
         currBal = prevBalance - periodPrin
         currInt += periodInt
         currPrin += periodPrin
         prevBalance = currBal
      }
      if( currBal <= 0.01 ){
         currBal = 0
      }
      text = (text +"<TR><TD ALIGN=CENTER>"+ currStart +"</TD><TD ALIGN=RIGHT>"+ calcRound(currInt) +"&nbsp;</TD><TD ALIGN=RIGHT>"+ calcRound(currPrin) +"&nbsp;</TD><TD ALIGN=RIGHT>"+ calcRound(currBal)+"&nbsp;</TD></TR>");
      currInt = 0
      currPrin = 0
      currStart = parseInt(currStart)
      currStart += 1
      if(currBal<=0) {
         return(true)
      }       
   }
   return (true)
}

function setfocus() {   
   document.MORTGAGE.AMOUNT.focus()
   document.MORTGAGE.AMOUNT.select()
}


function showvid () {
timerID=setTimeout("Videobox.open('http://test.affordhost.com/Savers_mortgage/sm.mvsp1.swf','','vidbox 300 250') ",100);
               
}

function OpenWin(url)  {
helpWin = window.open(url,'HelpWin','dependent=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=600,height=800,screenX=10,screenY=10,Left=10,Top=10');
helpWin.focus();
};

function AddDash(obj) {
 var tmpV=obj.value;
 var tmpN=obj.name;
 if (tmpV.length == 3 && tmpV.charCodeAt(tmpV.length) != 45 && tmpV.charCodeAt(tmpV.length - 1) != 45)
 {
   obj.value = tmpV+"-";
 }
 if (tmpV.length == 7 && tmpV.charCodeAt(tmpV.length) != 45 && tmpV.charCodeAt(tmpV.length - 1) != 45)
 {
   obj.value = tmpV+"-";
 }
};

function AddSlash(obj) {
 var tmpV=obj.value;
 var tmpN=obj.name;
 if (tmpV.length == 2 && tmpV.charCodeAt(tmpV.length) != 47 && tmpV.charCodeAt(tmpV.length - 1) != 47)
 {
   obj.value = tmpV+"/";
 }
 if (tmpV.length == 5 && tmpV.charCodeAt(tmpV.length) != 47 && tmpV.charCodeAt(tmpV.length - 1) != 47)
 {
   obj.value = tmpV+"/";
 }
};

function upperCaseFirst(obj) {
 var tmpV=obj.value;
 var tmpN=obj.name;
 if (tmpV.length == 1)
 {
   tmpV=tmpV.toUpperCase();
   obj.value = tmpV;
 }
};

function checkforvals (obj) {

	for (var i =0; i < obj.length; i++)    {
			var tmpV = obj[i].value;
			var tmpN = obj[i].className;
		if (tmpN == "req_phone")	{
			for (var ii =0; ii < tmpV.length; ii++)    {
   				var c = tmpV.charCodeAt(ii); 
				//dashes && numbers only
				if ( (c > 57 || c < 47) && c != 45)        
				{
					alert("Only numbers from 0-9 and dashes are allowed for \'\'"+ obj[i].id +"\'\' \nPlease Re-enter");
					obj[i].focus();
					return false;
				}
			}
		}
		if (tmpN == "req_radio") {
			if (obj[i].checked != true && obj[i+1].checked != true) { 
				alert("Please answer the question \'\'"+ obj[i].id +"\'\'");
				return false;
			}
				i++;
		}

		if (tmpV.length == 0 && (tmpN =="req" || tmpN =="req_radio" || tmpN =="req_phone")){
			alert("The field \'\'"+ obj[i].id +"\'\' must be filled out.\nPlease Complete");
			obj[i].focus();
			return false;
		}
	}
return true;
} 

