var nav_supported     = false;
var nav_menuEl        = null;
var nav_submenuEls    = new Array();
var nav_activeSubmenu = false;
var nav_hideTimer     = null;

function nav_init() {
  if (!document.getElementById) return;
  nav_menuEl = document.getElementById('nav');
  if (!nav_menuEl) return;
  nav_supported = true;
  nav_addBasicMouseHandlers(nav_menuEl.getElementsByTagName('A'));
  nav_findSubmenuElemens(nav_menuEl);
}

function nav_findSubmenuElemens(elem) {
  if (!nav_supported) return;
  var elems = elem.childNodes;
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    if (node.nodeName != 'LI') continue;
    var submenu = node.getElementsByTagName('UL');
    if (submenu.length > 0) {
      nav_submenuEls[i] = submenu[0];
    }
    nav_addMouseHandlers(node, i);
  }
}

function nav_addMouseHandlers(elem, index) {
  if (!nav_supported) return;
  var elems = elem.childNodes;
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    if (node.nodeName == 'A') {
      node.onmouseover = new Function('nav_SubmenuMouseOverHandler(' + index + ')');
    }
  }
}

function nav_addBasicMouseHandlers(elems) {
  for (var i = 0; i < elems.length; i++) {
    var node = elems[i];
    node.onmouseover = nav_BasicMouseOverHandler;
    node.onmouseout  = nav_BasicMouseOutHandler;
  }
}

function nav_SubmenuMouseOverHandler(index) {
  if (!nav_supported) return;
  if (nav_hideTimer) {
    window.clearTimeout(nav_hideTimer);
    nav_hideTimer = null;
  }
  for (var i = 0; i < nav_submenuEls.length; i++) {
    if (i == index) continue;
    if (!nav_submenuEls[i]) continue;
    nav_submenuEls[i].style.visibility = 'hidden';
  }
  nav_activeSubmenu = index;
  if (nav_submenuEls[index]) nav_submenuEls[index].style.visibility = 'inherit';
}

function nav_BasicMouseOutHandler() {
  if (!nav_supported) return;
  if (nav_hideTimer)  return;
  nav_hideTimer = window.setTimeout('nav_hideSubmenu(' + nav_activeSubmenu + ')', 300);
}

function nav_BasicMouseOverHandler() {
  if (!nav_supported) return;
  if (!nav_hideTimer) return;
  window.clearTimeout(nav_hideTimer);
  nav_hideTimer = null;
}
 
function nav_hideSubmenu(index) {
  if (!nav_supported) return;
  if (!nav_submenuEls[index]) return;
  nav_submenuEls[index].style.visibility = 'hidden';
}

