$(document).ready(function(){
	
	// Variáveis de controle
	var cidades = {};
	cidades.origem = [];
	cidades.destino = [];
	cidades.selecionada = null;
		
	// Captura todas as cidades de Origem do select
	$("select[name=cidadeOrigem] option").each(function(i, o){
		if ($(o).val() != ''){
			cidades.origem.push(o);
		}
	});
	
	// Captura todas as cidades de Destino do select
	$("select[name=cidadeDestino] option").each(function(i, o){
		if ($(o).val() != ''){
			cidades.destino.push(o);
		}
	});

	// Monitora o evento de change do select de Origem. Uma vez modificado, altera o 
	// select de Destino
	$("select[name=cidadeOrigem]").change(function () {

		var codCidade = $(this).val();
		
		cidades.selecionada = $("select[name=cidadeDestino] :selected").val();

		// Executa uma funcao AJAX para atualizar os locais de destino de acordo com a origem
		if (codCidade == '-1'){
			var url = '/linha/destinosjson';
		} else {
			var url = '/linha/destinosjson/origem/'+ codCidade;
		}

		$.ajax({
			url: url,
			cache: true,
			dataType: 'json',
			beforeSend: function(XMLHttpRequest){
				$("select[name=cidadeDestino]").attr('disabled','disabled');
			},
			complete: function(XMLHttpRequest, textStatus){
				$("select[name=cidadeDestino]").removeAttr('disabled');
			},
			error: function(XMLHttpRequest, textStatus, errorThrown){
				alert('Houve uma falha ao atualizar a lista de destinos.');
			},
			success: function(data, textStatus, XMLHttpRequest){
				
				$("select[name=cidadeDestino] option").each(function(i, o){
					if ($(o).val() != '-1'){
						$(o).remove();
					}
				});
				
				for (var i=0; i<data.length; i++){
					if (data.length == 1){
						$("select[name=cidadeDestino]").append('<option value="' + data[i].codigo + '" selected="selected">' + data[i].nome +'</option>');
					} else {
						$("select[name=cidadeDestino]").append('<option value="' + data[i].codigo + '">' + data[i].nome +'</option>');
					}
				}

			}
		});
		
	}).change();
	
	// Tooltip das Viagens
	$("div.partidas ul li a").hover(function(){ 
		$(this).next("em").stop(true, true).animate({opacity: "show", top: "-35"}, "slow");
	}, function() {
		$(this).next("em").animate({opacity: "hide", top: "-70"}, "fast", function(){
			$(this).css("top","-10px");
		});
	});

	
});

/**
 * Função que faz a busca dos horários dos ônibus
 * de acordo com os paramentros selecionados.
 * 
 * @return void
 */
function getHorarios(){
	
	var origem = $('select[name=cidadeOrigem] :selected').val();
	var destino = $('select[name=cidadeDestino] :selected').val();
	
	if (origem == "" && destino == ""){
		alerta('Para utilizar o filtro é necessário escolher ao menos a Origem ou Destino da viagem.');
		return;
	}
	
	if (origem == destino){
		alerta('Você deve informar a Origem diferente do Destino');
		return;
	}
	
	document.location.href = "/linha/index/origem/"+ origem +"/destino/"+ destino;
	return;
	
}

/**
 * Função para travar a opção ativa no menu do site
 * @param nomeBotao
 * @return void
 */
function travarBotaoMenuSuperior(nomeBotao){
	
	// Verifica se o Botão existe no menu superior
	if ($('li#'+ nomeBotao).length == 0){
		return;
	}
	
	// Lista de botões identificados
	var botoes = $('li#'+ nomeBotao);
	
	// Percorre a lista executando as funções necessárias
	botoes.each(function(i, o){

		// Recupera texto do Botão
		var texto = $(o).children('a').html();
		
		// Adiciona a classe de ativo ao Botão
		$(o).addClass('ativo');
		
		// Remove o link do Botão
		$(o).children('a').remove();
		
		// Acrescenta o texto no Botão
		$(o).html(texto);
		
	});
	
	return;	

}

/**
 * Função de alerta utilizando o dialog do jQuery UI
 * 
 * @param mensagem
 * @param titulo
 * @param callback
 * @return void
 */
function alerta(mensagem, titulo, callback){
	
	if (titulo == ""){ titulo = 'Avisos'; }
	
	if ($('#dialog-modal').length > 0){
		
		$('#dialog-modal').attr('title', titulo);
		$('#dialog-modal').html('<p>'+ htmlentities(mensagem) +'</p>');
		
		$("#dialog-modal").dialog({
			width: 450,
			modal: true,
			draggable: false,
			resizable: false,
			buttons: {
				Ok: function() {
					$(this).dialog('close');					
					if (callback != "" && callback != undefined){callback();}
				}
			}
		});
		
	} else {
		
		alert(mensagem);
		if (callback != "" && callback != undefined){callback();}
		
	}
	
	return; 
	
}

function get_html_translation_table(table,quote_style){var entities={},hash_map={},decimal=0,symbol='';var constMappingTable={},constMappingQuoteStyle={};var useTable={},useQuoteStyle={};constMappingTable[0]='HTML_SPECIALCHARS';constMappingTable[1]='HTML_ENTITIES';constMappingQuoteStyle[0]='ENT_NOQUOTES';constMappingQuoteStyle[2]='ENT_COMPAT';constMappingQuoteStyle[3]='ENT_QUOTES';useTable=!isNaN(table)?constMappingTable[table]:table?table.toUpperCase():'HTML_SPECIALCHARS';useQuoteStyle=!isNaN(quote_style)?constMappingQuoteStyle[quote_style]:quote_style?quote_style.toUpperCase():'ENT_COMPAT';if(useTable!=='HTML_SPECIALCHARS'&&useTable!=='HTML_ENTITIES'){throw new Error("Table: "+useTable+' not supported');}
entities['38']='&amp;';if(useTable==='HTML_ENTITIES'){entities['160']='&nbsp;';entities['161']='&iexcl;';entities['162']='&cent;';entities['163']='&pound;';entities['164']='&curren;';entities['165']='&yen;';entities['166']='&brvbar;';entities['167']='&sect;';entities['168']='&uml;';entities['169']='&copy;';entities['170']='&ordf;';entities['171']='&laquo;';entities['172']='&not;';entities['173']='&shy;';entities['174']='&reg;';entities['175']='&macr;';entities['176']='&deg;';entities['177']='&plusmn;';entities['178']='&sup2;';entities['179']='&sup3;';entities['180']='&acute;';entities['181']='&micro;';entities['182']='&para;';entities['183']='&middot;';entities['184']='&cedil;';entities['185']='&sup1;';entities['186']='&ordm;';entities['187']='&raquo;';entities['188']='&frac14;';entities['189']='&frac12;';entities['190']='&frac34;';entities['191']='&iquest;';entities['192']='&Agrave;';entities['193']='&Aacute;';entities['194']='&Acirc;';entities['195']='&Atilde;';entities['196']='&Auml;';entities['197']='&Aring;';entities['198']='&AElig;';entities['199']='&Ccedil;';entities['200']='&Egrave;';entities['201']='&Eacute;';entities['202']='&Ecirc;';entities['203']='&Euml;';entities['204']='&Igrave;';entities['205']='&Iacute;';entities['206']='&Icirc;';entities['207']='&Iuml;';entities['208']='&ETH;';entities['209']='&Ntilde;';entities['210']='&Ograve;';entities['211']='&Oacute;';entities['212']='&Ocirc;';entities['213']='&Otilde;';entities['214']='&Ouml;';entities['215']='&times;';entities['216']='&Oslash;';entities['217']='&Ugrave;';entities['218']='&Uacute;';entities['219']='&Ucirc;';entities['220']='&Uuml;';entities['221']='&Yacute;';entities['222']='&THORN;';entities['223']='&szlig;';entities['224']='&agrave;';entities['225']='&aacute;';entities['226']='&acirc;';entities['227']='&atilde;';entities['228']='&auml;';entities['229']='&aring;';entities['230']='&aelig;';entities['231']='&ccedil;';entities['232']='&egrave;';entities['233']='&eacute;';entities['234']='&ecirc;';entities['235']='&euml;';entities['236']='&igrave;';entities['237']='&iacute;';entities['238']='&icirc;';entities['239']='&iuml;';entities['240']='&eth;';entities['241']='&ntilde;';entities['242']='&ograve;';entities['243']='&oacute;';entities['244']='&ocirc;';entities['245']='&otilde;';entities['246']='&ouml;';entities['247']='&divide;';entities['248']='&oslash;';entities['249']='&ugrave;';entities['250']='&uacute;';entities['251']='&ucirc;';entities['252']='&uuml;';entities['253']='&yacute;';entities['254']='&thorn;';entities['255']='&yuml;';}
if(useQuoteStyle!=='ENT_NOQUOTES'){entities['34']='&quot;';}
if(useQuoteStyle==='ENT_QUOTES'){entities['39']='&#39;';}
entities['60']='&lt;';entities['62']='&gt;';for(decimal in entities){symbol=String.fromCharCode(decimal);hash_map[symbol]=entities[decimal];}
return hash_map;}
function htmlentities(string,quote_style){var hash_map={},symbol='',tmp_str='',entity='';tmp_str=string.toString();if(false===(hash_map=this.get_html_translation_table('HTML_ENTITIES',quote_style))){return false;}
hash_map["'"]='&#039;';for(symbol in hash_map){entity=hash_map[symbol];tmp_str=tmp_str.split(symbol).join(entity);}
return tmp_str;}
