function $(id) {
	return document.getElementById(id);
}
function showSubNav(parentID){
	if(typeof(parentID)!="undefined"){
		hideSubNavs();
		navBarPos = findPos($("navBar"));
		parentPos = findPos($(parentID));
		$("subnav"+parentID).style.left = parentPos[0]-navBarPos[0];
		$("subnav"+parentID).style.top = parentPos[1]+$(parentID).offsetHeight+8;
		$("subnav"+parentID).style.visibility = "visible";		
	}
}

timeout = 100;
timer = false;

function checkMouse(){
	hide = true;
	for(i=0;i<subNavIds.length;i++){
		if($(subNavIds[i]).style.visibility=="visible" && isMouseOverId(subNavIds[i])){
			hide = false;
		}
	}
	
	if(isMouseOverId("navBar")){
		hide=false;
	}
	
	if(hide){
		//we pass the curTopNavId incase it is a vertical subnav so that it always remains visible when the mouse leaves
		hideSubNavs(curTopNavId);
	}
	timer = setTimeout("checkMouse()",timeout)
}

function isMouseOverId(id){
	obj = $(id)
	pos = findPos(obj);
	width = obj.offsetWidth;
	height = obj.offsetHeight;
	if( (mouseX >= pos[0]) &&
		(mouseX <= pos[0]+width) &&
		(mouseY >= pos[1]) &&
 		(mouseY <= pos[1]+height) ) {
		return true;
	} else {
		return false;
	}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var mouseX = 0;
var mouseY = 0;
function getMouseXY(e) {
	if (IE) {
		mouseX = event.clientX + document.body.scrollLeft;
		mouseY = event.clientY + document.body.scrollTop;
	} else {
		mouseX = e.pageX;
		mouseY = e.pageY;
	}  
	if (mouseX < 0){mouseX = 0;}
	if (mouseY < 0){mouseY = 0;}  
	return true;
}