var timerId;
var objMenu;

function initMenu()
{
  // pre-move menus to correct location on load to
  // avoid weird bug in maxthon v1.5.2
  // called: - when the html completes downloading
  //         - when the page finishes rendering
  //         - when the display area is resized
  for( i = 1; i < 10; i++ )
  {
    oMenu = document.getElementById( 'bm_nav' + i );
    oHead = document.getElementById( 'bm_navh' + i );
    if( oMenu != null )
    {
      oMenu.x = getOffset( oHead, "x" );
      oMenu.y = getOffset( oHead, "y" );
      oMenu.style.left = oMenu.x + 'px';
      oMenu.style.top =  (oMenu.y + oHead.offsetHeight) + 'px';
    }
  }
  
  // archived date help
  oMenu = document.getElementById( 'bm_datetip' );
  oBox = document.getElementById( 'bm_datetip_box' );
  if( oMenu != null )
  {
    oMenu.x = getOffset( oBox, "x" );// + 17 - 225;
    oMenu.y = getOffset( oBox, "y" ) + 2;
    oMenu.style.left = oMenu.x + 'px';
    oMenu.style.top =  (oMenu.y + oBox.offsetHeight) + 'px';
    oMenu.style.width = oBox.offsetWidth + 2 + 'px';
  }
}

function menu( objHead, e, menuid )
{
  if( window.event )
    event.cancelBubble = true;
  else if( e.stopPropagation )
    e.stopPropagation();
  
  if( typeof objMenu != "undefined" )  // hide previous menu
    objMenu.style.visibility = "hidden";
  
  clearTimer();
  
  objMenu = document.getElementById( menuid );
  objMenu.onclick     = function(){ objMenu.style.visibility = 'hidden' };
  objMenu.onmouseover = function(){ clearTimer() };
  objMenu.onmouseout  = function(){ setTimer() };
  objHead.onmouseout  = function(){ setTimer() };
  
  objMenu.style.visibility = "visible";
}

function getOffset( obj, xy )
{
  var total = ( xy == "x" ) ? obj.offsetLeft : obj.offsetTop;
  var parent = obj.offsetParent;
  
  while( parent != null )
  {
    total += ( xy == "x" ) ? parent.offsetLeft : parent.offsetTop;
    parent = parent.offsetParent;
  }
  return total;
}

function setTimer()
{
  timerId = setTimeout( 'if( typeof objMenu != "undefined" ) objMenu.style.visibility = "hidden"', 250 );
}

function clearTimer()
{
  if( typeof timerId != "undefined" )
    clearTimeout( timerId )
}


