/* ============================================================ *
@ ¼³¸í
- ¸Þ´º Á¤º¸

@ È÷½ºÅä¸®
- 2004.08.24 EP¿ë ¼öÁ¤(ÀÓÈñµ¿)
- 2005.10.14 Show, UseAuth Ãß°¡
 * ============================================================ */
function MenuItem(menuID, parentID, display, depth, seq, width, height, useImage, outImageURL, overImageURL, selectedImageURL, linkType, serviceURL, usePopup, popupParam, show, useAuth, status)
{
	/* Properties */
	this.MenuID = menuID;
	this.ParentID = parentID;
	
	this.Display = display;
	this.Depth = depth;
	this.Seq = seq;
	
	this.Width = width;
	this.Height = height;
	
	this.UseImage = useImage;
	this.OutImageURL = outImageURL;
	this.OverImageURL = overImageURL;
	this.SelectedImageURL = selectedImageURL;
	
	this.LinkType = linkType;
	this.ServiceURL = serviceURL;

	this.UsePopup = usePopup;
	this.PopupParam = popupParam;
	this.Show = show;
	this.UseAuth = useAuth;
	this.Status = status;

	/* etc */	
	this.Parent = null;
	this.Children = new Array();
	this.ChildrenCount = 0;
	
	/* Methods */
	this.AppendChild = MenuItem_AppendChild;
	this.AppendChildLink = MenuItem_AppendChildLink;
	this.IsRootMenu = MenuItem_IsRootMenu;
	this.ChildrenIndexOf = MenuItem_ChildrenIndexOf;
}

function MenuItem_AppendChild(menuID, parentID, display, depth, seq, width, height, useImage, outImageURL, overImageURL, selectedImageURL, linkType, serviceURL, usePopup, popupParam, show, useAuth, status)
{
	this.Children[this.ChildrenCount] = new MenuItem(menuID, parentID, display, depth, seq, width, height, useImage, outImageURL, overImageURL, selectedImageURL, linkType, serviceURL, usePopup, popupParam, show, useAuth, status);
	this.ChildrenCount ++;
}

function MenuItem_AppendChildLink(menu)
{
	this.Children[this.ChildrenCount] = menu;
	this.ChildrenCount ++;
}

function MenuItem_ChildrenIndexOf(menuID)
{
	var index = -1;
	
	for(var i = 0; i < this.ChildrenCount; i ++)
	{
		var menu = this.Children[i];
		
		if(menu.MenuID == menuID)
		{
			index = i;
			break;
		}
	}
	
	return index;
}

function MenuItem_IsRootMenu()
{
	return (this.MenuID == 'Root');
}

/* ------------------------------------------------------------
	* Menu Tree
	* ------------------------------------------------------------ */
var AllMenuItems = new Array();
var root = new MenuItem('Root');

function RegisterMenuItem(menuID, parentID, display, depth, seq, width, height, useImage, outImageURL, overImageURL, selectedImageURL, linkType, serviceURL, usePopup, popupParam, show, useAuth, status)
{
	AllMenuItems[AllMenuItems.length] = new MenuItem(menuID, parentID, display, depth, seq, width, height, useImage, outImageURL, overImageURL, selectedImageURL, linkType, serviceURL, usePopup, popupParam, show, useAuth, status);
}

function MakeMenuTree()
{
	for(var i = 0; i < AllMenuItems.length; i ++)
	{
		var menu = AllMenuItems[i];
		
		if(menu.ParentID == 'Root')
		{
			root.AppendChildLink(menu);
		}
		else
		{
			for(var j = 0; j < AllMenuItems.length; j ++)
			{
				var dest = AllMenuItems[j];
				
				if(menu.ParentID == dest.MenuID)
				{
					dest.AppendChildLink(menu);
					break;
				}
			}
		}
	}
	
	for(var i = 0; i < root.ChildrenCount; i ++)
	{
		var menu = root.Children[i];
		
		for(var j = 0; j <  menu.ChildrenCount; j ++)
		{
			var sub = menu.Children[j];
		}
	}
}

function IndexFromAllMenuItems(menuID)
{
	var result = -1;
	
	for(var i = 0; i < AllMenuItems.length; i ++)
	{
		if(AllMenuItems[i].MenuID == menuID)
		{
			result = i;
			break;
		}
	}
	
	return result;
}