var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=0 //Enable or disable the anchor link when clicked on? (1=e, 0=d)
var hidemenu_onclick=1 //hide menu when user clicks within menu? (1=yes, 0=no)

var  	apr,npy,thePrincipal,thePayment, theDownPayment,totalPayments,ppy,howLong, valuehowlong, valueppy, valuedownpayment ;//Global variables

valuehowlong = 25;	
valueppy = 12;
valuedownpayment = 5;

//Use round() function to convert a "value" to "dpoints" decimal places

function round(value,dpoints){
value= makeNumber(value)
if(!dpoints) dpoints=2
var expr= ""+Math.round(value*Math.pow(10,dpoints))
while (expr.length <= dpoints) {
expr="0"+expr}
var dp=expr.length-dpoints
return (expr.substring(0,dp)+"."+expr.substring(dp,expr.length));
}

//Use toCurrency() function to convert "value to "currency", where the default is "$".

function toCurrency (value, currency) {
	if(isNaN(parseFloat(value))) {
	alert("The value is not a number")
	}else 	{if(!currency) currency="$"
		var newValue = currency+round(value)
		return newValue
		}
	}

//Use makeNumber() function to convert an expression to a number, useful for form entries which include "$" 	
//and commas.

function makeNumber(result){
	var newResult="", decpoint=0;
	if(!isNaN(result)) return result;
	else result= ""+result
	for(i=0;i<result.length;i++){
	if( result.charAt(i) == "." || !isNaN (parseInt(result.charAt(i))) )
	newResult+=result.charAt(i)
		}

	for(i=0;i<newResult.length;i++){
	if (newResult.charAt(i)==".") { decpoint++}

	}
	if (decpoint>1) {return ( alert("\""+result+"\" has "+decpoint+"\n decimal points")) }else{
	return parseFloat(newResult)}

	}

	// Use commaThis() function to convert an expression to a number with commas e.g. 10000 to 10,000

	function commaThis(value)
	{
	var newblock=""
	value=makeNumber(value);
	value+=""
	var dp= (value.indexOf(".") != -1)? value.indexOf("."):0
	var trailing= (dp==0)? "":value.substring(dp,value.length);
	if(trailing) value=value.substring(0,dp)
	if(value.length>3)
	{
		var offset=(value.length)%3
		var block=(offset>0)? value.substring(offset,value.length):value
		for(i=0;i<block.length;i++){
		if((i%3)==0) newblock+=","
		newblock+=block.charAt(i)

	}
	block=newblock.substring(1)

	if(offset>0){
	return (value.substring(0,offset)+","+block+trailing)	}
	else{
	return block+trailing }
	}
	else {
	return value+trailing }
	}

	//Use commaCurrency() to convert an expression or value to currency with commas.

	function commaCurrency(value)
	{
	value=toCurrency(value)
	value=value.substring(1)
	value=commaThis(value)
	value="$"+value
	return value
	}



	function calc()
	{
thePrincipal=(makeNumber(document.f.amount.value))-((makeNumber(document.f.amount.value))/100*valuedownpayment);
	apr=makeNumber(document.f.rate.value);
	ppy=valueppy;
	howLong=valuehowlong;
	totalPayments=howLong*ppy;
	if((totalPayments%1) != 0) alert("I suggest you don't use decimals\nin years field or payment field")

	var compound=2/12;
	var rdefine=Math.pow((1+apr/2/100),compound)-1.0;
	var a=Math.pow((1.0+rdefine),howLong*12);
	thePayment=(thePrincipal*a*rdefine)*(12/ppy)/(a-1);


	

	theDownPayment=(makeNumber(document.f.amount.value))/100*valuedownpayment;
	if(!isNaN(thePayment) &&
	(thePayment != Number.POSITIVE_INFINITY) &&
	(thePayment != Number.NEGATIVE_INFINITY))
	{
	document.f.payment$.value=commaCurrency(thePayment);
	document.f.downpayment$.value=commaCurrency(theDownPayment);
	}
	else	{
	document.f.payment$.value="";
	document.f.downpayment$.value=""; }
	}

	function sethowlong(rechowlong)
	{
	if (rechowlong == "1") 	{valuehowlong = "5";}
	if (rechowlong == "2")	{valuehowlong = "10";}
	if (rechowlong == "3")	{valuehowlong = "15";}
	if (rechowlong == "4")	{valuehowlong = "20";}
	if (rechowlong == "5")	{valuehowlong = "25";}
	if (rechowlong == "6")	{valuehowlong = "30";}
	}

	function setdownpayment(recdownpayment)
	{
		valuedownpayment = recdownpayment;
	}

	function setppy(recppy)
	{
	if (recppy == "1")	{valueppy = "52";}
	if (recppy == "2")	{valueppy = "26";}
	if (recppy == "3")	{valueppy = "12";}
	if (recppy == "4")	{valueppy = "4";}
	if (recppy == "5")	{valueppy = "1";}
	}

/////No further editting needed

var ie5=document.all
var ns6=document.getElementById&&!document.all

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}

function showhide(obj, e, visible, hidden){
if (ie5||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
obj.visibility=visible
else if (e.type=="click")
obj.visibility=hidden
}

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
}
else{
var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
}
}
return edgeoffset
}

function dropdownmenu(obj, e, dropmenuID){
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
if (typeof dropmenuobj!="undefined") //hide previous menu
dropmenuobj.style.visibility="hidden"
clearhidemenu()
if (ie5||ns6){
obj.onmouseout=delayhidemenu
dropmenuobj=document.getElementById(dropmenuID)
if (hidemenu_onclick) dropmenuobj.onclick=function(){dropmenuobj.style.visibility='hidden'}
dropmenuobj.onmouseover=clearhidemenu
dropmenuobj.onmouseout=ie5? function(){ dynamichide(event)} : function(event){ dynamichide(event)}
showhide(dropmenuobj.style, e, "visible", "hidden")
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
}
return clickreturnvalue()
}

function clickreturnvalue(){
if ((ie5||ns6) && !enableanchorlink) return false
else return true
}

function contains_ns6(a, b) {
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function dynamichide(e){
if (ie5&&!dropmenuobj.contains(e.toElement))
delayhidemenu()
else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
delayhidemenu()
}

function delayhidemenu(){
delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
}

function clearhidemenu(){
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}

