(function($) {
	var getFiltro = function(criteria, ordem) {
		var aba = obterAbaSelecionada();
		var linhaID = 'div'+criteria+'-'+aba;
		
		var htmlProcessando = '<table class="carregando" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr>' +
			'<td align="center" valign="middle" style="font-weight: bold;">' +
			'&nbsp;&nbsp;Processando&nbsp;&nbsp;<img src="imagens/saj/ajax-loader.gif" align="absmiddle" border="0"></td>' +
			'</tr></table>';
		
		$('div#'+linhaID).html(htmlProcessando);

		var url = "/cjsg/montaFiltro.do";
		var param = {
				criteria: criteria,
				ordem: ordem,
				tipoDecisao: aba
		};
		$.ajax({ 
			url: url,
			type: 'POST',
			cache: true, 
			data: param,
			success:function(transport) {
				atualizarHtmlPagina(linhaID, transport);
			},
			error:function() {
			},
			complete: function() { 
				var div = 'div#'+linhaID;
				$(div+' td').bind('click',trocaCheck);
				$(div+' a[class=verMais]').bind('click',function(){getFiltro(criteria,ordem); return false;});
				$(div).click();
			}			
		});
	};
	
	var atualizarHtmlPagina = function(id, transport) {
		if (transport.indexOf('#%#emptySession#%#') != -1) {
			repeteBusca();
		} else {
			var idDiv = 'div#'+id;
			var $div = $(idDiv);
			$div.html(transport);

			if ($(idDiv+' input').size() > 10) {
				$div.attr('height',200);
			}
		}
	};
	
	var ordenar = function() {
		var $this = $(this);
		var ordem = $this.attr('ordem');
		var nmElemento = $this.parents('table:first').attr('name');
		
		var linhaID = 'div'+nmElemento+'-'+obterAbaSelecionada();
		var $div = $('div#'+linhaID);
		$div.click();
		$div.html('<p style=\"font-weight: bold;\">&nbsp;&nbsp;Processando&nbsp;&nbsp;<img src=\"imagens/saj/ajax-loader.gif\" align=\"absmiddle\" border=\"0\"></p>');
		$div.attr('height', '');
		getFiltro(nmElemento, ordem);
	};
	
	var abreFechaLinha = function() {
		var abaSelecionada = obterAbaSelecionada();
		var nmFiltro = $(this).parents('table:first').attr('name');
		var nmDiv = 'div'+nmFiltro+'-'+abaSelecionada;
		var nmImagem = 'ico'+nmFiltro+'-'+abaSelecionada;
		var nmMenu = 'menu'+nmFiltro+'-'+abaSelecionada;
		
		var $imgLinha = $('img#'+nmImagem);
		var $menu = $('#'+nmMenu);
		var $div = $('div#'+nmDiv);
		if ($div.is(':visible')) {
			$div.hide();
			$imgLinha.attr('src','imagens/spw/icoMais.gif');
			$menu.attr('class','menu menuDes');
		} else {
			$div.show();
			$imgLinha.attr('src','imagens/spw/icoMenos.gif');
			$menu.attr('class','menu');
		}
		if ($('table',$div).size()==0) {
			getFiltro(nmFiltro);
		}
		//Para o link não redirecionar
		return false;
	};

	var limpaCks = function() {
		var nome = $(this).parents('table:first').attr('name');
		var nmElemento = 'div' +nome+'-'+obterAbaSelecionada() ;

		$('div#'+nmElemento+' input').attr('checked', false);
		$('div#'+nmElemento+' tr').removeClass();
		$('div#'+nmElemento).click();
	};
	
	var mostraNumCks = function() {
		var abaSelecionada = obterAbaSelecionada();
		var nome = $(this).attr('name')+'-'+abaSelecionada;
		var nmSpan = 'span#span'+nome;
		var checkedInputs = $('div#div'+nome+' input:checked');
		var count = checkedInputs.size();
		if (count != 0) {
			$(nmSpan).html('(<b>' + count + '</b>)');
		} else {
			$(nmSpan).html('');
		}
	};
	
	var trocaCheck = function() {
		var $checkBox = $(this).siblings().children('input');
		var isChecked = $checkBox.attr('checked');
		$checkBox.attr('checked', !isChecked);
	};
	
	//get Resultado refinado pelo filtro
	var getResultados = function(aba) {
		var params = 'tipoDeDecisao='+aba;
		checks = $('div#divClasse-'+aba+' input:checked');
		params = buildParams(params, 'classe', checks);
		checks = $('div#divRelator-'+aba+' input:checked');
		params = buildParams(params, 'relator', checks);
		checks = $('div#divComarca-'+aba+' input:checked');
		params = buildParams(params, 'comarca', checks);
		checks = $('div#divOrgaoJulgador-'+aba+' input:checked');
		params = buildParams(params, 'orgaoJulgador', checks);
		var url = '/cjsg/montaResultados.do';
		$.ajax({ 
			url: url,
			data: params,
			type: 'POST',
			cache: true, 
			success:function(transport) {
				mostraResultados(transport,aba);
			},
			error:function() {
			},
			complete: function() { 
				bindsAba(aba);
			}			
		});
	};
	
	var mostraResultados = function(transport,aba) {
		if (transport.indexOf('#%#emptySession#%#') != -1) {
			repeteBusca();
		} else {
			var resp = transport.split('#%#quebra_resposta#%#');
			if (resp.length == 3) {
				$('div#divDadosResultado-'+aba).html( resp[0]);
				$('div#adicionarPesquisa-'+aba).html( resp[1]);
				$('div#paginacaoSuperior-'+aba+', div#paginacaoInferior-'+aba).html( resp[2]);
			} else {
				$('div#paginacaoSuperior-'+aba+', div#paginacaoInferior-'+aba+', div#adicionarPesquisa-'+aba).html('');
				$('div#divDadosResultado-'+aba).html(resp[0]);
			}
			$('span#nomeAba-'+aba).html($('span#nomeAbaRetornoFiltro-'+aba).html());
			$('input#totalResultadoAba-'+aba).val($('input#totalResultadoAbaRetornoFiltro-'+aba).val());
		}
	};
	
	var repeteBusca = function () {
		$('form').submit();
	};
			
	var bindLinksFiltrosMenu = function(aba) {
		$('img[id^=filtroLimpar]').filter('img[id$=-'+aba+']').bind('click',limpaCks);
		$('img[id^=filtroLimpar]').filter('img[id$=-'+aba+']').bind('click',mostraNumCks);
		$('a[id^=linkMenuFiltro]').bind('click',abreFechaLinha);
		$('a[id^=linkMenuOrdenar]').filter('a[id$=-'+aba+']').bind('click',ordenar);

		$('div#divClasse-'+aba).bind('click',mostraNumCks);
		$('div#divRelator-'+aba).bind('click',mostraNumCks);
		$('div#divComarca-'+aba).bind('click',mostraNumCks);
		$('div#divOrgaoJulgador-'+aba).bind('click',mostraNumCks);
		
		$('input#botaoLimparComponente-'+aba).bind('click',function(){
			$('img[id^=filtroLimpar]').filter('img[id$=-'+aba+']').click();	
		});
		
		$('input#botaoRefinarResultado-'+aba).bind('click',function(){
			getResultados(aba);
		});
		$('table#abaFiltrar-'+aba).bind('click', {conteudoParaAlterarVisibilidade: $('div#filtrarResultado-'+aba)}, alterarVisibilidadeQuadroFiltro);
	};

	var adicionarTermosAPesquisa =  function ($termos) {
		var parametros = "";
		$termos.each(function (i) {
			if ($(this).is(':checked')) {
				parametros += ' \"' + this.value + '\" ';
			}
		});
		var $campo = $('input[name=dados.buscaInteiroTeor]');
		if ($campo.size()==1 && (parametros != '')) {
			$campo.val($campo.val()+parametros);
			$('form').submit();
		}
	};
	
	var buildParams = function(params, name, values) {
		values.each(function () {
				if (params == '') {
					params = name + "=" + $(this).val();
				} else {
					params = params + "&" + name + "=" + $(this).val();
				}
			}
		);
		return params;
	};

	var trocarDePagina = function(valor){
		var tipoDeDecisao = valor.charAt(0);
		var pagina = valor.slice(1);
		var url = window.saj.env.root+"/trocaDePagina.do";
		var params = {tipoDeDecisao: tipoDeDecisao, pagina: pagina};
		$('div#tabs-'+tipoDeDecisao+' div#divDadosResultado-'+tipoDeDecisao).html('<table width="100%" height="100%"><tbody><tr><td valign="center" align="center"><img src="'+window.saj.env.root+'/imagens/saj/processando.gif"></td></tr></tbody></table>');
		$.ajax({ 
			url: url,
			data: params,
			type: 'GET',
			cache: true, 
			success:function(html) {
				mostraResultados(html,tipoDeDecisao);
			},
			error:function() {
			},
			complete: function() { 
				bindsAba(tipoDeDecisao);
			}			
		});
	};
	
	var alterarVisibilidadeQuadroFiltro = function(event) {
		var $elemento = event.data.conteudoParaAlterarVisibilidade;
		var iconeFiltro = 'imagens/saj/';
		if($elemento.is(':visible')) {
			$elemento.hide();
			iconeFiltro += 'abrirFiltro.gif';
		} else {
			$elemento.show();
			iconeFiltro += 'fecharFiltro.gif';
		}
		$('img', this).attr('src', iconeFiltro);
	};
	
	var bindTermosRelacionados = function(aba){
		$('div#adicionarPesquisa-'+aba+' table#abaAdicionar-'+aba).bind('click', {conteudoParaAlterarVisibilidade: $('div#adicionarPesquisa-'+aba+' table#abaAdicionar-'+aba).siblings('table')}, alterarVisibilidadeQuadroFiltro);
		var $div = $('div#adicionarPesquisa-'+aba);
		var $termos = $('input[type=checkbox]',$div);
		var $botao = $('input[type=button]', $div);
		$botao.click(function(){
			adicionarTermosAPesquisa($termos);
			});
		$botao.bind('mouseover', function(){this.className = 'conJurisBotaoSec-o';});
		$botao.bind('mouseout', function(){this.className = 'conJurisBotaoSec';});
	};

	/** Obtém o tipo da aba selecionada **/
	var obterAbaSelecionada =  function(){
	 return $('.spwTabs-selected').attr('tipo');	
	};
	
	var bindLinkstrocaDePagina = function(tipoDeDecisao){
		$('div#paginacaoSuperior-'+tipoDeDecisao+' div.trocaDePagina a').bind('click', function(){trocarDePagina(this.name);}); 
		$('div#paginacaoInferior-'+tipoDeDecisao+' div.trocaDePagina a').bind('click', function(){trocarDePagina(this.name);});
	};
	
	var bindImagemMostrarOcultarEmenta = function(){
		var imgs = $('img.mostrarOcultarEmenta');
		imgs.click(function(){mostrarOcultarEmenta($(this).parent());});
	};
	
	var mostrarOcultarEmenta = function(obj){
		while(obj[0].nodeName != "DIV"){
			obj = obj.parent();
		}
		obj.css("display","none");
		obj.css("cursor","pointer;");
		var irmao = obj.siblings();
		irmao.css("display","");
		irmao.css("cursor","pointer;");
	};	
	
	var bindsInicialAba = function(tipoDeDecisao) {
		bindsAba(tipoDeDecisao);
		bindLinksFiltrosMenu(tipoDeDecisao);
	};
	var bindsAba = function(tipoDeDecisao){
		bindLinkstrocaDePagina(tipoDeDecisao);
		bindTermosRelacionados(tipoDeDecisao);
		bindImagemMostrarOcultarEmenta();
		$.saj.cjsg.bindLinkDownloadDocumento(tipoDeDecisao);
	};
	$.saj = $.saj ||{};
	$.saj.cjsg = $.saj.cjsg ||{};
	$.saj.cjsg.bindsAbaInicial = bindsInicialAba;
	
})(jQuery);
