// determine browser API for managing visibility of elements
isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;
 
var gl_savedHTML = new Array();

function getElement(elemId)
{
  if (isNS4) 
    return document.layers[elemId];
  else if (isIE4)
         return document.all[elemId];
       else if (isIE5 || isNS6)
               return document.getElementById(elemId);
               
  return null;
}

// This function will check a hinge value to determine whether to
//   restore the target element's original innerHTML or save and replace it.
function switchElementRestoreHTML(elemId, hingeValue, valueToTriggerRestore, replacementString)
{
  elemObj = getElement(elemId);
  
  if (elemObj)
  {
    if (!gl_savedHTML[elemId]) /* Only save back the original HTML once */
      gl_savedHTML[elemId] = elemObj.innerHTML;
    
    if (hingeValue == valueToTriggerRestore)
      elemObj.innerHTML = gl_savedHTML[elemId];
    else
      elemObj.innerHTML = replacementString;
  }
}


function clearInnerHTML( elementId )
{
  elemObj = getElement(elementId);
  if (elemObj)
    elemObj.innerHTML = "";
}

function appendInnerHTML( elementId, newHTML )
{
  elemObj = getElement(elementId);
  if (elemObj)
  {
    elemObj.innerHTML = elemObj.innerHTML + newHTML;
  }
}
  
function genHiddenFields(hiddenAreaId, sourceArray)
{
  targetTD = getElement(hiddenAreaId);
  
  if (targetTD)
  {   // Tack all of the hidden input fields to TD area reserved for this
    targetTD.innerHTML = " &nbsp;";
    
    for (i = 0;  i < sourceArray.length;  i++)
    {
      targetTD.innerHTML += '<input type="hidden" name="' + sourceArray[i][0] + 
       '" value="' + sourceArray[i][1] + '" />';
    }
    
    // alert(targetTD.innerHTML);
  }
}