function stripNum(num) {

var iPercent
var iDollar
var iSpace
var iComma
var numLength = num.length

//lalalla Line #114

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 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 == "") {
   alert("Please enter the your mortgage's current principal balance.");
   form.principal.focus();
   } else
   if(form.payment.value == "") {
       alert("Please enter the amount of your mortgage payment.");
       form.payment.focus();
       } else 
       if(form.intRate.value == "") {
           alert("Please enter your mortgage's current annual interest rate.");
           form.intRate.focus();
           } else
           if(form.intRate2.value == "") {
               alert("Please enter the annual interest rate you'll be refinancing at.");
               form.intRate2.focus();
               } else
               if(form.nper2.value == "") {
                   alert("Please enter the number of years you are refinancing for.");
                   form.nper2.focus();
                    } else
                    if(form.closingCost.value == "") {
                         alert("Please enter the closing cost percentage points.");
                         form.closingCost.focus();
                         } else
                         if(stripNum(form.intRate2.value) > stripNum(form.intRate.value)) {
                            alert("You've entered a refinancing rate that is higher than your present rate.  The refinancing rate must be lower than your present rate in order for this calculator to work.");
                            } else {



    var pmt1 = stripNum(form.payment.value);

    var prin = stripNum(form.principal.value);

     var prin1 = prin;

    var closeCostAmt = 0;
    var VcloseCost = stripNum(form.closingCost.value);
    if(form.ptsDol.selectedIndex == 0) {
    var closeCostPerc = eval(VcloseCost) / 100;
      closeCostAmt = closeCostPerc * prin;
       } else {
      closeCostAmt = VcloseCost;
       }
     
    

    var intPort1 = 0;

    var prinPort1 = 0;

    var accumInt1 = 0;

    var accumPrin1 = 0;

    var i1 = stripNum(form.intRate.value);

    if (i1 >= 1.0) {

        i1 = i1 / 100.0;

    var sumi1 = i1;

    }

    var i1  = i1  / 12;

    var i2 = stripNum(form.intRate2.value);

       if (i2 >= 1.0) {

           i2 = i2 / 100.0;

        var sumi2 = i2;   

       }

       var i2  = i2  / 12;

    var count1 = 0;

    while(prin1 > 0) {

        intPort1 = prin1 * i1;

        prinPort1 = pmt1 - intPort1;

        prin1 = prin1 - prinPort1;

        accumPrin1 = accumPrin1 + prinPort1;

        accumInt1 = accumInt1 + intPort1;

        count1 = count1 + 1;

        if(count1 > 600) {break; } else {continue; }

       }

    form.origInt.value = "$" + formatNumber(accumInt1);

     var prin2 = 0;

    if(form.yesNo.selectedIndex == 0) {
       prin2 = prin;
       } else {
       prin2 = eval(prin) + eval(closeCostAmt);
       }

    var Vnper2 = stripNum(form.nper2.value);
    var pow = 1;

    for (var j = 0; j < Vnper2 *12; j++)

        pow = pow * (1 + i2);

    var fpayment2 = (prin2 * pow * i2) / (pow - 1);

    form.payment2.value = "$" + formatNumber(fpayment2);


   var fmoSave = eval(pmt1) - eval(fpayment2);

   form.moSave.value = "$" + formatNumber(fmoSave);
		
  var ftotInt2 = eval(fpayment2 * Vnper2 *12) - eval(prin2);

   form.totInt2.value = "$" + formatNumber(ftotInt2);

   var fintSave = accumInt1 - ftotInt2;

    if(fintSave <= 0) {
       form.intSave.value = "$0.00";
    } else {
       form.intSave.value = "$" + formatNumber(fintSave);
    }

    var prin3 = prin2;
    var prin4 = prin;

    var intPort3 = 0;
    var intPort4 = 0;

    var prinPort3 = 0;
    var prinPort4 = 0;

    var accumInt3 = 0;
    var accumInt4 = 0;

    var accumPrin3 = 0;
    var accumPrin4 = 0;

    var amortIntSave = 0;

    var count3 = 0;

    while(amortIntSave < closeCostAmt) {

        intPort3 = prin3 * i2;
        intPort4 = prin4 * i1;

        prinPort3 = fpayment2 - intPort3;
        prinPort4 = pmt1 - intPort4;

        prin3 = prin3 - prinPort3;
        prin4 = prin4 - prinPort4;

        accumPrin3 = accumPrin3 + prinPort3;
        accumPrin4 = accumPrin4 + prinPort4;

        accumInt3 = accumInt3 + intPort3;
        accumInt4 = accumInt4 + intPort4;

        amortIntSave = accumInt4 - accumInt3;

        count3 = count3 + 1;

        if(count3 > 600) {break; } else {continue; }

       }


    form.closeMo.value = count3;

   var fnetSave = eval(fintSave) - eval(closeCostAmt);
   
   var pmtUpDown = "";
      if(fpayment2 > pmt1) {
          pmtUpDown = "increase by $" + formatNumber(eval(fpayment2) - eval(pmt1)) + "";
          } else {
          pmtUpDown = "decrease by $" + formatNumber(eval(pmt1) - eval(fpayment2)) + "";
          }

    var intSaveYesNo = "";
      if(accumInt1 < ftotInt2) {
          intSaveYesNo = "pay an additional $" + formatNumber(eval(ftotInt2) - eval(accumInt1)) + " in interest charges over the life of the mortgage.";
          } else {
          intSaveYesNo = "save $" + formatNumber(eval(accumInt1) - eval(ftotInt2)) + " in interest charges over the life of the mortgage. However, in order for this refinancing to yield any savings at all you will need to stay in your current home for at least " + count3 + " months.  That's how long it will take for the monthly interest savings to offset the closing costs attributable to refinancing.";
          }

   if(fnetSave <= 0) {
      form.netSave.value = "$0.00";
   } else {
      form.netSave.value = "$" +formatNumber(fnetSave);
   }

    form.summary.value = "If you refinance your current " + formatNumber(sumi1 * 100) + "% mortgage to a " + formatNumber(sumi2 * 100) + "% mortgage, your monthly payment will " + pmtUpDown + " and you will " + intSaveYesNo + "";

   }
		
}
