// By: Michael C. Hundt, released to the public domain - 07-13-99
// Calcs can be used for car payments, college costs, retirement savings and such
// i=interest m=months f=factor s=string_equiv d=decimal_place
var i=0
var m=0
var f=0
var x=0
var den=0
var s="0"
var d=0 
function CalcA()
{
 if(document.CALC1.INTEREST.value==""||document.CALC1.MONTHS.value==""||document.CALC1.PAYMENT.value=="")
  {
    alert("PLEASE FILL IN ALL OF THE REQUIRED FIELDS.") 
  }
 else
  { 
  if(document.CALC1.PERIOD.options[1].selected == true)
    {
      m=document.CALC1.MONTHS.value*12
    }
  else
    {
      m=document.CALC1.MONTHS.value
    } 
  i=Math.pow(((document.CALC1.INTEREST.value/100)+1),.0833333)-1
  den=i/(i+1)
  f=Math.pow((i+1),m)-1
  f=f/den
//  s=String(f)
//  alert(s)
  f=f*document.CALC1.PAYMENT.value
  s=String(f)
  d=s.indexOf(".")
  s=s.substring(0,(d+3))
  document.CALC1.TOTAL.value="$"+s  
 }
}

function test_it(entry) {
 if (entry.value && entry.value.length!=0) {
  entry.value=""+ eval(entry.value);
  }
 computeForm(entry.form);
 }

function computeForm(form) {
 if ((!form.months.value || form.months.value.length==0) ||
    (!form.rate.value || form.rate.value.length==0) ||
    (!form.financed.value || form.financed.value.length==0)) {
   return;
   }
 if (!alrt_msg(form.months,1,480,"Your Number of Payments") ||
    !alrt_msg(form.rate,.001,99,"Your Interest Rate") ||
    !alrt_msg(form.financed,100,10000000,"Your Principal Amount")) {
   form.payment.value="A value out of range - Click Reset";
   return;
    }
 var i=form.rate.value;
 ffv=0;
 ffv+=form.financed.value;
 fmv=0;
 fmv+=form.months.value;
 if (i > 1.0) {
 // Hack to mostly correct floating point/binary conversion error
  i=(i/100.0)+.00001;
  var fmt="";
  fmt+=i;
  fmt=fmt.substring(0,6)
  form.rate.value=fmt;
  }
 i/=12;
 var isn=1;
 for (var j=0;j<form.months.value;j++)
  isn=isn*(1+i);
  form.payment.value=(form.financed.value*isn*i)/(isn-1);
  fpv=0;
  fpv+=form.payment.value;
  var fmt="";
  var add=9;
  fmt+=form.payment.value;
  for (var i=0;i<fmt.length;i++) {
   if (fmt.charAt(i)==".") {
    add=i+3;
    i=fmt.length;
    }
   }
  fmt=fmt.substring(0,add);
  fcalc=((fmv*fpv)-ffv);
  var fmtb="";
  var add=9;
  fmtb+=fcalc;
  for (var i=0;i<fmtb.length;i++) {
   if (fmtb.charAt(i)==".") {
    add=i+3;
    i=fmtb.length;
    }
   }
  fmtb=fmtb.substring(0,add);
  form.payment.value="   $"+fmt+"              $"+fmtb;
 }
function reset_it(form) {
 form.months.value="";
 form.rate.value="";
 form.financed.value="";
 form.payment.value="";
 }

function alrt_msg(entry,low,high,prompt) {
 prompt="You couldn't know. "+prompt 
 +" entry has unacceptable stuff: "+entry.value;
 var scratch=entry.value;
 for (var i=0;i<scratch.length;i++) {
  var letter=scratch.substring(i,i+1);
  if ((letter<"0" || "9"<letter) && letter!='.') {
   alert(prompt);
   return false;
   }
    }
 var errtst=parseFloat(scratch)
 if (errtst<low || high<errtst) {
  alert("I'm sorry. "+prompt+ " is not in the range"
  +" from "+low+" to "+high+"!");
  return false;
  }
 entry.value=scratch;
 return true;
 }

