//
// list menu globals ---------------------
//
var amActiveButton = null;
var amHoverMode = 0;
var amHoverModeUpdated = 0;
var amClickButton;
//
// ----- Set it Open, or set a 1 second autoclose
//	 val=1 to open
//	 val=0 to close in 1 second
//
function amSetHoverMode(newMode) {
	amHoverMode = newMode;
	if (newMode==0) {
		setTimeout(amHoverModeClear, 1000);
	}
	if (newMode==1) {
		amHoverModeUpdated = 1;
	}
}
//
//
//
function amStopEvent(event) {
	if (browser.isIE) {
		window.event.cancelBubble = true;
	} else {
		event.stopPropagation();
	}
}
//
// -----
//
function amHoverModeClear() {
	if (amHoverMode == 0) {
		amResetButton(amActiveButton);
		amHideSelect(0);
		amHoverModeUpdated = 1;
	}
}
//
// -----
//
function amOpenPanel(event, menuId, position, StyleSheetPrefix, OpenOnHover) {
	var button, x, y, offY, width, height;
	//
	if ((!(amClickButton == 2 && outOfContext)) && browser.isIE) {
		amHideSelect(true);
	}
	if (browser.isIE) {
		offY = event.offsetY;
		button = event.srcElement;
	} else {
		button = event.currentTarget;
	}
	if(button.tagName!='A') {
		button = getContainer( button, 'A' )
		if (button == null) return false;
	}
	if (menuId == '') return false;
	width=document.body.scrollWidth;
	height=document.body.scrollHeight;
	button.blur();
	if (button.menu == null) {
		button.menu = document.getElementById(menuId);
		if (button.menu.title == "")
			amInit(button.menu);
	}
	if (amActiveButton != null)
		amResetButton(amActiveButton);
	if (button != amActiveButton || amHoverModeUpdated == 1) {
		amHoverModeUpdated = 0;
		// Update the button's style so it looks down
		if (amClickButton != 2) {
			button.className += " kmaMenuDown "+StyleSheetPrefix+"ButtonDown";
		}
		if (position==3) {
			// Flyout to the right
			x = jQuery(button).position().left + button.offsetWidth;
			y = jQuery(button).position().top;
		} else if (position==1) {
			// Flyout up
			x = jQuery(button).position().left;
			y = jQuery(button).position().top - button.menu.offsetHeight;
		} else if (position==4) {
			// Flyout to the left
			x = jQuery(button).position().left - button.menu.offsetWidth;
			y = jQuery(button).position().top;
		} else {
			// Flyout down
			x = jQuery(button).position().left;
			y = jQuery(button).position().top + button.offsetHeight;
		}

		if (amClickButton == 2) {
			x = event.clientX;
			y = event.clientY;
			if (document.body) {
				x += document.body.scrollLeft;
				y += document.body.scrollTop;
			}
		}
		if ((x + button.menu.scrollWidth) > width) {
			x = width - button.menu.scrollWidth;
		}
		button.menu.style.left = x + "px";
		button.menu.style.top  = y + "px";
		// turn it on
		button.menu.style.visibility = "visible";
		//button.menu.style.display = "block";
		amActiveButton = button;
	}
	else {
		if (!OpenOnHover) {
			amActiveButton = null;
			}
	}
	amClickButton=1;
	return false;
}
//
// -----
//
function amButtonHover(event, menuId, position) {
	var button;
	if (browser.isIE) {
		button = window.event.srcElement;
	} else {
		button = event.currentTarget;
	}
	if (amActiveButton != null && amActiveButton != button) {
		amOpenPanel(event, menuId, position);
	}
}
//
// -----
//
function amResetButton(button) {
	if (button) {
		removeClassNameAfter(button, "kmaMenuDown");
		if (button.menu != null) {
			amCloseSubMenu(button.menu);
			button.menu.style.visibility = "hidden";
			//button.menu.style.display = "none";
		}
	}
}
//
// -----
//
function amPanelHover(event, StyleSheetPrefix) {
	var menu;
	//
	if (browser.isIE) {
		menu = getContainerWith(window.event.srcElement, "UL", "panel");
		if (!menu) {
			menu = getContainerWith(window.event.srcElement, "DIV", StyleSheetPrefix+"Panel");
		}
	} else {
		menu = event.currentTarget;
	}
	if (menu.title != "") {
		if (menu.activeItem == null) {
			// do nothing
		} else {
			amCloseSubMenu(menu);
		}
	}
}
//
// -----
//
function amPanelButtonHover(event, menuId, StyleSheetPrefix) {
	var item, menu, x, y, maxX, maxY;
	//
	if (browser.isIE) {
		item = getContainerWith(window.event.srcElement, "LI", "panelButton");
		if (!item ) {
			item = getContainerWith(window.event.srcElement, "A", StyleSheetPrefix+"PanelButton");
		}
	} else {
		item = event.currentTarget;
	}
	menu = getContainerWith(item, "UL", "panel");
	if (menu) {
		//
		// LI-Menu
		//
		if (menu.activeItem == null) {
			// nothing
		} else {
			amCloseSubMenu(menu);
		}
		menu.activeItem = item;
		item.className += " kmaMenuDown "+StyleSheetPrefix+"PanelButtonDown";
		if (item.subMenu == null) {
			item.subMenu = document.getElementById(menuId);
			if (item.subMenu.title == "")
			//if (item.subMenu.isInitialized == null)
				amInit(item.subMenu);
		}
		//alert('item.subMenu.id='+item.subMenu.id)
		x = item.offsetWidth;
		y = item.offsetTop;
		if (browser.isNS) {
			maxX = window.scrollX + window.innerWidth;
			maxY = window.scrollY + window.innerHeight;
		//alert('110 maxX='+maxX+', maxY='+maxY);
		}
		if (browser.isIE) {
			maxX = (document.documentElement.scrollLeft != 0 ? document.documentElement.scrollLeft   : document.body.scrollLeft)
				+ (document.documentElement.clientWidth  != 0 ? document.documentElement.clientWidth  : document.body.clientWidth);
			maxY = (document.documentElement.scrollTop    != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
				+ (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
		//alert('200 maxX='+maxX+', maxY='+maxY);
		}
		maxX -= item.subMenu.offsetWidth;
		maxY -= item.subMenu.offsetHeight;
		//alert('300 maxX='+maxX+', maxY='+maxY);
		if (x > maxX) {
			x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth + (menu.offsetWidth - item.offsetWidth));
		}
		//alert('400 maxX='+maxX+', maxY='+maxY);
		y = Math.max(0, Math.min(y, maxY));
		item.subMenu.style.left = x + "px";
		if (browser.isMac) {
			if (browser.version>5.1) {
				item.subMenu.style.top  = y + "px";
			}
		} else {
			item.subMenu.style.top  = y + "px";
		}
		//alert('500 x='+x+', y='+y);
		item.subMenu.style.visibility = "visible";
		//item.subMenu.style.display = "block";
		amStopEvent(event);
		//if (browser.isIE) {
		//	window.event.cancelBubble = true;
		//} else {
		//	event.stopPropagation();
		//}
	} else {
		//
		// A-Menu
		//
		// alert('A-Menu')
		menu = getContainerWith(item, "DIV", StyleSheetPrefix+"Panel");
		if (menu.activeItem == null) {
			// nothing
		} else {
			amCloseSubMenu(menu);
		}
		menu.activeItem = item;
		item.className += " kmaMenuDown "+StyleSheetPrefix+"PanelButtondown";
		if (item.subMenu == null) {
			item.subMenu = document.getElementById(menuId);
			if (item.subMenu.title == "")
			//if (item.subMenu.isInitialized == null)
				amInit(item.subMenu);
		}
		x = jQuery(item).position().left + item.offsetWidth;
		y = jQuery(item).position().top;
		if (browser.isNS) {
			maxX = window.scrollX + window.innerWidth;
			maxY = window.scrollY + window.innerHeight;
		}
		if (browser.isIE) {
			maxX = (document.documentElement.scrollLeft != 0 ? document.documentElement.scrollLeft   : document.body.scrollLeft)
				+ (document.documentElement.clientWidth  != 0 ? document.documentElement.clientWidth  : document.body.clientWidth);
			maxY = (document.documentElement.scrollTop    != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
				+ (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
		}
		maxX -= item.subMenu.offsetWidth;
		maxY -= item.subMenu.offsetHeight;
		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";
		if (browser.isMac) {
			if (browser.version>5.1) {
				item.subMenu.style.top  = y + "px";
			}
		} else {
			item.subMenu.style.top  = y + "px";
		}
		item.subMenu.style.visibility = "visible";
		amStopEvent(event);
		//if (browser.isIE) {
		//	window.event.cancelBubble = true;
		//} else {
		//	event.stopPropagation();
		//}
	}
}
//
// -----
//
function amCloseSubMenu(menu) {
	if (!menu)
		return;
	if (menu.activeItem == null)
		return;
	if (menu.activeItem.subMenu) {
		amCloseSubMenu(menu.activeItem.subMenu);
		menu.activeItem.subMenu.style.visibility = "hidden";
		//menu.activeItem.subMenu.style.display = "none";
		menu.activeItem.subMenu = null;
		}
	removeClassNameAfter(menu.activeItem, "kmaMenuDown");
	menu.activeItem = null;
	}
//
// -----
//
function amInit(menu) {
	var itemList, spanList, textEl, arrowEl, itemWidth, w, dw, i, j;
	//
	itemList = menu.getElementsByTagName("LI");
	if (itemList.length == 0) {
		itemList = menu.getElementsByTagName("A");
	}
	if (itemList.length == 0) {
		menu.title = 'Select One';
		menu.activeItem = null
		return false;
	}
	if (browser.isIE) {
		w = itemList[0].offsetWidth;
		itemList[0].style.width = w + "px";
		dw = itemList[0].offsetWidth - w;
		w -= dw;
		itemList[0].style.width = w + "px";
	}
	menu.title = 'Select One';
	menu.activeItem = null
	}
function amHideSelect(hiddenIn) {						
	var i, j;
	var index;
	var selects;
	//
	if (hiddenIn) {
		menuClicks++;
	}
	//
	if (!hiddenIn && menuClicks == 0 && !selectsHidden) {
		return;
	}
	// Hide MS Selects
	selects = document.getElementsByTagName("SELECT");
	if (selectsHidden && menuClicks == 0) {
		for (i = 0; i < selects.length; i++) {
			selects[i].style.visibility = "";
		}
	}
	else {
		for (i = 0; i < selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
	}
	// Hide MS Embeds
	selects = document.getElementsByTagName("EMBED");
	if (selectsHidden && menuClicks == 0) {
		for (i = 0; i < selects.length; i++) {
			selects[i].style.visibility = "";
		}
	}
	else {
		for (i = 0; i < selects.length; i++) {
			selects[i].style.visibility = "hidden";
		}
	}
	//
	if (selectsHidden && menuClicks == 0) {
		selectsHidden = false;
	}
	//
	else if (selectsHidden && menuClicks != 0 && amClickButton != 2) {
		menuClicks--;
	}
	//
	else {
		selectsHidden = true;
	}
}
//
// ----- Code for handling the menu bar and active button.
//
function amPageClick(event) {
	//alert("ampageClick");
	var el;

	if (amActiveButton == null) return;
	if (browser.isIE)
		el = window.event.srcElement;
	else
		el = (event.target.tagName ? event.target : event.target.parentNode);

	if (el == amActiveButton)
		return true;
	if (getContainerWith(el, "DIV", "kmaMenu") == null) {
		amResetButton(amActiveButton);
		amActiveButton = null;
	}
}

document.addEventListener("mousedown", amPageClick, true);



