OHModules.menu = (function(NameSpace)
{	
	var menu;
	var totalOptions;
	var options;
	var currentOption;
	var submenuids = Object();
	var positions = Object();
	var timeout;
	var subMenu = false;
	
	function init(){		
		menu = jQuery(document.getElementById('menu'));	
		options = jQuery(menu).find('a');	
		options.each(function(){
			
			submenuids[this.id] = jQuery(document.getElementById(this.id+'-submenu'));
			
			/*Eventos del submenu*/
			if(submenuids[this.id].attr('id'))
				submenuids[this.id].hover(function(){
					clearTimeout(timeout); 
					modules.menu.setOption(str_replace('-submenu','',this.id));
					},
					function(){
					modules.menu.subMenu = false;
					clearTimeout(timeout); 
					jQuery('#'+str_replace('-submenu','',this.id)).removeClass('current-cat');
					submenuids[str_replace('-submenu','',this.id)].hide();
				});
			
			/*Posicion de los elementos del menu*/
			var offset = jQuery(document.getElementById(this.id)).offset();
			positions[this.id] = offset.left;
			
			/*Eventos del menu*/
			if(submenuids[this.id].attr('id')){
				jQuery(this).hover(function(){jQuery(this).addClass('current-cat');modules.menu.showSubMenu(jQuery(this).attr('id'));},function(){modules.menu.hideSubMenu(jQuery(this).attr('id'));});
				
				}
			else{
				jQuery(this).hover(function(){if(currentOption){submenuids[currentOption].hide();}});
			}
		});
		totalOptions = options.length;
	};
	
	function showSubMenu(id){
		clearTimeout(timeout);
		
		if(currentOption)
			{
			jQuery('#'+currentOption).removeClass('current-cat');
			submenuids[currentOption].hide();
			}
			
		currentOption = id;
		if(submenuids[id])
			submenuids[id].css({'left':positions[id]}).show();
	};
	
	function hideSubMenu(id){
		if(submenuids[id]){
			timeout = setTimeout('modules.menu.hideSubMenuTimeout("'+id+'")',200);
		}
	};
	
	function hideSubMenuTimeout(id){
		if(currentOption != id || (currentOption == id && subMenu==false)){
			jQuery('#'+id).removeClass('current-cat');
			submenuids[id].hide();
		}
	};
	
	function str_replace (search, replace, subject)
	{
	var result = "";
	var  oldi = 0;
	for (i = subject.indexOf (search); i > -1; i = subject.indexOf (search, i))
	{
	result += subject.substring (oldi, i);
	result += replace;
	i += search.length;
	oldi = i;
	}
	return result + subject.substring (oldi, subject.length);
	};
	function setOption(id){
		currentOption = id;
	}
	return {
		init:init,
		showSubMenu:showSubMenu,
		hideSubMenu:hideSubMenu,
		hideSubMenuTimeout:hideSubMenuTimeout,
		setOption:setOption
	}
	
})(OHModules);
jQuery(document).ready(function(){OHModules.menu.init();});
