var _browser = new Browser();
var _activeButton = null;
var _height = null;

function imgVariables(height) {
	// This is basic information about the image for the dynamic rollovers
	_height = height;
}
function Browser() {
	this.isIE = false;
	this.isNS = false;
	this.version = null;
	this.platform = navigator.platform.substr(0, 3);
	var browserName;
	browserName = "MSIE";
	var index = navigator.userAgent.indexOf(browserName);
	if (index >= 0) {
		this.isIE = true;
		this.version = parseFloat(navigator.userAgent.substr(index + browserName.length));
		return;
	}
	browserName = "Netscape6/";
	index = navigator.userAgent.indexOf(browserName)
	if (index >= 0) {
		this.isNS = true;
		this.version = parseFloat(navigator.userAgent.substr(index + browserName.length));
		return;
	}
	browserName = "Gecko";
	index = navigator.userAgent.indexOf(browserName)
	if (index >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
}
function buttonClick(event, menuId) {
	var button;
	if (_browser.isIE) {
		button = window.event.srcElement;
	} else {
		button = event.currentTarget;
	}
	button.blur();	
	if (button.menu == null) {
		button.menu = document.getElementById(menuId);
		if (button.menu.isInitialized == null) {
			menuInit(button.menu);
		}
	}
	if (button.onmouseout == null) {
		button.onmouseout = menuMouseout;
	}
	if (button == _activeButton) {
		return false;
	}
	if (_activeButton != null) {
		resetButton(_activeButton);
	}
	if (button != _activeButton) {
		depressButton(button);
		_activeButton = button;
	} else {
		_activeButton = null;
	}
	return false;
}
function buttonMouseover(event, menuId) {
	if (_activeButton == null) {
		buttonClick(event, menuId);		
		return;
	}
	var button = null;
	if (_browser.isIE) {
		button = window.event.srcElement;
	} else {
		button = event.currentTarget;
	}
	if (_activeButton != null && _activeButton != button) {
		buttonClick(event, menuId);
	}
}
function buttonChange(On) {  //*** button rollover
	var buttonOn = new Image();
	buttonOn.src = _url + _imgName + "_On.jpg";
	var buttonOff = new Image();
	buttonOff.src = _url + _imgName + "_Off.jpg";

	if (On) 		
		document.images[_buttonName].src = buttonOn.src;
	else
		document.images[_buttonName].src = buttonOff.src;		
		
	buttonOn = null;
	buttonOff = null;
}
function depressButton(button) {
	if (button.onmouseout == null) {
		button.onmouseout = menuMouseout;
	}
	if (button.menu.onmouseout == null) {
		button.menu.onmouseout = menuMouseout;		
	}
	var x = 	getPageOffsetLeft(button);
	var y = getPageOffsetTop(button);
	if (_browser.isIE) {
		x += button.offsetWidth;
		y += button.offsetParent.clientTop;
		if (_browser.platform == "Mac") {
			x -= 5;
			y -= 5;			
		}
	}
	if (_browser.isNS) {
		x += button.offsetWidth;
		y += button.offsetHeight - _height;	
	}
	button.menu.style.left = x + "px";	
	button.menu.style.top  = y + "px";
	var buttonMenuAnchors = button.menu.getElementsByTagName("A");
	if (buttonMenuAnchors.length > 0) {
		button.menu.style.visibility = "visible";
		if (_browser.isIE) {
			hideElement(button.menu);					
		}
	}
}
function resetButton(button) {
	if (button.menu != null) {
		closeSubMenu(button.menu);
		button.menu.style.visibility = "hidden";
		if (_browser.isIE) {
			showElement();
		}
	}
}
function menuMouseover(event) {
	var menu;
	if (_browser.isIE) {
		menu = getContainer(window.event.srcElement, "DIV", "menu");
	} else {
		menu = event.currentTarget;
	}
	if (menu.activeItem != null) {
		closeSubMenu(menu);
	}
}
function menuItemMouseover(event, menuId) {	
	var item;
	if (_browser.isIE) {
		item = getContainer(window.event.srcElement, "A", "menuitem");		
	} else {
		item = event.currentTarget;
	}
	var menu = getContainer(item, "DIV", "menu");
	if (menu.activeItem != null) {
		closeSubMenu(menu);
	}
	menu.activeItem = item;
	if (item.subMenu == null) {
		item.subMenu = document.getElementById(menuId);
		if (item.subMenu.isInitialized == null) {
			menuInit(item.subMenu);
		}
	}
	if (item.subMenu.onmouseout == null) {
		item.subMenu.onmouseout = menuMouseout;
	}
	var x = getPageOffsetLeft(item) + item.offsetWidth;
	var y = getPageOffsetTop(item);
	var maxX = 0;
	var maxY = 0;
	if (_browser.isNS) {
		maxX = window.scrollX + window.innerWidth;
		maxY = window.scrollY + window.innerHeight;
	}
	if (_browser.isIE) {
		if (_browser.platform != "Mac") {
			maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) + (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
			maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);			
		} else {
			maxX = document.body.scrollLeft + document.body.clientWidth;
			maxY = document.body.scrollTop + document.body.clientHeight;
		}
	}
	maxX -= item.subMenu.offsetWidth;
	maxY -= item.subMenu.offsetHeight;
	if (_browser.isIE && _browser.platform == "Mac") {
		x -= 11;
	}
	if (x > maxX) {
		x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth + (menu.offsetWidth - item.offsetWidth));
	}
	y = Math.max(0, Math.min(y, maxY));
	item.subMenu.style.left = x + "px";
	item.subMenu.style.top  = y + "px";
	item.subMenu.style.visibility = "visible";
	if (_browser.isIE) {
		hideElement(item.subMenu);
	}
	if (_browser.isIE) {
		window.event.cancelBubble = true;
	} else {
		event.stopPropagation();
	}
}
function closeSubMenu(menu) {
	if (menu == null || menu.activeItem == null) {
		return;
	}
	if (menu.activeItem.subMenu != null) {
		closeSubMenu(menu.activeItem.subMenu);
		menu.activeItem.subMenu.style.visibility = "hidden";
		menu.activeItem.subMenu = null;
	}	
	menu.activeItem = null;
}
function menuMouseout(event) {
	var el;
	if (_activeButton == null) {
		return;
	}
	if (_browser.isIE) {
		el = window.event.toElement;
		
	} else if (event.relatedTarget != null) {
		el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode);
	}
	if (getContainer(el, "DIV", "menu") == null) {
		resetButton(_activeButton);
		//buttonChange(false); //*** button rollover
		_activeButton = null;
	}
}
function menuInit(menu) {
	var anchorList = menu.getElementsByTagName("A");
	if (anchorList.length <= 0) {
		return;
	}
	if (_browser.isIE) {
		if (_browser.platform != "Mac") {
			var menuWidth = anchorList[0].offsetWidth;
			anchorList[0].style.width = menuWidth + "px";
			var calculatedWidth = anchorList[0].offsetWidth - menuWidth;
			menuWidth -= calculatedWidth;
			anchorList[0].style.width = menuWidth + "px";
		} else {
			menu.style.width = "200px";
			menu.style.whiteSpace = "nowrap";
		}
	}
	if (_browser.isIE) {
		menu.style.lineHeight = "12px";
		var spanList = menu.getElementsByTagName("SPAN");
		for(var i = 0; i < spanList.length; i++) {
			if (hasClassName(spanList[i], "menuitemarrow")) {
				spanList[i].style.fontFamily = "Webdings";
				spanList[i].firstChild.nodeValue = "4";
			}
		}
	}
	menu.isInitialized = true;
}
function getContainer(node, tagName, className) {
	while(node != null) {
		if (node.tagName != null && node.tagName == tagName && hasClassName(node, className)) {
			return node;
		}
		node = node.parentNode;
	}
	return node;
}
function hasClassName(el, name) {
	var list;
	list = el.className.split(" ");
	for(var i = 0; i < list.length; i++) {
		if (list[i] == name) {
			return true;
		}
	}
	return false;
}
function getPageOffsetLeft(el) {
	var x = el.offsetLeft;
	if (el.offsetParent != null) {
		x += getPageOffsetLeft(el.offsetParent);
	}
	return x;
}
function getPageOffsetTop(el) {
	var y = el.offsetTop;
	if (el.offsetParent != null) {
		y += getPageOffsetTop(el.offsetParent);
	}
	return y;
}
function hideElement(button) {
	var element = "SELECT";
	var currentElement = null;
	for (i = 0; i < document.all.tags(element).length; i++) {
		currentElement = document.all.tags(element)[i];
		if (((elementTop(currentElement) > parseInt(button.style.top) + button.offsetHeight) || 
			(elementLeft(currentElement) > parseInt(button.style.left) + button.offsetWidth) ||
			(elementLeft(currentElement) + currentElement.offsetWidth < parseInt(button.style.left)) || 
			(elementTop(currentElement) + currentElement.offsetHeight < parseInt(button.style.top))) && _activeButton == null) {
			currentElement.style.visibility = "";			
		} else {
			currentElement.style.visibility = "hidden";			
		}
	}
}
function showElement() {	
	var element = "SELECT";
	var currentElement = null;
	for (i = 0; i < document.all.tags(element).length; i++) {
		currentElement = document.all.tags(element)[i];
		currentElement.style.visibility = "";
	}
}
function elementTop(elementSource) {
	var top = 0;
	while (elementSource.tagName.toUpperCase() != "BODY") {
		top += elementSource.offsetTop;
		elementSource = elementSource.offsetParent;
	}
	return top;
}
function elementLeft(elementSource) {
	var left = 0;
	while (elementSource.tagName.toUpperCase() != "BODY") {
		left += elementSource.offsetLeft;
		elementSource = elementSource.offsetParent;
	}
	return left;
}
