﻿function stripNum(num) {

	var iPercent
	var iDollar
	var iSpace
	var iComma
	var numLength = num.length
	
	if(numLength > 0) {
	
		num=num.toString();
		
		iPercent = num.indexOf("%");
		if(iPercent >= 0) {
			num=num.substring(0,iPercent) + "" + num.substring(iPercent + 1,numLength);
			numLength=num.length;
		}
		
		iDollar = num.indexOf("$");
		if(iDollar >= 0) {
			num=num.substring(0,iDollar) + "" + num.substring(iDollar + 1,numLength);
			numLength=num.length;
		}

		iSpace = num.indexOf(" ");
		if(iSpace >= 0) {
			num=num.substring(0,iSpace) + "" + num.substring(iSpace + 1,numLength);
			numLength=num.length;
		}

		iComma = num.indexOf(",");
		if(iComma >= 0) {
			while(iComma >=1) {
				num=num.substring(0,iComma) + "" + num.substring(iComma + 1,numLength);
				numLength=num.length;
				iComma = num.indexOf(",");
			}
		}
		
		num = eval(num);
		
	} else {
		num = 0;
	}

	return num;
}

function formatCurrency(num) {

	var isNeg=0;
	
	if(num < 0) {
		num=num*-1;
		isNeg=1;
	}
		
	onum=Math.round(num*100)/100;
	integer=Math.floor(onum);
	
	if (Math.ceil(onum) == integer) {
		decimal="00";
	} else{
		decimal=Math.round((onum-integer)*100)
	}
	decimal=decimal.toString();
	if (decimal.length<2) decimal="0"+decimal;
	
	integer=integer.toString();
	var tmpnum="";
	var tmpinteger="";
	var y=0;
	
	for (x=integer.length;x>0;x--) {
		tmpnum=tmpnum+integer.charAt(x-1);
		y=y+1;
		if (y==3 & x>1) {
			tmpnum=tmpnum+",";
			y=0;
		}
	}
	
	for (x=tmpnum.length;x>0;x--) {
		tmpinteger=tmpinteger+tmpnum.charAt(x-1);
	}
	
	finNum="$"+tmpinteger+"."+decimal;
	
	if(isNeg == 1) {
		finNum = "-" + finNum;
	}
	
	return finNum;
}

function computeMonthlyPayment(prin, numPmts, intRate) {
	
	var pmtAmt = 0;
	
	if(intRate == 0) {
		pmtAmt = prin / numPmts;
	} else {

		if (intRate >= 1.0) {
			intRate = intRate / 100.0;
		}

		intRate /= 12;
		
		var pow = 1;
		for (var j = 0; j < numPmts; j++)
		pow = pow * (1 + intRate);
		
		pmtAmt = (prin * pow * intRate) / (pow - 1);
	}
	
	return pmtAmt;
}

function formatNumber(num) {

	var isNeg=0;
	
	if(num < 0) {
		num=num*-1;
		isNeg=1;
	}
	
	onum=Math.round(num*100)/100;	
	integer=Math.floor(onum);
	
	if (Math.ceil(onum) == integer) {
		decimal="00";
	} else{
		decimal=Math.round((onum-integer)*100)
	}
	decimal=decimal.toString();
	
	if (decimal.length<2) decimal="0"+decimal;
	
	integer=integer.toString();
	var tmpnum="";
	var tmpinteger="";
	var y=0;
	
	for (x=integer.length;x>0;x--) {
		tmpnum=tmpnum+integer.charAt(x-1);
		y=y+1;
		if (y==3 & x>1) {
			tmpnum=tmpnum+",";
			y=0;
		}
	}
	
	for (x=tmpnum.length;x>0;x--) {
		tmpinteger=tmpinteger+tmpnum.charAt(x-1);
	}
	
	finNum=tmpinteger+"."+decimal;
	
	if(isNeg == 1) {
		finNum = "-" + finNum;
	}
	
	return finNum;
}


function computeForm(form) {

	if(form.principal.value == "" || form.principal.value == 0) {
		alert("Please enter a Loan Amount. (e.g. $300,000)");
		form.principal.focus();

	} else if(form.intRate.value == "" || form.intRate.value == 0) {
		alert("Please enter an Interest Rate. (e.g. 6%)");
		form.intRate.focus();
	
	} else if(form.numYears.value == "" || form.numYears.value == 0) {
		alert("Please enter a Term. (e.g. 30 or 15)");
		form.numYears.focus();
	
	} else {
	
		var Vprincipal = stripNum(form.principal.value);
		
		var VintRate = stripNum(form.intRate.value);
		
		var VnumYears = stripNum(form.numYears.value);
		var VnumPmts =  VnumYears * 12;
		
		var pmtAmt = computeMonthlyPayment(Vprincipal, VnumPmts, VintRate);
		form.moPmt.value = "$" + formatNumber(pmtAmt);
	}	
}