function addsfhover(eid) {
	thisEle = document.getElementById(eid);
	if (thisEle.className.indexOf("sfhover") == -1) thisEle.className+=" sfhover";
}

function removesfhover(eid) {
	thisEle = document.getElementById(eid);
	if (thisEle) {
		thisEle.className=thisEle.className.replace(new RegExp("sfhover\\b"), "");
		thisEle.className=thisEle.className.replace(new RegExp(" sfhover\\b"), "");
	}
}
function removeHovers () {
	if (cancelTimeout == 0) {
		var nfEls = document.getElementById("nav").getElementsByTagName("LI");
		for (var i=0; i<nfEls.length; i++) {
			if (nfEls[i].id.length) removesfhover(nfEls[i].id);
		}
	}
}
function removeSubHovers (tlid) {
	var nfEls = document.getElementById(tlid).getElementsByTagName("LI");
	for (var i=0; i<nfEls.length; i++) {
		if (nfEls[i].className.indexOf("arrow") == -1) {
			if (nfEls[i].id.length) removesfhover(nfEls[i].id);
		}
	}
}
var cancelTimeout = 0;
var speed = 450;
var currentTopLevel = "";
sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			if (this.id == "") {
				r = Math.floor(Math.random()*50000);
				this.id = "item"+r;
			}
			if (this.id.indexOf("toplevel") > -1) {
				removeHovers();
				currentTopLevel = this.id;
			} else if (currentTopLevel != "") {
				removeSubHovers(currentTopLevel);
			}
			cancelTimeout = 1;
			removeHovers();
			addsfhover(this.id);
		}
		sfEls[i].onmouseout=function() {
			try {xo = clearTimeout(xx);} catch(err) {}
			xx = setTimeout('removeHovers()', speed);
			cancelTimeout = 0;
		}
	}
}

if (window.addEventListener) 
	window.addEventListener("load", sfHover, false)
else if (window.attachEvent) 
	window.attachEvent("onload", sfHover);