  function displayConfirmMsg(displayMsg, onOff, num) {
    var userMsg;
    if (num == null)
      userMsg = document.getElementById("confirmMsg"); 
    else
      userMsg = document.getElementById("confirmMsg" + num); 
      
    if (userMsg == null) return;
    if (onOff == 0) {
      userMsg.style.visibility = "hidden";
      userMsg.style.display = "none";
      userMsg.innerHTML = "";
    }
    else {
      userMsg.style.visibility = "visible";
      userMsg.style.display = "inline";
      userMsg.innerHTML = displayMsg;
    }
  } 
  
  function displayInSituMsg(msg, onOff, num) {
    var userMsg;
    if (num == null)
      userMsg = document.getElementById("inSituMsg");
    else
      userMsg = document.getElementById("inSituMsg" + num);
    if (userMsg == null) return;
    
    switch (onOff) {
      case 1:
        userMsg.innerHTML = msg;
        userMsg.style.visibility = "visible";
        userMsg.style.display = "inline";
        break;
      case 0:
        userMsg.style.visibility = "hidden";
        userMsg.style.display = "none";
        break;
    }
  }
  
  function showSaveMsg(num) {
    var userMsg;
    if (num == null)
      userMsg = document.getElementById("SaveMsg");
    else
      userMsg = document.getElementById("SaveMsg" + num);
    if (userMsg == null) return;
    
    displayInSituMsg("", 0, num);
    userMsg.style.visibility = "visible";
    userMsg.style.display = "inline";  
    displayConfirmMsg("", 0, num);
  }
  
  function hideSaveMsg(num) {
    var userMsg;
    if (num == null)
      userMsg = document.getElementById("SaveMsg");
    else
      userMsg = document.getElementById("SaveMsg" + num);
    if (userMsg == null) return;
    userMsg.style.visibility = "hidden";
    userMsg.style.display = "none";  
  }

  function addCheckBoxItemsNoStyle(divId, checkboxName, items, createRow, colSpan) {
    addCheckBoxItemsOfClass(divId, checkboxName, items, createRow, colSpan, '');
  }
  
  function addCheckBoxItems(divId, checkboxName, items, createRow, colSpan) {
    addCheckBoxItemsOfClass(divId, checkboxName, items, createRow, colSpan, 'small');
  }
  
  function addCheckBoxItemsOfClass(divId, checkboxName, items, createRow, colSpan, className) {
    if (items.length == 0) return false;
    var tbl;
    var node = document.getElementById(divId);
    var childNodeIndex = -1;
    for (i = 0; i < node.childNodes.length; i++)
      if (node.childNodes[i].nodeType == 1 && node.childNodes[i].tagName == "TABLE") {
        childNodeIndex = i;
        break;
      }
    if (childNodeIndex == -1) {
      tbl = document.createElement("TABLE");
      node.appendChild(tbl);        
      createRow = true;
    }
    else
      tbl = node.childNodes[childNodeIndex];        

    var row = null;
    if (createRow == null) {
      createRow = true;
    }
    else {
      if (tbl.rows.length == 0)
        row = tbl.rows[tbl.rows.length];
      else
        row = tbl.rows[tbl.rows.length - 1];
    }
    var itemValues = items.split(',');
    var itemCnt = itemValues.length;

    for (var i = 0; i < itemCnt; i++) {
      var itemValue = encodeURIComponent(trim(itemValues[i]));  // trim () in validation.js
      var itemInnerHTML = itemValues[i].replace("&", "&amp;");

      
      if (itemValue.length == 0) continue;
      var tableColSpan = 0;
      if (row == null) {
        row = tbl.insertRow(-1);
        createRow = false;
      }
      else
       tableColSpan = row.cells.length;
       
      if (colSpan && tableColSpan >= colSpan)
        createRow = true;
      else
        createRow = false;
      if (createRow)
        row = tbl.insertRow(-1);
        
      var newCell = row.insertCell(-1);
      // See if there are any empty cells
      for (j = 0; j < tableColSpan; j ++) {
         if (trim(row.cells[j].innerHTML) == "") {
           newCell = row.cells[j];
           createRow = false;
           break;
         }
      }
      newCell.className = className;
      createCheckBox(newCell, checkboxName, itemValue, true, null);
      var spanTag = document.createElement("span");
      spanTag.style.paddingLeft = "2px";
      spanTag.innerHTML = itemInnerHTML;
      newCell.appendChild(spanTag);
      newCell.style.whitespace = "nowrap";
    }
    return true;
  }
  // Can be used any time a checkbox is to be added.  Returns the checkbox so other attributes can be added to it, if desired.
  function createCheckBox(parentCell, cbName, cbValue, isChecked, cbId) {
    var checkBox = document.createElement("input");
    checkBox.name = cbName;
    checkBox.setAttribute("type","checkbox");
    checkBox.setAttribute("name", cbName);
    if (isChecked)
      checkBox.defaultChecked = true;
    if (cbId)
      checkBox.setAttribute("id", cbId);
    checkBox.setAttribute("value", cbValue);
    parentCell.appendChild(checkBox);
    return checkBox;
  }

  function checkSelected(node) {
    var inputs = node.getElementsByTagName("INPUT");
    var selCount = inputs.length;
    for (var i = 0; i < selCount; i++) {
      if (inputs[i].type == "checkbox" && inputs[i].checked)
        return true;
    }
    return false;
  }

  function hideErrNode(errNode) {
    for(i = errNode.rows.length; i > 1; i--)
      errNode.deleteRow(errNode.rows.length -1);
    errNode.style.visibility = "hidden";
    errNode.style.display = "none";
  }
