// Instantiate the default XmlMenu
var MenuBar = new XmlMenu("MenuBar");

// Instantiate the RTEMenuBar
var RTEMenuBar = new XmlMenu("RTEMenuBar");

// Instantiate the TemplateMenuBar
var TemplateMenuBar = new XmlMenu("TemplateMenuBar");

function XmlMenu(InstanceName)
{
	this.InstanceName = InstanceName;
	this.DropDownMenu = "";
	this.LastMenu = new Array();
	this.bToggleMenuUp = false;
	this.bInTimer = false;
	this.bDisableMouseOut = false;

	this.ToggleMenu = ToggleMenu;
	this.XmlMouseOver = XmlMouseOver;
	this.XmlMouseOut = XmlMouseOut;
	this.MenuTimeout = MenuTimeout;
}

function ToggleMenu(e, Menu, bCenterMenu)
{
	if (this.bToggleMenuUp)
	{
		this.bDisableMouseOut = false;
		this.bToggleMenuUp = false;
		this.XmlMouseOut(e, Menu);
		this.MenuTimeout(this.InstanceName);
		setTimeout("MenuTimeout('" + this.InstanceName + "')", 100);
		this.bInTimer = true;
	}
	else
	{
		this.bDisableMouseOut = true;
		this.bToggleMenuUp = true;
		this.XmlMouseOver(e, Menu, bCenterMenu);
	}
}

function XmlMouseOver(e, Menu, bCenterMenu)
{
	var Prefix = e.id.slice(0, e.id.indexOf("_Xml") + 1);
	if (Menu != null && Menu.length > 0)
	{
		Menu = Prefix + Menu;
		if (Menu != this.DropDownMenu)
		{
			MenuObject = document.getElementById(Menu);
			if (MenuObject != null)
			{
				if (MenuObject.getElementsByTagName("td") != null && MenuObject.getElementsByTagName("td").length > 0)
				{
					if (e.getAttribute("ParentMenu") == "True")
					{
						var ParentMenu = document.getElementById(Prefix + "XmlMenuCell." + e.id.slice(e.id.lastIndexOf(".") + 1));
						if (ParentMenu == null)
							ParentMenu = document.getElementById(Prefix + "XmlMenuCell_" + e.id.slice(e.id.lastIndexOf("_") + 1));
						if (ParentMenu != null)
						{
							var width = MenuObject.style.width;
							if (width.length > 0)
							{
								width = Number(width.substr(0, width.indexOf("px")));
								if (bCenterMenu)
								{
									MenuObject.style.left = ((GetWindowWidth() / 2) - (width / 2)) + "px";
								}
								else
								{
									var left = GetLeft(ParentMenu);
									var WindowWidth = GetWindowWidth() - 25;
									if ((left + width) > WindowWidth && (left - ((width + left) - WindowWidth)) > 0)
										MenuObject.style.left = (left - ((width + left) - WindowWidth)) + "px";
									else
										MenuObject.style.left = left + "px";
								}
							}
							else
								MenuObject.style.left = GetLeft(ParentMenu) + "px";

							if (bCenterMenu)
							{
								var height = MenuObject.style.height;
								if (height.length > 0)
								{
									height = Number(height.substr(0, height.indexOf("px")));
									MenuObject.style.top = ((GetWindowHeight() / 2) - (height / 2)) + "px";
								}
							}
							else
								MenuObject.style.top = GetTop(ParentMenu) + "px";
						}
					}
					MenuObject.style.visibility = "visible";
					HideElements("hidden");
					this.DropDownMenu = Menu;
					if (!IsNetscape)
						e.focus();
				}
			}
		}
	}
	MenuObject = document.getElementById(Prefix + "XmlMenuCell." + e.id.slice(e.id.lastIndexOf(".") + 1));
	if (MenuObject == null)
		MenuObject = document.getElementById(Prefix + "XmlMenuCell_" + e.id.slice(e.id.lastIndexOf("_") + 1));
	if (MenuObject != null)
	{
		if (MenuObject.getAttribute("NoSelection") != "True")
		{
			if (MenuObject.getAttribute("ParentMenu") == "True")
			{
				MenuObject.className = "SystemMenuCellFocused";
				MenuObject.style.cursor = "pointer";
			}
			else
			{
				MenuObject.style.backgroundColor = "#316AC5";
				MenuObject.style.color = "#ffffff";
				MenuObject.style.cursor = "pointer";
			}
		}
	}
	MenuObject = document.getElementById(Prefix + "XmlMenuItem." + e.id.slice(e.id.lastIndexOf(".") + 1));
	if (MenuObject == null)
		MenuObject = document.getElementById(Prefix + "XmlMenuItem_" + e.id.slice(e.id.lastIndexOf("_") + 1));
	if (MenuObject != null)
	{
		if (MenuObject.getAttribute("ParentMenu") == "True")
		{
			MenuObject.style.color = "#990033";
		}
		else
		{
			MenuObject.style.backgroundColor = "#316AC5";
			MenuObject.style.color = "#ffffff";
		}
		MenuObject.style.cursor = "pointer";
	}
}

function XmlMouseOut(e, Menu)
{
//	if (this.bDisableMouseOut)
//		return;

	var Prefix = e.id.slice(0, e.id.indexOf("_Xml") + 1);
	if (!this.bDisableMouseOut && Menu != null)
	{
		Menu = Prefix + Menu;
		if (Menu == this.DropDownMenu)
		{
			if (!this.bInTimer)
			{
				setTimeout("MenuTimeout('" + this.InstanceName + "')", 100);
				this.bInTimer = true;
			}
			var bExists = false;
			for (i = 0; i < this.LastMenu.length; i++)
			{
				if (this.LastMenu[i] == Menu)
				{
					bExists = true;
					break;
				}
			}
			if (!bExists)
			{
				this.LastMenu = this.LastMenu.concat(Menu);
			}
			this.DropDownMenu = "";
		}
	}

	var bActive = false;
	MenuObject = document.getElementById(Prefix + "XmlMenuItem." + e.id.slice(e.id.lastIndexOf(".") + 1));
	if (MenuObject == null)
		MenuObject = document.getElementById(Prefix + "XmlMenuItem_" + e.id.slice(e.id.lastIndexOf("_") + 1));
	if (MenuObject != null)
	{
		MenuObject.style.backgroundColor = "";
		var UnselectedColor = MenuObject.getAttribute("UnselectedColor");
		if (UnselectedColor == null)
			UnselectedColor = "Black";

		var SelectedColor = MenuObject.getAttribute("SelectedColor");
		if (SelectedColor == null || SelectedColor == "")
			SelectedColor = "#990033";

		if (MenuObject.getAttribute("Active") == "True")
		{
			MenuObject.style.color = SelectedColor;
			bActive = true;
		}
		else
			MenuObject.style.color = UnselectedColor;
		MenuObject.style.cursor = "";
	}
	MenuObject = document.getElementById(Prefix + "XmlMenuCell." + e.id.slice(e.id.lastIndexOf(".") + 1));
	if (MenuObject == null)
		MenuObject = document.getElementById(Prefix + "XmlMenuCell_" + e.id.slice(e.id.lastIndexOf("_") + 1));
	if (MenuObject != null)
	{
		if (MenuObject.getAttribute("ParentMenu") == "True" && MenuObject.getAttribute("NoSelection") != "True")
		{
			if (bActive)
				MenuObject.className = "SystemMenuCellActive";
			else
				MenuObject.className = "SystemMenuCell";
		}
		else
		{
			MenuObject.style.backgroundColor = "";
		}
		MenuObject.style.cursor = "";
	}
}

function MenuTimeout(MenuInstance)
{
	var instance = eval(MenuInstance);
	if (!instance.bToggleMenuUp)
	{
		for (i = 0; i < instance.LastMenu.length; i++)
		{
			if (instance.LastMenu[i] != instance.DropDownMenu)
			{
				MenuObject = document.getElementById(instance.LastMenu[i]);
				if (MenuObject != null)
				{
					MenuObject.style.visibility = "hidden";
					HideElements("visible");
				}
			}
		}
		instance.LastMenu = new Array();
	}
	instance.bInTimer = false;
}

function HideElements(mask)
{
	var list = MenuObject.getAttribute("Hide");
	if (list != null)
	{
		list = eval("[" + list + "]");
		for (i = 0; i < list.length; i++)
		{
			var Node = document.getElementById(list[i]);
			if (Node != null)
				Node.style.visibility = mask;
		}
	}
}