<!--
var hideList = new Array()
var winT = 0   // Timeout ID
var delay = 50 //ms until sub-menu vanishes

function m_init() {
  if (document.getElementById) mTraverse(document.getElementById("m_root"));
  else alert("Site navigation will not work on a browser this old.");
}

var stack = new Array()

function mTraverse(menu) {
  if (menu && menu.nodeType==1) {
    for (i=0;i<menu.childNodes.length;i++) {
      m = menu.childNodes[i]
      if (m.nodeName=="LI") {
	m.onmouseover=mOver
	m.onmouseout=mOut
	for (j=0;j<m.childNodes.length;j++) {
	  stack.push(i,j)
	  mTraverse(m.childNodes[j]);
	  j = stack.pop(); i = stack.pop()
	}
      }
    }
  }
}

// makes (first) <UL> child list visible, and positions
//  it 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)
function mOver(e) {
  if (!e) e = window.event
  targ = (e.target)? e.target: e.srcElement
  var i
  var str = "Element rolled over is "+targ.nodeName+".  Its offsetLeft is "+targ.offsetLeft+"<br>"
  for (i=0;i<hideList.length;i++) {
    if (hideList[i]==this) hideList.splice(i,1);
  }
  clSwitch(this,'over',true)
  var res = findList(targ)
   
  if (res.tag) {
    var p = res.ptr
    clSwitch(p,'over',true)
    var offP = p.offsetParent
    var y = targ.offsetHeight
    var x = targ.offsetLeft
    var p2 = targ.parentNode
    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"
    }
  }
}

function findList(obj) {
  var p = obj.firstChild, retObj={ptr:null, tag:''}
  if (p) {
    var res = findList(p)
    if (res && (res.tag == "UL" || res.tag=="OL")) return res;
    else {
      while (p) {
        if ((t=p.nodeName)=="UL" || t=="OL") {
          retObj.ptr=p; retObj.tag=t
          return retObj;
        }
	p = p.nextSibling
      }
    }
  }
  return retObj
}

//Starts delay timer for eventual hiding of element we are leaving

function mOut() {
  if ((typeof hideChk) != 'function') return;
  else {
    winT = window.setTimeout(hideChk,delay) 
    hideList.push(this)
  }
}

// Hides a list of elements by removing "over" class from each one's class list
function hideChk () {
  if (winT != 0) {
    window.clearTimeout(winT)
    winT = 0
  }
  for (i=0;i<hideList.length;i++) {
    obj = hideList[i]
    clSwitch(obj,'over',false)
    p = obj.firstChild
    while (p) {
      if (p.nodeName=="UL") clSwitch(p,'over',false)
      p = p.nextSibling
    }
  }
  hideList = []
}

function m_hide(e) {
  if (!e) e = window.event
  targ = (e.target)? e.target: e.srcElement
  if (winT) window.cleartimeout(winT); winT = 0
  if (targ.nodeName =="A") {
    p = targ.parentNode
    while (p && p.id !="m_root") {
      if (p.nodeName == "UL" || p.nodeName == "LI") clSwitch(p,'over',false)
      p = p.parentNode
    }
  }
}
//-->
