function checkNumber2(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 != '.') {
      return false;
    }
  }

  var num = 0 + str
  if (num < min || max < num) {
    alert(msg + " not in range [" + min + ".." + max + "]");
    return false;
  }

  input.value = str;
  return true;
}

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

function computeForm2(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)) {

      document.getElementById("fv2").innerHTML  = "";
      document.getElementById("totalint2").innerHTML  = "";
      return;
  }

  if (!checkNumber2(form.payments, 1, 200, "Lost Hours") || !checkNumber2(form.interest, 1, 20000, "Rate") ||
      !checkNumber2(form.principal, 1, 20000, "Timekeepers")) {

      document.getElementById("fv2").innerHTML  = "Invalid";
      return;
  }

  if(document.getElementById("calc_result")){
    document.getElementById("calc_result").style.display = 'block';
  }

  var i = form.interest.value;
  var pow = form.principal.value;
  var hours = form.payments.value;
  pow = (pow * i) * hours;
  document.getElementById("fv2").innerHTML  = addCommas2(pow);
  document.getElementById("totalint2").innerHTML  = addCommas2(pow * 12);

  document.getElementById("fv2").innerHTML =  "$"+addCommas2(pow);
  document.getElementById("totalint2").innerHTML = "$"+addCommas2(pow * 12);
}

function addCommas2(nStr)
{
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}
