var now = new Date();
var thisyear = now.getYear();
var spc = "        ";

function validate(input, msg, min, max) {
  var str = input.value;
  for (var i = 0; i < str.length; i++) {
    var chr = str.substring(i, i + 1);
    if (chr < "0" || chr > "9") {
      alert(msg + " (" + input.value + ") has invalid characters?" + spc);
      return false;
    }
  }
  var num = 0 + str;
  if (num < min || max < num) {
    alert(msg + " is not in range [" + min + ".." + max + "]" + spc);
    return false;
  }
  return true;
}

function birthDate(form) {
  var err = "";
  if (form.dd.value == null || form.dd.value.length == 0) err += spc + "Day of death\n";
  if (form.md.value == null || form.md.value.length == 0) err += spc + "Month of death\n";
  if (form.yd.value == null || form.yd.value.length == 0) err += spc + "Year of death\n";
  if (form.ya.value == null || form.ya.value.length == 0) err += spc + "Age in Yrs\n";
  if (form.ma.value == null || form.ma.value.length == 0) err += spc + "Age in Mths\n";
  if (form.da.value == null || form.da.value.length == 0) err += spc + "Age in Days\n";
  if (err != "") {
    alert("\nSome values are missing?\n\n" + err + "\nPlease rectify and try again!" + spc);
    return;
  }
  if (!validate(form.dd, "Day of death", 1, 31) ||
      !validate(form.md, "Month of death", 1, 12) ||
      !validate(form.yd, "Year of death", 1000, thisyear) ||
      !validate(form.ya, "Age in Yrs", 1, 120) ||
      !validate(form.ma, "Age in Mths", 0, 11) ||
      !validate(form.da, "Age in Days", 0, 31)) {
    return;
  }
  var yb = form.yd.value - form.ya.value;
  var mb = form.md.options[form.md.selectedIndex].value - form.ma.value;
  var db = form.dd.value - form.da.value;
  if (mb <1) {
    yb--;
    mb = 12+mb;
  }
  if (db <1) {
    mb--;
    if (mb <1) {
      yb--;
      mb = 12+mb;
    }
    var mth = mb-1;
    if (mth==0 || mth==2 || mth==4 || mth==6 || mth==7 || mth==9 || mth==11) {ml = 31;}
    else if (mth==1) {ml = 28;}
    else {ml = 30;}
    db+=ml+(((mb==2) && (!(yb%4) && (yb%100 || !(yb%400))))?1:0);
  }
  form.db.value = db;
  form.mb.value = mb;
  form.yb.value = yb;

  if (mb >=1 && mb <=3) qtr = "Jan-Feb-Mar";
  else if (mb >=4 && mb <=6) qtr = "Apr-May-Jun";
  else if (mb >=7 && mb <=9) qtr = "Jul-Aug-Sep";
  else if (mb >=10 && mb <=12) qtr = "Oct-Now-Dec";
  else qtr = "Error";
  form.qtr.value = yb + "  [ " + qtr + " ]";
}

