
var cm=null, tcm=null, to=null;

function getFirstMenu(o) {
  var n=o.firstChild;
  while(n && n.nodeName.toLowerCase()!="ul") n=n.nextSibling;
  return n ? n: o;
}

function getParentDiv(o) {
  var n=o;
  while(n && n.nodeName.toLowerCase()!="div") n=n.parentNode;
  return n;
}

function collapseMenu() {
  var n=cm;
  while(n && n.nodeName.toLowerCase()!="div") {
    if(n.nodeName.toLowerCase()=="ul" && n.parentNode.nodeName.toLowerCase()!="div") {
      n.style.display="none";
    }
    n=n.parentNode;
  }
}

function doCheckMenu() {
  m=getFirstMenu(tcm);
  collapseMenu();
  cm=m;
  while(m && m.nodeName.toLowerCase()!="div") {
    if(m.nodeName.toLowerCase()=="ul" && m.parentNode.nodeName.toLowerCase()!="div") {
      m.style.display="block";
    }
    m=m.parentNode;
  }
  tcm=null;
}

function checkMenu(e) {
  if(!e) var e=window.event;
  t=e.target ? e.target : (e.srcElement ? e.srcElement : null);
  if(t.noteType==3) t=t.parentNode;
  while(t.nodeName.toLowerCase()!="li") t=t.parentNode;
  tcm=t;
  if(to) clearTimeout(to);
  to=setTimeout("doCheckMenu()", 500);
}

function cancelMenu(e) {
 if(to) clearTimeout(to);
}

function checkClick(e) {
  if(cm) {
    var t;
    if(!e) var e=window.event;
    t=e.target ? e.target : (e.srcElement ? e.srcElement : null);
    d1=getParentDiv(cm);
    d2=getParentDiv(t);
    if(d1 != d2) { 
      collapseMenu();
      if(to) clearTimeout(to);
      cm=null;
    }
  }
}

function addEvent(obj, evType, fn) {
  if(obj.addEventListener) {
    obj.addEventListener(evType, fn, false);
    return true;
  }
  else if(obj.attachEvent) {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  }
  else {
    return false;
  }
}

function initMenuEvents() {
 lis=document.getElementById("navigation").getElementsByTagName("li");
 for(var i=0; i<lis.length; i++) {
  addEvent(lis[i], "mouseover", checkMenu);
  addEvent(lis[i], "mouseout", cancelMenu);
 }
}

addEvent(window, 'load', initMenuEvents);

addEvent(document, 'click', checkClick);