
//Incializa os componentes na tela
jQuery().ready(
		  
	function($)
	{
		var edicoes;
		var primeiraVez = true;
		
		//Carrega os dados das edições
		$.getJSON("includes/pegaEdicoesDje.php",
			function(dados)
			{
				edicoes = dados;
				
				//Função para pegar as edições de data (geralmente é só existe uma, mas há o caso das edições extras).
				function pegaEdicoes(data)
				{
					var edicoesNaData = [];
					for (var i=0; i<edicoes.length; i++)
					{
						if (edicoes[i].data==data)
							edicoesNaData[edicoesNaData.length] = edicoes[i];
					}
					return edicoesNaData;
				}
				
				//Garante que a string passada (um mês ou um ano) tenha 2(dois) caracteres (se for o caso, com um zero à esquerda)
				function poeZero(str) { return (str+"").length==1 ? "0"+str : str; }
				
				//Retorna uma string no format 'dd/mm/yyyy' a parte de um objeto Date.
				function pegaDateAsStr(date)
				{
					return poeZero(date.getDate()) +"/"+ poeZero(date.getMonth()+1) +"/"+ date.getFullYear();
				}
				
				//Retorna um grid que usará um filtro específico
				function montaGrid(urlPhp)
				{
					$("#tbEdicoes").GridUnload();
					$("#tbEdicoes").jqGrid({
						url: urlPhp,
						datatype: "json",
						colNames:['N&ordm;','Data de publica&ccedil;&atilde;o', 'Edi&ccedil;&atilde;o'],
						colModel:[
							{name:'numero', index:'numero', width:110, search: false, sortable: true},
							{name:'data', 	index:'data', 	width:185, search: false, sortable: true},
							{name:'edicao', index:'edicao', width:150, search: false, sortable: false, align: 'center'}
						],
						rowNum:5,
						pager: jQuery('#paginador'),
						sortname: 'numero',
						sortorder: "desc",
						viewrecords: false,
						caption:"Edi&ccedil;&otilde;es"
					}).navGrid('#paginador',{edit:false,add:false,del:false});
					
					//Seta o tamanho do grid
					$("#gbox_tbEdicoes").css("width", "430px");
					$("#gview_tbEdicoes").css("width", "430px").css("height", "170px");
					$("#paginador").css("width", "430px");
					$(".ui-jqgrid-hdiv").css("width", "430px");
					$(".ui-jqgrid-bdiv").css("width", "430px");
					
					//Remove o botão de pesquisar e dar refresh da barra de paginação
					$("#refresh_tbEdicoes").remove();
					$("#search_tbEdicoes").remove();
				}
				
				//Monta o calendário
				$("#calendario").datepicker({
					monthNames: 		['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
					monthNamesShort:	['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
					dayNames:			['Domingo', 'Segunda', 'Ter&ccedil;a', 'Quarta', 'Quinta', 'Sexta', 'S&aacute;bado'],
					dayNamesMin:		['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'S&aacute;b'],
					changeMonth: true, changeYear: true, currentText: 'Hoje', showButtonPanel: true, dateFormat: 'dd/mm/yy', maxDate: '+1m', minDate: new Date(2008, 5, 13), 
					
					//Evento disparado para cada dia sendo exibida do calendário
					beforeShowDay:
						function (date)
						{
							var edicao = pegaEdicoes(pegaDateAsStr(date))[0]; //<-pega a primeira edição da data (não havendo, o campo fica undefined).
							var clicavel = edicao;
							var classeCss = edicao ? (!edicao.cancelada ? "dataComEdicao" : "dataComEdicaoCancelada" ) : "dataSemEdicao";
							var dica = edicao ? (!edicao.cancelada ? "Clique para visualizar" : "Edi&ccedil;&atilde;o cancelada (art. 11, Res. 12/08, TRE/RN)" ) : "";
							return [clicavel, classeCss, dica]; //[ativado/desativado, 'css class', 'tooltip'(opcional)]
						},
						
					//Evento disparado ao mudar-se o mês/ano.
					onChangeMonthYear:
						function (ano, mes, datepicker)
						{
							//Quando a tela é carregada inicialmente, não precisa remontar
							//o grid (ele já é montado por padrão com as cinco últimas edições)
							if (!primeiraVez)
							{
								montaGrid("includes/pegaEdicoesDje.php?tipo=grid&page=1&rows=5&data="+(poeZero(mes)+"/"+poeZero(ano)));
								$("#label_edicoes").html("Edi&ccedil;&otilde;es do m&ecirc;s selecionado:");
								$("#msg_filtro").hide();
							}
							else
								primeiraVez = false;
						},
						
					//Evento disparado quando o usuário seleciona uma data
					onSelect:
						function (data, datepicker)
						{
							var edicoesNaData = pegaEdicoes(data);
							//Se só há uma edição na data...
							if (edicoesNaData.length==1) {
								//Se ela estiver cancelada, mostra uma caixa de diálogo com os esclarecimentos
								if (edicoesNaData[0].cancelada)
									mostrarEdicaoCancelada(edicoesNaData[0].numero, edicoesNaData[0].data.substr(6), edicoesNaData[0].pdf);
								//Senão, abre o arquivo pdf correspondete
								else
									open(LOCAL_EDICOES_URL + edicoesNaData[0].pdf);
							}
							//Caso haja mais de uma edição na data, exibe todas as edições no grid
							else if (edicoesNaData.length>1) {
								montaGrid("includes/pegaEdicoesDje.php?tipo=grid&page=1&rows=5&data="+data);
								$("#label_edicoes").html("Edi&ccedil;&otilde;es do m&ecirc;s selecionado:");
								$("#data").html(data);
								$("#msg_filtro").toggle();
							}
						}
					
				}); //datepicker
				
				//Monta o grid padrão mostrando as últimas 5(cinco) edições
				montaGrid("includes/pegaEdicoesDje.php?tipo=grid_5_ultimas");
			}
		); //ajax
	}
	
);