calendario = {
	ano : null
	
	,init : function(){
		$('tr.regiao th a.btMais').click(function(){
			regiaoId = $(this).parents('tr:first').attr('regiao');
			calendario.toggleRegiao(regiaoId);
		})
		
		$('.calend .cabec')
			.hover(function(){$(this).css('cursor', 'pointer')}, function(){$(this).css('cursor', 'auto')})
			.click(function(){
				if ($('.calend .meio').is(':visible')) {
					calendario.hide();
				} else {
					calendario.show();
				}
			}
		);
		
		this.ano = new Date().getFullYear();
		this.load();
	}
	
	,load : function(direcao){
		$('#mostraAno').text('Carregando...');
		ano = this.ano;
		if (direcao == 1) ano--;
		if (direcao == 2) ano++;
		
		$.get(
			WEB_ROOT + "pub/json/getCalendarioCruzeiro.php", 
			{
				"ano"	: ano
			}, 
			function(data){
				if (!data.error) {
					calendario.ano = data.ano;
					$('#mostraAno').text(data.ano+(data.mes > 1 ? " / "+(data.ano+1) : ""));
					
					for (i=1; i<=12; i++) {
						$('#calendarioCruzeiros td.tabelaCruzeirosRegiaoMesAtual[mes='+i+'] img')
							.attr('title', (i < data.mes ? (data.ano+1) : data.ano));
					}
					
					// Limpa as categorias
						calendario.clear();
					
					// Somatório dos totais de cruzeiros nas subregioes para mostrar na região
						var regiaoTotal;
						regiaoTotal = [];
						
						// Zera o somatorio de todas as regiões
						$.each(data.categorias, function(i, item) {
							regiaoTotal["'"+item.regiaoId+item.mes+"'"] = 0;
						})
						
						// Soma
						$.each(data.categorias, function(i, item) {
							regiaoTotal["'"+item.regiaoId+item.mes+"'"] = eval(regiaoTotal["'"+item.regiaoId+item.mes+"'"]) + eval(item.qtd);
						})
					
					// Carregamento dos links
					$.each(data.categorias, function(i, item) {
						idTR = 'r'+item.regiaoId;
						mes = $('tr#'+idTR+':first td[mes='+item.mes+']:first');
						//mes = $('tr[regiao='+item.regiaoId+'].regiao:first td[mes='+item.mes+']:first'); // Baixo desempenho
						
						// Se a região ainda não foi marcada como tendo cruzeiros, marque-a
						if (!mes.hasClass('hasCruzeiros')) {
							mes.addClass('hasCruzeiros');
							
							$('a', mes).remove();
							
							$("<a>&nbsp;</a>")
							.attr('href', '#resultado')
							.click(function(){
								strMes = 0+item.mes;
								strAno = (item.mes < data.mes ? (1+eval(ano)) : ano);
								calendario.selectMes(item.regiaoId, null, strMes.substr((strMes.length-2),2)+'/'+strAno);
							})
							.attr('title', regiaoTotal["'"+item.regiaoId+item.mes+"'"]+' cruzeiro(s)')
							.appendTo(mes);
						}
						
						idTR = 'r'+item.regiaoId+'c'+item.categoriaId;
						mes = $('tr#'+idTR+':first td[mes='+item.mes+']:first');
						//mes = $('tr[regiao='+item.regiaoId+'][categoria='+item.categoriaId+']:first td[mes='+item.mes+']:first'); // Baixo Desempenho
						mes.addClass('hasCruzeiros');
						
						$('a', mes).remove();
						
						$("<a>&nbsp;</a>")
						.attr('href', '#resultado')
						.click(function(){
							strMes = 0+item.mes;
							strAno = (item.mes < data.mes ? (1+eval(ano)) : ano);
							calendario.selectMes(item.regiaoId, item.categoriaId, strMes.substr((strMes.length-2),2)+'/'+strAno);
						})
						.attr('title', item.qtd+' cruzeiro(s)')
						.appendTo(mes);
					})
					$('.categoria').hide();
				}
			},'json'
		);
	}
	
	,show : function(){
		efct = $.browser.msie ? null : 'blind';
		$('.calend .meio:hidden').show(efct, 1000);
		$('.calend .cabec img.open').hide();
		$('.calend .cabec img.close').show();
	}
	
	,hide : function(){
		efct = $.browser.msie ? null : 'blind';
		$('.calend .meio:visible').hide(efct, 1000);
		$('.calend .cabec img.open').show();
		$('.calend .cabec img.close').hide();
	}
	
	,clear : function(){
		$('#calendarioCruzeiros td[mes] a').remove();
		$('#calendarioCruzeiros .hasCruzeiros').removeClass('hasCruzeiros');
	}
	
	,toggleRegiao : function(regiaoId){
		// Está aberta. Cliquei pra fechar.
		if ($('tr.regiao'+regiaoId+'.categoria').hasClass('isOpen')) {
			this.fechaRegiao(regiaoId);
		// Está fechada. Cliquei pra abrir.
		} else {
			this.abreRegiao(regiaoId);
		}
	}
	
	,abreRegiao : function(regiaoId){
		// Reseto os demais
		$('.categoria').hide().removeClass('isOpen');
		$('a.btMais').removeClass('fechar');
		
		hasCategory = false;
		if ($('tr.regiao'+regiaoId+'.categoria').show().addClass('isOpen').length > 0) {
			hasCategory = true;
		}
		$('a.btMais.regiao'+regiaoId).addClass('fechar');
		
		this.selectRegiao(regiaoId, hasCategory);
	}
	
	,fechaRegiao : function(regiaoId){
		$('tr.regiao'+regiaoId+'.categoria').hide().removeClass('isOpen');
		$('a.btMais.regiao'+regiaoId).removeClass('fechar');
	}
	
	,selectRegiao : function(regiaoId, hasCategory){
		if (!hasCategory) {
			buscaCruzeiros.reset(true);
			buscaCruzeiros.skipSave = true;
			buscaCruzeiros.getResults(regiaoId, 0);
		}
	}
	
	,selectMes : function(regiaoId, categoriaId, dataMes){
		buscaCruzeiros.reset(true);
		buscaCruzeiros.skipSave = true;
		buscaCruzeiros.getResults(regiaoId, categoriaId, dataMes);
	}
	
	,selectCategoria : function(regiaoId, categoriaId){
		buscaCruzeiros.reset(true);
		buscaCruzeiros.skipSave = false;
		buscaCruzeiros.getResults(regiaoId, categoriaId);
	}
}