var lastMenu = null
var timerMenu = null
var mouseInChild = false

function getPosition(e) 
{
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) 
    {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}
function findPosition( oElement ) {
  if( typeof( oElement.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
      posX += oElement.offsetLeft;
      posY += oElement.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oElement.x, oElement.y ];
  }
}
function showSubMenu(sender,menuId)
{   
   var elementPos = findPosition(sender)

   document.getElementById(menuId).style.position = "absolute"
   document.getElementById(menuId).style.top = "50px"
   document.getElementById(menuId).style.left = elementPos[0] + "px"
   document.getElementById(menuId).style.zIndex = 9999
   
   if (lastMenu == null)
   {
      // kein untermenü sichtbar -> sofort anzeigen
      showSubMenuItem(menuId)
   }
   else
   {
      // untermenü sichtbar, verzögert anzeigen!
      timerMenu = window.setTimeout("showSubMenuItem('"+menuId+"')",200)
   }      
}
function hideSubMenu()
{
   if (lastMenu != null)
   
   lastMenu.style.visibility = 'hidden'
}
function showSubMenuItem(menuId)
{
   // wenn die maus inzwischen auf dem untermenü ist, darf die verzögerte
   // anzeige nicht ausgeführt werden
   if (mouseInChild) return;
   
   if (lastMenu != null) lastMenu.style.visibility='hidden'
      
   menuElement = document.getElementById(menuId)
   menuElement.style.visibility = 'visible'

   lastMenu = menuElement
   
   menuElement.onmouseout = function(evt)
   {
      var cursor = getPosition(evt)
      var elementPos = findPosition(this)
            
      if (cursor.x < elementPos[0])
      {
         hideSubMenu()
      }
      if (cursor.x >= (elementPos[0] + parseInt(this.offsetWidth)))
      {
         hideSubMenu()
      }
      if (cursor.y < elementPos[1])
      {
         hideSubMenu()
      }
      if (cursor.y >= (elementPos[1] + parseInt(this.offsetHeight)))
      {
         hideSubMenu()
      }
      mouseInChild = false
   }
   
   menuElement.onmouseover = function(evt)
   {
      mouseInChild = true
   }         
   
}
