

<!-- Begin
apr = new Array(
new Array(
new Array("46.9", 46.9)
),
new Array(
new Array("52",52)
),
new Array(
new Array("59.1",59.1)
),
new Array(
new Array("67.6",67.6)
),
new Array(
new Array("80.9",80.9)
),
new Array(
new Array("90",90)
),
new Array(
new Array("92.3",92.3)
)
);
function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {
var i, j;
var prompt;
// empty existing items
for (i = selectCtrl.options.length; i >= 0; i--) {
selectCtrl.options[i] = null; 
}
prompt = (itemArray != null) ? goodPrompt : badPrompt;
if (prompt == null) {
j = 0;
}
else {
selectCtrl.options[0] = new Option(prompt);
j = 1;
}
if (itemArray != null) {
// add new items
for (i = 0; i < itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1]; 
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
   }
}
//  End -->




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 checkNumber(input, min, max, msg) {
	msg = msg + " is invalid: " + input.value;
	var str = input.value;


	var num = parseFloat(str)
	if (num < min || max < num) {
		alert(msg + ", not in range [" + min + ".." + max + "]");
		clearForm();
		return false;
	}
	input.value = str;
	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
        nstring=document.calcPayment.nmonths.value
        if (!isNum(nstring)) {
                msg+='Non-numeric or absent data in number of months field\n'
                }
					form = document.calcPayment;

        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
                }
				else {
                alert(msg)
        }
				
				if ((form.amount.value == null || form.amount.value.length == 0)) {
			clearForm();
			return(false);
	}

	if (!checkNumber(form.amount, 250, 25000, "Loan Amount")) {
			clearForm();
			return(false);
	}

	var i = 5;
	if (i > 1.0) {
		i = i / 100.0;
	}}

function clearForm() {}
//-->


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)
        }
}
