function hover(e){
	var target = (window.event)? window.event.srcElement : (e) ? e.target : null;

	if(target){
		target = getTarget(target, 'li');
		if(!target) return;
	}else{
		return;
	}
	
	if(target.className.indexOf('hover') == -1){
		target.className += ' hover';
	}else{
		target.className = target.className.replace(/hover/g, '');
	}
}

function clickIt(e){
	if(window.event){
		window.event.cancelBubble = true;
	}
	if(e && e.stopPropagation){
		e.stopPropagation();
	}
	var target = (window.event)? window.event.srcElement : (e)? e.target : null;
	
	if(target){
		target = getTarget(target, 'li');
		if(!target) return;
	}else{
		return;
	}

	if(target.className.indexOf('click') == -1){
		removeClick();
		target.className += ' click';
	}else{
		target.className = target.className.replace(/click/g, '');
	}
}

function removeClick(){
	var menu = document.getElementById('menu');

	//remove click from all LI elements in the Menu
	for(i=0; i < menu.childNodes.length; i++){
		var node = menu.childNodes[i];
		if(node.nodeName.toLowerCase() == 'li'){
			node.className = node.className.replace(/click/g, '');
		}
	}
}

function getTarget(target, elm){
	if(target.nodeName.toLowerCase() != elm && target.nodeName.toLowerCase() != 'body'){
		return getTarget(target.parentNode, elm);
	}else if(target.nodeName.toLowerCase() == 'body'){
		return null;
	}else{
		return target;
	}
}

function styleSubMenus(){
	var menu = document.getElementById('menu');

	//add mouseover listeners to all LI elements in the Menu
	for(i=0; i < menu.childNodes.length; i++){
		var node = menu.childNodes[i];
		if(node.nodeName.toLowerCase() == 'li'){
			for(l=0; l<node.childNodes.length; l++){
				var nd = node.childNodes[l];
				if(nd.nodeName.toLowerCase() == 'ul'){
					node.className +=" subMenu";
					break;
				}
			}
		}
	}
}

function installListeners(){
	//Make sure browser supports getElementById and get Menu or exit function
	var menu = (document.getElementById)? document.getElementById('menu') : null;
	if(!menu) return;

	styleSubMenus();

	//add mouseover listeners to all LI elements in the Menu
	addEvent(menu, 'mouseover', hover, false);
	addEvent(menu, 'mouseout', hover, false);
	addEvent(menu, 'click', clickIt, false);
	addEvent(menu, 'click', nav, false);

	addEvent(document, 'click', removeClick, false);
}

function addEvent(elm, evType, fn, useCapture){  //cross-browser event handling for IE5+, NS6+, and Mozilla/Gecko 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;
	}
}

function nav(e){
	if(window.event){
		window.event.cancelBubble = true;
	}
	if(e && e.stopPropagation){
		e.stopPropagation();
	}
	var target = (window.event)? window.event.srcElement : (e)? e.target : null;
	
	if(target){
		target = getTarget(target, 'li');
	}else{
		return;
	}
	for(i=0; i<target.childNodes.length; i++){
		var node = target.childNodes[i];
		if(node.nodeName.toLowerCase() == 'a'){
			window.location = node.href;
			break;
		}
	}
}



addEvent(window, 'load', installListeners, false);