/*
 * menuDropdown.js - implements an dropdown menu based on a HTML list
 * Original Author: Dave Lindquist (http://www.gazingus.org)
 * Extended by Frodo Larik (http://www.elasto.nl/)
 */

var currentMenu = null;
var is_debug = false;
e = window.event

// your browser stinks
if (!document.getElementById) {
    document.getElementById = function() { return null; }
}

if (!document.getElementsByTagName) {
   document.getElementsByTagName = function() { return null; }
}
    
function initMenu() {
   // first find all menus
   var mainMenu = document.getElementById('menuList');
   
   // head items
   var lis = mainMenu.getElementsByTagName('li');
   
   for ( var i=0; i<lis.length; i++ ) {
      if ( lis[i].className == 'menubar' ) {
         initializeMenu(lis[i].getElementsByTagName('ul').item(0),
                        lis[i].getElementsByTagName('a').item(0));
      }
   }
}



function hideMenu() {
   if (currentMenu) {
      currentMenu.style.visibility = "hidden";
      currentMenu = null;
   }
}


function showMenu(menu,head_link)  {
   menu.style.left = my_offsetLeft(head_link) + "px";  
   menu.style.top = (parseInt(my_offsetTop(head_link)) + parseInt(computedHeight(head_link))) + "px";
   menu.style.visibility = "visible";
   currentMenu = menu;
}


//                       ul   a
function initializeMenu(menu,head_link) {
    if (menu == null || head_link == null) return;

    // create the onmouseover function for the head_link
    head_link.onmouseover = function(e) {
       if (!e) e = window.event;
        hideMenu();
        showMenu(menu,head_link)
    }

   // create the onclick function for the head_link
   head_link.onclick = function(e) {
      if (!e) e = window.event;
      if (currentMenu == null) {
         showMenu(menu,head_link);
      } else {
         hideMenu();
      }
      return true;
   }

   // hide the menu if we go out
   menu.onmouseout = function(e) {
      if (!e) e = window.event;
      if (checkMouseLeave(this,e)) {
         hideMenu();
      }
   }
   

}

// make sure the submenu is correctly aligned on left side
function my_offsetLeft(obj) {
   var curleft = 0;
   if (obj.offsetParent) {
       while (obj.offsetParent) {
          if ( obj.id == 'mainMenu') {
             // currleft += parseInt(my_getComputedStyle(obj,'borderLeft').replace(/px/ig,""))
//             debug("bleft " + obj.style.borderLeft)
          }
         curleft += obj.offsetLeft
         obj = obj.offsetParent;
       }
   } else if (obj.x) {
      curleft += obj.x;
   }
   return curleft;
}


// what is my offset top
function my_offsetTop(obj) {
   var curtop = 0;
   if (obj.offsetParent) {
      while (obj.offsetParent) {
         curtop += obj.offsetTop
         obj = obj.offsetParent;
      }
   } else if (obj.y) {
      curtop += obj.y;
   }
   return curtop;
}


// get the height of (computedstyle) from the menubar
function computedHeight(obj) {
   height = my_getComputedStyle(obj.parentNode,'height')
   height = height.replace(/px/ig,"")
   return height
}