/* js Document */
function formatNum(Vnum) {

   if(Vnum > 99000000) {
	   alert("Sorry, this will not generate numbers larger that 99 million.");
	   focus();
   } else {
   
   var V10million = parseInt(Vnum / 10000000);
   var V1million = (Vnum % 10000000)  / 1000000;
   if(V1million / 1000000 == 1) {
      V1million = 1;
   } else if(V1million < 1) {
      V1million = "0";
   } else {
      V1million = parseInt(V1million,10);
   }

    var V100thousand = (Vnum % 1000000)  / 100000;
      if(V100thousand / 100000 == 1) {
      V100thousand = 1;
      } else if(V100thousand < 1) {
      V100thousand = "0";
     } else {
      V100thousand = parseInt(V100thousand,10);
     }

   var V10thousand = (Vnum % 100000)  / 10000;
      if(V10thousand / 10000 == 1) {
      V10thousand = 1;
      } else if(V10thousand < 1) {
      V10thousand = "0";
      } else {
      V10thousand = parseInt(V10thousand,10);
      }

   var V1thousand = (Vnum % 10000)  / 1000;
      if(V1thousand / 1000 == 1) {
      V1thousand = 1;
      } else if(V1thousand < 1) {
      V1thousand = "0";
     } else {
      V1thousand = parseInt(V1thousand,10);
     }

   var Vhundreds = (Vnum % 1000)  / 100;
      if(Vhundreds / 100 == 1) {
      Vhundreds = 1;
      } else if(Vhundreds < 1) {
      Vhundreds = "0";
     } else {
      Vhundreds = parseInt(Vhundreds,10);
     }

   var Vtens = (Vnum % 100)  / 10;
      if(Vtens / 10 == 1) {
      Vtens = 1;
      } else if(Vtens < 1) {
      Vtens = "0";
     } else {
      Vtens = parseInt(Vtens,10);
     }

   var Vones = (Vnum % 10)  / 1;
      if(Vones / 1 == 1) {
      Vones = 1;
      } else if(Vones < 1) {
      Vones = "0";
     } else {
      Vones = parseInt(Vones,10);
     }

  var Vcents = parseInt(((Vnum % 1) * 100),10);

 if(Vcents < 1) {
  	Vcents = "00";
  }
  else if(Vcents % 10 == 0) {
  	Vcents = Vcents + "0";
  }
  else if(Vcents % 10 == Vcents) {
  	Vcents = "0" + Vcents;
  } else {
  	Vcents = Vcents;
  }

  if(Vcents == "900") {
  	Vcents = "90";
  } else if(Vcents == "800") {
 	 Vcents = "80";
  } else if(Vcents == "700") {
  	Vcents = "70";
  } else if(Vcents == "600") {
 	 Vcents = "60";
  } else 
  if(Vcents == "500") {
 	 Vcents = "50";
  } else if(Vcents == "400") {
 	 Vcents = "40";
  } else if(Vcents == "300") {
  	Vcents = "30";
  } else if(Vcents == "200") {
 	 Vcents = "20";
  } else if(Vcents == "100") {
  	Vcents = "10";
  } else {
 	 Vcents = Vcents;
  }

   
   var Vformat = "";

   if(Vnum >= 10000000) {
  	 Vformat = (V10million + "" + V1million + "," + V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 1000000) {
  	 Vformat = (V1million + "," + V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 100000) {
   	Vformat = (V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 10000) {
   	Vformat = (V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 1000) {
   	Vformat = (V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 100) {
  	 Vformat = (Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 10) {
   	Vformat = (Vtens + "" + Vones + "." + Vcents);
   }
   else if(Vnum >= 1) {
   	Vformat = (Vones + "." + Vcents);
   } else {
   	Vformat = ("0." + Vcents);
   }

  return Vformat;

  }
}


function computeForm(form) {

	if(form.payment.value == "") {
   		alert("Enter the amount of your mortgage payment.");
   	}else if(form.principal.value == "") {
       alert("Enter the your mortgage's current principal balance.");
    }else if(form.intRate.value == "") {
		alert("Enter your mortgage's current annual interest rate.");
	}else if(form.intRate2.value == "") {
		alert("Enter the annual interest rate you'll be refinancing at.");
	}else if(form.nper2.value == "") {
		alert("Enter the number of years you are refinancing for.");
	}else if(form.closingCost.value == "") {
		alert("Enter the refinancing closing costs.");
	}else if(parseInt(form.intRate2.value) > parseInt(form.intRate.value)) {
		alert("\tYou've entered a refinancing rate that is higher than your present rate.\n The refinancing rate must be lower than your present rate in order for this calculator to work.");
	}else {
		var dummyPayment = replaceAll(form.payment.value,',','');
		dummyPayment = parseInt(replaceAll(dummyPayment,'$',''));
		pmt1 = parseInt(dummyPayment);
		
		var principal = replaceAll(form.principal.value,',','');
		principal = parseInt(replaceAll(principal,'$',''));
		prin1 = parseInt(principal);
		
		var close1 = replaceAll(form.closingCost.value,',','');
		close1 = parseInt(replaceAll(close1,'$',''));
		
		if(dummyPayment >= principal){
			alert("Your monthly mortgage payment can not be greater than or equal to your principal balance.\n\t\t\tPlease re-enter the values.");
			return false;
		}
		if(close1 >= principal){
			alert("Your closing cost can not be greater than or equal to your principal balance .\n\t\tPlease re-enter the values.");
			return false;
		}

		
		var intPort1 = 0;
		var prinPort1 = 0;
		var accumInt1 = 0;
		var accumPrin1 = 0;
		var i1 = form.intRate.value;
	
		if (i1 > 1.0) {
			i1 = i1 / 100.0;
		}	
		var i1  = i1  / 12;
		
		var i2 = form.intRate2.value;
		if (i2 > 1.0) {
			i2 = i2 / 100.0;
		}
		var i2  = i2  / 12;
		
		var count1 = 0;
		var powInital = 1;
		for (var j = 0; j < form.remainYears.value *12; j++)
			powInital = powInital * (1 + i1);
		var fpayment_inital = (principal* powInital * i1) / (powInital-1);
		var accumInt1 = (fpayment_inital * form.remainYears.value *12) - principal;
		form.origInt.value = "$" + formatNum(accumInt1);
		
		var pow = 1;
		for (var j = 0; j < form.nper2.value *12; j++)
			pow = pow * (1 + i2);
		var fpayment2 = (principal* pow * i2) / (pow-1);
		form.payment2.value = "$" + formatNum(fpayment2);
		var fmoSave = dummyPayment - fpayment2;
		if(fmoSave  < 0 ){
			var fmoSave_dummy  = fmoSave * -1;
			form.moSave.value = "$0.00";
		}else{
			form.moSave.value = "$" + formatNum(fmoSave);
		}
		var ftotInt2 = (fpayment2 * form.nper2.value *12) - principal;
		form.totInt2.value = "$" + formatNum(ftotInt2);
		var fintSave = accumInt1 - ftotInt2;
		form.intSave.value = "$" +formatNum(fintSave);
		var close2 = (close1/fmoSave);
		var fnetSave = eval(fintSave) - eval(close1);
		if(close2 <= 0)
			close2 = "0";
		form.closeMo.value = parseInt(close2*100)/100;
		form.netSave.value = "$" +formatNum(fnetSave);
		if(fmoSave < 0){
			alert("There is no saving");
		}
	}
}

function clearForm(form)
{
    form.principal.value = "";
    form.payment.value = "";
    form.intRate.value = "";
    form.intRate2.value = "";
    form.nper2.value = "";
    form.closingCost.value = "";
    form.payment2.value = "";
    form.moSave.value = "";
    form.closeMo.value = "";
    form.intSave.value = "";
    form.origInt.value = "";
    form.netSave.value = "";
    form.totInt2.value = "";
}

function replaceAll(oldStr,findStr,repStr) {
	  var srchNdx = 0;  
	  var newStr = ""; 
	  while (oldStr.indexOf(findStr,srchNdx) != -1)  							
	  {
			newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));							
			newStr += repStr;
			srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);           
	  }
	  newStr += oldStr.substring(srchNdx,oldStr.length);          
	  return newStr;
}
	
function currency(pNum) {
//-- Returns passed number as string in $xxx,xxx.xx format.
	var tRtnValue = "";
	if (pNum != "") {
		var n = pNum.toString().replace(/\$|\,/g,'');
		if (isNaN(n)) {n = "0";}
		var tSign = (n == (n = Math.abs(n)));
		n = Math.floor(n * 100 + 0.50000000001);
		var tCents = n % 100;
		if (tCents < 10) {tCents = "0" + tCents;}
		n = Math.floor(n / 100).toString();
		for (var i = 0; i < Math.floor((n.length - (1 + i)) / 3); i++) {
			n = n.substring(0, n.length - (4 * i + 3)) + ',' + n.substring(n.length - (4 * i + 3));
		}
		tRtnValue = (((tSign)?'':'-') + '$' + n + '.' + tCents);
	}else{
		tRtnValue = 0;
	}
	return tRtnValue;
}

function valid_number(string) {
	var sTmp = "";
	var sValid = "0123456789.";
	
	for (var i=0; i< string.length; i++) {
	 if (sValid.indexOf(string.charAt(i)) != -1 )  
		sTmp += string.charAt(i);
		}
	return(sTmp)
}


