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 clearNotice() {
//  document.getElementById("notice_bg").style.display = "none";
//  document.getElementById("notice_txt").style.display = "none";
//  document.getElementById("p1_WorkSafeBCClaim").focus();
//}

silent = true;

function validate(frm, srcElem, silent) {
  var inp;
  if (silent == null) silent = false;
  if (srcElem == frm.elements["btnPrint"]) return true; // allow printing with incomplete form

  mutualExcludeCheckboxes(frm, srcElem);

  inp = frm.elements["p1_WorkSafeBCNumbers"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the WorkSafeBC File/Firm #(s).");
    goback(inp, srcElem);
    return false;
  }


  var cns = inp.value.split(",");
  for (var i = 0; i < cns.length; i++) {
    if (!re_wsbcfile.test(trim(cns[i]))) {
      if (!silent) alert("The format of the WorkSafeBC File/Firm #(s) is incorrect.\n\nThe correct format is a 6-digit number (example: 999888). If your number has less than six digits, add zeros (\"0\") to the beginning for a total of six digits (example 009888).");
      goback(inp, srcElem);
      return false;
    }
  }

  document.getElementById("WorkSafeBCNumbers").innerHTML = inp.value;
  //frm.elements["WorkSafeBCNumbers"].value = inp.value;
  //frm.elements["WorkSafeBCNumbers"].readOnly = true;
  //frm.elements["WorkSafeBCNumbers2"].value = inp.value;
  //frm.elements["WorkSafeBCNumbers2"].readOnly = true;

  inp = frm.elements["p1_EmployerFirmName"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Employer Firm Name.");
    oldDecisionNoti = false;
    goback(inp, srcElem);
    return false;
}
document.getElementById("EmployerFirmName").innerHTML = inp.value;
  //frm.elements["EmployerFirmName"].value = inp.value;
  //frm.elements["EmployerFirmName"].readOnly = true;
  //frm.elements["EmployerFirmName2"].value = inp.value;
  //frm.elements["EmployerFirmName2"].readOnly = true;

  //RFS Number
  inp = frm.elements["p1_RFS"];
  if (inp == srcElem) return true;

  var cns = inp.value.split(",");
  for (var i = 0; i < cns.length; i++) {
    if (!re_rfs.test(trim(cns[i])) && !re_empty.test(inp.value)) {
      if (!silent) alert("The format of the RFS # is incorrect.\n\nThe correct format is a 4-digit year followed by a series of numbers (example: 200012345)");
      goback(inp, srcElem);
      return false;
    }
  }

  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }

  inp = frm.elements["p1_Administrative"];
  if (inp == srcElem) return true;

  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_insp.test(inp.value)) {
    if (!silent) alert("The format of the Administrative Penalty Order/Inspection Report number(s) is incorrect.\n\nThe correct format is a four-digit year followed by an 8-digit series of numbers (example:200012345678)");
    goback(inp, srcElem);
    return false;
  }

  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }

  //END SECTION 1

  inp = frm.elements["p2_Employer"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Owner"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = false;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = false;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }

  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_Owner"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = true;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = true;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }
  var worker = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p2_Owner"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = false;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = false;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }
  var owner = 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_Owner"].checked = false;
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = true;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = true;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }
  var family = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p2_Union"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Owner"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = false;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = false;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";

  }
  var union = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p2_Supplier"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p2_Worker"].checked = false;
    frm.elements["p2_Owner"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Employer"].checked = false;
    frm.elements["p2_Other"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = false;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = false;
    frm.elements["p2_OtherName"].value = "";
    frm.elements["p2_OtherName"].disabled = true;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }
  var supplier = 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_Owner"].checked = false;
    frm.elements["p2_Family"].checked = false;
    frm.elements["p2_Union"].checked = false;
    frm.elements["p2_Supplier"].checked = false;
    frm.elements["p2_Employer"].checked = false;

    frm.elements["p2_OrganizationName"].value = "";
    frm.elements["p2_OrganizationName"].disabled = false;
    frm.elements["p2_JobTitle"].value = "";
    frm.elements["p2_JobTitle"].disabled = false;
    frm.elements["p2_OtherName"].disabled = false;
    frm.elements["p2_FirstName"].value = "";
    frm.elements["p2_LastName"].value = "";
  }
  var other = inp.checked;
  if (inp == srcElem) return true;


  //an interesting way of seeing if at least one of the checkboxes is checked:
  var p2chk = 0;
  if (employer) p2chk++;
  if (worker) p2chk++;
  if (owner) p2chk++;
  if (family) p2chk++;
  if (union) p2chk++;
  if (supplier) p2chk++;
  if (other) p2chk++;

  if (p2chk != 1) {
    if (!silent) alert("Please indicate whether you are the employer, worker, owner, family of a deceased worker, union, supplier, 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;

  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;
  }

  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;
  }

  if (!re_postal.test(inp.value)) {
    //    if(!silent) alert("The format of the Postal Code is incorrect.\n\nThe correct format is: A1B2C3.");
    //    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);
  }
  
  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }
  
  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 (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }

  inp = frm.elements["p3_DecisionNumberA"];
  if (inp == srcElem) return true;
  if (isExample(inp) || re_empty.test(inp.value)) {
    inp.focus();
    if (!silent) alert("Please enter the Review Division decision number (1).");
    goback(inp, srcElem);
    return false;
  }
  if (!re_decnum.test(inp.value)) {
    inp.focus();
    if (!silent) alert("There are errors in the format of the Review Division decision number (1).\n\nThe correct format is: R1234567. If the reference number you are entering has less than seven digits, add zeros (\"0\") to the beginning for a total of seven digits.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p3_DecisionNumberB"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_decnum.test(inp.value)) {
    inp.focus();
    if (!silent) alert("There are errors in the format of the Review Division decision number (2).\n\nThe correct format is: R1234567. If the reference number you are entering has less than seven digits, add zeros (\"0\") to the beginning for a total of seven digits.");
    goback(inp, srcElem);
    return false;
  }
 
  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }
  
  inp = frm.elements["p3_DecisionNumberC"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_decnum.test(inp.value)) {
    inp.focus();
    if (!silent) alert("There are errors in the format of the Review Division decision number (3).\n\nThe correct format is: R1234567. If the reference number you are entering has less than seven digits, add zeros (\"0\") to the beginning for a total of seven digits.");
    goback(inp, srcElem);
    return false;
  }

  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }

  inp = frm.elements["p3_DecisionNumberD"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_decnum.test(inp.value)) {
    inp.focus();
    if (!silent) alert("There are errors in the format of the Review Division decision number (4).\n\nThe correct format is: R1234567. If the reference number you are entering has less than seven digits, add zeros (\"0\") to the beginning for a total of seven digits.");
    goback(inp, srcElem);
    return false;
  }

  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }

  inp = frm.elements["p3_DecisionNumberE"];
  if (inp == srcElem) return true;
  if (!(isExample(inp) || re_empty.test(inp.value)) && !re_decnum.test(inp.value)) {
    inp.focus();
    if (!silent) alert("There are errors in the format of the Review Division decision number (5).\n\nThe correct format is: R1234567. If the reference number you are entering has less than seven digits, add zeros (\"0\") to the beginning for a total of seven digits.");
    goback(inp, srcElem);
    return false;
  }

  //if input is valid, remove example watermark
  if (/\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }
  
  //date of review division decision
  inp = frm.elements["p3_DateOfReviewDivisionDecision"];
  if (inp == srcElem) return true;


  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the Date of Review Division 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 Review Division 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 Review Division 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 Review Division 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 Review Division Decision is in the future.");
    oldDecisionNoti = false;
    goback(inp, srcElem);
    return false;
  }

  var expDays = 31;
  var statDays = 30;
  rdate.setTime(rdate.getTime() + (expDays * 24 * 60 * 60 * 1000));
  if (rdate < today) {
    if (!oldDecisionNoti) {
      oldDecisionNoti = true;
      if (!silent) alert("Your appeal is over " + statDays + " days old; after completing this form, you will also need to fill out \"Extension of Time to Appeal Application: Review Division Decision\". This Appeal Application will be provided upon printing this form.");
    }
  }

  inp = frm.elements["p3_CopyIsAttached"];
  if (inp == srcElem) return true;

  inp = frm.elements["p4_WhyIsDecisionIncorrect"];
  if (inp == srcElem) return true;

  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter why the decision is incorrect.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p5_RequestOutcome"];
  if (inp == srcElem) return true;

  if (isExample(inp) || re_empty.test(inp.value)) {
    if (!silent) alert("Please enter the outcome you request from this appeal.");
    goback(inp, srcElem);
    return false;
  }

  //inp = frm.elements["EmployerFirmName"];
  //if (inp == srcElem) return true;
  /*
  if(isExample(inp)||re_empty.test(inp.value)) {
  if(!silent) alert("Please enter the Worker's Last Name.");
  goback(inp, srcElem);
  return false;
  }
  */

  //inp = frm.elements["WorkSafeBCNumbers"];
  //if (inp == srcElem) return true;

  /*
  if(isExample(inp)||re_empty.test(inp.value)) {
  if(!silent) alert("Please enter the WorkSafeBC Claim Number(s).");
  goback(inp, srcElem);
  return false;
  }
  
  var cns=inp.value.split(",");
  for(var i=0; i<cns.length; i++) {
  if(!re_wcb.test(trim(cns[i]))) {
  if(!silent) alert("The format of the WorkSafeBC Claim Number(s) is incorrect.\n\nThe correct format is AB12345678 or 12345678 or 123456789.");
  goback(inp, srcElem);
  return false;
  }
  }
  */

  inp = frm.elements["p6_EmployerPostedYes"];
  var posted = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p6_EmployerPostedNo"].checked = false;
    frm.elements["p6_NotPostedBecause"].value = "";
  }
  if (inp == srcElem) return true; 

  inp = frm.elements["p6_EmployerPostedNo"];
  var notPosted = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p6_EmployerPostedYes"].checked = false;
  }
  if (inp == srcElem) return true;

  inp = frm.elements["p6_NotPostedBecause"];
  if (inp == srcElem) return true;

  inp = frm.elements["p7_Written"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_Oral"].checked = false;
    frm.elements["p7_OralHearingReason"].disabled = true;
    frm.elements["p7_OralHearingReason"].value = "";
    for (var i = 0; i < cityset.length; i++) {
      frm.elements[cityset[i]].disabled = true;
      frm.elements[cityset[i]].checked = false;
    }
    frm.elements["p7_InterpreterYes"].disabled = true;
    frm.elements["p7_InterpreterYes"].checked = false;
    frm.elements["p7_InterpreterNo"].disabled = true;
    frm.elements["p7_InterpreterNo"].checked = false;
    frm.elements["p7_Language"].disabled = true;
    frm.elements["p7_Language"].value = "";
    frm.elements["p7_Dialect"].disabled = true;
    frm.elements["p7_Dialect"].value = "";
    frm.elements["p7_WitnessesYes"].disabled = true;
    frm.elements["p7_WitnessesYes"].checked = false;
    frm.elements["p7_WitnessesNo"].disabled = true;
    frm.elements["p7_WitnessesNo"].checked = false;
  }
  var written = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p7_Oral"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_Written"].checked = false;
    frm.elements["p7_OralHearingReason"].disabled = false;
    for (var i = 0; i < cityset.length; i++) {
      frm.elements[cityset[i]].disabled = false;
    }
    frm.elements["p7_InterpreterYes"].disabled = false;
    frm.elements["p7_InterpreterNo"].disabled = false;
    frm.elements["p7_Language"].disabled = false;
    frm.elements["p7_Dialect"].disabled = false;
    frm.elements["p7_WitnessesYes"].disabled = false;
    frm.elements["p7_WitnessesNo"].disabled = false;
  }
  var oral = inp.checked;
  if (inp == srcElem) return true;

  if ((!written && !oral) || (written && oral)) {
    if (!silent) alert("Please indicate how you want your appeal to be considered.");
    goback(frm.elements["p7_Written"], srcElem);
    return false;
  }

  //oral hearing conditional logic
  inp = frm.elements["p7_OralHearingReason"];
  if (inp == srcElem) return true;
  /*
  if(oral&&(isExample(inp)||re_empty.test(inp.value))) {
  if(!silent) alert("Please enter the reason an oral hearing is required.");
  goback(inp, srcElem);
  return false;
  }*/

  //truncate(inp, 2, "Question 4, cont'd");

  var citycnt = 0;
  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;
      }
    }
  }

  for (var i = 0; i < cityset.length; i++) {
    inp = frm.elements[cityset[i]];
    if (inp == srcElem) return true;
    if (inp.checked) citycnt++;
  }
  if (oral && citycnt != 1) {
    if (!silent) alert("Please select the city you would like to have your oral hearing held in.");
    goback(frm.elements["p7_Castlegar"], srcElem);
    return false;
  }

  inp = frm.elements["p7_InterpreterNo"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_InterpreterYes"].checked = false;
    frm.elements["p7_Language"].disabled = true;
    frm.elements["p7_Dialect"].disabled = true;
    frm.elements["p7_Language"].value = "";
    frm.elements["p7_Dialect"].value = "";
  }
  var intNo = inp.checked;
  if (inp == srcElem) return true;

  inp = frm.elements["p7_InterpreterYes"];
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_InterpreterNo"].checked = false;
    frm.elements["p7_Language"].disabled = false;
    frm.elements["p7_Dialect"].disabled = false;
  }
  var intYes = inp.checked;
  if (inp == srcElem) return true;

  if (oral && (!intYes && !intNo || intYes && intNo)) {
    if (!silent) alert("Please indicate whether or not you requre an interpreter.");
    goback(frm.elements["p7_InterpreterNo"].checked, srcElem);
    return false;
  }

  inp = frm.elements["p7_Language"];
  if (inp == srcElem) return true;
  if (oral && intYes && (isExample(inp) || re_empty.test(inp.value))) {
    if (!silent) alert("Please enter the language you speak.");
    goback(inp, srcElem);
    return false;
  }

  inp = frm.elements["p7_Dialect"];
  if (inp == srcElem) return true;

  inp = frm.elements["p7_WitnessesNo"];
  var wNo = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_WitnessesYes"].checked = false;
  }
  if (inp == srcElem) return true;
  inp = frm.elements["p7_WitnessesYes"];
  var wYes = inp.checked;
  if (inp == srcElem && inp.checked) {
    frm.elements["p7_WitnessesNo"].checked = false;
  }
  if (inp == srcElem) return true;

  if (oral && (!wYes && !wNo) || (wYes && wNo)) {
    if (!silent) alert("Please indicate whether or not you intend to bring witnesses to the oral hearing.");
    goback(frm.elements["p7_WitnessesNo"]);
    return false;
  }

  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 repMrs = 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;
  }

  if (srNo && !re_postal.test(inp.value)) {
    //    if(!silent) alert("The format of the Postal Code is incorrect.\n\nThe correct format is: A1B2C3.");
    //    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);
  }

  //if input is valid, remove example watermark
  if (srNo && /\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }


  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 (srNo && /\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (srNo && /\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (srNo && /\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    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 (srNo && /\bexample\b/.test(inp.className)) {
    inp.className = inp.className.replace(/\bexample\b/, " xmpl ");
    inp.value = "";
  }


  return true;
}

function mutualExcludeCheckboxes(frm, srcElem) {

}

function setFirstFocus() {
  document.getElementById("btnOK").focus();
}

function tabTrapFocus(eleList, destination) {

  var frm = document.forms["wcat24form"];
  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;
}
function tabTrapFocusGroup(eleList, destination, alternate) {
  var frm = document.forms["wcat24form"];

  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["wcat24form"];
  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. 
// the call is simple, first arg is all the checkboxes comma-separated, second is the control to send focus to.   
function tabTrap() {

  if (event != null && event.keyCode == 9) {



    if (tabTrapFocusGroup("p2_Worker", "p2_LastName", "p2_Owner"))
      return false;

    if (tabTrapFocusGroup("p2_Family", "p2_LastName", "p2_Union"))
      return false;

    if (tabTrapFocusGroup("p2_Other", "p2_OtherName", "p2_OrganizationName"))
      return false;

    if (tabTrapFocus("p2_Worker,p2_Supplier,p2_Owner,p2_Union,p2_Employer", "p2_OrganizationName"))
      return false;

    if (tabTrapFocus("p2_AppellantMr,p2_AppellantMs", "p2_MailingAddress"))
      return false;

    /* This section validates so that the next field isn't highlighted
    * if/when there is an error
    

    if (tabTrapFocusText("p3_DecisionNumberA", "p3_DecisionNumberB")) {
      validate(document.forms[0], this, true);
      return false;
    }

    if (tabTrapFocusText("p3_DecisionNumberB", "p3_DecisionNumberC")) {
      validate(document.forms[0], this, true);
      return false;
    }

    if (tabTrapFocusText("p3_DecisionNumberC", "p3_DecisionNumberD")) {
      validate(document.forms[0], this, true);
      return false;
    }

    if (tabTrapFocusText("p3_DecisionNumberD", "p3_DecisionNumberE")) {
      validate(document.forms[0], this, true);
      return false;
    }

    if (tabTrapFocusText("p3_DecisionNumberE", "p3_DateOfReviewDivisionDecision")) {
      validate(document.forms[0], this, true);
      return false;
    }

    /* ****** End Additional Validation step **** */

    if (tabTrapFocusText("p4_WhyIsDecisionIncorrect", "p5_RequestOutcome"))
      return false;

    if (tabTrapFocusText("p5_RequestOutcome", "p6_EmployerPostedYes"))
      return false;

    if (tabTrapFocus("p6_EmployerPostedYes", "p7_Written"))
      return false;

    if (tabTrapFocusGroup("p7_Written", "p8_SelfRepYes", "p7_Oral"))
      return false;

    if (tabTrapFocus("p7_Oral", "p7_OralHearingReason"))
      return false;

    if (tabTrapFocus("p7_Castlegar,p7_Cranbrook,p7_Kamloops,p7_Nanaimo,p7_Richmond,p7_Victoria,p7_Courtenay,p7_FortStJohn,p7_Kelowna,p7_PrinceGeorge,p7_Terrace,p7_WilliamsLake", "p7_InterpreterNo"))
      return false;

    if (tabTrapFocusGroup("p7_InterpreterNo", "p7_WitnessesNo", "p7_InterpreterYes"))
      return false;

    if (tabTrapFocus("p7_InterpreterYes", "p7_Language"))
      return false;

    if (tabTrapFocus("p7_WitnessesNo,p7_WitnessesYes", "p8_SelfRepYes"))
      return false;

    if (tabTrapFocus("p8_SelfRepYes", "p10_AddedPages"))
      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 (tabTrapFocusText("p8_OrganizationName", "p8_LastName"))
      return false;

    if (tabTrapFocusText("p8_Relationship", "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", "p10_AddedPages"))
      return false;

    if (tabTrapFocusText("p10_Pages", "p10_DecisionCopy"))
      return false;

    if (tabTrapFocus("p10_Pages", "p10_DecisionCopy"))
      return false;

    if (tabTrapFocus("p10_DecisionCopy", "btnPrint"))
      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 =  "p1_WorkerMr,p1_WorkerMs"; 
  //    if(curGroup.indexOf(elem.name)>=0) 
  //        eleGroup = curGroup.split(","); 

  curGroup = "p2_Worker,p2_Supplier,p2_Owner,p2_Family,p2_Union,p2_Other,p2_Employer";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p2_AppellantMr,p2_AppellantMs";
  if (curGroup.indexOf(elem.name) >= 0)
    eleGroup = curGroup.split(",");

  curGroup = "p3_CopyIsAttached";
  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 = "p6_EmployerPostedYes,p6_EmployerPostedNo";
  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_DecisionCopy";
  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';
    }
  }
} 

