var buscaCruzeiros = {
	// Fields
	 regiaoId	: ''
	,categoriaId: ''
	,cidades	: []
	,armadorId	: ''
	,navioId	: ''
	,data		: ''
	,porto		: ''
	,noites		: ''
	
	,doSearch	: false
	,skipSave	: false
	,campoCidade: ''
	,requests	: null
	
	,saveValues : function()
	{
		if (this.skipSave) {
			this.skipSave = false;
			return;
		}
		this.regiaoId	= $('#regiaoId').val();
		this.categoriaId= $('#categoriaId').val();
		this.armadorId	= $('#armadorId').val();
		this.navioId	= $('#navioId').val();
		this.data		= $('#data').val();
		this.porto		= $('#porto').val();
		this.noites		= $('#noites').val();
		
		this.cidades	= [];
		$('select.cidade').each(function()
		{
			if ($(this).val() > 0) {
				buscaCruzeiros.cidades[buscaCruzeiros.cidades.length] = $(this).val();
			}
		});
	}
	
	,updateFields : function()
	{
		$('#regiaoId').val(this.regiaoId);
//		$('#categoriaId').val(this.categoriaId);
		$('#armadorId').val(this.armadorId);
		$('#navioId').val(this.navioId);
		$('#data').val(this.data);
		$('#porto').val(this.porto);
		$('#noites').val(this.noites);
		
		$('.cidade').attr('disabled', true);
		$('#cidadeId1').attr('disabled', false);
		
		if (this.cidades[0]) {
			$('#cidadeId1').val(this.cidades[0])
			$('#cidadeId2').attr('disabled', false);
		}
		if (this.cidades[1]) {
			$('#cidadeId2').val(this.cidades[1])
			$('#cidadeId3').attr('disabled', false);
		}
		if (this.cidades[2]) {
			$('#cidadeId3').val(this.cidades[2]);
		}
		
		if (this.doSearch) {
			this.doSearch = false;
			this.getResults();
		}
	}
	
	,clear: function(reload)
	{
		$('.cidade, #armadorId, #navioId, #data, #porto, #noites').empty();
		
		if (reload) {
			this.reset(reload);
		}
	}
	
	,reset : function(reload)
	{
		this.regiaoId	= '';
		this.categoriaId= '';
		this.cidades	= [];
		this.armadorId	= '';
		this.navioId	= '';
		this.data		= '';
		this.porto		= '';
		this.noites		= '';
		
		if (reload) {
			this.getParametros();
		}
	}
	
	,addRequest : function(req)
	{
		this.request = req;
	}
	
	,cancelRequest : function()
	{
		if (this.request) this.request.abort();
		this.request = null;
	}
	
	,getParametros : function()
	{
		buscaCruzeiros.addRequest($.get(
			WEB_ROOT + "pub/json/getParametrosCruzeiro.php", 
			{
				"categoriaId"	: buscaCruzeiros.categoriaId,
				"regiaoId"		: buscaCruzeiros.regiaoId,
				"cidadeId[]"	: buscaCruzeiros.cidades,
				"armadorId"		: buscaCruzeiros.armadorId,
				"navioId"		: buscaCruzeiros.navioId,
				"data"			: buscaCruzeiros.data,
				"porto"			: buscaCruzeiros.porto,
				"noites"		: buscaCruzeiros.noites
			}, 
			function(data) {
				if (!data.error) {
					buscaCruzeiros.preencheCombos(data, 'cidadeId1');
				}
			},'json'
		));
	}
	
	,btBuscar : function()
	{
		buscaCruzeiros.setCategoria('');
		buscaCruzeiros.getResults();
	}
	
	,getResults : function(regiaoId, categoriaId, data, page)
	{
		this.cancelRequest();
		this.saveValues();
		
		if (!page) page=1;
		
		if (regiaoId) this.setRegiao('cidadeId1', regiaoId);
//		if (regiaoId) this.setRegiao('cidadeId1', regiaoId, data);
		if (data) this.setData(data);
		
		if (categoriaId) this.setCategoria(categoriaId);
		
		if (!(buscaCruzeiros.regiaoId
		|| buscaCruzeiros.cidades.length > 0 
		|| (buscaCruzeiros.armadorId != '' && buscaCruzeiros.armadorId != null) 
		|| (buscaCruzeiros.navioId != '' && buscaCruzeiros.navioId != null) 
		|| (buscaCruzeiros.data != '' && buscaCruzeiros.data != null) 
		|| (buscaCruzeiros.porto != '' && buscaCruzeiros.porto != null)
		|| buscaCruzeiros.noites != '')) {
			alert("Entre com pelo menos um critério de busca.");
			return false;
		} else {
//			calendario.hide();
			$('.loading').show();
			$('.calend .cabec .texto').hide();
		}
		
		$('#nomeCategoria').text('');
		$('#resultBuscaCruzeiro').show();
		$('#resultBuscaCruzeiro ul').empty();
		$('#nomeDestinoCategoria').html('<div class=loading>PROCURANDO CRUZEIROS</div>');
		$('.btVoltar').remove();
		$('.totProdutos').empty();
		$('.paginas').empty();
		
		buscaCruzeiros.addRequest($.get(
			WEB_ROOT + "pub/json/getProdutosCruzeiro.php", 
			{
				"doSearch"		: 1,
				"page"			: page,
				"categoriaId"	: buscaCruzeiros.categoriaId,
				"regiaoId"		: buscaCruzeiros.regiaoId,
				"cidadeId[]"	: buscaCruzeiros.cidades,
				"armadorId"		: buscaCruzeiros.armadorId,
				"navioId"		: buscaCruzeiros.navioId,
				"data"			: buscaCruzeiros.data,
				"porto"			: buscaCruzeiros.porto,
				"noites"		: buscaCruzeiros.noites
			}, 
			function(data) {
				if (!data.error) {
					$('#nomeDestinoCategoria').html(data.regiao+(data.categoria ? ' <b>'+data.categoria+'</b>' : ''));
					
					if (data.produtos.length == 0) {
						link = $("<p>Nenhum cruzeiro encontrado.</p>")
							.appendTo('#resultBuscaCruzeiro ul');
					} else {
						if (typeof calendario != 'undefined') calendario.hide();
						
						buscaCruzeiros.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');
						}
					}
				}
				$('.loading').hide();
				$('.calend .cabec .texto').show();
			},'json'
		));
	}
	
	,mostraProdutos : function(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 += '<div class="ano titulo_lojas"><b>Sa&iacute;das em '+ano+'</b>:</div> ';
				//saidas += '<div>';
			    	saidas += '<div class="meses">';
				    $.each(meses, function(mes, dias)
				    {
				    	saidas += '<div class="mes">';
				    	saidas += '<b>'+mes+'</b>&nbsp;';
				        saidas += dias.join(',&nbsp;')+'; ';
				        saidas += '</div>';
				    })
			        saidas += '</div>';
			   // saidas += '</div>';
			});
			if (item.saidas.observacoes) {
				saidas += '<div style="clear:both;"><span class="titulo_lojas"><b>Observa&ccedil;&otilde;es</b>:</span> '+item.saidas.observacoes+'</div>';
			}
			
			$('#resultBuscaCruzeiro ul').append(
				'<li>'
				+(item.imagem ? '<a href="'+item.link+'" target="_blank"><img src="'+item.imagem+'"></a>' : '')
				+''
				+'<div class="texto">'
				+'	<h4>'+item.nome+' <small>- '+item.num_noites+' noites</small></h4>'
				+'	'
				+'	<b>Navio</b>:  '+item.navio+'<br>'
				+'	<b>Porto de Embarque</b>:  '+item.embarques+'<br>'
				+'	<b>Itinerário</b>: '+item.itinerarios+'<br>'
				+'	<div>'+saidas+'</div>'
				+'</div>'
	     	  	+'</li>'
			)
		})
		
		$('.totProdutos').text(data.totProdutos+' cruzeiro(s) encontrado(s)');
		
		page = parseInt(data.page);
		totPages = parseInt(data.totPages);
		totProdutos = parseInt(data.totProdutos);
		
		if (page > 1) {
			$("<a>&laquo;Anterior | </a>")
				.attr('href', '#')
				.addClass('btAnterior')
				.click(function()
				{
					buscaCruzeiros.getResults(null, data.categoriaId, null, (page-1));
					$(this).remove();
					return false;
				})
				.appendTo('.paginas');
		}
		
		$("<span> página "+page+" de "+totPages+" </span>").appendTo('.paginas');
		
		if (page < totPages) {
			$("<a> | Proximo&raquo;</a>")
				.attr('href', '#')
				.addClass('btProximo')
				.click(function()	
				{
					buscaCruzeiros.getResults(null, data.categoriaId, null, (page+1));
					$(this).remove();
					return false;
				})
				.appendTo('.paginas');
		}
	}
	
// SET
	,setRegiao : function(campoCidade, regiaoId)
	{
		this.cancelRequest();
		
		regiao = $('#regiaoId');
		if (regiaoId) {
			this.regiaoId = regiaoId;
			regiao.val(regiaoId);
		}
		
		if (!buscaCruzeiros.doSearch) buscaCruzeiros.reset();
		buscaCruzeiros.regiaoId = regiao.val();
		
		buscaCruzeiros.getParametros();
		
		/*
		$("#"+campoCidade).empty();
		$("#cidadeId2").empty();
		$("#cidadeId3").empty();
		$("#armadorId").empty();
		$("#navioId").empty();
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
		
		buscaCruzeiros.addRequest($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"	: buscaCruzeiros.regiaoId,
				"funcao"	: 'setRegiao'
			},
			function(data)
			{
				buscaCruzeiros.preencheCombos(data, campoCidade);
			},'json'
		));*/
	}
	
	,setCategoria : function(categoriaId) {
//		if (typeof(categoriaId) == 'undefined') {
//			categoriaId = '';
//		}
		
		buscaCruzeiros.categoriaId = categoriaId;
		//$('#categoriaId').val(categoriaId);
	}
	
	,setCidade : function(campoCidade, campoOrigem)
	{
		this.cancelRequest();
		
		buscaCruzeiros.cidades = [];
		$('.cidade option:selected').each(function()
		{
			if ($(this).val() > 0) {
				buscaCruzeiros.cidades[buscaCruzeiros.cidades.length] = $(this).val();
			}
		});
		
		buscaCruzeiros.getParametros();
		
		/*
		$("#"+campoCidade).empty();
		if (campoCidade != '0') {
			$("#cidadeId3").empty();
		}
		$("#armadorId").empty();
		$("#navioId").empty();
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
		
		if (cidades.length > 0) {
			this.addRequest($.get(
				"getParametrosCruzeiro.php", 
				{
					"regiaoId"		: buscaCruzeiros.regiao,
					"cidadeId[]"	: buscaCruzeiros.cidades,
					"funcao"		: 'setCidades'
				},
				function(data)
				{
					buscaCruzeiros.preencheCombos(data, campoCidade);
				},'json'
			));
		}*/
	}
	
	,setArmador : function()
	{
		this.cancelRequest();
		
		buscaCruzeiros.armadorId = $('#armadorId').val();
		
		buscaCruzeiros.getParametros();
		
		/*
		$("#navioId").empty();
		$("#data").empty();
		$("#porto").empty();
		$("#noites").empty();
	
		buscaCruzeiros.addRequest($.get(
			"getParametrosCruzeiro.php", 
			{
				"regiaoId"		: buscaCruzeiros.regiaoId,
				"cidadeId[]"	: buscaCruzeiros.cidades,
				"armadorId"		: buscaCruzeiros.armadorId,
				"funcao"		: 'setArmador'
			},
			function(data) {
				if (!data.error) {
					buscaCruzeiros.preencheCombos(data);
				}
			},'json'
		));*/
	}
		
	,setNavio : function()
	{
		this.cancelRequest();
		
		buscaCruzeiros.navioId = $('#navioId').val();
		
		buscaCruzeiros.getParametros();
	}
	
	,setData : function(data)
	{
		this.cancelRequest();
		
		campoData = $('#data');
		if (data) {
			this.data = data;
			campoData.val(data);
		} else {
			buscaCruzeiros.data = campoData.val();
		}
		
		buscaCruzeiros.getParametros();
	}
	
	,setPorto : function()
	{
		this.cancelRequest();
		
		buscaCruzeiros.porto = $('#porto').val();
		
		buscaCruzeiros.getParametros();
	}
	
	,setNoites : function()
	{
		this.cancelRequest();
		
		buscaCruzeiros.noites = $('#noites').val();
		
		buscaCruzeiros.getParametros();
	}
	
// PREENCHE
	,preencheCombos : function(data, campoCidade)
	{
		this.clear();
		
		buscaCruzeiros.preencheCidades(data.cidades, campoCidade);
		buscaCruzeiros.preencheArmador(data.cia);
		buscaCruzeiros.preencheNavio(data.navios);
		buscaCruzeiros.preencheDataSaida(data.dataSaida);
		buscaCruzeiros.preenchePorto(data.porto);
		buscaCruzeiros.preencheDuracao(data.duracao);
		buscaCruzeiros.updateFields();
	}
		
	,setPorto : function()
	{
		
	}


	,preencheCidades : function(cidades, campoCidade)
	{
		campoCidade = $('.cidade:empty');
		
		$(campoCidade).append($('<option>').text('Cidade/local').val(''));
		$.each(cidades, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.nome)
				.appendTo($(campoCidade));
//				.appendTo($("#"+campoCidade));
		});
	}
	
	,preencheArmador : function(armadores)
	{
		$("#armadorId").append($('<option>').text('').val(''));
		
		$.each(armadores, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.nome)
				.appendTo($("#armadorId"));
		});
	}
	
	,preencheDataSaida : function(datas)
	{
		$("#data").append($('<option>').text('').val(''));
		
		$.each(datas, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.data)
				.appendTo($("#data"));
		});
	}
	
	,preenchePorto : function(portos)
	{
		$("#porto").append($('<option>').text('').val(''));
		
		$.each(portos, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.nome)
				.appendTo($("#porto"));
		});
	}
	
	,preencheNavio : function(navios)
	{
		$('#navioId').append($('<option>').text('').val(''));
		
		$.each(navios, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.nome)
				.appendTo($('#navioId'));
		});
	}
	
	,preencheDuracao : function(periodos)
	{
		$('#noites').append($('<option>').text('').val(''));
	
		$.each(periodos, function(i, item) {
			$('<option>')
				.attr('value', item.id)
				.text(item.noites)
				.appendTo($('#noites'));
		});
	}
}
