function isNumeric(val) {
  var digits = "0123456789.,";
  for (i=0; i < val.length; i++) {
  var c = val.charAt(i);
  if (digits.indexOf(c) == -1)
    return false;
  }
  return true;
}
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 (!isNumeric(input.value))
    input.value = "";
  if (input.value != null && input.value.length != 0)
    input.value = "" + eval(input.value);
  computeForm(input.form);
}
function computeForm(form) {
  if ((form.interest.value == null || form.interest.value.length == 0) ||
      (form.years.value == null || form.years.value.length == 0) ||
      (form.income.value == null || form.income.value.length == 0) ||
      (form.ptax.value == null || form.ptax.value.length == 0) ||
      (form.pinc.value == null || form.pinc.value.length == 0) ||
      (form.dpmt.value == null || form.dpmt.value.length == 0)) {
      return;
  }
  var payments = form.years.value;
  payments  = payments * 12;
  if (!checkNumber(form.years, 1, 40, "# of Years") ||
      !checkNumber(form.interest, .001, 99, "Interest") ||
      !checkNumber(form.income, 10, 10000000, "Income")) {
      form.years.value = "Invalid";
      return;
  }
  var i = form.interest.value;
  if (i > 1.0) {
     i = i / 100.0;
  }
  i /= 12;
  var inc =form.income.value;       
  var p =((form.pinc.value / 100.) * (inc / 12.) - (form.ptax.value / 12.));
  var v = 1.0 / (1.0 + i);
  var amt = ((p * (1. - Math.pow( v,  payments))) / i);
  var am = ((amt * 100 + 0.5) / 100.);
  form.financed.value = ("  $" + Math.round(am) + ".00"); 
  var d = am / (1. - form.dpmt.value / 100.);        
  form.afford.value =("  $" + Math.round((d * 100 + 0.5) / 100.) + ".00"); 
}
function clearForm(form) {
  form.interest.value = "";
  form.years.value = "";
  form.income.value = "";
  form.ptax.value = "";
  form.pinc.value = "";
  form.dpmt.value = "";
}
function checkFields() {
  var income = document.forms['form'].income.value;
  var pinc = document.forms['form'].pinc.value;
  var dpmt = document.forms['form'].dpmt.value;
  var interest = document.forms['form'].interest.value;
  var years = document.forms['form'].years.value;
  var ptax = document.forms['form'].ptax.value;
  if(income == "" || pinc == "" || dpmt == "" || interest == ""|| years == ""|| ptax == ""  || isNaN(income) || isNaN(pinc) || isNaN(dpmt) || isNaN(interest) || isNaN(years) || isNaN(ptax)){
    alert("Please insert a value, and try again.");
  if(income == "" || isNaN(income)){form.income.style.background="#ffffcd";}
  if(pinc == "" || isNaN(pinc)){form.pinc.style.background="#ffffcd";}
  if(dpmt == "" || isNaN(dpmt)){form.dpmt.style.background="#ffffcd";}
  if(interest == "" || isNaN(interest)){form.interest.style.background="#ffffcd";}
  if(years == "" || isNaN(years)){form.years.style.background="#ffffcd";}
  if(ptax == "" || isNaN(ptax)){form.ptax.style.background="#ffffcd";}
  }else{
    computeForm(this.form)
  }
}


