<!--
function m_init() {
  if (document.getElementById) {
    var root = document.getElementById('m_root')
    if (root) {
      if (root.addEventListener) {
	root.addEventListener('mouseover',mOver,false)
	root.addEventListener('mouseout',mOut,false)
	root.addEventListener('click',mOut,false)
      } else {
	root.attachEvent('onmouseover',mOver)
	root.attachEvent('onmouseout',mOut)
	root.attachEvent('onclick',mOut)
      }
    }
  }
  else alert("Site navigation will not work on a browser this old.");
}

/* Sets class 'over' true on the element over which the mouse has moved
 *   This setting highlights the selected element.
 * In addition, we set class 'over' on any (first) <UL> or <OL> child list, 
 *   and position that list at same Y, and to right of <LI> element for vertical menu
 *   or at same X, but below <LI> for horizontal menu (class="horz" on LI).  Setting 'over'
 *   class on the whole sub-list makes it visible.
 */
function mOver(e) {
  if (!e) var e = window.event
  var targ = (e.target)? e.target: e.srcElement
  targ = encItem(targ)
  var i
  var p = findSubList(encItem(targ))
  if (p) {
    clSwitch(p,'over',true)
    var offP = p.offsetParent
    var y = targ.offsetHeight
    var x = targ.offsetLeft
    if (isClass(targ,"horz")) {
      p.style.left = "0px"; p.style.top = targ.offsetHeight+"px"
    } else {
      p.style.left = targ.offsetWidth+"px";
      p.style.top = "-1px"
    }
  }
  clSwitch(targ,'over',true)
}

/* Removes 'over' class from a list item (removing any highlighting),
 * and from any subsidiary UL or OL (hides the sub-list)
 * unless the clicked item has a sub-list depending from it
 */
function mOut(e) {
  if (!e) var e = window.event
  var outItem = (e.target)? e.target: e.srcElement
  outItem = encItem(outItem)
  if (outItem) {
    var newTarget = (e.relatedTarget)?e.relatedTarget:e.toElement
    if (newTarget) newTarget = encItem(newTarget)
    var rootP = idGet('m_root'), endP = encList(newTarget)
    if (isChild(newTarget,outItem)) return;
    else {
      var p = findSubList(outItem)
      if (p && e.type == 'click') return;
      if (!p) p = outItem;
      for (p;p;p=p.parentNode) {
        if (p == endP || p == rootP) break;
	if (p.nodeType==1) clSwitch(p,'over',false)
      }
    }
  }
}

function findSubList(obj) {
  var p = obj.firstChild
  if (p) {
    var res = findSubList(p)
    if (res && (res.nodeName == "UL" || res.nodeName=="OL")) return res;
    else {
      while (p) {
        if (p.nodeName=="UL" || p.nodeName=="OL") return p;
        else p = p.nextSibling
      }
    }
  }
  return null
}

//Returns enclosing LI or UL element pointer for any object
function encItem(obj) {
  var nName = obj.nodeName
  while (nName != 'LI' && nName !='UL' && nName != 'OL') {
   obj = obj.parentNode
    if (!obj) return null;
    else nName = obj.nodeName
  }
  return obj
}

// Returns pointer to  the <UL> or <OL> element containing obj
function encList(obj) {
  for (var p = obj; p; p = p.parentNode)
    if (p.nodeName =='UL' || p.nodeName =='OL') return p;
  return null
}

function isChild(obj,posPar) {
  if (obj) {
    var p = obj.parentNode
    while (p) {
      if (p == posPar) return true;
      if (p.id == "m_root") return false;
      p = p.parentNode
    }
  }
  return false;
}
//-->
