menu_principal = {};

menu_principal.menu = [];

menu_principal.adiciona = function(item){
	menu_principal.menu.push(item);
	return this;
};

menu_principal.gera_menu = function(menu){
	
	var retorno = Builder.node('div'),
		novo_item;
	
	$(menu).each(function(item){
	
		var novo_item = Builder.node('div',{className:'item'});
		
		novo_item.update(
			(item.sub_menu?
				Builder.node('div').update(item.label).setStyle({cursor:'default'}):
				Builder.node('a',{className:'menu_item', href:item.href?item.href:'javascript:void(0)'},
					Builder.node('div',{className:'menu_item'}).update(item.label)
				)
			)
			
		);
		
		
		if(item.sub_menu){
		
			novo_item.down('div').insert(Builder.node('img',{className:'menu_seta',src:'imagens/menu_seta_baixo.gif'}).setStyle({marginLeft:'5px'}));
			
			novo_item.insert(menu_principal.gera_sub_menu(item.sub_menu).hide());
			
			novo_item.observe('mouseover', function(){
			
			
			
				if(this.myOutTimer)
					clearTimeout(this.myOutTimer);
				if(!this.subAberto){
					this.subAberto = true;
					if(this.meuEfeito){
						this.meuEfeito.cancel();
						this.meuEfeito.finish();
					}
					this.meuEfeito = new Effect.BlindDown(this.down('.sub_menu_caixa'),{duration:0.2});
				}
				
				
			}).observe('mouseout', function(){
			
			

				if(this.subAberto){
					var item_acao = this.down('.sub_menu_caixa');
					var item_efeito = this;
					this.myOutTimer = setTimeout(function(){
						if(item_efeito.meuEfeito){
							item_efeito.meuEfeito.cancel();
							item_efeito.meuEfeito.finish();
						}
						item_acao.hide();
						item_efeito.subAberto=false;
					},100);
				}
				
				
				
			});
			
		}
		
		retorno.insert(novo_item);
		
		
	});
	
	return retorno;
	
};

menu_principal.gera_sub_menu = function(submenu, esquerda){

	var retorno = Builder.node('div',{className:'sub_menu_caixa'+(esquerda?'_esquerda':'')}),
		novo_item;
	
	$(submenu).each(function(item){
	
		novo_item = Builder.node('div',{className:'sub_menu_item'});
		
		novo_item.update(
			(item.sub_menu?
				Builder.node('div').update(item.label):
				Builder.node('a',{href:item.href?item.href:'javascript:void(0)'},
					Builder.node('div').update(item.label)
				)
			)
			
		);
		
		
		if(item.sub_menu){
			
			novo_item.setStyle({backgroundImage:'url(imagens/menu_seta.gif)'});
			
			novo_item.insert(menu_principal.gera_sub_menu(item.sub_menu, 1).hide());
			
			novo_item.observe('mouseover', function(){
				
				if(this.myOutTimer)
					clearTimeout(this.myOutTimer);
				if(!this.subAberto){
					this.subAberto = true;
					if(this.meuEfeito){
						this.meuEfeito.cancel();
						this.meuEfeito.finish();
					}
					
					/* Configura posição */
					var novo_x_submenu = this.down('.sub_menu_caixa_esquerda').getWidth();
					
					if((this.cumulativeOffset()[0]+novo_x_submenu+215)<$(document.body).getWidth())
						this.down('.sub_menu_caixa_esquerda').setStyle({left:'auto', right:-novo_x_submenu+'px'});
					else
						this.down('.sub_menu_caixa_esquerda').setStyle({right:'auto',left:-novo_x_submenu+'px'});
					
					/* Abre menu */
					this.meuEfeito = new Effect.BlindDown(this.down('.sub_menu_caixa_esquerda'),{duration:0.2});
				}
				
			}).observe('mouseout', function(){
				
				
				
				if(this.subAberto){
					var item_acao = this.down('.sub_menu_caixa_esquerda');
					var item_efeito = this;
					this.myOutTimer = setTimeout(function(){
						if(item_efeito.meuEfeito){
							item_efeito.meuEfeito.cancel();
							item_efeito.meuEfeito.finish();
						}
						item_acao.hide();
						item_efeito.subAberto=false;
					},100);
				}
				
				
				
			});
			
		}
		
		retorno.insert(novo_item);
		
		
	});
	
	retorno.observe('mouseover', function(){
		clearTimeout(this.parentNode.myOutTimer);
		this.parentNode.myOutTimer=false;
	});
	
	
	return retorno;
};

menu_principal.renderiza = function(){
	$('menu_principal').insert(this.gera_menu(this.menu));
};
