function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		nav_01_over = newImage("images/nav_01-over.jpg");
		nav_02_over = newImage("images/nav_02-over.jpg");
		nav_03_over = newImage("images/nav_03-over.jpg");
		nav_04_over = newImage("images/nav_04-over.jpg");
		nav_05_over = newImage("images/nav_05-over.jpg");
		nav_06_over = newImage("images/nav_06-over.jpg");
		nav_07_over = newImage("images/nav_07-over.jpg");
		rt_nav_01_over = newImage("images/rt_nav_01-over.jpg");
		rt_nav_02_over = newImage("images/rt_nav_02-over.jpg");
		rt_nav_03_over = newImage("images/rt_nav_03-over.jpg");
		rt_nav_04_over = newImage("images/rt_nav_04-over.jpg");
		rt_nav_05_over = newImage("images/rt_nav_05-over.jpg");
		vnav_01_over = newImage("images/vnav_01-over.jpg");
		vnav_02_over = newImage("images/vnav_02-over.jpg");
		vnav_03_over = newImage("images/vnav_03-over.jpg");
		vnav_04_over = newImage("images/vnav_04-over.jpg");
		vnav_05_over = newImage("images/vnav_05-over.jpg");
		vnav_06_over = newImage("images/vnav_06-over.jpg");
		vnav_07_over = newImage("images/vnav_07-over.jpg");
		preloadFlag = true;
	}
}

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="N"+Math.floor(num)+"." 
   n = result.length
   if (num>1000 && num<999999) {  
	 result="N"+result.substring(1,n-4)+","+result.substring(n-4,n)
   }
   if (num>1000000) {  
	 result = "N"+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 setCookie (name, value ) {
  document.cookie = name + "=" + escape (value) + "; path=/"; 
}   
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'><BR><BR>");
	  text = (text +"<H2 ALIGN=CENTER><FONT COLOR=BLACK>Amortization Table</FONT></H2>");
	  text = (text +"<UL><FONT SIZE=-1>The following table is based on the information entered in the calculator form.</FONT></UL>");
	  text = (text +"<UL><FONT SIZE=+1 COLOR=BLACK>Mortgage Amount: </FONT>" +calcRound(Mortgage.Amount));
	  text = (text +"<BR><FONT SIZE=+1 COLOR=BLACK>  Interest Rate: </FONT>" + Mortgage.Rate + " %");
	  text = (text +"<BR><FONT SIZE=+1 COLOR=BLACK>Mortgage Length: </FONT>" +get_selection(oForm.YEARS) + " Years </UL>");
	  text = (text +"<BR><CENTER><table border='1' width='100%'>");
	  text = (text +"<TR><TD ALIGN=CENTER BGCOLOR=BLACK><FONT COLOR=WHITE><B>Year</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=BLACK><FONT COLOR=WHITE><B>Interest&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=BLACK><FONT COLOR=WHITE><B>Principal&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=BLACK><FONT COLOR=WHITE><B>Balance&nbsp;</B></FONT></TD></TR>\n");
	  makeTable(oForm)
	  text = (text +"</TABLE></CENTER>");
	  msgWindow=window.open("","displayWindow","toolbar=no,width=500,height=300,directories=no,status=no,scrollbars=yes,resize=no,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
   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 ){ 
		 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 validatsearch()
{
		if (document.frmSearch.search1.value == "Search Here" || document.frmSearch.search1.value == "")
		{
			alert ("Please Enter Search Item.");
			document.frmSearch.search1.focus();
			return false;
		}
}



