
gMenuCount = 0;
kDefaultMenuWidth = 200;
kMaxMenuItems = 15;
kMenuItemHighlightColor = '#F0F0C0';
kMenuItemDefaultColor = '#C0C9C0';
kMenuItemDisabledColor = '#C0C0C0';
kButtonHighlightBackground = "url('btn_bak01gx.jpg')";
gButtonImage1 = new(Image);
kButtonDefaultBackground = "url('btn_bak01g.jpg')";
gButtonImage2 = new(Image);
kMenuBarBoxColorOver = '#006060';
kMenuBarTextColorDefault = '#CFCFCF';
kMenuBarTextColorOver = '#FFFFC0';

kMenuItemClickedColor = '#00CFF0';
gMenusActive = true;
gMenuVisible = false;
gCurrentMenu = null;
gCurrentButton = null;
gMenuOrientation = 0;
gTextChange = false;
gBackgroundChange = false;
gUsingLinks = false;
gHiding = false;
gLinkClicked = false;
gLinksDisabled = false;

function LinkClicked()
{
	gLinkClicked = true;
}

function DisableLinks()
{
	gLinkClicked = true;
	gLinksDisabled = true;
}

function SetMenuCount(count,usingMenus)
{
	gMenuCount = count;
	gUsingLinks = !usingMenus;
}

function InitMenu(buttonID,menuID,itemCount)
{
	var theButton = document.getElementById(buttonID);
	var theMenu = document.getElementById(menuID);
	if(theMenu)
	{
		var itemIndex = 1;
		var itemID;
		var theItem;
		
		theMenu.innerCount = itemCount;
		theMenu.currentSelection = null;
		
		while(itemIndex <= itemCount)
		{
			itemID = "ITEM" +itemIndex +"_" +menuID;
			theItem = document.getElementById(itemID);
			if(theItem)
			{
				theItem.isEnabled = 1;
			}
			itemIndex++;
		}
	}
	if(theButton)
	{
		if(itemCount > 0)theButton.useMenu = true;
		else theButton.useMenu = false;
	}
}
				
function MenusActivate(active)
{
	gMenusActive = active;
	if(active == false)HideMenus();
	gLinkClicked = false;
	
	return(true);
}

function Junk(buttonID,menuID,theWidth,orientation)
{
	var theMenu = document.getElementById(menuID);
	var theButton = document.getElementById(buttonID);

	if(gLinksDisabled == true && gLinkClicked == true)return;
	
	HideMenus();
	
	if(theMenu)
	{
		if(theButton)
		{
			theButton.onmouseover = MenuBarOverEvent;
			theButton.onmouseout = MenuBarOutEvent;
			theMenu.onmouseover = MenuOverEvent;
			theMenu.onmouseout = MenuOutEvent;
			if(theWidth)kDefaultMenuWidth = theWidth;
			PositionMenu(theButton,theMenu,kDefaultMenuWidth,true,orientation);
			gMenuOrientation = orientation;
		}
	}
}
	

function BuildMenu(menuIndex,itemCount,popUpName,align,border,padding,menuItems)
{
	var itemIndex = 0;
	var itemName;
	
	document.write("<DIV ID = \""+popUpName+"\" class = \"menu_box\" STYLE = \"POSITION:ABSOLUTE; LEFT:0; TOP:0; VISIBILITY:HIDDEN;\" onmouseover = \"MenuOverEvent(window.event);\" onmouseout = \"MenuOutEvent(window.event);\">\n");
	itemIndex = 1;
	while(itemIndex <= itemCount)
	{
		itemName = ("ITEM" +itemIndex);
		itemName += "_";
		itemName += popUpName;
		
		document.write("<DIV ID = \""+itemName+"\" class = \"menu_item\" STYLE = \"POSITION:RELATIVE; TOP:0; LEFT:0; border:"+border+"; padding:"+padding+";\" onmouseover = \"SetMenuItemEffects(this,kMenuItemHighlightColor,null,false);\" onmouseout = \"SetMenuItemEffects(this,kMenuItemDefaultColor,null,false);\" onclick = \"MenuClick(this,"+itemIndex+");\">"+menuItems[itemIndex - 1]+"</DIV>\n");
		itemIndex++;
	}
	document.write("</DIV>\n");		
}

function MenuItemSelected(theItem)
{
	
	if(theItem == theItem.offsetParent.currentSelection)return(true);
	
	else 
	{
		return(theItem == theItem.offsetParent.subSelection);
	}
}

function SetMenuItemEffects(theObject,theColor,borderStyle,hideMove)
{
	if(gLinkClicked == true)return;
	
	if(theObject)
	{
		if(MenuItemSelected(theObject) == true)
		{
			return;
		}
		if(theColor)
		{
			theObject.style.background = theColor;
		}
		if(borderStyle)
		{
			theObject.style.border = borderStyle;
		}
		if(hideMove == true)
		{
			theObject.style.left = -500;
			theObject.style.visibility = 'hidden';
		}
	}
}

function GetTheEvent(theEvent)
{
	if(theEvent)return(theEvent);
	else return(window.event);
}

function ClearTheEvent(theEvent)
{
	theEvent.cancelBubble = true;
	if(theEvent.stopPropagation)theEvent.stopPropagation();
}

function GetTheEventObject(theEvent)
{
	var theObject;
	
	if(theEvent.target)theObject = theEvent.target;
	else if(theEvent.srcElement)theObject = theEvent.srcElement;
	else theObject = null;
	
	return(theObject);
}

function GetEventXY(evnt,xOrY)
{
	var posx = 0;
	var posy = 0;
	var theSpot;
	if (evnt.pageX || evnt.pageY)
	{
		posx = evnt.pageX;
		posy = evnt.pageY;
	}
	else if (evnt.clientX || evnt.clientY)
	{
		posx = evnt.clientX + document.body.scrollLeft;
		posy = evnt.clientY + document.body.scrollTop;
	}
	
	if(xOrY == "x")theSpot = posx;
	else theSpot = posy;

	return(theSpot);
}

function MenuBarOverEvent(theEvent)
{
	if(gMenusActive == false)return(true);
	if(gLinkClicked == true)return(false);

	var evnt = GetTheEvent(theEvent);
	var menubarObject = this;	
	if(!menubarObject)menubarObject = GetTheEventObject(evnt);
	
	var menuName = "MENU";
	if(menubarObject.id == "MBAR_ITEM1")menuName += 1;
	else if(menubarObject.id == "MBAR_ITEM2")menuName += 2;
	else if(menubarObject.id == "MBAR_ITEM3")menuName += 3;
	else if(menubarObject.id == "MBAR_ITEM4")menuName += 4;
	else if(menubarObject.id == "MBAR_ITEM5")menuName += 5;
	else if(menubarObject.id == "MBAR_ITEM6")menuName += 6;
	else if(menubarObject.id == "MBAR_ITEM7")menuName += 7;

	var menuToShow = document.getElementById(menuName);
	if(menuToShow != gCurrentMenu)
	{
		if(gCurrentButton != menubarObject)
		{
			//gHiding = false;
			PositionMenu(menubarObject,menuToShow,kDefaultMenuWidth,true,gMenuOrientation);
		}
		gMenuVisible = true;
	}

	ClearTheEvent(evnt);
	
	return(true);
}

function MenuBarOutEvent(theEvent)
{
	var evnt = GetTheEvent(theEvent);
	var menubarObject = this;
	var menuObject;
	var clientX;
	var clientY;
	var itemX;
	var menuX;
	if(!menubarObject)menubarObject = GetTheEventObject(evnt);
	var menuName = "MENU";
	if(menubarObject.id == "MBAR_ITEM1")menuName += 1;
	else if(menubarObject.id == "MBAR_ITEM2")menuName += 2;
	else if(menubarObject.id == "MBAR_ITEM3")menuName += 3;
	else if(menubarObject.id == "MBAR_ITEM4")menuName += 4;
	else if(menubarObject.id == "MBAR_ITEM5")menuName += 5;
	else if(menubarObject.id == "MBAR_ITEM6")menuName += 6;
	else if(menubarObject.id == "MBAR_ITEM7")menuName += 7;
	
	if(gLinkClicked == true)return(true);
	
	menuObject = document.getElementById(menuName);

	var outObject;
	if(evnt.relatedTarget)outObject = evnt.relatedTarget;
	else if(evnt.toElement)outObject = evnt.toElement;
	clientX = GetEventXY(evnt,"x");
	clientY = GetEventXY(evnt,"y");

	//alert(outObject.id);
	if(menubarObject.firstChild == outObject || menubarObject.firstChild.firstChild == outObject || menuObject == outObject)
	{
		ClearTheEvent(evnt);
		return(true);
	}

	if(menuObject)
	{
		if(menuObject.showMenu == 0)return(true);
		if(clientY > (GetItemY(menubarObject) + menubarObject.offsetHeight))
		{
			itemX = GetItemX(menuObject);
			if(clientX >= itemX && clientX <= itemX + menuObject.offsetWidth)
			{
				ClearTheEvent(evnt);
				return(true);
			}
		}
	}
	ClearTheEvent(evnt);
	
	return(true);	
}

function MenuOverEvent(theEvent)
{
	if(gLinkClicked == true)return(false);
	
	var evnt = GetTheEvent(theEvent);	
	var menuObject = this;
	if(!menuObject)menuObject = GetTheEventObject(evnt);
	menuObject.style.visibility = 'visible';

	ClearTheEvent(evnt);
	
	return(true);	
}

function MenuOutEvent(theEvent)
{
	var evnt = GetTheEvent(theEvent);	
	var menuObject = this;
	if(!menuObject)menuObject = GetTheEventObject(evnt);
	var showState = 'hidden';
	var menuName;
	var toObject;

	if(gLinkClicked == true)return(false);
	
	menuName = menuObject.id;
	
	if(evnt.relatedTarget)toObject = evnt.relatedTarget;
	else if(evnt.toElement)toObject = evnt.toElement;
	if(toObject)
	{
		if(CheckIfMenuItem(toObject,menuName) == false)
		{
			HideMenus();
			ClearTheEvent(evnt);
			return(true);
		}
		
	}
	ClearTheEvent(evnt);
	
	return(true);
}

function HideMenus()
{
	var menuIndex = 1;
	var theMenu;
	var currentMenuName;
	var currentButtonName;
	var currentButton;
	
	if(gCurrentButton)
	{
		gCurrentButton.style.background = 'none';
		gCurrentButton.style.color = kMenuBarTextColorDefault;
		gCurrentButton.firstChild.firstChild.style.color = kMenuBarTextColorDefault;
	}
	if(gCurrentMenu)
	{
		gCurrentMenu.style.visibility = 'hidden';
	}
	
	//while(menuIndex <= gMenuCount)
	//{
		//currentMenuName = "MENU" +menuIndex;
		//theMenu = document.getElementById(currentMenuName);
				
		//if(theMenu != null)
		//{
			//theMenu.style.visibility = 'hidden';
		//}
		//menuIndex++;
	//}
	
	gMenuVisible = false;

	gCurrentMenu = null;
	gCurrentButton = null;
	
	return(true);
}

function PositionMenu(menuBarElement,menu,theWidth,wantShown,orientation)
{
	if(gLinkClicked == true)return;
	
	if(menu.showMenu == 0 || gMenusActive == false)return;

	if(gUsingLinks && menuBarElement.useMenu == false)
	{
		if(gCurrentButton)
		{
			if(gCurrentButton != menuBarElement)
			{
				gCurrentButton.style.background = kButtonDefaultBackground;
				gCurrentButton.firstChild.firstChild.style.color = kMenuBarTextColorDefault;				
			}
		}
		menuBarElement.style.background = kButtonHighlightBackground;
		menuBarElement.firstChild.firstChild.style.color = kMenuBarTextColorOver;
		gCurrentButton = menuBarElement;
		if(gCurrentMenu)
		{
			gCurrentMenu.style.visibility = "hidden";
			gCurrentMenu = null;
		}
		
		return;
	}

	var myLeft = 0;
	var myTop = menuBarElement.offsetTop + menuBarElement.offsetHeight;
	var trParent = menuBarElement;
	var myWidth = (menuBarElement.offsetWidth > theWidth) ? menuBarElement.offsetWidth: theWidth;
	var theItem;
				
	while (trParent.offsetParent.tagName != 'BODY')
	{
		if(trParent.tagName != "DIV")myTop += trParent.offsetTop;
		myLeft += trParent.offsetLeft;
		trParent = trParent.offsetParent;	//get the next parent up the nest
	}
	
	menu.style.left = (myLeft + myWidth) <= document.body.clientWidth - 5 ? myLeft: document.body.clientWidth - myWidth - 5;
	menu.style.top = myTop - 11;
	if(!document.all)menu.style.top = myTop - 11;
	
			
	menu.style.width = myWidth;
	menu.style.background = kMenuBarBoxColorOver;
	
	if(wantShown)
	{
		if(gCurrentMenu)gCurrentMenu.style.visibility = 'hidden';
		if(gCurrentButton)
		{
			if(gCurrentButton != menuBarElement)
			{
				gCurrentButton.style.background = 'none';
				gCurrentButton.firstChild.firstChild.style.color = kMenuBarTextColorDefault;
			}
		}
		if(orientation == 1)// Menu is on the right of menu button.
		{
			menu.style.top = menuBarElement.offsetTop + 18;
			menu.style.left = menuBarElement.offsetLeft + menuBarElement.offsetWidth - 3;
			menu.style.width = theWidth;
		}
			
		gCurrentMenu = menu;
		menuBarElement.style.background = kButtonHighlightBackground;
		menuBarElement.firstChild.firstChild.style.color = kMenuBarTextColorOver;
		gCurrentButton = menuBarElement;
		
		menu.style.visibility = 'visible';
	}
}

function SetMenuSelection(menuID,itemID)
{
	var menu = document.getElementById(menuID);
	if(menu)
	{
		var item = document.getElementById(itemID);
		if(item)
		{
			menu.currentSelection = item;
			item.style.background = kMenuItemClickedColor;
			item.style.border = "1px solid #999999";
		}
	}
}

function GetItemX(item)
{
	itemX = item.offsetLeft;
	tempItem = item.offsetParent;
	while (tempItem != null) 
	{
		itemX += tempItem.offsetLeft;
		tempItem = tempItem.offsetParent;
	}

	return(itemX);
}

function GetItemY(item)
{
	itemY = item.offsetTop;
	tempItem = item.offsetParent;
	
	while(tempItem != null)
	{
		itemY += tempItem.offsetHeight;
		tempItem = tempItem.offsetParent;
	}
	
	return(itemY);
}

function EnableMenu(menu)
{
	if(menu)menu.showMenu = 1;
}

function DisableMenu(menu)
{
	if(menu)menu.showMenu = 0;
}
	
function DisableMenuItem(menuItemID)
{
	var menuItemObject = document.getElementById(menuItemID)
	if(menuItemObject)
	{
		menuItemObject.style.background = kMenuItemDisabledColor;
		menuItemObject.onclick = null;
		menuItemObject.onmouseover = null;
		menuItemObject.onmouseout = null;
		menuItemObject.isEnabled = 0;
	}
}

function EnableMenuItem(menuItemID)
{
	var menuItemObject = document.getElementById(menuItemID);
	if(menuItemObject)
	{
		menuItemObject.style.background = kMenuItemDefaultColor;
		menuItemObject.onmouseover = "this.style.background = kMenuItemHighlightColor;";
		menuItemObject.onmouseout = "this.style.background = kMenuItemDefaultColor;";
		menuItemObject.isEnabled = 1;
	}
}

// Firefox and Opera did not work with this function, I changed the function to nothing.
function CheckIfMenuItem(theObject,menuName)
{
	var isMenuItem = true;
	var menu = document.getElementById(menuName);
	menu.style.visibility = 'visible';
	
	return(isMenuItem);
}

function SetMenuButtonBackgrounds(baseID,background1,background2,textColorDefault,textColorHighlight)
{
	if(baseID)
	{
		var theItem;
		var itemIndex = 1;
		var theBackground;
		
		if(background1 != null)
		{
			gButtonImage1.src = background1;
			
			while(itemIndex <= gMenuCount)
			{
				theItem = document.getElementById(baseID +itemIndex);
				if(theItem)
				{
					theItem.style.background = "url("+gButtonImage1.src+")";
				}
				itemIndex++;
			}
			kButtonDefaultBackground = "url("+gButtonImage1.src+")";
		}
		if(background2 != null)
		{
			gButtonImage2.src = background2;
			kButtonHighlightBackground = "url("+gButtonImage2.src+")";
		}
	}
	
	if(textColorDefault)kMenuBarTextColorDefault = textColorDefault;
	if(textColorHighlight)kMenuBarTextColorOver = textColorHighlight;
	
}

function ShowItem(id)
{
	if(gHiding == false)
	{
		var theItem = document.getElementById(id);
		if(theItem)theItem.style.visibility = "visible";
	}
	
}


function KillMenus()
{
	delete(gButtonImage1);
	delete(gButtonImage2);
	
	return(true);
}	