function floor(number)
{
  return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
}
function dosum(form)
{
  var mi = form.IR.value / 1200;
  var base = 1;
  var mbase = 1 + mi;
  for (i=0; i<form.YR.value * 12; i++)
  {
    base = base * mbase
  }
  form.PI.value = floor(form.LA.value * mi / ( 1 - (1/base)))
  form.MT.value = floor(form.AT.value / 12)
  form.MI.value = floor(form.AI.value / 12)
  var dasum = form.LA.value * mi / ( 1 - (1/base)) +
  form.AT.value / 12 +
  form.AI.value / 12;
  form.MP.value = floor(dasum);
}

function checkNumber(input, min, max, msg) {
msg = msg + " field has invalid data: " + input.value;
var str = input.value;
for (var i = 0; i < str.length; i++) {
var ch = str.substring(i, i + 1)
if ((ch < "0" || "9" < ch) && ch != '.') {
alert(msg);
return false;
      }
   }
var num = parseFloat(str)
if (num < min || max < num) {
alert(msg + " not in range [" + min + ".." + max + "]");
return false;
   }
input.value = str;
return true;
}
function computeField(input) {
if (input.value != null && input.value.length != 0)
input.value = "" + eval(input.value);
computeForm(input.form);
}
function computeForm(form) {
if ((form.payments.value == null || form.payments.value.length == 0) ||
(form.interest.value == null || form.interest.value.length == 0) ||
(form.principal.value == null || form.principal.value.length == 0)) {
return;
}
if (!checkNumber(form.payments, 1, 480, "# of payments") ||
!checkNumber(form.interest, .001, 99, "Interest") ||
!checkNumber(form.principal, 100, 10000000, "Principal")) {
form.payment.value = "Invalid";
return;
}
var i = form.interest.value;
if (i > 1.0) {
i = i / 100.0;
form.interest.value = i;
}
i /= 12;
var pow = 1;
for (var j = 0; j < form.payments.value; j++)
pow = pow * (1 + i);
money = "" + .01* Math.round(100*(form.principal.value * pow * i) / (pow - 1));
dec = money.indexOf(".");
dollars = money.substring(0,dec);
cents = money.substring(dec+1,dec+3);
cents = (cents.length < 2) ? cents + "0" : cents;
money = dollars + "." + cents;
form.payment.value = money;
}
function clearForm(form) {
form.payments.value = "";
form.interest.value = "";
form.principal.value = "";
}

function RemoveNonNumeric( strString )
{
      // Variables
      var strValidCharacters = "1234567890.";
      var strReturn = "";
      var strBuffer = "";
 var intIndex = 0;


      // Loop through the string
      for( intIndex = 0; intIndex < strString.length; intIndex++ )
      {
            // Get this character
            strBuffer = strString.substr( intIndex, 1 );

            // Is this a number
            if( strValidCharacters.indexOf( strBuffer ) > -1 )
            {
                  // Yes
                  strReturn += strBuffer;
            }
      }

      // Return the value
      return strReturn;
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function LoanCalculator()
{
        form = document.myform
        LoanAmount= form.LoanAmount.value

        DownPayment= "0"
        AnnualInterestRate = form.InterestRate.value/100
        Years= form.NumberOfYears.value
                MonthRate=AnnualInterestRate/12
        NumPayments=Years*12
        Prin=LoanAmount-DownPayment

        MonthPayment=Math.floor((Prin*MonthRate)/(1-Math.pow((1+MonthRate),(-1*NumPayments)))*100)/100

        alert('Number Of Payments: '+NumPayments+'\nMonthly Payment: '+formatCurrency(MonthPayment));
}

