// browser sniffing by object support
nav4Browser = (document.layers)? true:false;
ie4Browser = (document.all && !document.getElementById)? true:false;
w3cBrowser = (document.getElementById && document.body.style)? true:false;

function openHelp(url) {
  openPopup(url, 600, 430);
}

function openPopup(url, width, height)  {

  // Work out where to put the window, based on the size of the window and screen size
  var winX = (window.screen.availWidth - width)/2;
  var winY = (window.screen.availHeight - height)/2;
  winpops=window.open(url,   "SupInfo",
                                "width=" + width
                              + ",height=" + height
                              + "screenX=" + winX
                              + ",left=" + winX
                              + "screenY=" + winY
                              + ",top=" + winY
                              + "status,scrollbars,resizable");
}

// a global trim function
function trim( string )
{
  var startpos = 0;
  var endpos = 0;
  var bLeadingWhiteSpace = true;

  // find leading and trailing whitespace
  for (var i = 0; i < string.length; i++)
  {
      if ( string.charAt(i) != ' ' )
      {
          if ( bLeadingWhiteSpace )
          {
              bLeadingWhiteSpace = false;
              startpos = i;
          }

          endpos = i;
      }
  }

  var trimString = string.substring( startpos, endpos + 1 );

  return trimString;
}

// This function checks an event to see if it corresponds to the "Enter"
// key being pressed - if so returns true, otherwise returns false
function isEnterKey(e) {
  var keyPressed;

  if (e.which) {
    keyPressed = e.which;
  }
  else if (e.keyCode) {
    keyPressed = e.keyCode;
  }

  // key code "13" corresponds to the enter key
  if ( keyPressed == 13 ) {
    return true;
  }
  else {
    return false;
  }
}


// Tokenizes a given string using a given delimiter and returns an Array of tokens
function tokenize(str, delim) {

  var tokens = new Array();

  var startIndex = 0;

  //alert("Tokenizing " + str);

  // Loop through the string and find tokens
  var i = 0;
  for (i=0; i<str.length; i++) {
    //alert(str + "[" + i + "] = " + str.charAt(i));
    if ( str.charAt(i) == delim ) {
      tokens[tokens.length] = str.substring(startIndex, i);
      startIndex = i + 1;
    }
  }

  // Add the last token if there is more String at the end
  if ( startIndex < str.length ) {
    tokens[tokens.length] = str.substring(startIndex, str.length);
  }
  //alert("tokens = " + tokens);

  return tokens;
}

// hide a document element
function hideElement( elementId )
{
      if(nav4Browser)
      {
        document.layers[ elementId ].visibility = "hide";
      }
      else
      if (ie4Browser)
      {
        document.all[ elementId ].style.visibility="hidden";
      }
      else
      // w3cBrowser
      {
        document.getElementById( elementId ).style.visibility="hidden";
      }
}

// show a document element
function showElement( elementId )
{
      if(nav4Browser)
      {
        document.layers[ elementId ].visibility="show";
      }
      else
      if (ie4Browser)
      {
        document.all[ elementId ].style.visibility="visible";
      }
      else
      // w3cBrowser
      {
        document.getElementById( elementId ).style.visibility="visible";
      }
}

// exclude a document element from the document flow
function excludeElement( elementId )
{
      if(nav4Browser)
      {
        document.layers[ elementId ].visibility = "hide";
      }
      else
      if (ie4Browser)
      {
        document.all[ elementId ].style.visibility="none";
      }
      else
      // w3cBrowser
      {
        document.getElementById( elementId ).style.display="none";
      }
}

// include a document element in the document flow
function includeElement( elementId )
{
      if(nav4Browser)
      {
        document.layers[ elementId ].visibility="show";
      }
      else
      if (ie4Browser)
      {
        document.all[ elementId ].style.display="";
      }
      else
      // w3cBrowser
      {
        document.getElementById( elementId ).style.display="";
      }
}

// Toggles the visbility of the element
function toggleVisbility(elementId) {
  var element = getElement(elementId);
  var style = getElementStyle(elementId);

  if (style.display == "none" || style.visibility == "none" || style.visibility == "hide") {
    //element.style.display = "inline";
    includeElement(elementId);
  }
  else if (style.display == "inline" || style.display == "" || style.visibility == "show") {
    //element.style.display = "none";
    excludeElement(elementId);
  }
}


// set an element's text
function setElementText( elementId, text )
{
      if (nav4Browser)
      {
        document.layers[ elementId ].document.write( text );
      }
      else
      if(ie4Browser)
      {
        document.all[ elementId ].innerText = text;
      }
      else
      // w3cBrowser
      {
        var element = document.getElementById( elementId );

        if ( null != element )
        {
           var nodeList = element.childNodes;
           var oldText = null;
           var newText = null;

           for ( i = 0; i < nodeList.length; i++ )
           {
               // find the first text node
               if ( 3 == nodeList[i].nodeType )
               {
                    oldText = nodeList[i];
                    break;
               }
           }

           if ( null != oldText )
           {
              newText = document.createTextNode( text );
              element.insertBefore( newText, oldText );
              element.removeChild( oldText );
           }
        }
      }
}

// set focus on a document element
function setElementFocus( elementId )
{
      if(nav4Browser)
      {
        document.layers[ elementId ].focus();
      }
      else
      if (ie4Browser)
      {
        document.all[ elementId ].focus();
      }
      else
      // w3cBrowser
      {
        document.getElementById( elementId ).focus();
      }
}

// get a document element object
function getElement( elementId )
{
      var element = null;

      if(nav4Browser)
      {
        element = document.layers[ elementId ];
      }
      else
      if (ie4Browser)
      {
        element = document.all[ elementId ];
      }
      else
      // w3cBrowser
      {
        element = document.getElementById( elementId );
      }

      return element;
}

// get a document element's style object
function getElementStyle( elementId )
{
      var elementStyle = null;

      if(nav4Browser)
      {
        elementStyle = document.layers[ elementId ];
      }
      else
      if (ie4Browser)
      {
        elementStyle = document.all[ elementId ].style;
      }
      else
      // w3cBrowser
      {
        elementStyle = document.getElementById( elementId ).style;
      }

      return elementStyle;
}

// set a document element's position to specific pixel coordinates
function setElementPosition( elementId, x, y )
{
      var elementStyle = null;

      if(nav4Browser)
      {
        elementStyle = document.layers[ elementId ];
        elementStyle.moveTo(x,y);
      }
      else
      if (ie4Browser)
      {
        elementStyle = document.all[ elementId ].style;
        elementStyle.pixelLeft  = x;
        elementStyle.pixelTop = y;
      }
      else
      // w3cBrowser
      {
        elementStyle = document.getElementById( elementId ).style;
        elementStyle.left  = x;
        elementStyle.top = y;
      }
}

// get a document element's left position
function getElementPositionLeft( elementId )
{
      var elementStyle = null;
      var x = 0;

      if(nav4Browser)
      {
        elementStyle = document.layers[ elementId ];
        x = elementStyle.left;
      }
      else
      if (ie4Browser)
      {
        elementStyle = document.all[ elementId ].style;
        x = elementStyle.pixelLeft;
      }
      else
      // w3cBrowser
      {
        elementStyle = document.getElementById( elementId ).style;
        x = elementStyle.left;
      }

      return x;
}

// get a document element's top position
function getElementPositionTop( elementId )
{
      var elementStyle = null;
      var y = 0;

      if(nav4Browser)
      {
        elementStyle = document.layers[ elementId ];
        y = elementStyle.top;
      }
      else
      if (ie4Browser)
      {
        elementStyle = document.all[ elementId ].style;
        y = elementStyle.pixelTop;
      }
      else
      // w3cBrowser
      {
        elementStyle = document.getElementById( elementId ).style;
        y = elementStyle.top;
      }

      return y;
}

