//select all checkbox elements
function selectAll(fieldName,sAllName)
{
  var checkboxElems = document.forms[0].elements[fieldName];
  var sAllcheckbox = document.forms[0].elements[sAllName];
  if (!checkboxElems.length)
   {
     if (checkboxElems)
     {
       //single checkbox element is not returned in an array
       checkboxElems.checked=checkboxElems.checked?false:true
     }
   }

    for(var i=0,l=checkboxElems.length; i<l; i++)
    {
      if(checkboxElems[i].type == 'checkbox') {
          checkboxElems[i].checked=sAllcheckbox.checked?true:false
      }
    }
}

//disables all elements with id contained in idList and all children of those elements
  function setDisabled(idList, disabled) {
    var idNumber, id, element;

    if (typeof(idList) == 'string') {
      idList = idList.split(',');
    }
    for (idNumber in idList) {
      id = idList[idNumber];
      element = document.getElementById(id);
      if (element) {
        element.disabled = disabled;
        setChildrenDisabled(element, "input", disabled);
        setChildrenDisabled(element, "textarea", disabled);
        setChildrenDisabled(element, "select", disabled);
      }
    }
  }

  function setChildrenDisabled(element, childName, disabled) {
    var childNumber, child;
    var children = element.getElementsByTagName(childName);

    for (childNumber in children) {
      child = children[childNumber];
      if(navigator.appName == "Microsoft Internet Explorer") {
        if (child.disabled != null) {
		  child.disabled = disabled;
		}
		if (child.length > 0) {
		  for (var i = 0; i < child.length; i++) {
			if (child[i].disabled != null ) {
			  child[i].disabled = disabled;
			}
		  }
		}
      } else {
          child.disabled = disabled;
      }
    }
  }

  function isSelected(fieldName)
  {
    var checkboxElems = document.forms[0].elements[fieldName];

    if (checkboxElems)
    {
            if (!checkboxElems.length)
            {
              if (checkboxElems.checked)
              {
                //single checkbox element is not returned in an array
                if(confirm("This action is final and cannot be undone. Submit the current settings and remove selected items?"))
                {
                  document.forms[0].action.value="remove";
                  document.forms[0].submit();
                  return;
                 }
                 else
                 {
                   return;
                 }
              }
            }

            for(var i=0,l=checkboxElems.length; i<l; i++)
            {
              if (checkboxElems[i].checked)
              {
                if(confirm("This action is final and cannot be undone. Submit the current settings and remove selected items?"))
                {
                  document.forms[0].action.value="remove";
                  document.forms[0].submit();
                  return;
                }
                else
                {
                  return;
                }
              }
            }
    }
    alert("Use the checkboxes to select items to be removed");

  }


function toggleRevealerContent(contentId, imgId, openImg, closedImg) {
  var img = document.getElementById(imgId);
  var content = document.getElementById(contentId);
  if (content.style.display == 'none' || content.style.display == '') {
    content.style.display = 'block';
    img.src = openImg;
  } else {
    content.style.display = 'none';
    img.src = closedImg;
  }
  return false;
}


function toggleRowRevealerContent(contentIdPattern, numOfRows, imgId, openImg, closedImg) {
  var img = document.getElementById(imgId);
  for (i = 0; i < numOfRows; i++) {
    var content = document.getElementById(contentIdPattern + '_' + i);
    if (content.style.display == 'none') {
      content.style.display = '';
      img.src = openImg;
    } else {
      content.style.display = 'none';
      img.src = closedImg;
    }
  }
  return false;
}

function toggleQuickLinks() {
  var hdr = document.getElementById ('headerRow');
  var ql = document.getElementById ('quickLinks');
  if (hdr && ql && ql.style) {
    if (ql.style.display != 'block') {
      ql.style.top = (hdr.offsetHeight - 1) + 'px';
      ql.style.display = 'block';
    } else {
      ql.style.display = 'none';
    }
  }
  return false;
}

function showElement(id, visibility) {
  var el = document.getElementById(id);
  if (el && el.style) {
    if ((visibility == null) || (visibility == true)) {
      visibility = 'block';
    } else if (visibility == false) {
      visibility = 'none';
    }
    el.style.display = visibility;
  }
}

function revealElement(revealer, revealed) {
  showElement(revealer, false);
  showElement(revealed, true);
}

function appendDiv(parentId, type, content) {
    var parentDiv = document.getElementById(parentId);
    var newDiv = document.createElement(type);
    newDiv.innerHTML = content;
    parentDiv.appendChild(newDiv);
}

function addInput(form, inputs, force) {
    var value = inputs.value || inputs[inputs.length - 1].value;
    if (force || (value !== '')) {
        var inputName = inputs.name || inputs[0].name;
        var inputSize = inputs.size || inputs[0].size;
        appendDiv(inputName, "span", "<input type='text' name='" + inputName + "' onkeyup='addInput(form, " + inputName + ")' size='" + inputSize + "' /> ");
    }
}

function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
}

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
}

function newXMLHttpRequest() {
    if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        return new XMLHttpRequest();
    }
}

/* style="behavior: url(${pageContext.request.contextPath}/css/iepngfix.htc)" */
if (/MSIE (5\.5|6\.)/.test(navigator.userAgent)) {
  var location = document.location.href;
  var prefix = location.replace(/^(.*\/lobj-[^\/]*).*/, "$1");
  document.write("<style type='text/css'>" +
    "img, img a, img .source { behavior: url(" + prefix + "/css/iepngfix.htc); }" +
    "</style>");
}
