﻿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 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.payment.value == 0 || form.payment.value == "") {
   alert("Please enter current monthly payment amount.");
   form.payment.focus();
} else
if(form.interest.value == 0 || form.interest.value == "") {
   alert("Please enter annual interest rate.");
   form.interest.focus();
} else
if(form.principal.value == 0 || form.principal.value == "") {
   alert("Please enter current principal balance.");
   form.principal.focus();
} else {

var i = stripNum(form.interest.value);
if (i >= 1.0) {
   i = i / 100.0;
}
i /= 12;

var Vpayment = stripNum(form.payment.value);
var Vprincipal = stripNum(form.principal.value);

var avgInt = 0;
var numMonths = 0;

if(form.fixFall.selectedIndex == 0) {

numMonths = fixCalcMonths(Vprincipal, i, Vpayment, 0);

avgInt = fixCalcMonths(Vprincipal, i, Vpayment, 1);
avgInt = avgInt / numMonths;

form.monthlyInterest.value = "$" + formatNumber(avgInt);
form.months.value = numMonths;

} 
else {
numMonths = ccCalcMonths(Vprincipal, i, Vpayment, 0);

avgInt = ccCalcMonths(Vprincipal, i, Vpayment, 1);
avgInt = avgInt / numMonths;

form.monthlyInterest.value = "$" + formatNumber(avgInt);
form.months.value = numMonths; 
}
}
}

function fixCalcMonths(fixPrin, fixInt, fixPmt, retType) {

var prin = fixPrin;
var pmt = fixPmt;
var prinPort = 0;
var intPort = 0;
var count = 0;
var accruedInt = 0;
var i = fixInt;

while(prin > 0) {
   intPort = eval(i * prin);
   prinPort = eval(pmt - intPort);
   prin = eval(prin - prinPort);
   accruedInt = eval(accruedInt + intPort);
   count = eval(count) + eval(1);
   if(count > 600) {
      accruedInt = "0";
      alert("Number of payments exceeds 600.  Please increase the minimum payment percent and recalculate.");
      break;
   } else {
      continue;
   }
}
	if(retType == 0) 
	{
   		return count;
	} 
	else
	{
   		return accruedInt;
	}
}
function ccCalcMonths(ccPrin, ccInt, ccPmt, retType) 
{
var prin = ccPrin;
var pmt = 0;
var prinPort = 0;
var intPort = 0;
var count = 0;
var accruedInt = 0;
var i = ccInt;

var Vminpaydol = 15;
var Vminpayperc = ccPmt / ccPrin;

while(prin > 0) {
   if(eval(prin * Vminpayperc) < Vminpaydol) {
      pmt = Vminpaydol;
   } else {
      pmt = eval(Vminpayperc * prin);
   }
   intPort = eval(i * prin);
   prinPort = eval(pmt - intPort);
   prin = eval(prin - prinPort);
   accruedInt = eval(accruedInt + intPort);
   count = eval(count) + eval(1);
   if(count > 600) {
      accruedInt = "0";
      alert("Number of payments exceeds 600.  Please increase the minimum payment percent and recalculate.");
      break;
   } else {
      continue;
   }
}
if(retType == 0) {
   return count;
} else {
   return accruedInt;
}
}


