function maxLCChkNum (input, min, maxLC, msg) 
{
   var ch;
   var num;
   msg = msg + " field has invalid data: " + input.value;
   var str = input.value;
   for (var i = 0; i < str.length; i++) {
      ch = str.substring(i, i + 1)
      if ((ch < "0" || "9" < ch) && ch != '.') {
         alert(msg);
         return false;
      }
   }
   num = 0 + str
   if (num < min || maxLC < num) {
      alert(msg + " not in range [" + min + ".." + maxLC + "]");
      return false;
   }
   input.value = str;
   return true;
}

function maxLCCmpFld(input) 
{
   if (input.value != null && input.value.length != 0) input.value = "" + eval(input.value);
   maxLCCmpForm(input.form);
}


function maxLCCmpForm(form) 
{
   if ((form.years.value == null || form.years.value.length == 0) ||
       (form.interest.value == null || form.interest.value.length == 0) ||
       (form.principal.value == null || form.principal.value.length == 0)) {
        return;
   }
   var payments = form.years.value;
   payments  = payments * 12;
   if (!maxLCChkNum(form.years, 1, 40, "# of Years") ||
       !maxLCChkNum(form.interest, .001, 99, "Interest") ||
       !maxLCChkNum(form.principal, 100, 10000000, "Principal")) {
          form.years.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 < payments; j++) pow = pow * (1 + i);
   form.payment.value = (form.principal.value * pow * i) / (pow - 1)
}
 
function maxLCClrForm(form) 
{
   form.years.value = "";
   form.interest.value = "";
   form.principal.value = "";
}
