var hide_delay = 25;  //menu disappear speed onMouseout (in miliseconds)
var hide_popup_onclick = 1; //hide menu when user clicks within menu? (1=yes, 0=no)

var ie5 = document.all; //IE5+
var ns6 = document.getElementById && !document.all; //NS6+ & Mozilla

var menu_item_obj;
var popupmenu_obj;

/*
function getPosOffset(what, offsettype){ //offsettype = left or top
	var totaloffset = (offsettype == "left")? what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;
	while (parentEl != null){
		totaloffset = (offsettype == "left")? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}
	return totaloffset;
}
*/

function showPopUpMenu(popupmenu_obj) {
	popupmenu_obj.style.visibility = "visible";
}

function hideMenu() {
	if (menu_item_obj) menu_item_obj.className = null;
	if (popupmenu_obj) popupmenu_obj.style.visibility = "hidden";
}

function delayHideMenu(){
	delayhide = setTimeout("hideMenu();", hide_delay);
}

function cancelHideMenu(){
	if (typeof delayhide != "undefined") clearTimeout(delayhide);
}

function popUpMenu(menu_item, e, popupmenuID, x_pos, x_offset, y_pos, y_offset){
	if (typeof popupmenu_obj != "undefined") { //hide previous menu
		hideMenu();
	}
	cancelHideMenu();
	if (ie5 || ns6) {
		menu_item_obj = menu_item;
		menu_item_obj.className = "mouseOver"; //a > a.mouseOver
		menu_item_obj.onmouseout = delayHideMenu;
		popupmenu_obj = document.getElementById(popupmenuID);
		if (hide_popup_onclick) {
			popupmenu_obj.onclick = hideMenu;
			menu_item_obj.onclick = hideMenu;
		}
		popupmenu_obj.onmouseover = cancelHideMenu;
		popupmenu_obj.onmouseout = delayHideMenu;
		showPopUpMenu(popupmenu_obj);
		popupmenu_obj.x = getPosOffset(menu_item_obj, "left");
		popupmenu_obj.y = getPosOffset(menu_item_obj, "top");

		x_loc = (x_pos == "right")? menu_item_obj.offsetWidth: 0;
		popupmenu_obj.style.left = popupmenu_obj.x + x_loc + x_offset + "px";

		y_loc = (y_pos == "bottom")? menu_item_obj.offsetHeight: 0;
		popupmenu_obj.style.top = popupmenu_obj.y + y_loc + y_offset + "px";
	}
}
