var AccordianMenu = {
	RootElement : Object,
	ActiveSectionId : String,
	IsCollapable : Boolean,
	ActiveBranchFound : Boolean,
	Init : function(_rootElementId, _activeSectionId, _isCollapable) 
	{
		this.RootElement = YAHOO.util.Dom.get(_rootElementId);
		this.IsCollapable = _isCollapable;
		this.ActiveBranchFound = false;
		if(YAHOO.util.Dom.get(_activeSectionId) != undefined)
		{
			this.ActiveSectionId = YAHOO.util.Dom.get(_activeSectionId).value;
			this.Run();
		}
	},
	Run : function() 
	{
		if(this.ActiveSectionId != null)
		{
			for(var i=0;i<this.RootElement.childNodes.length;i++)
			{
				var currentNode = this.RootElement.childNodes[i];
				//find first li
				if(currentNode.nodeName == "LI")
				{
					// find first a
					for(var j=0;j<currentNode.childNodes.length;j++)
					{
						if(currentNode.childNodes[j].nodeName == "A")
						{
							var linkElement = currentNode.childNodes[j];
							//alert('linkElement.id('+linkElement.id+') == this.ActiveSectionId('+this.ActiveSectionId+')');
							// check if active section id = a id
							if(linkElement.id == this.ActiveSectionId)
							{
								//alert('isActiveBranch');
								this.ActiveBranchFound= true;
							}
						}
						else if(currentNode.childNodes[j].nodeName == "UL")
						{
							// else check if child is active
							var nestedListElement = currentNode.childNodes[j];
							//alert('checking if child is active in current node');
							// check if active section id = a id
							if(this.ChildIsActive(currentNode.childNodes[j]))
							{
								//alert('ChildIsActive');
								this.ActiveBranchFound= true;
							}
						}
						if(this.ActiveBranchFound == true)
						{
							this.ShowActiveBranch(currentNode);
							return;
						}
					}
				}
				if(this.ActiveBranchFound == true)
					return;
			}
		}
		
	},
	HasChildren : function(nodeElement)
	{
		var hasChildren = false;
		if(nodeElement.nodeName == "LI")
		{
			// find first a
			for(var j=0;j<nodeElement.childNodes.length;j++)
			{
				if(nodeElement.childNodes[j].nodeName == "UL")
				{
					hasChildren = true;
				}
			}
		}
		return hasChildren;
	},
	ChildIsActive : function(nodeElement)
	{
		var childIsActive = false;
		for(var i=0;i<nodeElement.childNodes.length;i++)
		{
			var currentNode = nodeElement.childNodes[i];
			//find first li
			if(currentNode.nodeName == "LI")
			{
				// find first a
				for(var j=0;j<currentNode.childNodes.length;j++)
				{
					if(currentNode.childNodes[j].nodeName == "A")
					{
						var linkElement = currentNode.childNodes[j];
						//alert('linkElement.id('+linkElement.id+') == this.ActiveSectionId('+this.ActiveSectionId+')');
						// check if active section id = a id
						if(linkElement.id == this.ActiveSectionId)
						{
							//alert('isActiveBranch');
							childIsActive= true;
						}
					}
					else if(currentNode.childNodes[j].nodeName == "UL")
					{
						// else check if child is active
						var nestedListElement = currentNode.childNodes[j];
						//alert('checking if child is active in current node');
						// check if active section id = a id
						if(this.ChildIsActive(currentNode.childNodes[j]))
						{
						//	alert('ChildIsActive');
							childIsActive= true;
						}
					}
					if(childIsActive == true)
						return childIsActive;
				}
			}
			if(childIsActive == true)
				return childIsActive;
		}
		return childIsActive;
	},
	ShowActiveBranch : function(nodeToShow)
	{
		//alert('Show active branch');
		if(nodeToShow.nodeName == "LI")
		{
			for(var j=0;j<nodeToShow.childNodes.length;j++)
			{
				if(nodeToShow.childNodes[j].nodeName == "UL")
				{
					nodeToShow.childNodes[j].style.display = 'block';
				}
				else if (nodeToShow.childNodes[j].nodeName == "A")
				{
					var linkElement = nodeToShow.childNodes[j];
					linkElement.className = 'menulistActiveSection';
				}
			}
		}
	}
	// 
}

function InitMenu() {
	AccordianMenu.Init('Menu_Root', 'MENUID', true);
}

// Initialize on load
YAHOO.util.Event.addListener(window, "load", InitMenu);
