function addLoadEvent(func){
	var oldonload=window.onload;
	if(typeof window.onload!='function'){
		window.onload=func;
	}else{
		window.onload=function(){
			if(oldonload){
				oldonload();
			}
			func();
		}
	}
};
sfHover=function(){
	var timeout=400;
	var cssClass="sfhover";
	var queue=[];
	var reCSS=new RegExp("\\b"+cssClass+"\\b");
	var sfEls=document.getElementById("nav").getElementsByTagName("li");
	for(var i=0;i<sfEls.length;i++){
		sfEls[i].onmouseover=function(){
			queueFlush();this.className+=" "+cssClass;
		}
		sfEls[i].onmouseout=function(){
			queue.push([setTimeout(queueTimeout,timeout),this]);
		}
		sfEls[i].onfocus=function(){
			queueFlush();this.className+=" "+cssClass;
		}
		sfEls[i].onblur=function(){
			queue.push([setTimeout(queueTimeout,timeout),this]);
		}
		sfEls[i].onclick=function(e){
			if(this.className.search(reCSS)==-1){
				var elems=this.parentNode.getElementsByTagName("li");
				for(var i=0;i<elems.length;i++){
					elems[i].className=elems[i].className.replace(reCSS,"");
				}
				this.className+=" "+cssClass;
			}else{
				var elems=this.getElementsByTagName("li");
				for(var i=0;i<elems.length;i++){
					elems[i].className=elems[i].className.replace(reCSS,"");
				}
				this.className=this.className.replace(reCSS,"");
			}
			if(e&&e.stopPropagation){
				e.stopPropagation();
			}else{
				window.event.cancelBubble=true;
			}
		}
	}
	queueFlush=function(){
		while(queue.length){
			clearTimeout(queue[0][0]);queueTimeout();
		}
	}
	queueTimeout=function(){
		if(queue.length){
			var el=queue.shift()[1];el.className=el.className.replace(reCSS,"");
		}
	}
}
addLoadEvent(sfHover);

