function closeMenu(menuId) {
  var now = new Date();
  menuObj = $(menuId);
  if(menuObj.timeout < now.getTime()) {
    menuObj.className=menuObj.className.replace('timeout', '').replace(/\s+$/, '').replace(/(^\-+|\-+$)/, '');
  } else if ((menuObj.timeout-now.getTime()) < 750) {
    window.setTimeout('closeMenu("'+menuObj.id+'");', menuObj.timeout-now.getTime());
  }
}

function buildNodes(rootNode, nodeId) {
  if (rootNode.nodeType == 1) {
    if ((rootNode.nodeName == 'UL' || rootNode.nodeName == 'OL') && rootNode.parentNode.nodeName == 'LI') {
      nodeId++;
      rootNode.parentNode.id = 'menuNode'+nodeId;
      rootNode.parentNode.onmouseover=function() {
        var now = new Date();
        this.className=this.className.replace('timeout', '') + '-over';
        this.className=this.className.replace('\-\-', '-').replace(/(^\-+|\-+$)/, '');
        this.timeout=now.getTime()+10000;
      }
      rootNode.parentNode.onmouseout=function() {
        var now = new Date();
        this.className=this.className.replace('over', 'timeout').replace(/(^\-+|\-+$)/, '');
        this.timeout=now.getTime()+500;
        window.setTimeout('closeMenu("'+this.id+'");', 500);
      }
    }
  }
  for(var i=0; i < rootNode.childNodes.length; i++) {
    nodeId = buildNodes(rootNode.childNodes[i], nodeId);
  }
  return nodeId;
}

function buildMenu() {
  if($('nav_main')){
    buildNodes($('nav_main'), 0);
  }
}

if ( !isAdmin )  Event.observe(window, 'load', buildMenu);
