//
// (c) 2007 webActive
//

Interface.MenuContainer = new Class(
{
	initialize: function(domElement, parentContainer)
	{
		this.domElement = domElement;
	 	this.parentContainer = parentContainer;	
		this.menuItems = new Array();
		this.hideTimeout = null;
		
		this.setupMenuContainer();
	},
	
	setupMenuContainer: function()
	{
		var domItems = this.domElement.getElementsByTagName('li');
		var i = domItems.length;

		do
		{
			if (domItems[i - 1].parentNode == this.domElement)
			{
				if(domItems[i - 1].className != 'Selected')
					this.menuItems.push(new Interface.MenuItem(domItems[i - 1], this));
			}
		}
		while (--i);
	},
	
	onRollOver: function()
	{
		clearTimeout(this.hideTimeout);
		this.hideTimeout = null;
		
		this.domElement.style.display = 'block';
		this.domElement.style.top = '';
		
		var elementHeight = this.domElement.offsetHeight;
		var elementTop = getOffset(this.domElement).top;
		
		var windowHeight = document.documentElement ? document.documentElement.clientHeight : window.innerHeight;
		var windowTop = document.documentElement ? document.documentElement.scrollTop : window.pageYOffset;
		
		if (elementTop + elementHeight + 10 > windowTop + windowHeight)
			this.domElement.style.top = (windowTop + windowHeight - (elementTop + elementHeight + 10)) + 'px';
	},
	
	onRollOut: function()
	{
		this.hideTimeout = setTimeout(this.hideContainer.bind(this), 500);
	},
	
	hideContainer: function()
	{

		this.domElement.style.display = 'none';
		clearTimeout(this.hideTimeout);
	},
	
	hideChildContainers: function()
	{
		var i = this.menuItems.length;

		while (i--)
		{
			if (this.menuItems[i].childContainer && this.menuItems[i].childContainer.hideTimeout != null)
			{
				this.menuItems[i].childContainer.hideChildContainers();
				this.menuItems[i].childContainer.hideContainer();
			}
		}
	}
});