var cityset = ["p7_Castlegar",
             "p7_Cranbrook",
             "p7_Kamloops",
             "p7_Nanaimo",
             "p7_Richmond",
             "p7_Victoria",
             "p7_Courtenay",
             "p7_FortStJohn",
             "p7_Kelowna",
             "p7_PrinceGeorge",
             "p7_Terrace",
             "p7_WilliamsLake"];

var oldDecisionNoti = false;

function validate(frm, srcElem, silent) {
  //frm.elements["WorkerLastName"].readOnly = true;
  //frm.elements["WorkSafeBCClaim"].readOnly = true;
  //frm.elements["DecisionDate"].readOnly = true;
  //frm.elements["DecisionNumber"].readOnly = true;
  //frm.elements["EmployerFirmName"].readOnly = true;
  //frm.elements["WCATNo"].readOnly = true;
  //frm.elements["WorkerLastName2"].readOnly = true;
  //frm.elements["WorkSafeBCClaim2"].readOnly = true;
  //frm.elements["DecisionDate2"].readOnly = true;
  //frm.elements["DecisionNumber2"].readOnly = true;
  //frm.elements["EmployerFirmName2"].readOnly = true;
  //frm.elements["WCATNo2"].readOnly = true;

  var inp;
  if (silent == null) silent = false;
  if (srcElem == frm.elements["btnPrint"]) return true; // allow printing with incomplete form

  inp = frm.elements["p1_WCATDecisionNumber"];
  if (inp == srcElem) return true;
  
  if (isExample(inp) || re_empty.test(inp.value)) {
    alert("Please enter the WCAT Decision Number");
    goback(inp, srcElem);
    return false;
  }

  if (!re_wcatdec.test(inp.value)) {
    alert("The format of the WCAT Decision Number is incorrect.\n\nThe correct format is a 4-digit year followed by 5 digits, separated by a dash (Example: 2003-00000)");
    goback(inp, srcElem);
    return false;
  }

  if (inp.value.indexOf("-") < 0) {
    inp.value = inp.value.substring(0, 4) + "-" + inp.value.substring(4)
  }

  //update page header
  document.getElementById("DecisionNumber").innerHTML = inp.value;
  //frm.elements["DecisionNumber"].value = inp.value;
  //frm.elements["DecisionNumber2"].value = inp.value;


  inp = frm.elements["p1_DateOfWCATDecision"];
  if (inp == srcElem) return true;

  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Date of the WCAT Decision.");
    oldDecisionNoti = false;
    goback(inp, srcElem);
    return false;
  }

  //automatically add seporators for dates entered without - DW Jan 11, 2010
  if (inp.value.length == 8) {
    inp.value = inp.value.substring(0, 4) + "/" + inp.value.substring(4, 6) + "/" + inp.value.substring(6);
  }

  var cns = inp.value.split(",");
  for (var i = 0; i < cns.length; i++) {
    if (!re_date.test(trim(cns[i]))) {
      if (!silent) alert("The format of the Date of the WCAT Decision is incorrect.\n\nThe correct format is: yyyy/mm/dd.");
      oldDecisionNoti = false;
      goback(inp, srcElem);
      return false;
    }
  }

  var seperator = inp.value.substring(4, 5); // be flexable with the type of seperator -DW
  var rds = inp.value.split(seperator);
  if (null == rds || rds.length != 3) {
    if (!silent) alert("The format of the Date of Review Division Decision is incorrect.\n\nThe correct format is: yyyy/mm/dd.");
    oldDecisionNoti = false;
    goback(inp, srcElem);
    return false;
  }
  
  var ry = parseInt(stripLeadingZeroes(rds[0]));
  var rm = parseInt(stripLeadingZeroes(rds[1]));
  var rd = parseInt(stripLeadingZeroes(rds[2]));

  var leapYear = ((ry % 4) == 0 && ((ry % 100) != 0 || (ry % 400) == 0));
  if (leapYear && rm == 2) {
    if (rd > 29) {
      if (!silent) alert("The year, month, and day entered for Date of the WCAT Decision do not correspond to a valid date.");
      oldDecisionNoti = false;
      goback(inp, srcElem);
      return false;
    }
  } else {
    if (rd > daysIn[rm]) {
      if (!silent) alert("The year, month, and day entered for Date of the WCAT Decision do not correspond to a valid date.");
      oldDecisionNoti = false;
      goback(inp, srcElem);
      return false;
    }
  }

  var rdate = new Date();
  rdate.setFullYear(ry);
  rdate.setMonth(rm - 1);
  rdate.setDate(rd);
  rdate.setHours(0);
  rdate.setMinutes(0);
  rdate.setSeconds(0);
  rdate.setMilliseconds(0);

  var today = new Date();
  today.setHours(0);
  today.setMinutes(0);
  today.setSeconds(0);
  today.setMilliseconds(0);

  if (rdate > today) {
    if (!silent) alert("The date entered for Date of the WCAT Decision is in the future.");
    oldDecisionNoti = false;
    goback(inp, srcElem);
    return false;


  }

  //update page header
  document.getElementById("DecisionDate").innerHTML = inp.value;
  //frm.elements["DecisionDate"].value = inp.value;
  //frm.elements["DecisionDate2"].value = inp.value;

  //new
  inp = frm.elements["p1_WCATAppealNumber"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    alert("Please enter the WCAT Appeal Number");
    goback(inp, srcElem);
    return false;
  }

  if (!re_appeal.test(inp.value)) {
    alert("The format of the WCAT Appeal Number is incorrect.\n\nThe correct format is 6 digits, followed by character (Example: 123456-A)");
    goback(inp, srcElem);
    return false;
  }
  //end new

  inp = frm.elements["p1_WCATAppealNumber"];
  if (isExample(inp) || re_empty.test(inp.value)) {
    alert("Please enter the WCAT Appeal Number");
    goback(inp, srcElem);
    return false;
  }
  if (!re_appeal.test(inp.value)) {
    alert("The format of the WCAT Decision Number is incorrect.\n\nThe correct format is a 4-digit year followed by 5 digits, separated by a dash (Example: 2003-00000)");
    goback(inp, srcElem);
    return false;
  }
  if (inp == srcElem) return true;

  //update page headers
  document.getElementById("WCATNo").innerHTML = inp.value;
  //frm.elements["WCATNo"].value = inp.value;
  //frm.elements["WCATNo2"].value = inp.value;


  inp = frm.elements["p1_WorkSafeBCClaim"];
  if (inp == srcElem) return true;


  var cns = inp.value.split(",");
  for (var i = 0; i < cns.length; i++) {
    if (!re_wcb.test(trim(cns[i])) && !(isExample(inp) || re_empty.test(inp.value))) {
      if (!silent) alert("The format of the WorkSafeBC Claim Number(s) is incorrect.\n\nThe correct format is two letters followed by 8 numbers (example: AB12345678), or 8 numbers (example: 12345678).");
      goback(inp, srcElem);
      return false;
    }
  }

  //if claim number is ok, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }

  //update page headers
  document.getElementById("WorkSafeBCClaim").innerHTML = inp.value;
  //frm.elements["WCATNo"].value = inp.value;
  //frm.elements["WCATNo2"].value = inp.value;

  //END SECTION 1

  inp = frm.elements["p2_Employer"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
  }
  var employer = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p2_Worker"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;


  }
  var worker = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p2_Family"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
  }
  var family = inp.checked;
  if (inp == srcElem) return true;


  inp = frm.elements["p2_Other"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Employer"].checked = false;

    frm.elements["p2_OtherName"].disabled = false;
  }
  var other = inp.checked;
  if (inp == srcElem) return true;

  var p2chk = 0;
  if (employer) p2chk++;
  if (worker) p2chk++;
  if (family) p2chk++;
  if (other) p2chk++;

  if (p2chk != 1) {
    if (!silent) alert("Please indicate whether you are the worker, employer, family of a deceased worker, or other.");
    goback(frm.elements["p2_Worker"], srcElem);
    return false;
  }

  inp = frm.elements["p2_OtherName"];
  if (inp == srcElem) return true;
  if (other && (isExample(inp) || re_empty.test(inp.value))) {
    alert("Please specify 'other'.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p2_OrganizationName"];
  if (inp == srcElem) return true;

  //update page headers
  document.getElementById("EmployerFirmName").innerHTML = inp.value;
  //frm.elements["EmployerFirmName"].value = inp.value;
  //frm.elements["EmployerFirmName2"].value = inp.value;


  inp = frm.elements["p2_JobTitle"];
  if (inp == srcElem) return true;

  inp = frm.elements["p2_LastName"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Appellant's Last Name.");
    goback(inp, srcElem);
    return false;
  }

  //update page header
  document.getElementById("WorkerLastName").innerHTML = inp.value;
  //frm.elements["WorkerLastName"].value = inp.value;
  //frm.elements["WorkerLastName2"].value = inp.value;

  inp = frm.elements["p2_FirstName"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Appellant's First Name.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p2_AppellantMr"];
  var appMr = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_AppellantMs"].checked = false;
  }
  if (inp == srcElem) return true;

  inp = frm.elements["p2_AppellantMs"];
  var appMs = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_AppellantMr"].checked = false;
  }
  if (inp == srcElem) return true;


  if (!appMr && !appMs) {
    if (!silent) alert("Please check off Mr or Ms for the Appellant.");
    goback(frm.elements["p2_AppellantMr"]);
    return false;
  }

  inp = frm.elements["p2_MailingAddress"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Mailing Address.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p2_City"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the City.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p2_Province"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Province.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p2_PostalCode"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Postal Code.");
    goback(inp, srcElem);
    return false;
  }

  //add space to postal code (i.e. make "V4F5T4" look like "V4F 5T4"
  var re_postal_needs_space = /^[a-zA-Z][\d][a-zA-Z][\d][a-zA-Z][\d]$/i; //a postal code with no space
  if (re_postal_needs_space.test(trim(inp.value))) {
    inp.value = trim(inp.value);
    inp.value = inp.value.substring(0, 3) + " " + inp.value.substring(3);
  }

  inp = frm.elements["p2_DaytimeAreaCode"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Daytime Phone.");
    goback(inp, srcElem);
    return false;
  }
  if (!re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Daytime Phone Area Code is incorrect.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p2_DaytimePhone"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Daytime Phone.");
    goback(inp, srcElem);
    return false;
  }
  if (!re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Daytime Phone is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }
  inp = frm.elements["p2_OtherAreaCode"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Other Phone Area Code is incorrect.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  
  inp = frm.elements["p2_OtherPhone"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Other Phone is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  
  inp = frm.elements["p2_FaxAreaCode"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Fax Number Area Code is incorrect.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  inp = frm.elements["p2_Fax"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Fax Number is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }


  //date of review division decision
  inp = frm.elements["p8_SelfRepYes"];
  var srYes = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_SelfRepNo"].checked = false;

    frm.elements["p8_Organization"].disabled = true;
    frm.elements["p8_Organization"].checked = false;
    frm.elements["p8_OnePerson"].disabled = true;
    frm.elements["p8_OnePerson"].checked = false;
    frm.elements["p8_OrganizationName"].disabled = true;
    frm.elements["p8_OrganizationName"].value = "";
    frm.elements["p8_Relationship"].disabled = true;
    frm.elements["p8_Relationship"].value = "";
    frm.elements["p8_LastName"].disabled = true;
    frm.elements["p8_LastName"].value = "";
    frm.elements["p8_FirstName"].disabled = true;
    frm.elements["p8_FirstName"].value = "";
    frm.elements["p8_RepMr"].disabled = true;
    frm.elements["p8_RepMr"].checked = false;
    frm.elements["p8_RepMs"].disabled = true;
    frm.elements["p8_RepMs"].checked = false;
    frm.elements["p8_MailingAddress"].disabled = true;
    frm.elements["p8_MailingAddress"].value = "";
    frm.elements["p8_City"].disabled = true;
    frm.elements["p8_City"].value = "";
    frm.elements["p8_Province"].disabled = true;
    frm.elements["p8_Province"].value = "";
    frm.elements["p8_PostalCode"].disabled = true;
    frm.elements["p8_PostalCode"].value = "";
    frm.elements["p8_DaytimeAreaCode"].disabled = true;
    frm.elements["p8_DaytimeAreaCode"].value = "";
    frm.elements["p8_DaytimePhone"].disabled = true;
    frm.elements["p8_DaytimePhone"].value = "";
    frm.elements["p8_OtherAreaCode"].disabled = true;
    frm.elements["p8_OtherAreaCode"].value = "";
    frm.elements["p8_OtherPhone"].disabled = true;
    frm.elements["p8_OtherPhone"].value = "";
    frm.elements["p8_FaxAreaCode"].disabled = true;
    frm.elements["p8_FaxAreaCode"].value = "";
    frm.elements["p8_Fax"].disabled = true;
    frm.elements["p8_Fax"].value = "";
    frm.elements["p8_AuthEnclosed"].disabled = true;
    frm.elements["p8_AuthEnclosed"].checked = false;
    frm.elements["p8_AuthOnFile"].disabled = true;
    frm.elements["p8_AuthOnFile"].checked = false;
  }
  if (inp == srcElem) return true;
  inp = frm.elements["p8_SelfRepNo"];
  var srNo = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_SelfRepYes"].checked = false;

    frm.elements["p8_Organization"].disabled = false;
    frm.elements["p8_OnePerson"].disabled = false;
    frm.elements["p8_OrganizationName"].disabled = false;
    frm.elements["p8_Relationship"].disabled = false;
    frm.elements["p8_LastName"].disabled = false;
    frm.elements["p8_FirstName"].disabled = false;
    frm.elements["p8_RepMr"].disabled = false;
    frm.elements["p8_RepMs"].disabled = false;
    frm.elements["p8_MailingAddress"].disabled = false;
    frm.elements["p8_City"].disabled = false;
    frm.elements["p8_Province"].disabled = false;
    frm.elements["p8_PostalCode"].disabled = false;
    frm.elements["p8_DaytimeAreaCode"].disabled = false;
    frm.elements["p8_DaytimePhone"].disabled = false;
    frm.elements["p8_OtherAreaCode"].disabled = false;
    frm.elements["p8_OtherPhone"].disabled = false;
    frm.elements["p8_FaxAreaCode"].disabled = false;
    frm.elements["p8_Fax"].disabled = false;
    frm.elements["p8_AuthEnclosed"].disabled = false;
    frm.elements["p8_AuthOnFile"].disabled = false;
  }
  if (inp == srcElem) return true;

  if ((!srYes && !srNo) || (srYes && srNo)) {
    if (!silent) alert("Please indicate whether or not you intend to represent yourself.");
    goback(frm.elements["p8_SelfRepYes"]);
    return false;
  }

  inp = frm.elements["p8_Organization"];
  var repOrg = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_OrganizationName"].disabled = false;

    frm.elements["p8_OnePerson"].checked = false;
    frm.elements["p8_Relationship"].disabled = true;
    frm.elements["p8_Relationship"].value = "";
  }
  if (inp == srcElem) return true;

  inp = frm.elements["p8_OnePerson"];
  var repOne = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_Relationship"].disabled = false;

    frm.elements["p8_Organization"].checked = false;
    frm.elements["p8_OrganizationName"].disabled = true;
    frm.elements["p8_OrganizationName"].value = "";
  }
  if (inp == srcElem) return true;

  if (srNo && (!repOne && !repOrg || repOne && repOrg)) {
    if (srcElem == frm.elements["p8_Relationship"]) return true;
    if (srcElem == frm.elements["p8_OrganizationName"]) return true;
  }

  if (srNo && (!repOne && !repOrg || repOne && repOrg)) {
    if (!silent) alert("Please indicate whether your representative is one person or an organization.");
    goback(frm.elements["p8_Organization"], srcElem);
    return false;
  }

  var inp = frm.elements["p8_OrganizationName"];
  if (inp == srcElem) return true;
  if (repOrg && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Organization Name");
    goback(inp, srcElem);
    return false;
  }

  var inp = frm.elements["p8_Relationship"];
  if (inp == srcElem) return true;
  if (repOne && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Relationship of the Representative.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p8_LastName"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Last Name of Representative/Organization Contact.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p8_FirstName"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the First Name of Representative/Organization Contact.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p8_RepMr"];
  var repMr = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_RepMs"].checked = false;
  }
  if (inp == srcElem) return true;
  inp = frm.elements["p8_RepMs"];
  var repMs = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p8_RepMr"].checked = false;
  }
  if (inp == srcElem) return true;

  if (repOne && !repMr && !repMs) {
    if (!silent) alert("Please check off Mr or Ms for the Representative.");
    goback(frm.elements["p8_RepMr"]);
    return false;
  }

  inp = frm.elements["p8_MailingAddress"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Mailing Address.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p8_City"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the City.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p8_Province"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Province.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p8_PostalCode"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Postal Code.");
    goback(inp, srcElem);
    return false;
  }

  //add space to postal code (i.e. make "V4F5T4" look like "V4F 5T4"
  var re_postal_needs_space = /^[a-zA-Z][\d][a-zA-Z][\d][a-zA-Z][\d]$/i; //a postal code with no space
  if (re_postal_needs_space.test(trim(inp.value))) {
    inp.value = trim(inp.value);
    inp.value = inp.value.substring(0, 3) + " " + inp.value.substring(3);
  }

  inp = frm.elements["p8_DaytimeAreaCode"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Daytime Phone Area Code.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }
  if (srNo && !re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Daytime Phone Area Code is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  inp = frm.elements["p8_DaytimePhone"];
  if (inp == srcElem) return true;
  if (srNo && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the Daytime Phone.");
    goback(inp, srcElem);
    return false;
  }
  if (srNo && !re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Daytime Phone is incorrect.\n\nThe correct format is: 123-4567");
    goback(inp, srcElem);
    return false;
  }

  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }

  inp = frm.elements["p8_OtherAreaCode"];
  if (inp == srcElem) return true;
  if (srNo && !(isExample(inp) || re_empty.test(inp.value)) && !re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Other Phone Area Code is incorrect.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  
  inp = frm.elements["p8_OtherPhone"];
  if (inp == srcElem) return true;
  if (srNo && !(isExample(inp) || re_empty.test(inp.value)) && !re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Other Phone is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }

  inp = frm.elements["p8_FaxAreaCode"];
  if (inp == srcElem) return true;
  if (srNo && !(isExample(inp) || re_empty.test(inp.value)) && !re_areacode.test(inp.value)) {
    if (!silent) alert("The format of the Fax Number Area Code is incorrect.\n\nThe correct format is: 250.");
    goback(inp, srcElem);
    return false;
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  inp = frm.elements["p8_Fax"];
  if (inp == srcElem) return true;
  if (srNo && !(isExample(inp) || re_empty.test(inp.value)) && !re_phone.test(inp.value)) {
    if (!silent) alert("The format of the Fax Number is incorrect.\n\nThe correct format is: 123-4567.");
    goback(inp, srcElem);
    return false;
  }
  //Add dash to number if necessary
  if (inp.value.indexOf(" ") == 3) inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(4); ;
  if (inp.value.indexOf("-") < 0 && inp.value.length == 7) {
    inp.value = inp.value.substring(0, 3) + "-" + inp.value.substring(3);
  }
  //if input is valid, remove example watermark
  if (isExample(inp)) {
    inp.className.replace("example", "");
    inp.value = "";
  }
  
  inp = frm.elements["p4_UnreasonableBecause"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_UnfairBecause"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_EvidenceDidNotExist"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_EvidenceNotFound"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_NewEvidenceSubstantialBecause"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_NewEvidenceMaterialBecause"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_EvidenceAttached"];
  if (inp == srcElem) return true;

  return true;
}

function mutualExcludeCheckboxes(frm, srcElem) {
  /*
  var inp;

  inp=frm.elements["p1_WorkerMr"];
  if(inp==srcElem&&inp.checked) frm.elements["p1_WorkerMs"].checked=false;
  inp=frm.elements["p1_WorkerMs"];
  if(inp==srcElem&&inp.checked) frm.elements["p1_WorkerMr"].checked=false;
  
  inp=frm.elements["p2_Worker"];
  if(inp==srcElem&&inp.checked) {
  frm.elements["p2_Dependant"].checked=false;
  frm.elements["p2_Employer"].checked=false;
  frm.elements["p2_EmployerFirmName"].value="";
  }  
  inp=frm.elements["p2_Dependant"];
  if(inp==srcElem&&inp.checked) {
  frm.elements["p2_Worker"].checked=false;
  frm.elements["p2_Employer"].checked=false;
  frm.elements["p2_WorkerBCCareCard"].value="";
  frm.elements["p2_EmployerFirmName"].value="";
  }  
  inp=frm.elements["p2_Employer"];
  if(inp==srcElem&&inp.checked) {
  frm.elements["p2_Dependant"].checked=false;
  frm.elements["p2_Worker"].checked=false;
  frm.elements["p2_WorkerBCCareCard"].value="";
  }
  
  inp=frm.elements["p2_AppellantMr"];
  if(inp==srcElem&&inp.checked) frm.elements["p2_AppellantMs"].checked=false;
  inp=frm.elements["p2_AppellantMs"];
  if(inp==srcElem&&inp.checked)  frm.elements["p2_AppellantMr"].checked=false;
  
  inp=frm.elements["p6_CD"];
  if(inp==srcElem&&inp.checked) frm.elements["p6_Paper"].checked=false;
  inp=frm.elements["p6_Paper"];
  if(inp==srcElem&&inp.checked) frm.elements["p6_CD"].checked=false;
  
  inp=frm.elements["p7_Written"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_Oral"].checked=false;
  inp=frm.elements["p7_Oral"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_Written"].checked=false;
  
  var docity=false;
  for(var i=0; !docity&&i<cityset.length; i++) {
  inp=frm.elements[cityset[i]];
  if(inp==srcElem) docity=true;
  }
  if(docity) {
  for(var i=0; i<cityset.length; i++) {
  inp=frm.elements[cityset[i]];
  if(!(inp==srcElem&&inp.checked)) {
  inp.checked=false;
  }
  }
  }
  
  inp=frm.elements["p7_InterpreterNo"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_InterpreterYes"].checked=false;
  inp=frm.elements["p7_InterpreterYes"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_InterpreterNo"].checked=false;
  
  inp=frm.elements["p7_WitnessesNo"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_WitnessesYes"].checked=false;
  inp=frm.elements["p7_WitnessesYes"];
  if(inp==srcElem&&inp.checked) frm.elements["p7_WitnessesNo"].checked=false;
  
  inp=frm.elements["p8_SelfRepYes"];
  if(inp==srcElem&&inp.checked) frm.elements["p8_SelfRepNo"].checked=false;
  inp=frm.elements["p8_SelfRepNo"];
  if(inp==srcElem&&inp.checked) frm.elements["p8_SelfRepYes"].checked=false;
  
  inp=frm.elements["p8_Organization"];
  if(inp==srcElem&&inp.checked) {
  frm.elements["p8_OnePerson"].checked=false;
  frm.elements["p8_Relationship"].value="";
  }
  inp=frm.elements["p8_OnePerson"];
  if(inp==srcElem&&inp.checked) {
  frm.elements["p8_Organization"].checked=false;
  frm.elements["p8_OrganizationName"].value="";
  }
  
  inp=frm.elements["p8_RepMr"];
  if(inp==srcElem&&inp.checked) frm.elements["p8_RepMs"].checked=false;
  inp=frm.elements["p8_RepMs"];
  if(inp==srcElem&&inp.checked) frm.elements["p8_RepMr"].checked=false;
  */
}


function setFirstFocus() {
  document.getElementById("btnOK").focus();
}


function tabTrapFocus(eleList, destination) {
  var frm = document.forms["wcat65form"];

  if (eleList.indexOf(event.srcElement.name) >= 0) {
    var curGroup = eleList.split(",");
    for (var i = 0; i < curGroup.length; i++) {

      if (frm.elements[curGroup[i]].checked) {
        frm.elements[destination].focus();
        return true;
      }
    }
  }
  return false;
}

//element list - the current element ID
//destination - if checked, go to element with id "destination"
//alternate - if not checked, go to eleemnt with id "alternate"
function tabTrapFocusGroup(eleList, destination, alternate) {
  var frm = document.forms["wcat65form"];

  if (eleList.indexOf(event.srcElement.name) >= 0) {
    var curGroup = eleList.split(",");
    for (var i = 0; i < curGroup.length; i++) {
      if (frm.elements[curGroup[i]].checked) {
        frm.elements[destination].focus();
        return true;
      }
      else {
        frm.elements[alternate].focus();
        return true;
      }
    }
  }
  return false;
}



function tabTrapFocusText(element, destination) {
  var frm = document.forms["wcat65form"];
  var inp = frm.elements[element];
  if (element.indexOf(event.srcElement.name) >= 0) {
    frm.elements[destination].focus();
    return true;
  }
  return false;
}



//Added tab key filter for grouped checkboxes, so a tab press on an already-sepcified group value sends the 
//focus to the next section. Filters for Tab, and if pressed, specifies focus depending on the sender. 
function tabTrap() {

  if (event != null && event.keyCode == 9) {


    if (tabTrapFocusGroup("p2_Worker", "p2_LastName", "p2_Employer")) //element, checked destination, unchecked destination
      return false;

    if (tabTrapFocusGroup("p2_Employer", "p2_OrganizationName", "p2_Family"))
      return false;

    if (tabTrapFocusGroup("p2_Family", "p2_LastName", "p2_Other"))
      return false;

    if (tabTrapFocus("p2_Other", "p2_OtherName"))
      return false;

    if (tabTrapFocus("p2_AppellantMr,p2_AppellantMs", "p2_MailingAddress"))
      return false;

    if (tabTrapFocus("p8_SelfRepYes", "p4_UnreasonableBecause"))
      return false;

    if (tabTrapFocus("p8_SelfRepNo", "p8_Organization"))
      return false;

    if (tabTrapFocusGroup("p8_Organization", "p8_OrganizationName", "p8_OnePerson")) //element, checked destination, unchecked destination
      return false;

    if (tabTrapFocus("p8_OnePerson", "p8_Relationship"))
      return false;

    if (tabTrapFocusText("p8_OrganizationName", "p8_LastName"))
      return false;

    if (tabTrapFocusText("p8_Relationship", "p8_LastName"))
      return false;

    if (tabTrapFocus("p8_Organization,p8_OnePerson", "p8_LastName"))
      return false;

    if (tabTrapFocusText("p8_Fax", "p8_AuthEnclosed"))
      return false;

    if (tabTrapFocus("p8_RepMr,p8_RepMs", "p8_MailingAddress"))
      return false;

    if (tabTrapFocus("p8_AuthEnclosed,p8_AuthOnFile", "p4_UnreasonableBecause"))
      return false;

    if (tabTrapFocusText("p4_NewEvidenceMaterialBecause", "p10_AddedPages"))
      return false;

    if (tabTrapFocusText("p10_Pages", "p10_AllAnswered"))
      return false;

    // Keep focus on print button when tabbing with the print button highlighted
    if (tabTrapFocusText("btnPrint", "btnPrint"))
      return false;

  }
  return true;

}

//I can't think of a better way to do this... the control names are somewhat inconsistent and the number 
// of checks in a group are variable... so I'm doing these highlight sets handraulically.
function setCheckBoxGroupHighlight(frm, elem, on) {

  //determine the group: 
  var eleGroup;
  var curGroup;

  curGroup = "p2_Worker,p2_Employer,p2_Family,p2_Other";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p2_AppellantMr,p2_AppellantMs";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p4_EvidenceAttached";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p6_CD,p6_Paper";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p7_Written,p7_Oral";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p7_Castlegar,p7_Cranbrook,p7_Kamloops,p7_Nanaimo,p7_Richmond,p7_Victoria,p7_Courtenay,p7_FortStJohn,p7_Kelowna,p7_PrinceGeorge,p7_Terrace,p7_WilliamsLake";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p7_InterpreterYes,p7_InterpreterNo";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p7_WitnessesYes,p7_WitnessesNo";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p8_SelfRepYes,p8_SelfRepNo";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p8_Organization,p8_OnePerson";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p8_RepMr,p8_RepMs";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p8_AuthEnclosed,p8_AuthOnFile";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p10_AddedPages";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p10_AllAnswered";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p10_FaxCopy";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");


  if (eleGroup == null)
    return;

  //then set it to on or off: 
  if (on) {
    for (var i = 0; i < eleGroup.length; i++) {
        frm.elements[eleGroup[i]].className = frm.elements[eleGroup[i]].className + " highlight";
        frm.elements[eleGroup[i]].parentNode.style.backgroundColor = 'yellow';
    }
  } else {
    for (var i = 0; i < eleGroup.length; i++) {
        frm.elements[eleGroup[i]].className = frm.elements[eleGroup[i]].className.replace(/\highlight\b/, " ");
        frm.elements[eleGroup[i]].parentNode.style.backgroundColor = 'white';
    }
  }
}

