if( typeof namespace == 'undefined' ){
	namespace = {};
}

$(document).ready(function() {
	if( namespace.nav.autoInit ){
		namespace.nav.init();
	}
});

namespace.nav = 
{
	/////////////////////////////////////////////
	// Define the properties of the class
	/////////////////////////////////////////////
	autoInit				        : true,
	_selector_menubar	        	: '#menubar',
	_selector_menuItems		        : '#menubar li',
	_time_hideSubMenus	        	: 1000,
	
	/////////////////////////////////////////////
	// Function - namespace.nav.init
	/////////////////////////////////////////////
	init : function()
	{
		namespace.nav.setActions();
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.setActions
	/////////////////////////////////////////////
	setActions : function()
	{
		var menuItemIdx = 0;
		var intMenuItemCount = $(namespace.nav._selector_menuItems).size();
		
		namespace.nav.setActions_MainMenu();
		
		$(namespace.nav._selector_menuItems).each( function(){
			menuItemIdx++;
			namespace.nav.setActions_MenuItem( $(this), menuItemIdx, intMenuItemCount );
		});
		$(namespace.nav._selector_menuItems).find('table.active').show();
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.setActions_MainMenu
	/////////////////////////////////////////////
	setActions_MainMenu : function()
	{
		$(namespace.nav._selector_menubar)
			.mouseover( namespace.nav.stopHideSubMenuTimeout )
			.bind("mouseleave",namespace.nav.startHideSubMenuTimeout);
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.setActions_MenuItem
	/////////////////////////////////////////////
	setActions_MenuItem : function( _menuItem, _currentItem, _itemCount )
	{
		var offset = ( _menuItem.find('table').width() - _menuItem.width() ) / (-2);
		
		// check right limit
		if( offset + _menuItem.find('table').width() > (_itemCount - _currentItem + 1) * _menuItem.width() ){
			offset = _menuItem.width() - _menuItem.find('table').width();
		}
		
		_menuItem.mouseover( function(){
			namespace.nav.showSubMenu(_menuItem);
		});
		
		_menuItem.find('table').css('left', offset );
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.showSubMenu
	/////////////////////////////////////////////
	showSubMenu : function( _menuItem )
	{
		namespace.nav.hideActiveSubMenu();
		_menuItem.find('table')
			.show();
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.hideActiveSubMenuNotMain
	/////////////////////////////////////////////
	hideActiveSubMenuNotMain : function()
	{
	    $(namespace.nav._selector_menuItems).find('table.active').show();
		$(namespace.nav._selector_menuItems).find('table:not(table.active)').hide();
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.hideActiveSubMenu
	/////////////////////////////////////////////
	hideActiveSubMenu : function()
	{
	    
		$(namespace.nav._selector_menuItems).find('table').hide();
	},
	
	
	/////////////////////////////////////////////
	// Function - namespace.nav.startHideSubMenuTimeout
	/////////////////////////////////////////////
	startHideSubMenuTimeout : function()
	{
		namespace.nav.stopHideSubMenuTimeout();
		namespace.nav.hideSubMenuTimeout = setTimeout( namespace.nav.hideActiveSubMenuNotMain, namespace.nav._time_hideSubMenus );
	},
	
	/////////////////////////////////////////////
	// Function - namespace.nav.stopHideSubMenuTimeout
	/////////////////////////////////////////////
	stopHideSubMenuTimeout : function()
	{
		if( typeof namespace.nav.hideSubMenuTimeout != 'undefined' ){
			clearTimeout( namespace.nav.hideSubMenuTimeout );
		}
	}
};