var gEksMenus = Array();

function EksMenu(aName)
{
	// Properties
	if(gEksMenus[aName]) // A menu with that name has already been constructed
	{
		this.pName			= gEksMenus[aName].pName;
		this.pMain			= gEksMenus[aName].pMain;
		this.pParent		= gEksMenus[aName].pParent;
		this.pMenuNumber	= gEksMenus[aName].pMenuNumber;
		this.pItemNumber	= gEksMenus[aName].pItemNumber;
		this.pOrientation	= gEksMenus[aName].pOrientation;
		this.pAlwaysVisible = gEksMenus[aName].pAlwaysVisible;
		this.pLeft			= gEksMenus[aName].pLeft;
		this.pTop			= gEksMenus[aName].pTop;
		this.pWidth			= gEksMenus[aName].pWidth;
		this.pHeight		= gEksMenus[aName].pHeight;
		this.pRight			= gEksMenus[aName].pRight;
		this.pBottom		= gEksMenus[aName].pBottom;
		this.pItems			= gEksMenus[aName].pItems;
		this.pStyle			= gEksMenus[aName].pStyle;
		this.pItemStyle		= gEksMenus[aName].pItemStyle;
		this.pStyleMenuBox	= gEksMenus[aName].pStyleMenuBox;
		this.pHideSubmenus	= gEksMenus[aName].pHideSubmenus;
	}
	else  // menu with that name does not exist yet
	{
		this.pName;
		this.pMain=false;
		this.pParent;
		this.pMenuNumber;
		this.pItemNumber = 0;
		this.pOrientation = "vertical";
		this.pAlwaysVisible = false;
		this.pLeft		= 0;
		this.pTop		= 0;
		this.pWidth		= 0;
		this.pHeight	= 0;
		this.pRight		= 0;
		this.pBottom	= 0;
		this.pItems = new Array();
		this.pStyle = new Array();
		if (typeof(gMenuStyle)!= "undefined")
		{
			for(lKey in gMenuStyle) this.pStyle[lKey] = gMenuStyle[lKey];
		}
		this.pItemStyle = new Array();
		if (typeof(gMenuItemStyle)!= "undefined")
		{
			for(lKey in gMenuItemStyle) this.pItemStyle[lKey] = gMenuItemStyle[lKey];
		}
		this.pStyleMenuBox	= new Array();
		this.pHideSubmenus = false;
	}

	// Methods
	this.Open = EksMenuOpen;
	this.Close = EksMenuClose;
	this.AddItem = EksMenuAddItem;
	this.SetSubMenus = EksMenuSetSubMenus;

	// Operation
	this.pName = aName;
	this.pStyleMenuBox["visibility"] = "hidden";
	gEksMenus[aName] = this;
}

function EksMenuOpen()
{
	var lElem;
	if(this.pAlwaysVisible == false)this.pStyle["visibility"]="hidden";
	var lStyle = EksCmnCssMakeStylestringFromArray(this.pStyle);
	var lStyleMenuBox = EksCmnCssMakeStylestringFromArray(this.pStyleMenuBox);
	var lWidth = (this.pWidth == 0)? "" : "width="+this.pWidth;
	var lMenuClass = "class=\"menu"+this.pOrientation+"\"";
	lMouseout  = (this.pHideSubmenus==true)? "" : "onmouseout=EksMenuCmnHideSubmenus()";
	lMouseover = (this.pHideSubmenus==true)? "onmouseover=EksMenuCmnHideSubmenus()" : "";
	lMouseover = "";
	lMouseout = "";
	if(this.pMain==true)
	{
		document.write("<div id=\"eksmenu\" class=\"menu\" "+lStyleMenuBox+" onmouseover=EksMenuCmnHideSubmenus()></div>");
		lElem = EksCmnDocGetElement("eksmenu");
		//lElem.style.width = 512;
		//lElem.style.height = 200;
	}
	document.write("<div id=\""+this.pName+"\" "+lMenuClass+" "+lWidth+" "+lMouseout+" "+lMouseover+" "+lStyle+">");
	//if(this.pName == "AssessOwn") document.write(lStyle);
	lElem = EksCmnDocGetElement(this.pName);
	this.pLeft	= lElem.offsetLeft;
	this.pTop	= lElem.offsetTop;
}

function EksMenuClose()
{
	//document.write("</div>");
	this.SetSubMenus();
	document.write("</div>");
}

function EksMenuAddItem (aText, aDescription, aUrl, aSubMenu )
{
	var lItem;
	var lName = this.pName+this.pItemNumber;
	var lSubMenu;
	var lElem;
	with(lItem = new EksMenuItem(lName))
	{
		lItem.pParent = this;
		lItem.pParentMenu = this.pName;
		//lItem.pStyle = this.pItemStyle;
		for(lKey in this.pItemStyle) lItem.pStyle[lKey] = this.pItemStyle[lKey];
		lItem.pText = aText;
		lItem.pUrl = aUrl;
		lItem.pOrientation = this.pOrientation;
		lItem.pLeft0 = this.pLeft;
		lItem.pTop0 = this.pTop;
		lItem.pDescription = aDescription;
		lItem.pSubMenu = aSubMenu;
		lItem.Show();
		if(aSubMenu != "")
		{
			lSubMenu = new EksMenu(aSubMenu);
			lSubMenu.pParent = this;
			if(this.pOrientation == "horizontal")
			{
				lSubMenu.pStyle["left"] = lItem.pLeft;
				lSubMenu.pStyle["top"] = lItem.pBottom;
			}
			else
			{
				lSubMenu.pStyle["left"] = lItem.pRight;
				lSubMenu.pStyle["top"] = lItem.pTop;
			}
			gEksMenus[aSubMenu] = lSubMenu;
		}
		this.pRight = (this.pRight > lItem.pRight)? this.pRight : lItem.pRight;
	}
	this.pItems[this.pItemNumber] = lItem;
	this.pItemNumber++;
}

function EksMenuSetSubMenus()
{
	var lNr, lItem;
	for(lNr=0;lNr<this.pItemNumber;lNr++)
	{
		lItem = this.pItems[lNr];
		if(lItem.pSubMenu != "")
		{
			lSubMenu = gEksMenus[lItem.pSubMenu];
			if(this.pOrientation == "horizontal")
			{
				lSubMenu.pStyle["left"] = lItem.pLeft;
				lSubMenu.pStyle["top"] = lItem.pBottom;
			}
			else
			{
				lSubMenu.pStyle["left"] = this.pRight;
				lSubMenu.pStyle["top"] = lItem.pTop;
			}
		}
	}
}

