
var menuWidth, menuBGColor, delay = 250;
var isIE4 = document.all;
var isNS6 = (document.getElementById) && (! document.all);

if (isIE4 || isNS6) {
	document.write('<div id="menuDiv" style="visibility:hidden;width:'+menuWidth+'; background-color:'+menuBGColor+'" onMouseover="clearTimeoutIfNeeded()" onMouseout="hideMenuIfNeeded(event)"></div>');
}


function showMenu(item, e, menuWidth) {

	if (isIE4 || isNS6) {
		menuItem.style.left = menuItem.style.top = -500;
	}
	if (menuWidth != "") {
		menuItem.widthobj = menuItem.style;
		menuItem.widthobj.width = menuWidth;
	}
	if (((e.type == "click") && (item.visibility == "hidden")) || (e.type == "mouseover")) {
		item.visibility = "visible";
	}
	else if (e.type == "click") {
		item.visibility = "hidden";
	}
}


function showMenu1(item, e, menuWidth) {

	if (isIE4 || isNS6) {
		menuItem.style.left = menuItem.style.top = 500;
	}
	if (menuWidth != "") {
		menuItem.widthobj = menuItem.style;
		menuItem.widthobj.width = menuWidth;
	}
	if (((e.type == "click") && (item.visibility == "hidden")) || (e.type == "mouseover")) {
		item.visibility = "visible";
	}
	else if (e.type == "click") {
		item.visibility = "hidden";
	}
}


function getOffset(item, offsetType) {

	var totalOffset = (offsetType == "left") ? item.offsetLeft : item.offsetTop;
	var parentOffset = item.offsetParent;
	while (parentOffset != null) {
		totalOffset = (offsetType == "left") ? totalOffset+parentOffset.offsetLeft : totalOffset+parentOffset.offsetTop;
		parentOffset = parentOffset.offsetParent;
	}
	return totalOffset;
}


function ieCompat() {
	return ((document.compatMode) && (document.compatMode != "BackCompat")) ? document.documentElement : document.body;
}


function displayMenu(item, e, menuContent, menuWidth) {

	if (window.event) {
		event.cancelBubble = true;
	}
	else if (e.stopPropagation) {
		e.stopPropagation();
	}
	
	clearTimeoutIfNeeded();
	
	menuItem = document.getElementById ? document.getElementById("menuDiv") : menuDiv;
	if (isIE4 || isNS6) {
		menuItem.innerHTML = menuContent.join("");
		showMenu(menuItem.style, e, menuWidth)
		menuItem.x = getOffset(item, "left");
		menuItem.y = getOffset(item, "top");
		menuItem.style.left = menuItem.x+"px";
		menuItem.style.top = menuItem.y+item.offsetHeight+"px";
	}
}


function displayMenu1(item, e, menuContent, menuWidth) {

	if (window.event) {
		event.cancelBubble = true;
	}
	else if (e.stopPropagation) {
		e.stopPropagation();
	}
	
	clearTimeoutIfNeeded();
	
	menuItem = document.getElementById ? document.getElementById("menuDiv") : menuDiv;
	if (isIE4 || isNS6) {
		menuItem.innerHTML = menuContent.join("");
		showMenu1(menuItem.style, e, menuWidth)
		menuItem.x = getOffset(item, "left")-26;
		menuItem.y = getOffset(item, "top")-107;
		menuItem.style.left = menuItem.x+"px";
		menuItem.style.top = menuItem.y+item.offsetHeight+"px";
	}
}


function displayMenu2(item, e, menuContent, menuWidth) {

	if (window.event) {
		event.cancelBubble = true;
	}
	else if (e.stopPropagation) {
		e.stopPropagation();
	}
	
	clearTimeoutIfNeeded();
	
	menuItem = document.getElementById ? document.getElementById("menuDiv") : menuDiv;
	if (isIE4 || isNS6) {
		menuItem.innerHTML = menuContent.join("");
		showMenu1(menuItem.style, e, menuWidth)
		menuItem.x = getOffset(item, "left")-4;
		menuItem.y = getOffset(item, "top")-87;
		menuItem.style.left = menuItem.x+"px";
		menuItem.style.top = menuItem.y+item.offsetHeight+"px";
	}
}


function containsNS6(a, b) {

	while (b.parentNode) {
		if ((b = b.parentNode) == a) {
			return true;
		}
	}
	return false;
}


function hideMenuIfNeeded(e) {

	if ((isIE4) && (! menuItem.contains(e.toElement))) {
		hideMenuWithDelay();
	}
	else if (isNS6 && (e.currentTarget != e.relatedTarget) && (! containsNS6(e.currentTarget, e.relatedTarget))) {
		hideMenuWithDelay();
	}
}


function hideMenu(e) {

	if (typeof menuItem != "undefined") {
		if (isIE4 || isNS6) {
			menuItem.style.visibility = "hidden";
		}
	}
}


function hideMenuWithDelay() {

	if (isIE4 || isNS6) {
		hideDelay = setTimeout("hideMenu()", delay);
	}
}


function clearTimeoutIfNeeded() {

	if (typeof hideDelay != "undefined") {
		clearTimeout(hideDelay);
	}
}


document.onclick=hideMenu

