var running    = false;
var timerID    = null;
var currentID  = null;
var previousID = null;
var delay      = 150;
var MenuRules  = Array();
function StartTimer(event){running = true; timerID = setTimeout(event, delay);}
function StopTimer(){running = false; clearTimeout(timerID);}

function InitMenus(id) {
  // loop through all tags searching for LI
  $A($(id).childNodes).each(function(child) {
    // LI found?
    if (child.nodeName == 'LI') {
      // init vars
      var addRules = false;
      
      // get the ID of the LI
      navid = child.getAttribute("id");
      
      // this LI has a UL as a child?
      addRules = false;
      $A(child.childNodes).each(function(ch) {
        if (navid && ch.nodeName == 'UL') {
          addRules = true;
          dhtmlid = ch.getAttribute("id");
        }
      });
      
      // add rules for DHTML
      if (addRules) {
        eval("MenuRules['#"+navid+"   :mouseover'] = function() { ShowMenu('"+navid+"'); };");
        eval("MenuRules['#"+navid+"   :mouseout']  = function() { StartTimer(\"HideMenu('"+navid+"')\"); };");
        eval("MenuRules['#"+dhtmlid+" :mouseover'] = function() { StopTimer(); };");
      }
    }
  });
}
function StartMenus() {
  EventSelectors.start(MenuRules);
}

function ShowMenu(id) {
  if (running){StopTimer();}
  currentID = id;
  if (currentID != previousID && previousID != null){ HideMenu(previousID); }
  if ($(id+'_menu')) {
    $(id+'_menu').className = 'show';
  }
  previousID = currentID;
}

function HideMenu(id, level) {
  if ($(id+'_menu')) {
    $(id+'_menu').className = 'hide';
  }
}
