var def_help = "V1.0";		// The version of help.js

var itemHelp = new Array();
var timout;

var helpBubIframeId = "helpBubbleIframe";
var helpBoxIframeId = "helpBoxIframe";

function findItemHelp( ev )
{
  if( typeof( ev ) == "undefined" )
  {
    ev = event;
  }

  var elem = ev.target;

  if( typeof( elem ) == "undefined" )
  {
    elem = ev.srcElement;
  }

  if( elem.id == "helptitle" || elem.id == "helptab" ) return true;

  while( typeof( itemHelp[elem.id] ) == "undefined" && elem.parentNode != null )
  {
    elem = elem.parentNode;
  }

  if( typeof( itemHelp[elem.id] ) != "undefined" )
  {
    var bub = getElt( 'helpbubble' );
    var elt = getElt( 'helpbubbtext' );
    elt.innerHTML = itemHelp[elem.id];

    getElt( 'tptr' ).style.display = 'none';
    getElt( 'bptr' ).style.display = '';

    bub.style.top  = getEventY( ev ) - getlayerheight( 'helpbubble' );
    bub.style.left = getEventX( ev ) - 5;

    if( getEventY( ev ) - getlayerheight( 'helpbubble' ) < 0 )
    {
      getElt( 'tptr' ).style.display = '';
      getElt( 'bptr' ).style.display = 'none';
      bub.style.top = getEventY( ev );
    }

    backLayerWithIframe( helpBubIframeId, bub );

    if( document.all )
    {
      getElt( 'tptr' ).style.display = 'none';
      getElt( 'bptr' ).style.display = 'none';
    }

    bub.style.visibility = "visible";

    hideHelpable();

    elem.className += " helpable";

    endHelp();
    return false;
  }

  hideHelpable();
  endHelp();

  return true;
}

function backLayerWithIframe( iframeId, layerToBack )
{
  if( document.all && layerToBack != null )
  {
    var theIframe = document.getElementById( iframeId );

    if( !theIframe )
    {
      theIframe = document.createElement( "iframe" );
      theIframe.setAttribute( "id",          iframeId );
      theIframe.setAttribute( "src",         "" );
      theIframe.setAttribute( "frameBorder", "0" );
      theIframe.setAttribute( "scrolling",   "no" );

      document.body.appendChild( theIframe );
    }

    theIframe.style.width   = layerToBack.clientWidth;
    theIframe.style.height  = layerToBack.clientHeight;
    theIframe.style.top     = layerToBack.style.top;
    theIframe.style.left    = layerToBack.style.left;
    theIframe.style.filter  = "alpha(Opacity=0)";
    theIframe.style.display = "";
  }
}

function closeIframe( iframeId )
{
  if( document.all )
  {
    var theIframe = document.getElementById( iframeId );

    if( theIframe )
    {
      theIframe.style.display = "none";
    }
  }
}

function toggleBlock( blockName )
{
  var elt = getElt( blockName );

  if( elt != null )
  {
    if( elt.style.display == "block" )
    {
      elt.style.display = "none";
      backLayerWithIframe( helpBoxIframeId, getElt( "helpbox" ) )
      endHelp();
    }
    else
    {
      elt.style.display = "block";
      backLayerWithIframe( helpBoxIframeId, getElt( "helpbox" ) )
    }
  }
}

function startHelp()
{
  if( typeof( onclick ) == "undefined" )
  {
    document.onclick = findItemHelp;
  }
  else
  {
    onclick = findItemHelp;
  }

  for( var elemId in itemHelp )
  {
    getElt( elemId ).className += " helpable";
  }
}

function endHelp()
{
  if( typeof( onclick ) == "undefined" )
  {
    document.onclick = null;
  }
  else
  {
    onclick = null;
  }
}

function hideHelp()
{
  clearTimeout( timout );

  getElt( 'helpbubble' ).style.visibility = "hidden";

  closeIframe( helpBubIframeId );

  hideHelpable();
}

function hideHelpable()
{
  for( var elemId in itemHelp )
  {
    var tmpElem = getElt( elemId );

    if( tmpElem.className.indexOf( "helpable" ) != -1 )
    {
      tmpElem.className = tmpElem.className.substring( 0, tmpElem.className.indexOf( "helpable" ) );
    }
  }
}

function getEventX( ev )
{
  return ( ( typeof( ev.clientX ) != "undefined" ) ? ev.clientX + document.body.scrollLeft : ev.pageX );
}

function getEventY( ev )
{
  return ( ( typeof( ev.clientY ) != "undefined" ) ? ev.clientY + document.body.scrollTop : ev.pageY );
}

function keepClosed( locn )
{
  setCookie( locn, "true", makeExpire( 366 ) );
  alert( "This help tab will be closed the next time you visit this page" );
  return false;
}

function keepOpen( locn )
{
  setCookie( locn, "", 0 );
  alert( "This help tab will be open the next time you visit this page" );
  return false;
}
