// JavaScript Document

function MM_preloadImages() { //v3.0

  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

}



function MM_swapImgRestore() { //v3.0

  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

}



function MM_findObj(n, d) { //v4.01

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

}



function MM_swapImage() { //v3.0

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

}



function fn(num, places, comma) {



var isNeg=0;



    if(num < 0) {

 num=num*-1;

 isNeg=1;

    }



    var myDecFact = 1;

    var myPlaces = 0;

    var myZeros = "";

    while(myPlaces < places) {

 myDecFact = myDecFact * 10;

 myPlaces = Number(myPlaces) + Number(1);

 myZeros = myZeros + "0";

    }

    

	onum=Math.round(num*myDecFact)/myDecFact;

		

	integer=Math.floor(onum);



	if (Math.ceil(onum) == integer) {

		decimal=myZeros;

	} else{

		decimal=Math.round((onum-integer)* myDecFact)

	}

	decimal=decimal.toString();

	if (decimal.length<places) {

  fillZeroes = places - decimal.length;

	   for (z=0;z<fillZeroes;z++) {

  decimal="0"+decimal;

  }

     }



   if(places > 0) {

decimal = "." + decimal;

   }



   if(comma == 1) {

	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;

   } else {

finNum=integer+""+decimal;

   }



    if(isNeg == 1) {

 finNum = "-" + finNum;

    }



	return finNum;

}









function sn(num) {



   num=num.toString();





   var len = num.length;

   var rnum = "";

   var test = "";

   var j = 0;



   var b = num.substring(0,1);

   if(b == "-") {

rnum = "-";

   }



   for(i = 0; i <= len; i++) {



b = num.substring(i,i+1);



if(b == "0" || b == "1" || b == "2" || b == "3" || b == "4" || b == "5" || b == "6" || b == "7" || b == "8" || b == "9" || b == ".") {

   rnum = rnum + "" + b;



}



   }



   if(rnum == "" || rnum == "-") {

rnum = 0;

   }



   rnum = Number(rnum);



   return rnum;



}



function computeForm(form) {



   if(document.calc.payment.value == 0 || document.calc.payment.value == "") {

alert("Please enter this debt's current monthly payment amount.");

document.calc.payment.focus();

   } else

   if(document.calc.interest.value == 0 || document.calc.interest.value == "") {

alert("Please enter this debt's annual interest rate.");

document.calc.interest.focus();

   } else

   if(document.calc.principal.value == 0 || document.calc.principal.value == "") {

alert("Please enter this debt's current principal balance.");

document.calc.principal.focus();

   } else {





var i = sn(document.calc.interest.value);

if (i >= 1.0) {

   i = i / 100.0;

}

i /= 12;



var Vpayment = sn(document.calc.payment.value);

var Vprincipal = sn(document.calc.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;



   document.calc.monthlyInterest.value = "$" + fn(avgInt,2,1);

   document.calc.months.value = numMonths;



} else {



   numMonths = ccCalcMonths(Vprincipal, i, Vpayment, 0);



   avgInt = ccCalcMonths(Vprincipal, i, Vpayment, 1);

   avgInt = avgInt / numMonths;



   document.calc.monthlyInterest.value = "$" + fn(avgInt,2,1);

   document.calc.months.value = numMonths; 



}



var numYears = numMonths / 12;

document.calc.years.value = fn(numYears,1,0);



   }

}



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 = Number(i * prin);

prinPort = Number(pmt - intPort);

prin = Number(prin - prinPort);

accruedInt = Number(accruedInt + intPort);

count = Number(count) + Number(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(Number(prin * Vminpayperc) < Vminpaydol) {

   pmt = Vminpaydol;

} else {

   pmt = Number(Vminpayperc * prin);

}

intPort = Number(i * prin);

prinPort = Number(pmt - intPort);

prin = Number(prin - prinPort);

accruedInt = Number(accruedInt + intPort);

count = Number(count) + Number(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 clear_results(form) {



   document.calc.monthlyInterest.value = "";

   document.calc.months.value = "";

   document.calc.years.value = "";



}
