﻿// JScript File
var expandedCheckListId = null;
var countUpdateErrors = 0;

try {

   if (window.addEventListener) { // Mozilla, Netscape, Firefox
      //window.attachEvent("onscroll",function(){if (expandedCheckListId != null){showHideCheckList(expandedCheckListId,false);}});
      document.addEventListener('click', hideExpandedChecklist, false)
   } else { // IE
      document.attachEvent("onclick", hideExpandedChecklist);
   }
} catch (e) { alert(e) }

function showHideCheckList(clientId, isPageLoad) {
   if (expandedCheckListId != clientId && expandedCheckListId != null) {
      showHideCheckList(expandedCheckListId);
   }

   var tblCheckList = document.getElementById(clientId);
   var lblCSVList = tblCheckList.getElementsByTagName("SPAN")[0]
   var trCheckList = tblCheckList.getElementsByTagName("TR")[1]
   var imgIcon = tblCheckList.getElementsByTagName("IMG")[0]
   var displayMode = trCheckList.getAttribute("displaymode")
   var eventHandler = trCheckList.getAttribute("eventhandler")
   var expandIconUrl = trCheckList.getAttribute("expandiconurl")
   var collapseIconUrl = trCheckList.getAttribute("collapseiconurl")

   // displayMode 0 = Vertical, displayMode 1 = Horizontal
   if (displayMode == 1) {

      var frmHiddenFrame = trCheckList.getElementsByTagName("IFRAME")[0]
      var divHiddenContainer = trCheckList.getElementsByTagName("DIV")[0]

      //if (trCheckList.style.display == "none")
      if (trCheckList.style.visibility == "hidden") {
         //trCheckList.style.display = "";
         trCheckList.style.visibility = "visible";
         lblCSVList.style.display = "none";
         imgIcon.src = collapseIconUrl;

         frmHiddenFrame.style.width = divHiddenContainer.offsetWidth + 'px';
         frmHiddenFrame.style.height = divHiddenContainer.offsetHeight + 'px';


         expandedCheckListId = clientId;
      } else {
         //trCheckList.style.display = "none";
         trCheckList.style.visibility = "hidden";
         lblCSVList.style.display = "";
         imgIcon.src = expandIconUrl;

         processCheckList(clientId);

         expandedCheckListId = null;

         if (isPageLoad == false) { eval(eventHandler); }
      }
   } else {

      var chkCheckBoxes = document.getElementById(clientId).getElementsByTagName("INPUT");
      var lblCheckList = document.getElementById(clientId).getElementsByTagName("LABEL");
      var tblCheckListItems = document.getElementById(clientId).getElementsByTagName("TABLE")[0];
      var trCheckList = tblCheckListItems.getElementsByTagName("TR");

      var divHiddenContainer = document.getElementById(clientId).getElementsByTagName("DIV")[0]
      var verticalDivContainer = document.getElementById(clientId).getElementsByTagName("DIV")[1];

      var frmHiddenFrame = document.getElementById(clientId).getElementsByTagName("IFRAME")[0]


      var iCheckedCount = 0;
      var collapse = false;
      var selectedValues = "";

      if (divHiddenContainer.style.display == "none") {
         divHiddenContainer.style.display = "";
         frmHiddenFrame.style.display = "";
      } else {
         divHiddenContainer.style.display = "none";
         frmHiddenFrame.style.display = "none";
         collapse = true;
      }

      for (i = 0; i <= chkCheckBoxes.length - 1; i++) {
         if (chkCheckBoxes[i].checked == true) {
            selectedValues = selectedValues + "<div>" + lblCheckList[i].innerHTML + "</div>";
            iCheckedCount += 1;
         }
      }

      if (collapse == true) {
         expandedCheckListId = null;
         expandedLabelId = null;

         verticalDivContainer.innerHTML = selectedValues;

         if (iCheckedCount == chkCheckBoxes.length || iCheckedCount == 0) {
            verticalDivContainer.style.display = "none";
         } else {
            verticalDivContainer.style.display = "";
         }

         processCheckList(clientId);
         imgIcon.src = expandIconUrl;

         if (isPageLoad == false) { eval(eventHandler); }
      } else {
         expandedCheckListId = clientId;

         imgIcon.src = collapseIconUrl;
      }
   }
}

function processCheckList(clientId) {
   var tblCheckList = document.getElementById(clientId);
   var trCheckList = tblCheckList.getElementsByTagName("TR")[1]
   var lblCSVList = tblCheckList.getElementsByTagName("SPAN")[0]
   var displayMode = trCheckList.getAttribute("displaymode")
   var divCheckBoxes = document.getElementById(clientId).getElementsByTagName("INPUT");
   var divCheckBoxLabels = trCheckList.getElementsByTagName("LABEL");
   var allSelectedText = trCheckList.getAttribute("allselectedtext");
   var noneSelectedText = trCheckList.getAttribute("noneselectedtext");
   var strCheckedList = "";
   var iCheckedCount = 0;
   var i = 0;

   if (allSelectedText == null) { allSelectedText = ""; }
   if (noneSelectedText == null) { noneSelectedText = ""; }

   for (i = 0; i <= divCheckBoxes.length - 1; i++) {
      if (divCheckBoxes[i].checked == true) {
         if (iCheckedCount > 0) { strCheckedList += ", "; }
         strCheckedList += divCheckBoxLabels[i].innerHTML;
         iCheckedCount += 1;
      }
   }

   if (iCheckedCount == divCheckBoxes.length) {
      if (allSelectedText != "") {
         lblCSVList.innerHTML = allSelectedText;
      } else {
         lblCSVList.innerHTML = strCheckedList;
      }
   } else if (iCheckedCount == 0) {
      lblCSVList.innerHTML = noneSelectedText;
   } else {
      if (displayMode == 1) {
         lblCSVList.innerHTML = strCheckedList;
      } else if (displayMode == 0) {
         lblCSVList.innerHTML = "";
      }
   }
}

function hideExpandedChecklist(e) {
   if (expandedCheckListId != null) {
      var objParent = e.srcElement ? e.srcElement : e.target;
      while (objParent != null) {
         try {
            if (objParent.id == expandedCheckListId) {
               return;
            }
            else {
               objParent = objParent.parentNode;
            }

         } catch (e) { }
      }
      showHideCheckList(expandedCheckListId, false);
   }

}

function scrollToNext(e) {
   if (expandedCheckListId != null) {
      var keyCodeEntered = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
      var scrollToElement;
      var scrollToCheckbox;
      var activeIndex;
      if (keyCodeEntered != 32) //spacebar
      {
         var oChecklist = document.getElementById(expandedCheckListId)
         var checkBoxs = oChecklist.getElementsByTagName("INPUT")
         var checkBoxLabels = oChecklist.getElementsByTagName("LABEL")
         for (i = 0; i < checkBoxLabels.length; i++) {
            var checkBox = checkBoxs[i];
            var checkBoxLabel = checkBoxLabels[i];
            if (checkBoxLabel.innerHTML.toUpperCase().charCodeAt(0) == keyCodeEntered) {
               if (scrollToElement == null) {
                  scrollToElement = checkBoxLabel;
                  scrollToCheckbox = checkBox;
               }
               if (activeIndex == (i - 1)) {
                  scrollToElement = checkBoxLabel;
                  scrollToCheckbox = checkBox;
                  break;
               }
               else if (checkBox.id == document.activeElement.id) {
                  activeIndex = i;
               }
            }
         }
      }
      if (scrollToElement != null) {
         scrollToElement.scrollIntoView(false);
         scrollToCheckbox.focus();
      }
   }
}


//function checkForCheckListUpdate() {
//   var objTables = document.getElementsByTagName("TABLE");
//   var objTable = null;
//   var strOnLoad = null;
//   var iCount = 0;
//   var tblCheckList;
//   var trCheckList;
//   var displayMode;

//   try {
//      for (i=0;i<=objTables.length-1;i++) {
//         if (objTables[i].name == "CheckListTable") {
//            strOnLoad = objTables[i].getAttribute("onload");
//            if (strOnLoad != null) {
//               tblCheckList = objTables[i];
//               trCheckList = tblCheckList.getElementsByTagName("TR")[1]
//               displayMode = trCheckList.getAttribute("displaymode");

//               objTables[i].setAttribute("onload",null);
//               eval(strOnLoad);

//               if (displayMode == 0) {
//                  //trCheckList.style.display = "";
//                  trCheckList.style.visibility = "visible";
//               }

//               iCount += 1
//            }
//         }
//      }
//   } catch (e) {
//      countUpdateErrors += 1

//      //Only display message if the error continues, will not harm the control.
//      if (countUpdateErrors >= 100) {
//         alert("Error: CheckList.checkForCheckListUpdate (" + e + ")");
//         return false;
//      }
//   }
//   setTimeout("checkForCheckListUpdate();","150","javascript");
//}
//checkForCheckListUpdate();

