/* This script and many more are available free online at
   The JavaScript Source!! http://javascript.internet.com
   Created by: Pavel Donchev | http://chameleonbulgaria.com/ */
function currency(which){
    currencyValue = which.value;
    currencyValue = currencyValue.replace(",", "");
    decimalPos = currencyValue.lastIndexOf(".");
    if (decimalPos != -1){
        decimalPos = decimalPos + 1;
    }
    if (decimalPos != -1){
        decimal = currencyValue.substring(decimalPos, currencyValue.length);
        if (decimal.length > 2){
            decimal = decimal.substring(0, 2);
        }
        if (decimal.length < 2){
            while(decimal.length < 2){
               decimal += "0";
            }
        }
    }
    if (decimalPos != -1){
        fullPart = currencyValue.substring(0, decimalPos - 1);
    } else {
        fullPart = currencyValue;
        decimal = "00";
    }
    newStr = "";
    for(i=0; i < fullPart.length; i++){
        newStr = fullPart.substring(fullPart.length-i-1, fullPart.length - i) + newStr;
        if (((i+1) % 3 == 0) & ((i+1) > 0)){
            if ((i+1) < fullPart.length){
               newStr = "," + newStr;
            }
        }
    }
    which.value = newStr + "." + decimal;
}

function calculate() {
   var amt = document.frm.amt.value;
   amt = amt.replace(/,/g,"");
   var apr = document.frm.apr.value / 100;
   var nterms = document.frm.term.value * document.frm.periods.value;
   var rate = apr / document.frm.periods.value;
   var contrib = document.frm.contrib.value;
   contrib = contrib.replace(/,/g,"");

 var final = amt * Math.pow(1 + rate,nterms) + contrib * ((Math.pow(1 + rate,nterms + 1) - 1 - rate) / rate)

 if (rate == 0) {
   final = amt + contrib * nterms;  //fix in case r = 0
 } else {
   ffinal=CurrencyFormatted(final);
   document.frm.final.value = CommaFormatted(ffinal);
 }
}

// calculates the investment result and updates fields
// with the result
function update() {
   var apr = document.frm.apr.value;
   apr = apr.replace(/,/g,"");
   var amt=document.frm.amt.value;
   amt = amt.replace(/,/g,"");
   var term=document.frm.term.value;
   term = term.replace(/,/g,"");
   var tmp=0;
  if (apr > 0.0 && amt > 0.0 && term > 00) {
    tmp=(amt*(Math.pow((apr/100)+1,term)));
    if (isNaN(tmp)) {
      tmp="Error"
    } else {
     ftmp=CurrencyFormatted(tmp);
     document.frm.final.value = CommaFormatted(ftmp);
    };
  } else {
     alert("You must enter data for Initial Amount, Annual Interest \n Rate and Length of Investment");
  }
}

function calcpayment() {
   var amt = document.frm.amt.value;
   amt = amt.replace(/,/g,"");
   var ir = document.frm.ir.value / 1200;
   var term = document.frm.term.value * 12;
   if (amt > 0.0 && ir > 0.0 && term > 00) {
     ex2=Math.pow(1+ir,term);
     mp=amt*(ir*Math.pow(1+ir,term))/(Math.pow(1+ir,term) - 1);
     tot=mp*term;
     int=tot-amt;
     fmp=CurrencyFormatted(mp);
     document.frm.payment.value = CommaFormatted(fmp);
     ftot=CurrencyFormatted(tot);
     document.frm.total.value = CommaFormatted(ftot);
     fint=CurrencyFormatted(int);
     document.frm.interest.value = CommaFormatted(fint);
   } else {
     alert("You must enter data for Loan Amount, Annual Interest \n Rate and Term of Loan");
   }
}
function CurrencyFormatted(amount)
{
  var i = parseFloat(amount);
  var minus = '';
  if(i < 0) { minus = '-'; }
  i = Math.abs(i);
  i = parseInt((i + .005) * 100);
  i = i / 100;
  s = new String(i);
  if(s.indexOf('.') < 0) { s += '.00'; }
  if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
  s = minus + s;
  return s;
}
// end of function CurrencyFormatted()
function CommaFormatted(amount)
{
  var delimiter = ","; // replace comma if desired
  var currency = "$"; // replace dollar sign if desired
  var a = amount.split('.',2)
  var d = a[1];
  var i = parseInt(a[0]);
  i = Math.abs(i);
  var n = new String(i);
  var a = [];
  while(n.length > 3)
  {
    var nn = n.substr(n.length-3);
    a.unshift(nn);
    n = n.substr(0,n.length-3);
  }
  if(n.length > 0) { a.unshift(n); }
  n = a.join(delimiter);
  if(d.length < 1) { amount = n; }
  else { amount = n + '.' + d; }
  amount = currency + amount;
  return amount;
}
// end of function CommaFormatted()
