
var _displaymode = 0;
var _normalSchemaName = "";
var _overSchemaName = "";
var _arrPhuseMenuItems = new Array();
var _arrSchemas = new Array();
var _arrSelectedItems = new Array();

/*
	Mouse Events
*/

function MI_OVER(id, level, recursing)
{
	var item = MI_GetItem(id);
	
	item.Level = level;
	
	if(item.Timer > 0)
	{
		MI_ClearTimeout(item);
	}
	
	if(item.ParentID != null)
	{
		 MI_OVER(item.ParentID, level - 1, true)
	}
	
	if(!recursing)
		MI_CloseItems(level);
	
	MI_ItemChange(id, true)
	
	if(recursing) return;
	
	MI_AddToArray(item, _arrSelectedItems);

	var arrChildItems = new Array(); 
	arrChildItems = MI_GetChildren(item);
	
	if(arrChildItems.length > 0)
	{
		MI_CreateChildMenu(arrChildItems, item, level + 1);
	}

}
function MI_OUT(id)
{
	var item = MI_GetItem(id);

	if(item.Timer == 0)
		item.Timer = window.setTimeout("MI_ItemChange(" + id + ", false);", 100);
		
	if(item.ParentID != null)
	{
		 MI_OUT(item.ParentID);
	}
}
function MI_CLICK(id)
{
	var item = MI_GetItem(id);
	document.location.href =item.Link
}
/*
	Item Handling
*/
function MI_ClearTimeout(item)
{
	window.clearTimeout(item.Timer);
	item.Timer = 0;
}
function MI_ItemChange(id, over, closing)
{
	var item = MI_GetItem(id);

	var menuNormal = document.getElementById(item.NormalID);
	var menuOver = document.getElementById(item.OverID);
	
	if(over)
	{
		menuOver.style.display = "inline";
		menuNormal.style.display = "none";
	}
	else
	{
		menuNormal.style.display = "inline";
		menuOver.style.display = "none";

		MI_CloseSubMenu(item);
	}
}
function MI_CloseItems(level)
{
	var arrToPop = new Array();

	for(var f = 0; f < _arrSelectedItems.length; f++)
	{
		if(_arrSelectedItems[f].Level >= level)
		{
			MI_CloseSubMenu( _arrSelectedItems[f] );
			MI_ItemChange(_arrSelectedItems[f].ID, false, true);
			arrToPop.push(_arrSelectedItems[f]);
		}
	}
	for(var i = 0; i < arrToPop.length; i++)
	{
		_arrSelectedItems.pop(arrToPop[i]);
	}

}
function MI_CloseSubMenu(item)
{
	var testobj = document.getElementById(item.SubMenuID);
	
	if(testobj != null)
	{
		testobj.style.visibility = "hidden";
	}
}
/*
	Array Stuff
*/
function MI_GetChildren(item)
{
	var children = new Array();
	
	for(var f=0; f<_arrPhuseMenuItems.length; f++)
	{
		if(_arrPhuseMenuItems[f].ParentID == item.ID)
			children.push(_arrPhuseMenuItems[f]);
	}
	return children
}
function MI_HasChildrenOpen(item)
{
	var testobj = document.getElementById(item.SubMenuID);
	
	if(testobj != null)
	{
		if(testobj.style.visibility == "visible")
			return true;
	}
	return false;
}
function MI_IsInArray(obj, arrayobj)
{
	for(var f=0; f<arrayobj.length; f++)
	{
		if(arrayobj[f] == obj)
			return true;
	}
	return false;
}
function MI_AddToArray(obj, arrayObj)
{
	if(MI_IsInArray(obj, arrayObj)) return;
	arrayObj.push(obj);
}
/*
	Child Menu Stuff
*/

function MI_CreateChildMenu(children, parentItem, level)
{
	var objChild = document.getElementById(parentItem.SubMenuID);
	
	if(objChild == null)
	{
		objChild = document.createElement("div");
		objChild.setAttribute("id", parentItem.SubMenuID);
		objChild.id = parentItem.SubMenuID;
		objChild.className = "Phuse_MI_SubDiv";
		
		objChild.style.display = "inline";
		objChild.style.position = "absolute";
		objChild.style.visibility = "hidden";
		objChild.style.top = "1px";
		objChild.style.left = "1px";
		objChild.style.zIndex = level;
		
		var objForm = document.getElementById("Form1");
		objChild = objForm.appendChild(objChild);
		
		var innerHTML = "<table class=\"Phuse_MI_SubTable\">";
		
		for(var i=0;i<children.length; i++)
		{
			innerHTML += MI_CreateSubMenuItem(children[i], parentItem, level);
		}
		innerHTML += "</table>";

		objChild.innerHTML = innerHTML;
	}
	
	MI_PositionSubMenu(objChild, parentItem, level);
	
	objChild.style.visibility = "visible";
}

function MI_CreateSubMenuItem(objMenuItem, parentItem, level)
{
	var normalSchemaHTML = MI_GetSchema(_normalSchemaName); 
	var overSchemaHTML =  MI_GetSchema(_overSchemaName); 

	var schemaHTML = "";

	schemaHTML = "<tr><td onmouseover=\"MI_OVER(" + objMenuItem.ID + ", " + level + ");\""
	schemaHTML += " onmouseout=\"MI_OUT(" + objMenuItem.ID + ");\" onclick=\"MI_CLICK(" + objMenuItem.ID + ");\">"
	
	if(objMenuItem.ShowOver)
	{
		schemaHTML += MI_FormatSchema(overSchemaHTML, objMenuItem, false, level);
		schemaHTML += MI_FormatSchema(overSchemaHTML, objMenuItem, true, level);
	}
	else
	{
		schemaHTML += MI_FormatSchema(normalSchemaHTML, objMenuItem, false, level);
		schemaHTML += MI_FormatSchema(overSchemaHTML, objMenuItem, true, level);
	}
	
	schemaHTML += "</td></tr>";

	return schemaHTML;
}
function MI_FormatSchema(schemaHTML, objMenuItem, isOver, level, hasChildren)
{
	var childCount = MI_GetChildren(objMenuItem).length;

	if(!isOver)
		schemaHTML = "<div id=\"MI_" + objMenuItem.ID + "\" >" + schemaHTML + "</div>";
	else
		schemaHTML = "<div id=\"MI_" + objMenuItem.ID + "_Over\" style=\"display:none;\" >" + schemaHTML + "</div>";
	
	if(objMenuItem.Link.indexOf("http://") > -1)
		schemaHTML = schemaHTML.replace(/\[link\]/g, objMenuItem.Link);
	else
		schemaHTML = schemaHTML.replace(/\[link\]/g,objMenuItem.Link);
		
	schemaHTML = schemaHTML.replace(/\[text\]/g, objMenuItem.Text);

	schemaHTML = schemaHTML.replace(/&gt;/g, ">");
	schemaHTML = schemaHTML.replace(/&lt;/g, "<");
	
	schemaHTML = schemaHTML.replace("%5Blink%5D", objMenuItem.Link);
	schemaHTML = schemaHTML.replace("%5Btext%5D", objMenuItem.Text);

	if(childCount > 0)
		schemaHTML = schemaHTML.replace(/(\[)(img(.?)*)(\])/g, "<$2>");
	else
		schemaHTML = schemaHTML.replace(/(\[)(img(.?)*)(\])/g, "");

	return schemaHTML;
}
function MI_PositionSubMenu(objSubMenu, parentItem, level)
{
	var parentObj = null;

	if(BrowserDetect.browser == "Explorer")
		parentObj = document.getElementById(parentItem.OverID);
	else
		parentObj = document.getElementById(parentItem.OverID).parentNode;
	
	var x = findPos(parentObj)[0];
	var y = findPos(parentObj)[1];
	
	if(_displaymode == 1 && level == 1)
	{
		y += parentObj.offsetHeight;
	}
	else
	{
		x += parentObj.offsetWidth;
		
	}
	objSubMenu.style.top = y + "px";
	objSubMenu.style.left = x + "px";
}

function MI_GetSchema(id)
{
	for(var i = 0; i < _arrSchemas.length; i++)
	{
		if(_arrSchemas[i].ID == id)
			return _arrSchemas[i].Text;
	}
	return "";
}

function MI_GetItem(id)
{
	var i = 0;
	for( i = 0; i < _arrPhuseMenuItems.length; i++)
	{
		if(_arrPhuseMenuItems[i].ID == id) return _arrPhuseMenuItems[i];
	}
	return null;
}

function MenuItem(id, parentid, link, text, showOver)
{
	this.ID = id;
	this.ParentID = parentid;
	this.Link = link;
	this.Text = text;
	this.NormalID = "MI_" + this.ID;
	this.OverID = "MI_" + this.ID + "_Over";
	this.SubMenuID = "MI_SUB_" + this.ID;
	this.Timer = 0;	
	this.Level = 0;
	this.ShowOver = showOver;
}
function Schema(id, text)
{
	this.ID = id;
	this.Text = text;
}


