function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
{
  if (elm.addEventListener) { 
    elm.addEventListener(evType, fn, useCapture); 
    return true; 
  } else if (elm.attachEvent) { 
    var r = elm.attachEvent('on' + evType, fn); 
    return r; 
  } else {
    elm['on' + evType] = fn;
  }
}

// climb up the tree to the supplied tag.
function ascendDOM(e, target) {
  while (e.nodeName.toLowerCase() != target && 
      e.nodeName.toLowerCase() != 'html')
    e = e.parentNode;
  
  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

// turn on highlighting
function hilighted(e) {
  var el;
  if (window.event && window.event.srcElement)
    el = window.event.srcElement;
  if (e && e.target)
    el = e.target;
  if (!el) return;

  el = ascendDOM(el, 'li');
  if (el == null) return;

  var parent_element = ascendDOM(el, 'ul');
  if (parent_element == null) return;
  
  var parents_parent = ascendDOM(el, 'div');
  if(parents_parent.id != 'nav')  return;
  var ci = -1;
  for (var i = 0; i < parent_element.childNodes.length; i++) {
    if (el === parent_element.childNodes[i]) {
      el.className += ' hi';
    }
  }
}

// turn off highlighting
function non_highlighted(e) {
  var el;
  if (window.event && window.event.srcElement)
    el = window.event.srcElement;
  if (e && e.target)
    el = e.target;
  if (!el) return;

  el = ascendDOM(el, 'li');
  if (el == null) return;

  var parent_element = ascendDOM(el, 'ul');
  if (parent_element == null) return;
  
  var parents_parent = ascendDOM(el, 'div');
  if(parents_parent.id != 'nav')  return;
  var ci = -1;
  for (var i = 0; i < parent_element.childNodes.length; i++) {
    if (el === parent_element.childNodes[i]) {
      el.className = el.className.replace(/\b ?hi\b/, '');
    }
  }
}

function addListeners() {
  if (!document.getElementsByTagName) return;
  
  var list_elements= document.getElementsByTagName('li');
  for (var i = 0; i < list_elements.length; i++) {
    addEvent(list_elements[i], 'mouseover', hilighted, false);
    addEvent(list_elements[i], 'mouseout', non_highlighted, false);
  }
}

addEvent(window, 'load', addListeners, false);

