var timerId = null;

// Initialize
function init() {
  setPrimaryNavEvents();
}

// Set mouseover and tabbing events on primary navigation
function setPrimaryNavEvents() {
  var primarynav = document.getElementById("primarynav");
  var topnav = primarynav.getElementsByTagName("ul")[0];
  var navItems = primarynav.getElementsByTagName("li");

  // set events on all navigation items
  for (var i = 0; i < navItems.length; i++) {
    // mouse events
    if (navItems[i].getElementsByTagName("ul")[0] || navItems[i].parentNode == topnav) {
      //navItems[i].onmouseover = function() { this.className = "over"; }
      //navItems[i].onmouseout = function() { this.className = ""; }
      navItems[i].onmouseover = function() { applyMenuClass(this, " over"); }
      navItems[i].onmouseout = function() { applyMenuClass(this, ""); }
      //navItems[i].style.zIndex = 200; /* Fix IE */
    }

    // keyboard events
	 if (navItems[i].getElementsByTagName("a")[0]) {
	    navItems[i].getElementsByTagName("a")[0].onfocus = function() { showMenu(this); }
   	 navItems[i].getElementsByTagName("a")[0].onblur = function() { hideMenus(this); }
	 }
  }
}

// Show menu: mouse hover
function applyMenuClass(obj, cname) {
  var className = (document.all) ? "className" : "class";
  if (!obj.getAttribute(className)) obj.setAttribute(className, "");
  var oClass = obj.getAttribute(className);

  if (cname) {
    obj.className += cname;
  } else {
    obj.className = oClass.substring(0, oClass.indexOf(" "));
  }
}

// Show menu: tabbing
function showMenu(obj) {
  // hide previous menu
  clearTimeout(timerId);
  hideAllMenus(obj.parentNode);

  // show menu or highlight link
  var navId = obj.parentNode.parentNode.parentNode.id;
  if (obj.parentNode.getElementsByTagName("ul")[0] || navId == "primarynav") obj = obj.parentNode;
  obj.className = "over";
}

// Hide menus
function hideMenus(obj) {
  // set timer to hide menus
  timeoutHide();

  // remove style from navigation link
  if (obj.tagName.toLowerCase() == "a") obj.className = "";
}

// Hide all menus
function hideAllMenus(obj) {
  var parent = (obj) ? obj.parentNode : document.getElementById("primarynav");
  var navItems = parent.getElementsByTagName("li");

  // hide menus from parent navigation items (ignore current menu)
  for (var i = 0; i < navItems.length; i++) {
    if (parent.id || navItems[i] != obj) navItems[i].className = "";
  }
}

// Set timer to hide menus
function timeoutHide() {
  timerId = window.setTimeout("hideAllMenus()", 10);
}
