var eventList = new Array();

function listTail (a) {
  var na = new Array ();
  if (a.length > 1) { for (var i=1; i < a.length; i++) { na[i-1] = a[i] } }
  return na;
}

function getObject(id) {

  var obj;

  if (document.layers) {
    obj = eval("document.layers['"+id+"']");
    return obj;
  } else if (document.all) {
    obj = eval("document.all['"+id+"']");
    return obj;
  } else if (document.getElementById(id)) {
    obj = document.getElementById(id);
    return obj;
  }
}

function handleMenuEvent() {

  if (eventList.length) {

    var event = eventList[0];
    eventList = listTail(eventList);

    Obj = getObject(event[0]);

    if (Obj) {

      if (event[1] == 'show') {
        if (Obj.style) {
          Obj.style.visibility = "visible";
        } else if (Obj.visibility) {
          Obj.visibility = "show";
        }
      } else {
        if (Obj.style) {
          Obj.style.visibility = "hidden";
        } else if (Obj.visibility) {
          Obj.visibility = "hide";
        }
      }
    }
  }
}

function removeEvents (a, id) {

  var pos = 0;
  var na = new Array ();

  for (var i = 0; i < a.length; i++) {
    if (a[i][0] == id) {
      clearTimeout(a[i][2]);
    } else {
      na[pos] = a[i];
      pos++;
    }
  }
  return na;
}

function addEvent(id, event, delay) {

  if (delay == null) { delay = 100 }

  var submenus = id.split("-");

  var submenu_id = 'menu';

  for (var i=1; i < submenus.length; i++)
  {
    submenu_id = submenu_id + '-' + submenus[i];

    var m = new Array();
    m[0] = submenu_id;
    m[1] = event;
    m[2] = setTimeout('handleMenuEvent()', delay);

    eventList = removeEvents(eventList, submenu_id);
    eventList[eventList.length] = m;
  }
}

function showMenu(id, delay) {
  addEvent(id, "show", delay);
}

function hideMenu(id, delay) {
  addEvent(id, "hide", delay);
}

