

function isNum(str) {
	/*	
	...  determines whether the string 'str' is a number (i.e. contains only digits and .)
	*/
	for (var i = 0; i < str.length; i++) {
		var ch = str.substring(i, i + 1)
		if ((ch < "0" || "9" < ch) && ch != '.') {
			return false
		}
	}
	if ((str.length==0)) {
		return false
	} else  {
		return true
	}
}


function FindPayment()  {
	var discount=0
	var tradein=0
	var deposit=0
	msg=''
	ppstring=document.calcPayment.amount.value
	if (!isNum(ppstring)) {
		msg+='Non-numeric or absent data in loan amount field\n'
		}
	aprstring=document.calcPayment.aprpcnt.value
	if (!isNum(aprstring)) {
		msg+='Non-numeric or absent data in APR field\n'
		}
	nstring=document.calcPayment.nmonths.value
	if (!isNum(nstring)) {
		msg+='Non-numeric or absent data in number of months field\n'
		}
	if (msg.length==0)  {
		var pp=parseFloat(ppstring)
		var p=pp-discount-tradein-deposit
		var n=parseFloat(nstring)
		var apr=parseFloat(aprstring)
		var r=Math.pow((1+apr/100),1/12)
		if (apr>0) {
			rn=Math.pow(r,n)
			a=p*(1-r)*rn/(1-rn)
		} else {
			a=p/n
		}
		a=0.01*Math.round(a*100)
		totp=0.01*Math.round(a*n*100)
		interest=0.01*Math.round((totp-p)*100)
		interestpcnt=0.01*Math.round(interest/p*100*100)
		//alert("Monthly payment = "+a+"\nTotal payment = "+totp)
		document.calcPayment.mpayment.value=a
		document.calcPayment.trepaid.value=totp
		document.calcPayment.trepaidpcnt.value=interestpcnt
	} else {
		alert(msg)
	}
}

function FindAPR()  {
	var deposit=0
	var q=0
	msg=''
	pstring=document.calcAPR.amount.value
	if (!isNum(pstring)) {
		msg+='Non-numeric or absent data in loan amount field\n'
	}
	paystring=document.calcAPR.mpayment.value
	if (!isNum(paystring)) {
		msg+='Non-numeric or absent data in payment field\n'
	}
	nstring=document.calcAPR.nmonths.value
	if (!isNum(nstring)) {
		msg+='Non-numeric or absent data in number of months field\n'
	}
	if (msg.length==0)  {
		var p=parseFloat(pstring)
		var n=parseFloat(nstring)
		var a=parseFloat(paystring)
		r=1.01
		pp=p-deposit
		rnew=0
		while (Math.abs(r-rnew)>0.0000001)   {
		    var rn=Math.pow(r,n)
		    rnm1=rn/r
		    fac=(pp*rn-q)*(1-r)/(1-rn)-a
		    facdash=(n*pp*rnm1*(1-r)-(pp*rn-q))/(1-rn)+(pp*rn-q)*(1-r)*n*rnm1/((1-rn)*(1-rn))
		    rnew=r-fac/facdash
		    r=rnew
		}
		r12=Math.pow(r,12)
		apr=0.01*Math.round((r12-1)*100*100)
		document.calcAPR.aprpcnt.value=apr
	} else {
		alert(msg)
	}
}


