ready        = false;
justHiding   = false;
opacityValue = 1;
var hideTheMenu;

function showSubmenu(el) {
  if (document.getElementById) {
    if (justHiding) {
      clearTimeout(justHiding);
      justHiding = false;
      document.getElementById("submenu").style.overflow = "visible";
      document.getElementById("submenu").style.display  = "none";
      document.getElementById("submenu").style.width    = "auto";
      document.getElementById("submenu").style.height   = "auto";
    }
    if (el.getElementsByTagName("ul")[0]) {
       subM = el.getElementsByTagName("ul")[0].innerHTML;
    } else subM = "";

    posX = (document.getElementById('wrapper')) ? -3 : 0;
	  //el = el.parentNode;
    while(el && el.id!='wrapper') {
      posX += el.offsetLeft;
      el = el.offsetParent;
    }
    if (ready) {
      document.getElementById("submenucontainer").getElementsByTagName("ul")[0].innerHTML = subM;
      document.getElementById("submenu").style.left    = (posX)+"px";
      document.getElementById("submenu").style.display = "block";
      document.getElementById("submenu").style.opacity = 1;
      document.getElementById("submenu").style.filter  = "alpha(opacity=100)";
    
      // ueberwachungsbereich einrichten
      // wenn die maus den bereich verlaesst, wird das menue zugeklappt
      wrapperLeft        = (document.getElementById('wrapper')) ? document.getElementById('wrapper').offsetLeft : 0;
      ueberwachungLeft   = wrapperLeft + document.getElementById("submenu").offsetLeft - 5;
      ueberwachungTop    = document.getElementById("menue").offsetTop;
      ueberwachungRight  = ueberwachungLeft + document.getElementById("submenu").offsetWidth + 10;
      ueberwachungBottom = ueberwachungTop + document.getElementById("menue").offsetHeight + document.getElementById("submenu").offsetHeight + 5;
      paddingWidth       = document.getElementById("submenu").style.paddingLeft + document.getElementById("submenu").style.paddingRight;
    }
    opacityValue = 1;
  }
}
function hideSubmenu() {
//d = new Date;
//if (console) console.log("called at " + (Date.parse(d) + d.getMilliseconds()));
  if (justHiding == false) {
/*
    subWidth = document.getElementById("submenu").offsetWidth - 2;
    document.getElementById("submenu").style.overflow = "hidden";
    document.getElementById("submenu").style.width = subWidth + "px";
*/
  }
  //document.getElementById("submenu").style.height = (document.getElementById("submenu").offsetHeight - 8) + "px";
  opacityValue = opacityValue - 0.3;
  document.getElementById("submenu").style.opacity = opacityValue;
  document.getElementById("submenu").style.filter  = "alpha(opacity="+Math.round(opacityValue*100)+")";
  //if (document.getElementById("submenu").offsetHeight >= 8) {
  if (opacityValue >= 0) {
    // justHiding = setTimeout("hideSubmenu()",20);
justHiding = true;
  }
  else {
    justHiding = false;
    document.getElementById("submenu").style.overflow = "visible";
    document.getElementById("submenu").style.display  = "none";
    document.getElementById("submenu").style.width    = "auto";
    document.getElementById("submenu").style.height   = "auto";
    clearInterval(hideTheMenu);
  }
}
function mausMovePos(ereignis) {
  if(document.getElementById("submenu"))
  {
    if (ready && !justHiding && document.getElementById("submenu").style.display == "block") {
      clearInterval(hideTheMenu);
      posx = document.all ? window.event.clientX + document.documentElement.scrollLeft : ereignis.pageX;
      posy = document.all ? window.event.clientY + document.documentElement.scrollTop : ereignis.pageY;
      if (posx < ueberwachungLeft || posx > ueberwachungRight || posy < ueberwachungTop || posy > ueberwachungBottom) {
        clearInterval(hideTheMenu);
        hideTheMenu = setInterval("hideSubmenu()",80);
//        hideSubmenu();
      }
    }
  }
}

document.onmousemove = mausMovePos;
