window.onload = InitCalculator;

function InitCalculator(){
    CalcDown('price');
    CalculatePayments();    
}

function CalculatePayments(){
    var form = document.forms[0];
    var principle, months, monthlyRate;

    if (!ValidateFields())
	    return;

    form.Loan.value = form.Price.value - form.Down.value;

    principle = form.Price.value - form.Down.value;
    monthlyRate = form.Interest.value / 100.0 / 12.0;
    months = form.Years.value * 12;

    form.Payment.value = Math.round((principle * monthlyRate)/(1 - Math.pow((1 + monthlyRate),(-months))) * 100) / 100;
}

function CalcDown(cInput){
	var form = document.forms[0];
	var	tmpObj;
	var	tmpVal;
		
	if (cInput == "down") {
		tmpObj = form["Percent"];
		tmpVal = Math.round((StrRepl(form.Down.value,",","") / form.Price.value * 100.0) * 100)/100;
	} else if (cInput == "percent") {
		tmpObj = form["Down"];
		tmpVal = Math.round(form.Price.value * form.Percent.value / 100.0);
	} else if (cInput == "price") {
		tmpObj = form["Down"];		
		tmpVal = Math.round(StrRepl(form.Price.value,",","") * form.Percent.value / 100.0);
	}
	
	if (isNaN(tmpVal) == true)
		tmpVal = 0;
		
	tmpObj.value = tmpVal;				
}

function ValidateFields(){
    var objForm = document.forms[0];

    if (!ValidateNumbers (objForm.Interest, "APR", false))	
	    return false;

    if (!ValidateNumbers (objForm.Years, "Term", false))	
	    return false;

    if (!ValidateNumbers (objForm.Down, "down payment", false))	
	    return false;
    	
    return true;	 
}


function StrRepl(str1, str2, str3){
	var nPos;
	var cTemp = str1;

	while ((nPos = cTemp.indexOf(str2)) >= 0){
	    cTemp = cTemp.substring(0, nPos) + str3 + cTemp.substring(nPos+str2.length, cTemp.length);
	}
	return cTemp;
}
