function ChangeText(objname, newtext) {
	obj=document.getElementById(objname);
	if(document.all){		// IE
	     obj.innerText = newtext; } 
	else{					// FF
	    obj.textContent = newtext; }
}

function formatNum(num) {

	num = parseFloat(num);
	num = Math.round(100*num);
	num = num.toString();
	var p1 = num.substring(0, num.length - 2);
	var p2 = num.substring(num.length - 2, num.length);
	num = p1 + '.' + p2;

	var txtNumber = '' + num;
	var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
	var arrNumber = txtNumber.split('.');
	arrNumber[0] += '.';
	do {
	arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
	} while (rxSplit.test(arrNumber[0]));

	if (arrNumber.length > 1) {
	return arrNumber.join('');
	}
	else {
	return arrNumber[0].split('.')[0];
    }	
}	

function validNums(refVal) {
	var bValid=true;
	
	for (var i=0; i < refVal.value.length; i++) {
		var c = refVal.value.charCodeAt(i);
        if ((c > 57 || c < 48)) {
			bValid=false; 
			}
	}
	if (bValid==false) {
		alert('You can only enter numbers into this field.');
//		refVal.value="";
		refVal.focus();
		refVal.select();
		return false; 
		}
	else {
		return true; }
} 

function validNumsDec(refVal) {
	var decm = false;
	var bDec = true;
	var bValid = true;
	for (var i=0; i < refVal.value.length; i++) {
		var c = refVal.value.charCodeAt(i);
        if ((c > 57 || c < 48)) {
			if (c==46) {
				if (decm == true) {
					var bDec = false; }
				else {
					decm = true; } }
			else if (c==44) { }
			else {
				bValid = false; }
			}
	}
	if (bValid==false || bDec==false) {
		alert('You can only enter numbers, commas and one decimal into this field.');
		refVal.focus();
		refVal.select();
		return false; 
		}
	else return true;
} 

function computeForm(form) {

if(document.mortCal.principal.value == "" || document.mortCal.principal.value == 0) {
   alert("Please enter the principal balance of your current mortgage.");
   document.mortCal.principal.focus();
   } else
      if(document.mortCal.intRate.value == "" || document.mortCal.intRate.value == 0) {
      alert("Please enter the interest rate of your current mortgage.");
      document.mortCal.intRate.focus();
} else
      if(document.mortCal.origPmt.value == "" || document.mortCal.origPmt.value == 0) {
      alert("Please your current monthly mortgage payment.");
      document.mortCal.origPmt.focus();
   } else
      if(document.mortCal.noYears.value == "" || document.mortCal.noYears.value == 0) {
      alert("Please enter the number of years you would like to pay off your mortgage in.");
      document.mortCal.noYears.focus();
   } else {

//COMPUTE MIF
if(document.mortCal.intRate.value < 1) {
   var annInt = document.mortCal.intRate.value * 100;
   } else {
   var annInt = document.mortCal.intRate.value;
   }
var MIFfactor1 = 2 * 100;
var MIFfactor2 = annInt / MIFfactor1;
var MIFfactor3 = eval(MIFfactor2) + eval(1);
var MIFfactor4 = Math.pow(MIFfactor3,2);
var MIFfactor5 = 1 /12;
var MIFfactor6 = Math.pow(MIFfactor4,MIFfactor5);
var MIFfactor7 = eval(MIFfactor6) - eval(1);
var MIF = MIFfactor7;

//COMPUTE NEW PIP
var prin = document.mortCal.principal.value;
var noYrs = document.mortCal.noYears.value;
var PIPfactor1 = eval(MIF) + eval(1);
var PIPfactor2 = eval(noYrs) - eval(noYrs * 2);
var PIPfactor3 = PIPfactor2 * 12;
var PIPfactor4 = Math.pow(PIPfactor1,PIPfactor3);
var PIPfactor5 = eval(1) - eval(PIPfactor4);
var PIPfactor6 = prin * MIF;
var PIPfactor7 = PIPfactor6 / PIPfactor5;
var PIP = PIPfactor7;


var noYrs = document.mortCal.noYears.value;
var VorigPmt = document.mortCal.origPmt.value;

var noMonths = noYrs * 12;

var prin = document.mortCal.principal.value;
var count = 0;
var prinPort = 0;
var intPort = 0;
var accumInt = 0;
var pmt = document.mortCal.origPmt.value;
var invalid = 0;

while(eval(prin) > eval(pmt)) {
   intPort = prin * MIF;
   accumInt = eval(accumInt) + eval(intPort)
   prinPort = eval(pmt) - eval(intPort);
   prin = eval(prin) - eval(prinPort);
   count = eval(count) + eval(1);
   if(count > 600) {
   alert("The original payment terms you entered are not valid terms.");
   invalid = 1;
   break;
   } else {
   continue;
   }
   }

if(invalid == 0) {

var newPmt = PIP;

var VpmtAdd = eval(newPmt) - eval(VorigPmt);

if (VpmtAdd > 0) { ChangeText('pmtAdd','$' + formatNum(VpmtAdd)); }
else { ChangeText('pmtAdd','$0.00'); }

var prinLeft = prin;
var partMonth = parseInt(prinLeft / pmt * 100,10);
var countAdd = "." + partMonth;
count = eval(count) + eval(countAdd);

var VorigInt = accumInt;
var VnewInt = (eval(newPmt * noMonths)) - eval(document.mortCal.principal.value);
var VintSave = eval(VorigInt) - eval(VnewInt);

if (VintSave > 0) { ChangeText('intSave','$' + formatNum(VintSave)); }
else { ChangeText('intSave','$0.00'); }

if (accumInt > VnewInt) {
	var Vresults = ("If you would like to pay off your mortgage in " + noYrs + " years instead of the current " + formatNum(count / 12) + " years, you will need to start making a second monthly mortgage payment in the amount of $" + formatNum(VpmtAdd) + ". This will cut your current mortgage interest cost from $" + formatNum(accumInt) + " down to $" + formatNum(VnewInt) + ", a savings of $" + formatNum(VintSave) + " in interest charges.");
}

else {
	var Vresults = "Your mortgage will be paid off sooner than you have entered. Based on the terms you have provided your mortgage will be paid off in " + formatNum(count / 12) + " years."; }

ChangeText('results', Vresults);

    }

  }

}

