var fIECompatible = false;
var fNetscape = false;
var fFireFox = false;
var fOpera = false;
var fUseDom = false;

// Find browsers
if(navigator.userAgent.indexOf("Firefox") != -1) {
	fFireFox = true;
	fUseDom = true;
} else if(navigator.userAgent.indexOf("Opera") != -1) {
	fOpera = true;
} else if(navigator.userAgent.indexOf("MSIE") != -1) {
	fIECompatible = true;
	strVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5); // 7.0; sd lkhkrt kjhsdf
	if(strVersion.indexOf(";") != -1) {
		strVersion = strVersion.substring(0, strVersion.indexOf(";")); // 7.0
	} else {
		strVersion = strVersion.substring(0, strVersion.indexOf(")")); // 7.0
	}
	if(parseInt(strVersion) >= 6) {
		fUseDom = true;
	}
} else if(navigator.userAgent.indexOf("Netscape") != -1) {
	fNetscape = true;
}

function edeptiveShowHideMenu(iItemID, iLevel, xoffset, yoffset) {
	var objMenu, objAnchor;
	var strHide = 'hidden', strShow = 'visible';

	if(document.all && document.all[0]) fIECompatible = true;
	
	if(giHideMenuTimeoutID) {
		clearTimeout(giHideMenuTimeoutID);
	}
	edeptiveHideMenu(iLevel, true);
	if(fUseDom) {
		if(document.getElementById("menu" + iItemID)) {
			objMenu = document.getElementById("menu" + iItemID).style;
		}
	} else if(fIECompatible) {
		if(document.all['menu' + iItemID]) {
			objMenu = document.all['menu' + iItemID].style;
		}
	} else {
		if (parseInt(navigator.appVersion) >= 5) {
			objBody = document.childNodes[1].childNodes[2];
			for(i=0; !objMenu && (i < objBody.childNodes.length); i++){
				if (objBody.childNodes[i].id == ('menu' + iItemID)) {
					objMenu = objBody.childNodes[i].style;
				}
			}
		} else {
			if (document.layers['menu' + iItemID]) {
				objMenu = document.layers['menu' + iItemID];
			}
			strHide = 'hide';
			strShow = 'show';
		}
	}
	if(objMenu) {
		if(fIECompatible || fUseDom) {
			var ofs;
			
			if(isNaN(yoffset)) yoffset = 0;
			if(fIECompatible) {
				ofs=document.all['anc' + iItemID];
			} else {
				ofs = document.getElementsByName("anc" + iItemID)[0];
			}
			if (typeof(ofs.tagName) == "undefined") {
				ofs = ofs[0];
			}
			var exi=0;
			var eyi=0;
			if(fNetscape || fFireFox) {
				yoffset += 24;
			} else if(fOpera) {
				yoffset += 10;
			}
			do {
				exi+=ofs.offsetLeft;
				eyi+=ofs.offsetTop;
				ofs=ofs.offsetParent;
			} while (ofs && ofs.tagName && (ofs.tagName!='BODY'));
			if (fIECompatible) {
				ofs=document.all['anc' + iItemID];
			} else {
				ofs = document.getElementsByName("anc" + iItemID)[0];
			}
			if (iLevel == 0) {
				objMenu.left = parseInt(exi + (xoffset ? xoffset : 0)) + "px";
				if (fIECompatible) {
					if (typeof(ofs.clientHeight) != "undefined") {
						objMenu.top = eyi + ofs.clientHeight + (yoffset ? yoffset : 0);
					} else {
						objMenu.top = eyi + 5 + (yoffset ? yoffset : 0);
					}
				} else {
					objMenu.top = parseInt(eyi + (yoffset ? yoffset : 0)) + "px";
				}
			} else {
				objMenu.left = exi + ofs.offsetParent.clientWidth - ofs.offsetLeft + 1;
				objMenu.top = eyi;
			}
		} else {
			if (iLevel == 0) {
				objAnchor = document.anchors['anc' + iItemID];
				objMenu.left = objAnchor.x;
				objMenu.top = objAnchor.y + 30;
			} else {
				for(i = 0; !objAnchor && (i < document.layers.length); i++) {
					objAnchor = document.layers[i].document.anchors['anc' + iItemID];
					if (objAnchor) {
						objMenu.left = objAnchor.x + document.layers[i].x + document.layers[i].clip.width;
						objMenu.top = objAnchor.y + document.layers[i].y;
					}
				}
			}
		}
		objMenu.visibility = strShow;
		if ((strShow == "visible") && (objMenu.display == "none")) {
			objMenu.display = "block";
		}
		garrActiveMenuIDs[iLevel] = iItemID;
	}
}
function edeptiveHideMenu(iStopLevel, fForce) {
	var objOldMenu;
	var strHide = 'hidden', strShow = 'visible';
	
	if (!iStopLevel) iStopLevel = 0;
	if (fIECompatible ) {
		if (!fForce && window.event && (window.event.button != 1)) {
		//	return;
		}
	} else if (parseInt(navigator.appVersion) < 5) {
		strHide = 'hide';
		strShow = 'show';
	}
	for(iLevel = garrActiveMenuIDs.length - 1; iLevel >= iStopLevel; iLevel--) {
		if (fIECompatible ) {
			objOldMenu = document.all['menu' + garrActiveMenuIDs[iLevel]].style;
		} else if(fUseDom) {
			objOldMenu = document.getElementById("menu" + garrActiveMenuIDs[iLevel]).style;
		} else if (parseInt(navigator.appVersion) >= 5) {
			objBody = document.childNodes[1].childNodes[2];
			for(i=0; !objOldMenu && (i < objBody.childNodes.length); i++){
				if (objBody.childNodes[i].id == ('menu' + garrActiveMenuIDs[iLevel])) {
					objOldMenu = objBody.childNodes[i].style;
				}
			}
		} else {
			objOldMenu = document.layers['menu' + garrActiveMenuIDs[iLevel]];
		}
		if (objOldMenu) {
			objOldMenu.visibility = strHide;
			if ((strHide == "hidden") && (objOldMenu.display == "block")) {
				objOldMenu.display = "none";
			}
		}
	}
	if(iStopLevel < garrActiveMenuIDs.length) {
		garrActiveMenuIDs.length = iStopLevel;
	}
}
function edeptiveDelayedHideMenu() {
	var fInDiv = false;
	var ofs;
	
	if(fUseDom) {
		if(giHideMenuTimeoutID) {
			clearTimeout(giHideMenuTimeoutID);
		}
		giHideMenuTimeoutID = setTimeout('edeptiveHideMenu()', giTimeOutValue);
	} else {
		if(window.event) {
			ofs = window.event.srcElement;
		}
		if (!ofs || !ofs.offsetParent || !ofs.tagName) {return;}
		do {
			fInDiv = (ofs.tagName && (ofs.tagName == 'DIV')) || (ofs.className.indexOf('menuLevel') != -1);
			ofs = ofs.offsetParent;
		} while (!fInDiv && ofs && ofs.tagName && (ofs.tagName != 'BODY'));
		if (!fInDiv) {
			if (giHideMenuTimeoutID) {
				clearTimeout(giHideMenuTimeoutID);
			}
			giHideMenuTimeoutID = setTimeout('edeptiveHideMenu()', giTimeOutValue);
		}
	}
}
if(!fUseDom) {
	document.onmouseup = edeptiveHideMenu;
	document.onmouseover = edeptiveDelayedHideMenu;
}
gfedeptiveMenuFnsLoaded = true;
