
var isIE4 = ((navigator.userAgent.indexOf("MSIE") >= 0) && (parseInt( navigator.appVersion ) >= 4));
var isMozilla4 = ((navigator.userAgent.indexOf("Mozilla") >= 0) && (parseInt( navigator.appVersion ) >= 4));
var isOpera9 = ((navigator.userAgent.indexOf("Opera") >= 0) && (parseInt( navigator.appVersion ) >= 9));
var currentHeaderButton = null;
var currentMenu = null;

if (isIE4 || isMozilla4 || isOpera9) 
    document.onmouseover = HandleMouseOver;

function HandleMouseOver(e) {
	if (isIE4 || isMozilla4 || isOpera9) {
		var srcElement = null;
		if (isIE4)
		    srcElement = window.event.srcElement;
		else
		    srcElement = e.target;
 
		if (srcElement != null) {
			if (srcElement.className == "HeaderButton") {
				var relatedMenu = null;
				var headerButton = "HeaderButton";

				if ((srcElement.id != null) && (srcElement.id.length > headerButton.length) &&
					(srcElement.id.substring(srcElement.id.length - headerButton.length, srcElement.id.length) == headerButton)) {
					var buttonName = srcElement.id.substring(0, srcElement.id.length - headerButton.length);
					var underscorePosition = buttonName.lastIndexOf('_');
					if (underscorePosition != -1)
						buttonName = buttonName.substring(underscorePosition + 1, buttonName.length);
					relatedMenu = document.getElementById(buttonName + "Menu");
				}
	            
				if ((currentHeaderButton != null) && ((currentMenu != relatedMenu) || (currentMenu == null)))
					CloseMenu();
				if (srcElement != null) 
					OpenMenu(srcElement, relatedMenu);
			}
			else if (currentHeaderButton != null) {
				if ((isIE4) && ((currentMenu != null) && (!currentMenu.contains(srcElement))))
					CloseMenu();
				else if (isMozilla4 || isOpera9) {
					var element = srcElement;
					while (element != null) {
						if (element == currentMenu)
							break;
						element = element.parentNode;
					}
					if (element == null)
						CloseMenu();
				}
			}
		}
	}
}

function OpenMenu(headerButton, menuToShow) {
	if (headerButton.src.indexOf("Hot") == -1)
		headerButton.src = headerButton.src.replace("Normal.png", "Hot.png").replace("Selected.png", "HotSelected.png");
    if (menuToShow != null) {
		var windowWidth = (isIE4 ? document.body.clientWidth : window.innerWidth);
		menuToShow.style.left = Math.min(windowWidth - menuToShow.offsetWidth, GetOffsetLeft(headerButton));		
		menuToShow.style.top = GetOffsetTop(headerButton) + headerButton.offsetHeight - 1;
		menuToShow.style.visibility = "visible";		
	}
	currentHeaderButton = headerButton;
	currentMenu = menuToShow;
}

function CloseMenu() {
	if (currentHeaderButton != null) {
		currentHeaderButton.src = currentHeaderButton.src.replace("HotSelected.png", "Selected.png").replace("Hot.png", "Normal.png");
		currentHeaderButton = null;
	}
    if (currentMenu != null) {
		currentMenu.style.visibility = "hidden";
		currentMenu = null;
	}
}

function GetOffsetLeft(obj) {
	var offset = 0;
	while (obj != null) {
		offset += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return offset;
}

function GetOffsetTop(obj) {
	var offset = 0;
	while (obj != null) {
		offset += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return offset;
}

function FilterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function GetScrollTop() {
	return FilterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

function HideFlyout(elementId) {
	if (!(isIE4 || isMozilla4 || isOpera9))
		return;

	var flyout = document.getElementById(elementId);
	flyout.style.visibility = 'hidden';
	flyout.style.top = null;
}

function ShowFlyout(elementId) {
	if (!(isIE4 || isMozilla4 || isOpera9))
		return;

	var flyout = document.getElementById(elementId);
		
	var scrollTop = GetScrollTop();
	var windowHeight = (isIE4 ? document.body.clientHeight : window.innerHeight);
	var offsetTop = GetOffsetTop(flyout);
	var offsetHeight = flyout.firstChild.offsetHeight;
	
	if (offsetHeight > windowHeight)
		flyout.style.top = scrollTop - offsetTop;
	else if (offsetTop < scrollTop)
		flyout.style.top = scrollTop - offsetTop;
	else if (offsetTop + offsetHeight > scrollTop + windowHeight)
		flyout.style.top = (scrollTop + windowHeight) - (offsetTop + offsetHeight);
	else
		flyout.style.top = null;
	
	flyout.style.visibility = 'visible';
}
