(function($){
	
	$(function(){
		bindAcoesBotoesOperadores();
		bindMensagemAjudaBotoesOperadores();
		bindMensagemAjudaNosCampos();
		
		bindMostrarSinonimos();
		bindBotaoLimpar();
		
		
	});
	
	//---------- bind mostrar sinonimos ----------
	var bindMostrarSinonimos = function(){
		var campoPesquisa = $('input[name=pesquisaLivre]');
		$('a#mostrarSinonimos').click(function(){
			var options = {
				popupId: 'popupSinonimos',
				titulo: 'Sinônimos',
				//expectedHeight: null,
				processandoImgUrl: saj.env.imagens+'/saj/processando.gif',
				url: saj.env.root+'/mostrarSinonimos.do',
				params: {texto: campoPesquisa.val()},
				reload: true
			};
			$.saj.popup.show(options);
			
		});
	};
	//---------- bind mostrar sinonimos ----------
	
	
	//-------- comportamento botões operadores ----------
	var bindAcoesBotoesOperadores = function(){
		var div = $('div.botoesOperadores');
		var botoes = $('>input[type=button]',div);

		var campoPesquisaLivre = jQuery('input[name=pesquisaLivre]');
		
		$('>input[name=E],>input[name=OU],>input[name=NAO]',div).click(function(){adicionarAoCampo(campoPesquisaLivre,' '+this.name+' ')});
		$('>input[name=AST]',div).click(function(){adicionarAoCampo(campoPesquisaLivre,'*')});
		$('>input[name=INT]',div).click(function(){adicionarAoCampo(campoPesquisaLivre,'?')});
		$('>input[name=ASP]',div).click(function(){colocarValorDoCampoEntreAspas(campoPesquisaLivre);});
	};
	
	var adicionarAoCampo = function(campo, operador){
		campo[0].value += operador;
	};
	
	var colocarValorDoCampoEntreAspas = function (campo){
		campo.val("\""+campo.val()+"\"");
	}
	
	var bindMensagemAjudaBotoesOperadores = function(botoes){
		var botoes = $('div.botoesOperadores>input[type=button]');
		botoes.bind('mouseover',function(){mostrarAjudaAbaixo(this,window.saj.env.root+'/jsp/help.jsp?ajuda='+this.name)});
		botoes.bind('mouseout',ocultarAjuda);
	};
	//-------- comportamento botões operadores ----------
	
	
	
	
	//----------- validação do submit -----------
	var validarSubmit = function(){
		return temAlgumCampoPreenchido() && validarDadasConsulta();
	};
	
	var validarDadasConsulta = function(){
		var inputDtDecisaoInicio = $('input[name=dtDecisaoInicioString]');
		var inputDtDecisaoFim = $('input[name=dtDecisaoFimString]');
		var inputDtParecerInicio = $('input[name=dtParecerInicioString]');
		var inputDtParecerFim = $('input[name=dtParecerFimString]');
		
		var validacao1 = true;
		var validacao2 = true;
		if((inputDtDecisaoInicio.val() != '') && (inputDtDecisaoFim.val() != '')){
			validacao1 = faixaEntreDatasEhValida(inputDtDecisaoInicio.val(),inputDtDecisaoFim.val());
		}
		if((inputDtParecerInicio.val() != '') && (inputDtParecerFim.val() != '')){
			validacao2 = faixaEntreDatasEhValida(inputDtParecerInicio.val(),inputDtParecerFim.val());
		}
		
		if((inputDtDecisaoInicio.val() == '') ^ (inputDtDecisaoFim.val() == '')){
			preencheOutraData(inputDtDecisaoInicio[0],inputDtDecisaoFim[0]);
		}
		if((inputDtParecerInicio.val() == '') ^ (inputDtParecerFim.val() == '')){
			preencheOutraData(inputDtParecerInicio[0],inputDtParecerFim[0]);
		}
		
		return (validacao1 && validacao2);
	};
	
	var faixaEntreDatasEhValida = function(inicio, fim){
		var dateInicio = simpleParseDate(inicio);
		var dateFim = simpleParseDate(fim);	
		if(((dateFim.getTime() - dateInicio.getTime()) / 1000 / 60 / 60 / 24) <= 366) {	
			return true;
		} else {
			alert('O período fornecido nos campos de datas deve ser de no máximo um ano.');
			return false;
		}
		
		return true;
	};
	
	var preencheOutraData = function(dtInicio, dtFim){	
		if(dtInicio.value == ''){
			var ano = parseInt(dtFim.value.substr(6,4)) - 1;
			dtInicio.value = dtFim.value.substr(0,6) + ano;  
		} else {
			var ano = parseInt(dtInicio.value.substr(6,4)) + 1;
			var fim = dtInicio.value.substr(0,6) + ano;
			var dateNow = new Date();
			var dateFim = simpleParseDate(fim);
			if(dateNow.getTime() > dateFim.getTime()){
				dtFim.value = fim;
			} else {
				dtFim.value = simpleDateToStr(dateNow);
			}		
		}
	};
	
	//considera o formato dd/MM/yyyy  
	var simpleParseDate = function(dateStr){
		var dia = dateStr.substr(0,2);
		var mes = dateStr.substr(3,2) - 1;
		var ano = dateStr.substr(6,4);
		return new Date(ano, mes, dia);
	};
	
	//considera o formato dd/MM/yyyy 
	var simpleDateToStr = function(date){
		return date.getDate() + '/' + (date.getMonth()+1) + '/' + date.getFullYear();
	};
	
	var temAlgumCampoPreenchido = function(){
		var tem = false;
		var arrayCampos = $('form[name=consultaForm] input[type=text]');
		var tam = arrayCampos.length;
		for(var i = 0; i < tam; i++){
			if(arrayCampos[i].value!=''){
				tem = true;
				break;
			}
		}
		if(!tem){
			window.alert("Preencha pelo menos um campo de pesquisa.");
		}
		return tem;
	};
	//----------- validação do submit -----------
	
	
	
	//----------- limpa campos-----------
	var bindBotaoLimpar = function(){
		$('input[value=Limpar]').click(limparTodosOsCampos);
	};
		
	var limparTodosOsCampos = function(){
		$('form[name=consultaForm] input[type=text]').val("");
		$.saj.limparInputSelectMultiSelecao('agente','nmAgente');
		$.saj.limparInputSelectMultiSelecao('agenteCorregedor','nmCorregedor');
		
	};
	
	function limparInputSelectMultiSelecao(idInputSelect, nomeInputSelect){
		var inputSelect = jQuery('input#'+nomeInputSelect);
		//limpa atributos
		inputSelect.attr('class',"");
		inputSelect.removeAttr("readonly");
		inputSelect.removeAttr("oldValue");
		inputSelect.val("");
		//limpa inputs de controle
		jQuery('input#'+idInputSelect+'SelectedEntitiesList').val("");
		jQuery('input#contador'+idInputSelect+',input#contadorMaior'+idInputSelect).val(0);

		//remove divs de controle do input-select multi seleção.	 
		var divs = jQuery('div[multselecao=true]').remove(); 
	};
	//----------- limpa campos -----------
	
	
	//------------ ajuda dos campos -----------------
	var bindMensagemAjudaNosCampos = function(){
		var campoPesquisaLivre = $('input[name=pesquisaLivre]');
		bindExibeOcultaAjuda('focus','blur',campoPesquisaLivre, 95);
		
		var campoEmentaNuProcessoNuParecer = $('input[name=ementa],input[name=nuProcesso],input[name=nuParecer]');
		bindExibeOcultaAjuda('focus','blur',campoEmentaNuProcessoNuParecer);
		
		var camposInputSelect = $('table[input-select]>tbody>tr input:not(input[class=hidden])')
		bindExibeOcultaAjuda('focus','blur',camposInputSelect,18);
		
		var selectCategoria = $('select[name=cdCategoria]');
		bindExibeOcultaAjuda('mouseover','mouseout', selectCategoria);
		
		var labelOrdenacao1 = $('label[for=ordenacao1]');
		bindExibeOcultaAjuda('mouseover','mouseout', labelOrdenacao1, 190, 'ordenacao');

		var labelOrdenacao2 = $('label[for=ordenacao2]');
		bindExibeOcultaAjuda('mouseover','mouseout', labelOrdenacao2, 20, 'ordenacao');
		
		var labelCheckBoxSinonimos = $('label[for=checkBoxSinonimos]');
		bindExibeOcultaAjuda('mouseover','mouseout', labelCheckBoxSinonimos, 1, 'sinonimos');
		
		var dataDecisaoInicio = $('input[name=dtDecisaoInicioString]'); 
		var dataDecisaoFim = $('input[name=dtDecisaoFimString]');
		bindExibeOcultaAjuda('focus','blur', dataDecisaoInicio, 227, 'dataDecisao');
		bindExibeOcultaAjuda('focus','blur', dataDecisaoFim, 98, 'dataDecisao');
		
		var dataParecerInicio = $('input[name=dtParecerInicioString]'); 
		var dataParecerFim = $('input[name=dtParecerFimString]');
		bindExibeOcultaAjuda('focus','blur', dataParecerInicio, 227, 'dataParecer');
		bindExibeOcultaAjuda('focus','blur', dataParecerFim, 98, 'dataParecer');
		
		
	};
	
	var bindExibeOcultaAjuda = function(eventoExibeAjuda, eventoEscondeAjuda, objeto, offset, nomeAjuda){
		var root = window.saj.env.root;
		objeto.bind(
				eventoExibeAjuda, 
				function(){
					var ajuda = this.name;
					if(nomeAjuda!=undefined) {
						ajuda = nomeAjuda;
					}
					mostrarAjuda(this,root+'/jsp/help.jsp?ajuda='+ajuda,offset);
				}
			);
		objeto.bind(eventoEscondeAjuda,ocultarAjuda);
	};
	//------------ ajuda dos campos -----------------
	
	
	
})(jQuery);
