/**
 * 
 */
function initSite()
{
	/**
	 * Função para configuração de botões do site
	 */
	dojo.forEach(dojo.query('span.buttonDojo'), function(button){
		/**
		 * Inicia variaveis de utilização
		 */
		var content = button.innerHTML;
		var url = dojo.attr( button , 'url' );
		var target = dojo.attr( button , 'target' );
		var classes = dojo.attr( button , 'classes' );
		var right = dojo.attr( button , 'right' );
		
		/**
		 * Testa conteudos e os trata
		 */
		if ( target == null ) target = '';
		if ( classes == null ) classes = '';
		
		/**
		 * Exclui atributos e classes desnecessárias
		 */
		dojo.removeAttr( button , 'url' );
		dojo.removeAttr( button , 'target' );
		dojo.removeClass( button , 'buttonDojo' );
		
		/**
		 * Adiciona classe do button
		 */
		dojo.addClass( button , 'button' );
		if ( right == 'true' ) dojo.addClass( button , 'fRight' );
		
		
		
		/**
		 * Modifica o conteudo e adiciona os filhos
		 */
		button.innerHTML = '<a href="'+url+'" target="'+target+'" class="button '+classes+'">'+content+'</a>';
	});
	
	/**
	 * Adiciona o Evento as abas tabs
	 */
	dojo.query('.tab', 'my-tabs').onclick(function(tab){
		tabSelected(this);
	});
	/**
	 * Função de seleção das tabs
	 * @param node
	 */
	function tabSelected(node){
		/**
		 * Modifica os botoes da tabs resetando a adicionando o active
		 */
		dojo.query('#my-tabs > .tab > span').removeClass('active');
		dojo.query('span', node).addClass('active');
		
		/**
		 * modifica visualização dos conteudos das tabs
		 */
		dojo.query('.content-tab').forEach(function(cont){
			dojo.style( cont , 'display' , 'none' );
		});
		dojo.style(dojo.byId(dojo.attr(node, 'target')), 'display', 'block');
	};
	
	dojo.query('.cpST').forEach(function(cp){
		dojo.connect(cp, 'onfocus', function(){
			if ( this.value == dojo.attr( this , 'alt' ) ) {
				this.value = '';
			}
		});
		dojo.connect(cp, 'onblur', function(){
			if ( this.value == '' ) {
				this.value = dojo.attr( this , 'alt' );
			}
		});
	});
	
	/**
	 * Fade de entrada e saida do menu
	 */
	dojo.query('ul.navigation li ul').forEach(function(obj){
		
		//seta inicialização dos ULs
		dojo.style( obj , 'display', 'none');
		// seta o li pai do ul
		var li = obj.parentElement;
		// Adiciona evento de entrada de mouse
		dojo.connect( li , 'mouseenter', function(){
			dojo.style( obj , 'display', 'block' );
			dojo.style( obj , 'opacity', '0' );
			dojo.fadeIn({ node: obj }).play();
		});
		//Adiciona evento de saida de mouse
		dojo.connect( li , 'mouseleave', function(){
			dojo.style( obj , 'opacity', '1' );
			dojo.fadeOut({
				node: obj,
				onEnd: function(){
					dojo.style( obj , 'display', 'none' );
				}
			}).play();
		});
	});
}
dojo.ready(initSite);
/**
 * Função para envio de Formulários
 * @param msg
 * @param form
 */
function enviarForm(msg, form){
	var $this = dojo.byId(form);															// Carrega o formulario
    var hasError = false;																	// Carrega o form sem erros
    dojo.query('.error', $this).forEach(function(obj){										// Apaga todos os erros do formulario
    	dojo.destroy(obj);
    });
    dojo.query('.requiredField', $this).forEach(function(obj) {								// Faz um loop pelos campos requeridos
    	if( obj.value == '' ) {																// Verifica se o campo esta igual ao seu valor original
    		obj.parentNode.innerHTML = 														// Cria o objeto erro e adiciona a div do campo
    			obj.parentNode.innerHTML + 
    			('<span class="error">campo requerido</span>');		
    		hasError = true;																// Informa o sistema que o form tem erro 
    	} else if( dojo.hasClass( obj , 'email' ) ) {										// Caso o campo esteja correto verifica se o tipo de campo é do tipo email
    		var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;							// Carrega a RegExp
    		var em = obj.value;
			if( !emailReg.test(obj.value) ) {												// Testa a RegExp no valor do campo
				var labelText = dojo.attr(obj , 'alt');										// Carrega o nome do campo
				obj.parentNode.innerHTML = 													// Cria o objeto erro e adiciona a div do campo
					obj.parentNode.innerHTML + 
					('<span class="error">email inválido</span>');
				hasError = true;															// Informa o sistema que o form tem erro
			}
			obj.value = em;
    	}
    });
    if ( !hasError ) {
    	var xhrArgs = {																				// Carrega as configuração de envio
			url: dojo.attr($this, 'action'),
			form: $this,																			// Informa que o envio é do tipo form e passa o mesmo
			handleAs: 'json',																			// Informa que o envio é do tipo form e passa o mesmo
            load: function(data) {																	// Se carregado com sucesso
            	if ( data.result == 'error' )
        		{
            		$this.parentNode.innerHTML = 													// Informa a msg de sucesso no envio
                		"<br /><br />" + $this.parentNode.innerHTML + 'error:<br />' + data.error;
        		}else{
        			$this.parentNode.innerHTML = 													// Informa a msg de sucesso no envio
                		"<br /><br />" + $this.parentNode.innerHTML + msg;
        		}
            },
            error: function(error) {																// Se tiver erro no envio
            	$this.parentNode.innerHTML = 														// Informa a msg de erro
            		$this.parentNode.innerHTML + msg;
            }
        };
    	var deferred = dojo.xhrPost(xhrArgs);														// envia o formulário																				// Se o form nao tiver erro
    	
    	dojo.fadeOut({																				// Esconde o formulário
    		node : $this,
    		onEnd: function(){
    			dojo.style($this, 'display', 'none');
    		}
    	}).play();
    }
}
