Event.observe(window, "load", function() {

  $$("#menu ul").each(function(element) {

    element.hide();
    element.style.visibility = "visible";

    Event.observe(element.previous(), "mouseover", function() {
      $$("#menu ul").each(Element.hide);
      element.show();
      clearTimeout(element.timer);
    }, false);

    Event.observe(element, "mouseover", function() {
      element.show();
      clearTimeout(element.timer);
    }, false);

    Event.observe(element.previous(), "mouseout", function() {
      element.timer = setTimeout(function() {
        element.hide();
      }, 1000);
    }, false);

    Event.observe(element, "mouseout", function() {
      element.timer = setTimeout(function() {
        element.hide();
      }, 1000);
    }, false);

  });

}, false);