// JavaScript Document
/***************************
(c) 2008 www.TUFaT.com
All Rights Reserved. Please
do not re-sell/re-distribute
this software.
***************************/
/* amo.js */

function compAmort(LIST,INRATE,PAYMENTt,FREQ){

	var form = document.MORTGAGE;
	var MTG = form.ListPrice.value;
	var DOWN = form.DownPayment.value;
	var LIST = MTG - DOWN;
	var AMORT = form.Amort.value;
	var INRATE = form.Rate.value / 100;
	var RATE = form.Rate.value;
	var COMPOUND = 2;
	if(FREQ == 2){
		var returnpay = PAYMENTt * 2.0;
	}
	if(FREQ == 3){
		var returnpay = PAYMENTt * 2.0;
	}
	if(FREQ == 4){
		var returnpay = PAYMENTt * 4.0;
	}
	var wholecom = findAmort(1,1,LIST,INRATE,COMPOUND,returnpay,FREQ);
	var solvecom = findAmort(wholecom,.001,LIST,INRATE,COMPOUND,returnpay,FREQ);
	if(FREQ == 2){
		form.AmortS.value= round_up(solvecom,2);
		return form.AmortS.value;
	}
	if(FREQ == 3){
		form.AmortB.value= round_up(solvecom,2);
		return form.AmortB.value;
	}
	if(FREQ == 4){
		form.AmortW.value= round_up(solvecom,2);
		return form.AmortW.value;
	}

}

function findAmort(q,n,LIST,RATE,COMPOUND,PAYMENTAG,FREQ){

	var compound = COMPOUND / 12;
	var yrRate = RATE / COMPOUND;
	var rdefine = Math.pow((1.0 + yrRate),compound) - 1.0;
	var newpay = 1000000000;
	if (FREQ == 2) {
		var p = 12;
	}
	if (FREQ == 3) {
		var p = 13;
	}
	if (FREQ == 4) {
		var p = 13;
	}
	for(i = q; newpay >= PAYMENTAG; i = i + n){
		var monTime = i * p;
		var comfact = Math.pow((1.0 + rdefine),monTime);
		var newpay = (LIST * rdefine * comfact) / (comfact - 1.0);
	}
	return (i - n - n);
}

function compPay(){
	var form = document.MORTGAGE;
	var MTG = form.ListPrice.value;
	var DOWN = form.DownPayment.value;
	var LIST = MTG - DOWN;
	var AMORT = form.Amort.value;
	var INRATE = form.Rate.value / 100;
	
	var compound = 2 / 12;
	var monTime = AMORT * 12;
	var yrRate = INRATE / 2;
	var rdefine = Math.pow((1.0 + yrRate),compound) - 1.0;
	var comfact = Math.pow((1.0 + rdefine),monTime);
	var PAYMNT = (LIST * rdefine * comfact)/  (comfact - 1.0);
	var rPAYMENT = PAYMNT;
	var rPAYMENT2 = PAYMNT / 2.0;
	var rPAYMENT3 = PAYMNT / 4.0;
	form.PaymentM.value = round_up(rPAYMENT,2);
	form.PaymentS.value = round_up(rPAYMENT2,2);
	form.PaymentB.value = round_up(rPAYMENT2,2);
	form.PaymentW.value = round_up(rPAYMENT3,2);
	form.AmortM.value = Math.round((form.Amort.value * 1.0)*100)/100;                                                                                                                                                                         
	form.AmortS.value = compAmort(LIST,INRATE,rPAYMENT2,2);
	form.AmortB.value = compAmort(LIST,INRATE,rPAYMENT2,3);
	form.AmortW.value = compAmort(LIST,INRATE,rPAYMENT3,4);
}

function check(a){
   	var pest = 0;
   	var b = "";
	for(i = 0;i <= a.length;i++){
		var u = a.charAt(i);
      	if((u >= "0" && u <= "9") || u == "."){
        	if(u == "."){
        		var pest = pest + 1;
        		if(pest == 2){
					break;
				}
			}
			var b = b + u;
		}
	}
	return b;
}

function add_up(a){ 
	a.value = check(a.value);
}

function round_up(n,num){
	if(n > 0){
		var nums = num * 1.0;
		if(num == 2){
			pennies = n * 100;
		}
		if(num == 3){
			pennies = n * 1000;
		}
		pennies = Math.round(pennies);
		strPennies = "" + pennies;
		len = strPennies.length;
		return strPennies.substring(0, len - nums) + "." + strPennies.substring(len - nums, len);
	} else{
		return 0;
	}
}

function check_num(quest,input, min, max, msg){
    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
            return false;
        }
    }
    if(input.value != ""){
    	var num = 0 + str
    	if (num < min || max < num) {
    		var sendn = msg;
    		var sendq = "You have entered " + input.value + ". Please enter a number between " + min + " and " + max + ".";
			alert(sendn + "\n" + sendq);
        	return false;
    	}
    	input.value = str;
    	return true;
    }
}

function THEcompute(quest,input,min,max,msage){
    add_up(input);
	check_num(quest,input,min,max,msage);
}

function computeForm(){
	if(navigator.appVersion.substring(0,3) == 2.0 &&  navigator.appName.substring(0,8) == "Netscape" && navigator.appVersion.indexOf("Macintosh") >= 0){
        setTimeout("compute(document.forms['paycalculator'])",200);
	}else{
		compute(document.forms['paycalculator']);
	}
}
