function ThisYear() {
  return (new Date().getyear());
}

function TimeFormatter(ctl) {
  var FieldVal=ctl.value.toUpperCase();
  if (FieldVal=="") return true;
  if (!isNaN(FieldVal)) FieldVal+=":00 PM";
  switch (SRight(FieldVal,2)) { case " A": case " P": FieldVal += "M"; }
  switch (SRight(FieldVal,1)) {
   	case "A": case "P": FieldVal = SLeft(FieldVal, -1)+" "+SRight(FieldVal, 1)+"M"; }
  if (!isNaN(SRight(FieldVal,1))) FieldVal += " PM";
  ctl.value=FieldVal;
  return true;
}

function DateFormatter(ctl) {
  var FieldVal = ctl.value;
  var DT = new Date(FieldVal);
  if (DT < (new Date())) { }
}

function SubmitIfValid(F, R, M, T) {
  //alert("We're inside SubmitIfValid...");
  if (FormIsValid(F, R, M, T)) {
  	F.submit();
  }
}

// VALIDATION AND RULES GUIDE:
//
// A=Alpha, N=Numeric, D=Date, T=Time, P=Phone, E=Email
// Field number based on the form's elements collection
// Separate field from type with ":" and rules with "|"
// Only required fields listed; a slash group means "or"
// Validation message for field taken from ALT attribute
// DIV passed via "msg" receives all validation messages
// NOTE: rules are not validated - form them correctly!

function IsValid(frm, rules, msg, top) {
  var RuleList=rules.split("|");
  var TotRules=RuleList.length;
  var Results="";
  var divMsg=document.getElementById(msg);
  var NumMsgs=0;

  //alert("We're inside FormIsValid... frm.id="+frm.id);
  for (RuleNum=0; RuleNum<RuleList.length; RuleNum++) {
    CurRules=RuleList[RuleNum].split("/");
    NumRules=CurRules.length;
    //alert(NumRules);
    FieldErr=0;
    for (CR=0; CR<NumRules; CR++) {
      FieldNum=CurRules[CR].split(":")[0];
      FieldType=CurRules[CR].split(":")[1];
      FieldEle=frm.elements[FieldNum];
      FieldVal=FieldEle.value;
      //alert('Ele['+FieldEle.id+']={'+FieldVal+'}');
      // okay, we aren't really validating phone/email, just flagging if empty
      if (!FieldVal) {
        FieldErr++;
      }
      else switch(FieldType) {
        case "N":
          FieldErr+=isNaN(FieldVal);
          break;
        case "D":
          FieldErr+=isNaN(new Date(FieldVal).getYear());
          break;
        case "T":
          FieldErr+=isNaN(new Date("8/8/8 "+FieldVal).getYear());
          break;
      }
    }
    if (FieldErr==NumRules) {
      NumMsgs++;
      if (FieldEle.id=="recaptcha_response_field") {
        FieldEle.title="Complete the 'ReCAPTCHA' challenge to submit a reservation.";
      }
      Results+="<li>"+FieldEle.title+"</li>";
    }
  }
  if (NumMsgs>0) {
    divMsg.style.marginTop=top+6*(TotRules-NumMsgs)+"px";
    divMsg.innerHTML="<ul class='Validate'>"+Results+"</ul>";
    return false;
  } else {
    return true;
  }
}
