var disappeardelay=250  // menu disappear speed onMouseout (in miliseconds)
var enableanchorlink=0  // Enable/disable anchor link when clicked on (1=e, 0=d)
var hidemenu_onclick=1  // hide menu when user clicks within menu? (1=yes, 0=no)

/////No further editting needed

var ie5 = document.all
var ns6 = document.getElementById && !document.all


function getposOffset (what, offsettype)
{
  var offset = ( offsettype=="left" ) ? what.offsetLeft : what.offsetTop;
  var parent = what.offsetParent;

  while ( parent != null )
  {
    offset += ( offsettype == "left") ? parent.offsetLeft : parent.offsetTop;
    parent  = parent.offsetParent;
  }

  return(offset);
}


function showhide (obj, e, visible, hidden)
{
  if ( ie5 || ns6 )  dropmenuobj.style.left = dropmenuobj.style.top = -800;

  if ( e.type == "click" && obj.visibility == hidden || e.type == "mouseover")
    obj.visibility = visible;
  else if ( e.type == "click" )
    obj.visibility = hidden;
}


function iecompattest()
{
  compat = document.compatMode;
  if ( compat && compat != "BackCompat" ) test = document.documentElement;
  else                                    test = document.body;

  return(test);
}


function clearbrowseredge(obj, whichedge)
{
  var edgeoffset = 0;
  var windowedge;
  var topedge;

  if (whichedge == "rightedge")
  {
    if ( ie5 && ! window.opera )
      windowedge = iecompattest().scrollLeft+iecompattest().clientWidth-15;
    else
      windowedge = window.pageXOffset+window.innerWidth-15;

    dropmenuobj.contentmeasure = dropmenuobj.offsetWidth;
    if ( windowedge - dropmenuobj.x < dropmenuobj.contentmeasure )
      edgeoffset = dropmenuobj.contentmeasure-obj.offsetWidth;
  }
  else
  {
    if ( ie5 && !window.opera )
    {
      topedge    = iecompattest().scrollTop;
      windowedge = iecompattest().scrollTop+iecompattest().clientHeight-15;
    }
    else
    {
      topedge    = window.pageYOffset;
      windowedge =  window.pageYOffset+window.innerHeight-18;
    }

    dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
    if ( windowedge - dropmenuobj.y < dropmenuobj.contentmeasure ) // move up?
    {
      edgeoffset = dropmenuobj.contentmeasure + obj.offsetHeight;
      if ( (dropmenuobj.y-topedge) < dropmenuobj.contentmeasure ) // up bad too?
      edgeoffset = dropmenuobj.y + obj.offsetHeight - topedge;
    }
  }
  return(edgeoffset);
}


function dropdownmenu (obj, e, dropmenuID)
{
  if      ( window.event )      event.cancelBubble = true;
  else if ( e.stopPropagation ) e.stopPropagation();

  if ( typeof dropmenuobj != "undefined" )      //hide previous menu
    dropmenuobj.style.visibility = "hidden";

  clearhidemenu();

  if ( ie5 || ns6 )
  {
    obj.onmouseout = delayhidemenu;
    dropmenuobj    = document.getElementById(dropmenuID);
    pageobj        = document.getElementById('page');

    if ( ! pageobj ) pageobj = document.getElementById('splash');

    if ( hidemenu_onclick )
      dropmenuobj.onclick   = function(){dropmenuobj.style.visibility='hidden'}

    dropmenuobj.onmouseover = clearhidemenu;

    if ( ie5 ) dropmenuobj.onmouseout = function(){ dynamichide(event)};
    else       dropmenuobj.onmouseout = function(event){ dynamichide(event)}

    showhide(dropmenuobj.style, e, "visible", "hidden");
    dropmenuobj.x = getposOffset(obj, "left") - 27;
    dropmenuobj.y = getposOffset(obj, "top") - 50;
    dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
    dropmenuobj.style.zIndex = 20;
    if ( ie5 ) pageobj.style.zIndex = -1;
  }

  return clickreturnvalue();
}


function clickreturnvalue()
{
  if ( (ie5 || ns6) && !enableanchorlink ) return(false);
  else                                     return(true);
}


function contains_ns6(a, b)
{
  while ( b && b.parentNode )
    if ( (b = b.parentNode) == a ) return(true);
  return(false);
}

function dynamichide(e)
{
  var has_ns6 = contains_ns6(e.currentTarget, e.relatedTarget);

  if ( ie5 && !dropmenuobj.contains(e.toElement) )
    delayhidemenu();
  else if ( ns6 && e.currentTarget != e.relatedTarget && !has_ns6 )
    delayhidemenu();
}


function delayhidemenu()
{
  delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay);
}


function clearhidemenu()
{
  if ( typeof delayhide != "undefined" ) clearTimeout(delayhide);
}
