// func: isEmpty
// desc: return TRUE if value is empty or null, else false
function isEmpty(field) {
        return(field.value == null || field.value == "")
}
// func: isNumber
// desc: return TRUE if the string represents a number, else FALSE
function isNumber(s) {
        var oneDecimal
        s = "" + s
        var len = s.length
        for (var i=0; i<len; ++i) {
                var ch = s.charAt(i)
                if (i == 0 && ch == "-") {
                        continue
                }
                if (ch == "." && !oneDecimal) {
                        oneDecimal = true
                        continue
                }
                if (ch < "0" || ch > "9") {
                        return false
                }
        }
        return true
}
// func: formatNumber
// desc: return a string representing the number n to d decimal places
function formatNumber(n, d) {
        var base = Math.floor(n)
        var decimal = Math.round((n - base) * Math.pow(10, d))

        // left of the decimal point
        var unformattedBase = "" + base
        var len = unformattedBase.length
        var formattedBase = ""
        for (var i=0; i<len; ++i) {
                if (i && (len - i) % 3 == 0) {
                        formattedBase += ","
                }
                formattedBase += unformattedBase.substring(i, i+1)
        }

        // right of the decimal point
        var formattedDecimal = ""
        if (d) {
                for (var i=0; i < d; ++i) {
                        formattedDecimal = "" + decimal % 10 + formattedDecimal
                        decimal = Math.floor(decimal / 10)
                }
                formattedDecimal = "." + formattedDecimal
        }

        return formattedBase + formattedDecimal
}

function isValidForm(form) {
        if (isEmpty(form.PV)) {
                alert("Please enter an amount you have already set aside. Enter 0 if you have not set any amount")
                form.PV.focus()

                return false
        }
        if (isEmpty(form.CY)) {
                alert("Please enter the number of years in college")
                form.CY.focus()
                return false
        }
}
function computeForm(form){
 if (isValidForm(form)) {
                return
      }


    var CT = parseFloat(form.CT.value);  
    var CY = parseFloat(form.CY.value);
    var PV = parseFloat(form.PV.value);	
    var AN = parseFloat(form.AN.options[form.AN.selectedIndex].text);
    var CR = parseFloat(form.CR.options[form.CR.selectedIndex].text)/100;
    var IR = parseFloat(form.IR.options[form.IR.selectedIndex].text)/100;
	var PR = 0;
//    var PR = parseFloat(form.PR.options[form.PR.selectedIndex].text)/100;
    var AT = parseFloat(form.AT.options[form.AT.selectedIndex].text);

    

    
    var N = CY+AT-AN;
    var M = N - (CY/2);
    var L =  Math.pow((1+CR),M);
    var FV = CT * CY * L;
    form.FV.value = formatNumber(FV,2);
    var NUM = FV - (PV * Math.pow((1 + IR), N));
    
    var O = Math.pow((1+PR),(N));
    var P = Math.pow((1+IR),(N));
    var Q = PV * P; 
    form.Q.value = formatNumber(Q,2);
    if (Math.abs(PR-IR) < 0.0000001) {
	 		var DEN = N * Math.pow((1 + PR),N);
                }
    else
	{
     var DEN = (O - P)/(PR-IR) - Math.pow((1+PR),N);
}
    var PMT = NUM/DEN;
    form.PMT.value = formatNumber(PMT,2);	


}
