function getCidades(pais)
{
	paisId = $(pais).val();
	cidades = $(pais).parent().next().children('select')
		.empty()
		.append($('<option>'));
	
	$.post(
		"index.php", 
		{
			action: 'getCidades', 
			paisId : paisId
		}, 
		function(data){
			$.each(data, function(i, item) {
				$('<option>')
					.attr('value', item.id)
					.text(item.nome)
					.appendTo(cidades);
			}
		)},'json'
	);
}

// LISTAGEM DE CRUZEIROS
	var requests;
	requests = [];
	
	function addRequests(req)
	{
		requests[requests.length] = req;
	}
	
	function cancelRequests()
	{
		for (i = 0; i < requests.length; i++) {
			req = requests[i];
			req.abort();
		}
		
		requests = [];
	}
	
	function getCategorias(regiao, page)
	{
		cancelRequests();
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		cia = $('#armadorId').val();
		navio = $('#navioId').val();
		data = $('#data').val();
		porto = $('#porto').val();
		noites = $('#noites').val();
		
		if (!page) page=1;
		
		$('#nomeDestinoCategoria').text('Carregando...');
		$('#listaProdutos ul').empty();
		$('.paginas').empty();
		$('.totProdutos').empty();
		$("#regiaoId").val(regiao).change();
		
		addRequests($.get(
			"getCategoriasCruzeiro.php", 
			{
				"regiao"		: regiao,
	//			"categoriaId"	: categoriaId,
				"page"			: page,
				"cidadeId[]"	: cidades,
				"armadorId"		: cia,
				"navioId"		: navio,
				"data"			: data,
				"porto"			: porto,
				"noites"		: noites
			}, 
			function(data){
				if (!data.error) {
					$('#nomeDestinoCategoria').text('');
					
					if (data.produtos.length > 0 && (data.categorias.length > 0 || data.subregioes.length > 0)) {
						link = $("<br><span>Produto(s) encontrado(s).</span>")
							.appendTo('#listaProdutos ul');
					}
					
					if (data.produtos.length > 0) {
						$('#nomeDestinoCategoria').text(data.regiao);
						
						mostraProdutos(data);
					}
				}
			},'json'
		));
	}
	
	function getProdutos(regiao, categoriaId, data, page)
	{
		cancelRequests();
		
		if (regiao) setRegiao('cidadeId1', regiao, data);
		
		if ($('#regiaoId').val() != 0) {
			regiao = $('#regiaoId').val();
		}
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		cia = $('#armadorId').val();
		navio = $('#navioId').val();
		if (!data) data = $('#data').val();
		porto = $('#porto').val();
		noites = $('#noites').val();
		
		if (!(regiao || cidades.length > 0 || (cia != '' && cia != null) || (navio != '' && navio != null) || (data != '' && data != null) || (porto != '' && porto != null) || noites != '')) {
			alert("Entre com pelo menos um critério de busca.");
			return false;
		}
		
		if (!page) page=1;
		
	//	$('#divProdutos').hide();
		$('#nomeCategoria').text('');
		$('#nomeDestinoCategoria').text('Carregando...');
//		$('#nomeDestinoCategoria').text('');
		$('.btVoltar').remove();
		$('.totProdutos').empty();
		$('.paginas').empty();
		$('#listaProdutos ul').empty();
			
		addRequests($.get(
			"getProdutosCruzeiro.php", 
			{
				"regiaoId"		: regiao,
				"categoriaId"	: categoriaId,
				"page"			: page,
				"cidadeId[]"	: cidades,
				"armadorId"		: cia,
				"navioId"		: navio,
				"data"			: data,
				"porto"			: porto,
				"noites"		: noites
			}, 
			function(data) {
				if (!data.error) {
					$('#nomeDestinoCategoria').text(data.regiao+(data.categoria ? ' - '+data.categoria: ''));
					
					if (data.produtos.length == 0) {
						link = $("<span>Nenhum resultado encontrado.</span>")
							.appendTo('#listaProdutos ul');
					} else {
						mostraProdutos(data);
						
						if (data.isSubRegiao) {
							$("<a>&laquo;&laquo;Voltar</a>")
								.attr('href', '#')
								.addClass('btVoltar')
								.click(function(){
									getCategorias(data.regiaoId);
									$(this).remove();
									return false;
								})
								.appendTo('#listaOpcoes');
						}
					}
				}
			},'json'
		));
	}
	
	function mostraProdutos(data)
	{
		$.each(data.produtos, function(i, item) {
			saidas = '';
			
			// <br><span class="titulo_lojas">Sa&iacute;da(s) em 2009:</span> <span class="fonte_tarifarios">Mai</span> 09, 23, 30; <span class="fonte_tarifarios">Jun</span> 06, 13, 27; <span class="fonte_tarifarios">Jul</span> 11, 25; <span class="fonte_tarifarios">Ago</span> 08, 22
			$.each(item.saidas.datas, function(ano, meses){
				saidas += '<span class="ano titulo_lojas">Sa&iacute;das em '+ano+':</span> ';
				saidas += '<div>';
			    	saidas += '<div class="meses">';
				    $.each(meses, function(mes, dias){
				    	saidas += '<div class="mes">';
				    	saidas += '<span class="fonte_tarifarios">'+mes+'</span>&nbsp;';
				        saidas += dias.join(',&nbsp;')+'; ';
				        saidas += '</div>';
				    })
			        saidas += '</div>';
			    saidas += '</div>';
			});
			if (item.saidas.observacoes) {
				saidas += '<br><div style="clear:both;"><span class="titulo_lojas">Observa&ccedil;&otilde;es:</span> '+item.saidas.observacoes+'</div>';
			}
			
			
			$('#listaProdutos ul').append(
				'<li><div class="imagem">'
				+(item.imagem ? '<a href="'+item.link+'" target="_blank"><img src="'+item.imagem+'" width="160"></a>' : '')
				+'	 </div>'
				+'	 <div class="detalhes">'
				+'		<span class="titulo_estados"><a href="'+item.link+'" target="_blank">'+item.nome+' - '+item.num_noites+' noites</a></span>'
				+'		<br><span class="titulo_lojas">Navio:</span> '+item.navio
				+'		<br><span class="titulo_lojas">Porto de Embarque:</span> '+item.embarques
				+'		<br><span class="titulo_lojas">Itiner&aacute;rio:</span> '+item.itinerarios
				+'		<div>'+saidas+'</div>'
				+'	</div>'
	     	  	+'</li>'
			)
		})
		
		$('.totProdutos').text(data.totProdutos+' resultado(s)');
		
		page = parseInt(data.page);
		totPages = parseInt(data.totPages);
		totProdutos = parseInt(data.totProdutos);
		
		if (page > 1) {
			$("<a>&laquo;&laquo;Anterior | </a>")
				.attr('href', '#')
				.addClass('btAnterior')
				.click(function(){
					getProdutos(0, data.categoriaId, 0, (page-1));
					$(this).remove();
					return false;
				})
				.appendTo('.paginas');
		}
		
		$("<span>"+page+"/"+totPages+"</span>").appendTo('.paginas');
		
		if (page < totPages) {
			$("<a> | Proximo&raquo;&raquo;</a>")
				.attr('href', '#')
				.addClass('btProximo')
				.click(function(){
					getProdutos(0, data.categoriaId, 0, (page+1));
					$(this).remove();
					return false;
				})
				.appendTo('.paginas');
		}
	}
	
// BUSCA
	function setRegiao(cidadeNome, regiao, dataSaida)
	{
		cancelRequests();
		
		if (regiao) $("#regiaoId").val(regiao);
		
		$('#trNavio').hide();
		
		$("#"+cidadeNome).empty();
		$("#cidadeId2").empty();
		$("#cidadeId3").empty();
		$("#armadorId").empty();
		$("#navioId").empty();
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
		
		regiao = $('#regiaoId').val();
		
		addRequests($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"	: regiao,
				"funcao"	: 'setRegiao'
			},
			function(data){
				if (data.cidades.length >= 1) {
					$("#"+cidadeNome).append($('<option>').text('Cidade/local').val(''));
				}
				
				preencheCidades(data.cidades, cidadeNome);
				preencheArmador(data.cia);
				preencheDataSaida(data.dataSaida, dataSaida);
				if (!dataSaida) {
					preenchePorto(data.porto);
					preencheDuracao(data.duracao);
				}
			},'json'
		));
	}
	
	function setCidades(cidadeNome, cidadeOrigem)
	{
		cancelRequests();
		
		$('#trNavio').hide();
		
		if ((cidadeOrigem == 'cidadeId1') && !($("#"+cidadeOrigem).val())) {
			setRegiao('cidadeId1');
		} else {
		
			if ((cidadeOrigem == 'cidadeId2') && !($("#"+cidadeOrigem).val())) {
				cidadeNome = 'cidadeId2';
			}
			
			$("#"+cidadeNome).empty();
			if (cidadeNome == 'cidadeId2') {
				$("#cidadeId2").empty();
			}
			$("#armadorId").empty();
			$("#navioId").empty();
			$("#data").empty();
			$("#porto").empty();
			$("#noites").empty();
			
			if (cidadeNome != '0') {
				$("#cidadeId3").empty();
			}
			
			regiao = $('#regiaoId').val();
			
			cidades = [];
			$('.cidade').each(function(){
				if ($(this).val()) {
					cidades[cidades.length] = $(this).val();
				}
			});
			
			if (cidades.length > 0) {
				addRequests($.get(
					"getParametrosCruzeiro.php", 
					{
						"regiaoId"		: regiao,
						"cidadeId[]"	: cidades,
						"funcao"		: 'setCidades'
					},
					function(data){
						if (data.cidades.length >= 1) {
							$("#"+cidadeNome).append($('<option>').text('Cidade/local adicional').val(''));
						}
						
						preencheCidades(data.cidades, cidadeNome);
						preencheArmador(data.cia);
						preencheDataSaida(data.dataSaida);
						preenchePorto(data.porto);
						preencheDuracao(data.duracao);
					},'json'
				));
			}
		}
	}
	
	function setArmador()
	{
		cancelRequests();
		
		$('#trNavio').hide();
		
		$("#navioId").empty();
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
	
		regiao = $('#regiaoId').val();
		armador = $('#armadorId').val();
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		
		addRequests($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"		: regiao,
				"cidadeId[]"	: cidades,
				"armadorId"		: armador,
				"funcao"		: 'setArmador'
			},
			function(data) {
				if (!data.error) {
					if (data.navios.length > 0) preencheNavio(data.navios);
					preencheDataSaida(data.dataSaida);
					preenchePorto(data.porto);
					preencheDuracao(data.duracao);
				}
			},'json'
		));
	}
	
	function setNavio()
	{
		cancelRequests();
		
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
	
		regiao = $('#regiaoId').val();
		armador = $('#armadorId').val();
		navio = $('#navioId').val();
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		
		if (regiao || armador) {
			addRequests($.get(
				"getParametrosCruzeiro.php", 
				{
					"regiaoId"		: regiao,
					"cidadeId[]"	: cidades,
					"armadorId"		: armador,
					"navioId"		: navio,
					"funcao"		: 'setNavio'
				},
				function(data) {
					if (!data.error) {
						preencheDataSaida(data.dataSaida);
						preenchePorto(data.porto);
						preencheDuracao(data.duracao);
					}
				},'json'
			));
		}
	}
	
	function setData()
	{
//		cancelRequests();
		
		$("#porto").empty();
		$("#noites").empty();
	
		regiao = $('#regiaoId').val();
		armador = $('#armadorId').val();
		navio = $('#navioId').val();
		data = $('#data').val();
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		
		addRequests($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"		: regiao,
				"cidadeId[]"	: cidades,
				"armadorId"		: armador,
				"navioId"		: navio,
				"data"			: data,
				"funcao"		: 'setData'
			},
			function(data) {
				if (!data.error) {
					preenchePorto(data.porto);
					preencheDuracao(data.duracao);
				}
			},'json'
		));
	}
	
	function setPorto()
	{
		cancelRequests();
		
		$("#noites").empty();
	
		regiao = $('#regiaoId').val();
		armador = $('#armadorId').val();
		navio = $('#navioId').val();
		navio = $('#navioId').val();
		data = $('#data').val();
		porto = $('#porto').val();
		
		cidades = [];
		$('.cidade').each(function(){
			if ($(this).val()) {
				cidades[cidades.length] = $(this).val();
			}
		});
		
		addRequests($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"		: regiao,
				"cidadeId[]"	: cidades,
				"armadorId"		: armador,
				"navioId"		: navio,
				"data"			: data,
				"porto"			: porto,
				"funcao"		: 'setPorto'
			},
			function(data) {
				if (!data.error) {
					preencheDuracao(data.duracao);
				}
			},'json'
		));
	}
	
//PREENCHIMENTO
function preencheCidades(cidades, cidadeNome)
{
	$.each(cidades, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.nome)
			.appendTo($("#"+cidadeNome));
	});
}

function preenchePorto(porto)
{
	$("#porto").append($('<option>').text('').val(''));
	
	$.each(porto, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.nome)
			.appendTo($("#porto"));
	});
}

function preencheArmador(cia)
{
	$("#armadorId").append($('<option>').text('').val(''));
	
	$.each(cia, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.nome)
			.appendTo($("#armadorId"));
	});
}

function preencheDataSaida(dataSaida, dataSaida2)
{
	$("#data").append($('<option>').text('').val(''));
	
	$.each(dataSaida, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.data)
			.appendTo($("#data"));
	});
	
	if (dataSaida2) $("#data").val(dataSaida2).change();
}

function preencheNavio(navios)
{
	$('#trNavio').show();
	
	$('#navioId').append($('<option>').text('').val(''));
	
	$.each(navios, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.nome)
			.appendTo($('#navioId'));
	});
}

function preencheDuracao(duracao)
{
	$('#noites').append($('<option>').text('').val(''));
	
	$.each(duracao, function(i, item) {
		$('<option>')
			.attr('value', item.id)
			.text(item.noites)
			.appendTo($('#noites'));
	});
}

function calendario(navega)
{
	$('#mostraAno').text('Carregando...');
	ano = $('#anoAtual').val();
	if (!ano) {
		var now = new Date();
		ano = now.getFullYear();
	}
	if (navega == 1) ano--;
	if (navega == 2) ano++;
	
	$.get(
		"getCalendarioCruzeiro.php", 
		{
			"ano"	: ano
		}, 
		function(data){
			if (!data.error) {
				$('#mostraAno').text(data.ano+(data.mes > 1 ? " / "+(data.ano+1) : ""));
				$('#anoAtual').val(data.ano);
				
				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
				limpaCalendario();
				
				var regiaoTotal;
				regiaoTotal = [];
				$.each(data.categorias, function(i, item) {
					regiaoTotal["'"+item.regiaoId+item.mes+"'"] = 0;
				})
				
				$.each(data.categorias, function(i, item) {
					regiaoTotal["'"+item.regiaoId+item.mes+"'"] = eval(regiaoTotal["'"+item.regiaoId+item.mes+"'"]) + eval(item.qtd);
				})
				
				$.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
					
					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);
							getProdutos(item.regiaoId, 0, 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);
						getProdutos(item.regiaoId, item.categoriaId, strMes.substr((strMes.length-2),2)+'/'+strAno);
					})
					.attr('title', item.qtd+' cruzeiro(s)')
					.appendTo(mes);
				})
				$('.categoria').hide();
			}
		},'json'
	);
}

function limpaCalendario()
{
	$('#calendarioCruzeiros td[mes] a').remove();
	$('#calendarioCruzeiros .hasCruzeiros').each(function(){
		$(this).removeClass('hasCruzeiros');
	})
}