
//--------------------------------------------------------------------------
// Class: Menu
// All the functionality for the menu on the public section.
//--------------------------------------------------------------------------
function Menu()
{
	
	//----------------------------------------------------------------------
	// Public Variables
	//----------------------------------------------------------------------	
	this.menu = $$( 'menu' );
	this.menu_items = $( this.menu.elmsByTag( 'ul' )[0] ).elmsByTag( 'li' );
	this.active_menu_item = null;
	this.section = '';
	
	// Set the menu's height to be the full height of the content area.
	this.menu.dimensions( null, ($$( 'content' ).dimensions()[1] - 20) );
	
	var menu_obj = this;	
	Legato_Events_Handler.addEvent( this.menu, 'onmouseover', function(){ menu_obj.mouseOverMenu(); } );
	Legato_Events_Handler.addEvent( this.menu, 'onmouseout', function(){ menu_obj.mouseOutMenu(); } );
	
	this.menu_items.each
	(
		function()
		{
			var menu_item = $( this );			
			if ( !menu_item.hasClass( 'inactive' ) ) menu_obj.section = menu_item;				
			Legato_Events_Handler.addEvent( this, 'onmouseover', function(){ menu_obj.mouseOverItem( menu_item ); } );
			Legato_Events_Handler.addEvent( this, 'onmouseout', function(){ menu_obj.mouseOutItem( menu_item ); } );
			Legato_Events_Handler.addEvent( $$( menu_item.id + '_popout' ), 'onmouseover', function(){ menu_obj.mouseOverItem( menu_item ); } );
			Legato_Events_Handler.addEvent( $$( menu_item.id + '_popout' ), 'onmouseout', function(){ menu_obj.mouseOutItem( menu_item ); } );
		}
	);
	
}
	
	
//----------------------------------------------------------------------
// Public Member Functions
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// Function: mouseOverMenu()
// Called when the menu is moused over.
//----------------------------------------------------------------------
Menu.prototype.mouseOverMenu = function()
{
	
	var menu = this;
	
	// Set all the menus as inactive.
	this.menu_items.each
	(
		function()
		{
			if ( menu.active_menu_item != this )
				$( this ).addClass( 'inactive' );		
		} 
	);
	
}


//----------------------------------------------------------------------
// Function: mouseOutMenu()
// Called when the menu is moused out of.
//----------------------------------------------------------------------
Menu.prototype.mouseOutMenu = function()
{
	
	var menu = this;
	
	// Set all the menus as active again.
	this.menu_items.each
	(
		function()
		{
			if ( menu.section == this )
				$( this ).removeClass( 'inactive' );		
		} 
	);
	
}


//----------------------------------------------------------------------
// Function: mouseOverItem()
// Called when a menu item is moused over.
//----------------------------------------------------------------------
Menu.prototype.mouseOverItem = function( menu_item )
{
	
	// Set this menu as active.
	$( menu_item ).removeClass( 'inactive' );
	this.active_menu_item = menu_item;
	
	// Show the pop out menu.
	this.showPopout( menu_item );
	
}


//----------------------------------------------------------------------
// Function: mouseOutItem()
// Called when a menu item is moused out of.
//----------------------------------------------------------------------
Menu.prototype.mouseOutItem = function( menu_item )
{
	
	// Set this menu as inactive.
	$( menu_item ).addClass( 'inactive' );
	this.active_menu_item = null;
	
	// Hide the pop out menu.
	this.hidePopout( menu_item );
	
}


//----------------------------------------------------------------------
// Function: showPopout()
// Shows the popout menu for this menu item.
//----------------------------------------------------------------------
Menu.prototype.showPopout = function( menu_item )
{
	
	var popout = $$( menu_item.id + '_popout' );	
	var pos = menu_item.position();
	
	popout.setStyle( 'display', 'block' );
	popout.position( (pos[0] + 74), (pos[1] - popout.dimensions()[1] * 0.5 + 27) );
	
}


//----------------------------------------------------------------------
// Function: hidePopout()
// Hides the popout menu for this menu item.
//----------------------------------------------------------------------
Menu.prototype.hidePopout = function( menu_item )
{
	
	var popout = $$( menu_item.id + '_popout' );
	
	popout.setStyle( 'display', 'none' );
	
}

var menu = new Menu();