<!-- Hide from old browsers
// Copyright (C) 2001-2007 AngelicHost
// All rights reserved

var ahdec=".";
var ahth=",";
var ahdecreg=new RegExp("[.]","g");
var ahthreg=new RegExp(",","g");

var resWin;
hTot=new Array;
cTot=new Array;

var totiPmt=0;
var totPmt=0;
var term=0;
var lterm=0;
var prin=0;
var rate=0;
var mrate=0;
var pmts=0;
var pmt=0;
var yr=1;
var yy=1;
var addlPmt=0;
var months=0;
var bal=0;
var freq="";

function initVars() {
  totiPmt=0;
  totPmt=0;
  term=0;
  prin=0;
  rate=0;
  mrate=0;
  pmts=0;  
  pmt=0;
  yr=1;
  yy=1;
  addlPmt=0;
  months=0;
  bal=0;
  freq="";
}

function ahparsePercent(str){
  var parts=String(str).split('%');
  var tmp=String(parts[0]).replace(ahdecreg,".");
  var res=parseFloat(tmp);
  if(isNaN(res)){
    return 0;
  }else{
    return res;
  }
}

function ahparseFloat(str){
  str=String(str).replace(ahthreg,"");
  str=String(str).replace(ahdecreg,".");
  str=String(str).replace("%","");

  var res=parseFloat(str);

  if(isNaN(res)){
    return 0;
  }else{
    return res;
  }
}

function insertThouSep(whole){
  if(whole=="" || whole.indexOf("e")>=0) {
    return whole;
  } else {
    var minus_sign="";
    if(whole.charAt(0) == "-") {
      minus_sign="-";
      whole=whole.substring(1);
    }

    var res="";
    var str_length=whole.length-1;

    for(var ii=0; ii <= str_length; ii++) {
      if(ii > 0 && ii % 3 == 0) {
        res=ahth+res;
      }
      res=whole.charAt(str_length-ii)+res;
    }
    return minus_sign+res;
  }
}

function fmtCurr(value) {
  if(isNaN(value)) {
    return Number.NaN;
  } else {
    var res=value.toFixed(2);
    var str=String(res);

    if(str.indexOf('e')!=-1) return str;
    if(str.indexOf('E')!=-1) return str;

    var parts=str.split('.');
    var res2=insertThouSep(parts[0].toString());

    if(parts.length<2){
      var decimals=('00000000000000').substring(0,2);
      return(res2+ahdec+decimals);
    } else {
      var decimals=((parts[1]).toString()+'00000000000000').substring(0,2);
      return(res2+ahdec+decimals);
    }
  }
}

function calcPmt(arate,nper,pv) {
  var myPmt = 0;
  
  mrate = arate/(1200);
  myPmt = 0;
  myPmt = (pv * mrate)/(1 - Math.pow(1 + mrate,-nper));
  myPmt = Math.round((100 * myPmt) + .5) / 100;
  
  return myPmt;
}

function calcBalance() {
  var iPmt;
  var pPmt;
  var tPmt=pmt;
  var taddlPmt=addlPmt;
  var myBal=prin;
  var yr;
  
  for(var x=0; x<pmts; x++) {
    iPmt = myBal * mrate;
    iPmt=Math.round(100 * iPmt) / 100;
    if(tPmt > myBal+iPmt) {
      tPmt = myBal+iPmt;
    }
    pPmt=tPmt-iPmt; 
    myBal -= pPmt;
    yr = x % 12;
    if(myBal > 0 && (freq == "M" || (freq == "A" && yr == 0))) {
      if(taddlPmt > myBal) {
        taddlPmt = myBal;
      }
      myBal -= taddlPmt;
    }
  }
  
  if(myBal < 0) {
    myBal = 0;
  }
  myBal = Math.round((100 * myBal) + .5) / 100;
  return myBal;
}

function pv(rate,nper,pmt,fv,type){
  if(!isFinite(type) || !isFinite(fv) || !isFinite(pmt) || !isFinite(nper) || !isFinite(rate)) return Number.NaN;
  if(rate==0) return-(fv+nper*pmt);
  var type1=(type!=0)?1:0;
  var pvif=Math.pow(1+rate,nper);
  var fvifa=(Math.pow(1+rate,nper)-1)/rate;
  if(pvif==0) return Number.NaN;
  return((-fv-pmt*(1+rate*type)*fvifa)/pvif)
}
//-->

