CmsMenu.prototype.__type = "CmsMenu";
CmsMenu.prototype.MainItems = Array();
CmsMenu.prototype.ContainerrDiv = null;
CmsMenu.prototype.ContainerTable = null;
CmsMenu.prototype.ContainerTableRow = null;
CmsMenu.prototype.LeftMaginCell = null;
CmsMenu.prototype.RightMaginCell = null;

function CmsMenu(hContainerDiv) {
	
	this.ContainerDiv = hContainerDiv;
	
	// Declare variables
	var newCell;
	
	// Create table
	this.ContainerTable = document.createElement("TABLE");
	this.ContainerDiv.appendChild(this.ContainerTable);
	this.ContainerTable.cellPadding = 0;
	this.ContainerTable.cellSpacing = 0;
	this.ContainerTable.className = "menuTable";
	this.ContainerTable.width = 720;
	
	// Create table content
	this.ContainerTableRow = this.ContainerTable.insertRow(-1);
	newCell = this.ContainerTableRow.insertCell(-1);
	newCell.className = "menuTableLeft";
	newCell = this.ContainerTableRow.insertCell(-1);
	newCell.className = "menuTableSpacer";
	newCell = this.ContainerTableRow.insertCell(-1);
	newCell.className = "menuTableFiller";
	newCell.innerHTML = "&nbsp;";
	newCell = this.ContainerTableRow.insertCell(-1);
	newCell.className = "menuTableRight";
}

CmsMenu.prototype.AddItem = function(mainMenuItem) {
	
	// Declare variables
	var index;
	
	// Store item
	this.MainItems.push(mainMenuItem);
	
	// Add menu item cell to cells in table
	index = this.ContainerTableRow.childNodes.length - 2;
	this.ContainerTableRow.insertBefore(mainMenuItem.Cell, this.ContainerTableRow.childNodes[index]);
}

CmsMenuMainItem.prototype.__type = "CmsMenuMainItem";
CmsMenuMainItem.prototype.Items = Array();
CmsMenuMainItem.prototype.Text = "New menu item";
CmsMenuMainItem.prototype.Cell = null;
CmsMenuMainItem.prototype.ButtonBase = null;
CmsMenuMainItem.prototype.SubItemPanel = null;
CmsMenuMainItem.prototype.Visible = false;
CmsMenuMainItem.prototype.CellMouseOver = false;
CmsMenuMainItem.prototype.PanelMoutOver = false;

function CmsMenuMainItem(text) {

	CmsMenuMainItem.Text = text;

	// Declare variables
	var newP, newDiv;
	
	// Create cell
	this.Cell = document.createElement("TD");
	this.Cell.className = "menuTableButtonBase";
	this.Cell.owningClass = this;
	this.Cell.onmouseover = this.OnMouseOver;
	this.Cell.onmouseout = this.OnMouseOut;
	
	this.ButtonBase = document.createElement("DIV");
	this.ButtonBase.className = "menuTableButton";
	this.Cell.appendChild(this.ButtonBase);
	
	newP = document.createElement("P");
	newP.appendChild(document.createTextNode(text));
	this.ButtonBase.appendChild(newP);
	
	this.SubItemPanel = document.createElement("DIV");
	this.SubItemPanel.className = "menuPanelDisplayHidden";
	this.SubItemPanel.owningClass = this;
	this.SubItemPanel.onmouseover = this.OnMouseOver;
	this.SubItemPanel.onmouseout = this.OnMouseOut;
	this.Cell.appendChild(this.SubItemPanel);
}

CmsMenuMainItem.prototype.OnMouseOver = function(e) {

	// Declare variables
	var srcClass, oEvent;
	
	srcClass = this.owningClass;
	
	if(window.event) {
	
		// Windows IE and DOM level 2
		// Bug: using window.event seems to slowdown event handling in IE. Perhaps IE takes a lot of time setting the window.event object.
		oEvent = window.event;
	} else {
	
		// Firefox
		oEvent = e;
	}
	
	if(this == srcClass.Cell) {
		
		srcClass.CellMouseOver = true;
		if(!srcClass.Visible)
			srcClass.Show();
	} else if(this == srcClass.SubItemPanel) {
	
		srcClass.PanelMouseOver = true;
		if(!srcClass.Visible)
			srcClass.Show();
	}
}

CmsMenuMainItem.prototype.OnMouseOut = function(e) {
	
	// Declare variables
	var srcClass, oEvent;
	
	srcClass = this.owningClass;
	
	if(window.event) {
	
		// Windows IE and DOM level 2
		// Bug: using window.event seems to slowdown event handling in IE. Perhaps IE takes a lot of time setting the window.event object.
		oEvent = window.event;
	} else {
	
		// Firefox
		oEvent = e;
	}
	
	if(this == srcClass.Cell) {
		
		srcClass.CellMouseOver = false;
		if(!srcClass.CellMouseOver && !srcClass.PanelMouseOver && srcClass.Visible)
			srcClass.Hide();
	} else if(this == srcClass.SubItemPanel) {
	
		srcClass.PanelMouseOver = false;
		if(!srcClass.CellMouseOver && !srcClass.PanelMouseOver && srcClass.Visible)
			srcClass.Hide();
	}
}

CmsMenuMainItem.prototype.Show = function() {
	
	this.Visible = true;
	this.ButtonBase.className = "menuTableButtonHover";
	this.SubItemPanel.className = "menuPanelDisplay";
}

CmsMenuMainItem.prototype.Hide = function() {

	this.Visible = false;
	this.ButtonBase.className = "menuTableButton";
	this.SubItemPanel.className = "menuPanelDisplayHidden";
}

CmsMenuMainItem.prototype.AddItem = function(menuItem) {

	// Store item
	this.Items.push(menuItem);
	
	// Add link object to div
	this.SubItemPanel.appendChild(menuItem.LinkObject);
}

CmsMenuItem.prototype.__type = "CmsMenuItem";
CmsMenuItem.prototype.Text = "";
CmsMenuItem.prototype.Href = "#";
CmsMenuItem.prototype.LinkObject = null;

function CmsMenuItem(text, hRef) {
	
	// Declare variables
	var newDiv, newP;
	
	// Store values
	this.Text = text;
	this.Href = hRef;
	
	// Create link object
	this.LinkObject = document.createElement("A");
	this.LinkObject.href = hRef;
	this.LinkObject.className = "menuLink";
	
	newDiv = document.createElement("DIV");
	this.LinkObject.appendChild(newDiv);
	
	newP = document.createElement("P");
	newDiv.appendChild(newP);
	newP.appendChild(document.createTextNode(text));
}