var running    = true;
var timerID    = null;
var currentID  = null;
var previousID = null;
var delay      = 300;
var behaviors  = {};
function InitMenus(id) {
  // get all list elements
  if ($(id)) {
    $A($(id).childNodes).each(function(child) {
      if (child.nodeName == 'LI') {
        // set ids
        nav_id  = child.id;
        menu_id = child.id+'-menu';
        
        // add behaviors
        eval("Event.observe('"+nav_id+"',  'mouseover', function(){ ShowMenu('"+nav_id+"'); });");
        
        // is there a menu?
        if ($(child.id+'-menu')) {
          // add behaviors
          eval("Event.observe('"+menu_id+"', 'mouseover', function(){ StopTimer(); });");
          eval("Event.observe('"+nav_id+"',  'mouseout',  function(){ StartTimer(\"HideMenu('"+nav_id+"')\"); });");
        }
      }
    });
  }
}

// test for ie6
var ie6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

function StartTimer(event) { running = true; timerID = setTimeout(event, delay); }
function StopTimer() { running = false; clearTimeout(timerID); }
function ShowMenu(id) {
  if (running){StopTimer();}
  currentID = id;
  if (currentID != previousID && previousID != null){ HideMenu(previousID); }
  if ($(id+'-menu')) {
    $(id+'-menu').removeClassName('hide');
    $(id+'-menu').addClassName('show');
  }
  $A($(id).childNodes).each(function(child) { if (child.nodeName == 'A') { Element.addClassName(child, 'hover'); } });
  previousID = currentID;
  
  // hide selects for ie6
  if(ie6){$$('select').each(function(select) { select.style.visibility = 'hidden'; })};
}
function HideMenu(id, level) {
  if ($(id+'-menu')) {
    $(id+'-menu').removeClassName('show');
    $(id+'-menu').addClassName('hide');
  }
  $A($(id).childNodes).each(function(child) { if (child.nodeName == 'A') { Element.removeClassName(child, 'hover'); } });
  
  // unhide selects for ie6
  if(ie6){$$('select').each(function(select) { select.style.visibility = 'visible'; })};
}
