/*******************************************************************************
 * @name: frame.pesquisa.js
 * @purpose: Contém os métodos utilizados nas pesquisas dos frames.
 *
 * @author: Carlos Alberto - carlos@2xt.com.br
 * @since: 17/12/2009
 ******************************************************************************/

// Adicionado por Julio Fernando - Correção momentanea
//Parametros que definem a data minima e o periodo minimo de pesquisa permitido em cada modulo do sistema
var _aereo_data_minima = 0;
var _aereo_periodo_minimo = 0;
var _hotel_data_minima = 6;
var _hotel_periodo_minimo = 1;
var _hotel_nac_data_minima = 6;
var _hotel_nac_periodo_minimo = 1;
var _pacote_data_minima = 4;
var _pacote_periodo_minimo = 1;


// Cria os objetos onde serão instanciadas suas funções e variáveis
var hotel_nac = new Object;
var hotel = new Object;
var pacote = new Object;
var geral = new Object;
var aereo = new Object;

// Armazena a estrela selecionada pelo filtro. Zero significa pesquisar todas
// as estrelas.
hotel_nac._estrela_selecionada = 0;
hotel._estrela_selecionada = 0;
pacote._estrela_selecionada = 0;

var _iframe_height_inicial = 450;
var _iframe_height = null;
var _iframe_redimensionar_timeout = null;

var _iframe_thickbox_timeout = 0;

var _primeira_pesquisa = true;

// Sites feitos pela 2xt declaram esta variavel como true.
// Utilize-a para coisas especificas para estes sites.
var _iframe_endereco;
if(_iframe_endereco == undefined) {
    if(__site_doisxt) {
        var _iframe_endereco = 'http://' + window.location.href.split('/')[2] + '/';
    } else {
        var _iframe_endereco = 'http://frame.muchtour.com.br/';
    }
}

var ie_version = get_IE_version();

function trocar_aba(aba, modulo){
    var v_class = (ie_version != -1 && ie_version < 8) ? 'className' : 'class';
    var modulo_atual = $('#modulo_atual').val();
    var div_atual = $('#mt_pesquisa_' + modulo_atual);
    div_atual.hide();
    var aba_atual = $('#mt_aba_' + modulo_atual);
    aba_atual.attr(v_class, '');

    $(aba).attr(v_class, 'aba_ativa');
    $('#mt_pesquisa_' + modulo).show();
    $('#modulo_atual').val(modulo);
}

function call_relatorio() {
    iframe_redirect_get({}, _iframe_endereco + __muchtour_login + '/relatorio')
}
function esconder_estrelas(modulo) {
    var estrelas = $('#' + modulo + '_categoria_hotel img');

    for(var i=0; i<eval(modulo + "._estrela_selecionada"); i++) {
        var estrela = $(estrelas[i]);
        estrela.attr('src', estrela.attr('src').replace('off', 'on'));
    }

    for(var i=eval(modulo + "._estrela_selecionada"); i<estrelas.length; i++) {
        var estrela = $(estrelas[i]);
        estrela.attr('src', estrela.attr('src').replace('on', 'off'));
    }
}

// Gera a quantidade de assentos necessários para cada
// adulto, crianca e bebe. usado na validação e pesquisa
function gerar_qtd_assentos(modulo){
    var rel_adts = {'SGL': 1, 'DBL': 2, 'TPL': 3, 'QPL': 4, 'TWN': 2};
    var cont_adts = 0;
    var cont_chds = 0;
    var cont_cots = 0;

    // O aéreo a forma de passar os dados é bem diferente
    if(modulo == 'aereo') {
        cont_adts = parseInt($("#aereo_qtd_adultos").val(), 10);
        cont_chds = parseInt($("#aereo_qtd_criancas").val(), 10);
        cont_cots = parseInt($("#aereo_qtd_bebes").val(), 10);
    } else {
        var container_quartos = $('#' + modulo + '_selecao_quartos div[quarto]');


        container_quartos.each(function(){
            cont_adts += rel_adts[$(this).find('.type_quarto').val()];

            $(this).find('#' + modulo + '_qtde_chd').find('select').each(function(){
                var idade_chd = parseInt($(this).val(), 10);
                if (idade_chd >= 2 && idade_chd < 12) cont_chds += 1;
                else if (idade_chd >= 12) cont_adts += 1;
                else cont_cots += 1;
            });
        });
    }

    return [cont_adts, cont_chds, cont_cots]
}

function mt_submit_form() {
    $('#mt_div_frame').find('form:visible')[0].submit();
}

function iframe_redirect_get(dict, url) {
    var string_redirect = '?';
    for (x in dict) {
        string_redirect = string_redirect + x + '=' + dict[x] + '&';
    }

    if(__site_doisxt) {
        string_redirect += 'on_frame=1';
        // Reiniciamos o redimensionamento automatico
        var iframe = document.getElementById("iframe_muchtour");
        clearTimeout(_iframe_redimensionar_timeout);
        _iframe_height = null;

        // Para IE
        iframe.contentWindow.document.write("");
        iframe.style.height = '0px';
        redimensionar_frame_automaticamente();
        // Fim IE

        iframe.src = url + string_redirect;

        // Para os sites feitos pela 2xt escondemos o seu conteudo
        var e_div_conteudo = $('#div_conteudo');
        if(e_div_conteudo) e_div_conteudo.hide();

        $('#div_conteudo').hide();
    } else {
        string_redirect += 'on_frame=2';
        window.open(url + string_redirect);
    }
    return true;
}

geral.validacao = function(modulo, ida_volta) {
    // calculamos a quantidade de assentos necessárias para cada
    // tipo de passageiro
    assentos = gerar_qtd_assentos(modulo);
    var cont_adts = assentos[0];
    var cont_chds = assentos[1];
    var cont_cots = assentos[2];

    var data_ida = $('#' + ((modulo + '_') || '') + 'data_checkin').val();
    var data_volta = $('#' + ((modulo + '_') || '') + 'data_checkout').val();

    // construimos as datas de ida e volta e testamos sua validade
    var erro = "";
    //var data_ida = $('#data_checkin').val();
    //var data_volta = $('#data_checkout').val();
    var split_ida = data_ida.split("/");
    var split_volta = data_volta.split("/");
    // Necessário colocar a base 10 porque para meses menores que 10 o new Date()
    // não funciona corretamente
    var data_ida = new Date(split_ida[2], parseInt(split_ida[1], 10)-1, split_ida[0]);
    var data_volta = new Date(split_volta[2], parseInt(split_volta[1], 10)-1, split_volta[0]);

    // validação de datas
    if (data_ida == "")
        erro += "* Data de entrada obrigatória.\n";
    if (isNaN(data_ida))
        erro += "* Data de entrada inválida.\n";

    // Validacoes feitas para suportar o "somente ida" do aereo
    if(modulo != 'aereo' || (modulo == 'aereo' && ida_volta == true)) {
        if (data_volta == "")
            erro += "* Data de saída obrigatória.\n";
        if (isNaN(data_volta))
            erro += "* Data de saída inválida.\n";
        if (modulo != 'aereo' && data_ida >= data_volta)
            erro += "* Data de entrada deve ser antes da data de saída.\n";
        else if (modulo == 'aereo' && data_ida > data_volta)
            erro += "* Data de entrada deve ser antes da data de saída.\n";
    }
    // validação da cidade do hotle

    // Validação de origem e destino
    if ($('#' + ((modulo + '_') || '') + 'origem_viagem').length) {
        if ($('#' + ((modulo + '_') || '') + 'origem_viagem').val() == "")
            erro += "* Origem deve ser especificada.\n";
        else {
            if ($('#' + ((modulo + '_') || '') + 'origem_viagem').val().length < 3)
                erro += "* Origem deve conter 3 ou mais caracteres.\n";
        }
    }
    if ($('#' + ((modulo + '_') || '') + 'destino_viagem').val() == "")
        erro += "* Destino deve ser especificado.\n";
    else {
        if ($('#' + ((modulo + '_') || '') + 'destino_viagem').val().length < 3)
            erro += "* Destino deve conter 3 ou mais caracteres.\n";
    }

    // testa a quantidade de passageiros mínima, e criancas/bebes
    var qtd_criancas = 0;
    var rel_qtd_chd = {'SGL': 0,
                       'DBL': 0,
                       'QPL': 0,
                       'DBL-CHD': 1,
                       'TWN-CHD': 1,
                       'TPL-CHD': 1,
                       'DBL-CHD-CHD': 2,
                       'TWN-CHD-CHD': 2}

    // No aéreo regular crianças podem viajar sozinhas
    if(modulo != 'aereo') {
        if (cont_cots + cont_chds > cont_adts){
            erro += "* A quantidade de criancas informada é maior do que o permitido.\n";
            erro += "Diminua a quantidade de criancas/bebes para prosseguir.\n";
        }
    } else {
        if (cont_cots > cont_adts){
            erro += "* A quantidade de bebês informada é maior do que o permitido.\n";
            erro += "Podem viajar apenas 1 bebê por adulto.\n";
        }
    }

    if (erro != ""){
        alert(erro);
        return false;
    } else
        return true;
}

hotel_nac.pesquisar = function() {
    if (!geral.validacao('hotel_nac')) { return; }

    // Limpa-se os dois frames de produtos que poderão ser utilizados no site para efetuar uma nova pesquisa
    $('#iframe_muchtour, #res_pesquisa').css('height', '0px');
    $('#iframe_muchtour, #res_pesquisa').attr('src', '');
    var _height_atual = 0;

    // coletamos as preferencias de quartos do usuário
    var escolhas_quarto = [];

    var container_quartos = $('#hotel_nac_selecao_quartos div[quarto]');

    // geramos um dicionário com os códigos dos quartos, a passar para o
    // webservice apenas se a pesquisa não vier do frame (no frame os dados já estão "feitos").
    container_quartos.each(function(){
        var chds = new Array();
        var chds_neste_quarto = 0;

        $(this).find('#hotel_nac_qtde_chd').find('select').each(function(){
            if (parseInt($(this).val()) > 2)
                chds_neste_quarto += 1;
            chds.push($(this).val());
        });

        var escolha_quarto = {
            'tipo': $(this).find('.type_quarto').val(),
            'chds': chds,
            'adts': $(this).find('#hotel_nac_selecao_adts').val(),
            'quantidade': 1};
        escolhas_quarto.push(escolha_quarto);
    });

    // caso a pesquisa estiver sido executada pela primeira vez
    var destino = $('#hotel_nac_destino_viagem').val();
    var chegada = $('#hotel_nac_data_checkin').val();
    var saida = $('#hotel_nac_data_checkout').val();

    var dados = {
        'destino_viagem': destino.notone(),
        'data_checkin': chegada,
        'data_checkout': saida,
        'quartos': $.toJSON(escolhas_quarto),
        'nome_hotel': $('#hotel_nac_nome_hotel').val().notone(),
        'categoria': hotel_nac._estrela_selecionada};

    iframe_redirect_get(dados, _iframe_endereco + __muchtour_login + '/hotel_nacional/pesquisa');

    return dados;
}

hotel.pesquisar = function() {
    if (!geral.validacao('hotel')) { return; }

    // Limpa-se os dois frames de produtos que poderão ser utilizados no site para efetuar uma nova pesquisa
    $('#iframe_muchtour, #res_pesquisa').css('height', '0px');
    $('#iframe_muchtour, #res_pesquisa').attr('src', '');
    var _height_atual = 0;

    // coletamos as preferencias de quartos do usuário
    var escolhas_quarto = [];
    var rel_quarto_verbose = {'SGL': 'Single', 'DBL': 'Double', 'TPL': 'Triple',
                              'QPL': 'Quadruple', 'TWN': 'Twin'};

    assentos = gerar_qtd_assentos('hotel');
    var cont_adts = assentos[0];
    var cont_chds = assentos[1];
    var cont_cots = assentos[2];

    var container_quartos = $('#hotel_selecao_quartos div[quarto]');

    // geramos um dicionário com os códigos dos quartos, a passar para o
    // webservice
    container_quartos.each(function(){
        var chds = new Array();
        var chds_neste_quarto = 0;

        $(this).find('#hotel_qtde_chd').find('select').each(function(){
            if (parseInt($(this).val()) > 2)
                chds_neste_quarto += 1;
            chds.push($(this).val());
        });

        var qtde_chds = $('#hotel_selecao_chds').val();
        var str_chds = '';
        for (var i=0; i<chds_neste_quarto; i++) str_chds += '-CHD';

        var escolha_quarto = {
            'tipo': $(this).find('.type_quarto').val() + str_chds,
            'chds': chds,
            'quantidade': 1};
        escolhas_quarto.push(escolha_quarto);
    });

    // Definição dos dados de entrada e saída, que vem de inputs diferentes
    // de acordo com a definição de a pesquisa estiver sido executada pela
    // primeira vez ou não
    var destino = $('#hotel_destino_viagem').val();
    var chegada = $('#hotel_data_checkin').val();
    var saida = $('#hotel_data_checkout').val();

    var dados = {
        'adultos': cont_adts,
        'criancas': cont_chds,
        'bebes': cont_cots,
        'destino_viagem': destino.notone(),
        'data_checkin': chegada,
        'data_checkout': saida,
        'quartos': $.toJSON(escolhas_quarto),
        'nome_hotel': $('#hotel_nome_hotel').val().notone(),
        'categoria': hotel._estrela_selecionada};

    iframe_redirect_get(dados, _iframe_endereco + __muchtour_login + '/hotel/pesquisa');
    return dados;
}

pacote.pesquisar = function(){
    if (!geral.validacao('pacote')) { return; }

    // Limpa-se os dois frames de produtos que poderão ser utilizados no site para efetuar uma nova pesquisa
    $('#iframe_muchtour, #res_pesquisa').css('height', '0px');
    $('#iframe_muchtour, #res_pesquisa').attr('src', '');
    var _height_atual = 0;

    // TODO: Fazer a questão dos filtros por TODAS e por REGIONAIS
    var filtro = {"cions": ["oceanair", "passaredo", "taf", "trip", "webjet", "rico", "airminas"], "tam": ["tam"], "gol": ["gol"]}; //_filtro;
    if ($('#pacote_filtro_cias').find('#pacote_regionais')[0].checked) {
        filtro['gol'] = '';
        filtro['tam'] = '';
    }

    // coletamos as preferencias de quartos do usuário
    var escolhas_quarto = [];

    // calculamos a quantidade de assentos necessárias para cada
    // tipo de passageiro
    assentos = gerar_qtd_assentos('pacote');
    var cont_adts = assentos[0];
    var cont_chds = assentos[1];
    var cont_cots = assentos[2];

    var container_quartos = $('#pacote_selecao_quartos div[quarto]');

    container_quartos.each(function(){
        var chds = new Array();
        var bebes = new Array();
        var chds_neste_quarto = 0;

        $(this).find('#pacote_qtde_chd').find('select').each(function(){
            if (parseInt($(this).val()) > 2) {
                chds_neste_quarto += 1;
                chds.push($(this).val());
            } else {
                bebes.push($(this).val());
            }
        });

        var qtde_chds = $('#pacote_selecao_chds').val();

        var escolha_quarto = {
            'tipo': $(this).find('.type_quarto').val(),
            'chds': chds,
            'bebes': bebes,
            'adts': $(this).find('#pacote_selecao_adts').val(),
            'quantidade': 1};
        escolhas_quarto.push(escolha_quarto);
    });

    var partida = $('#pacote_data_checkin').val();
    var chegada = $('#pacote_data_checkout').val();
    var origem = $('#pacote_origem_viagem').val();
    var destino = $('#pacote_destino_viagem').val();

    var dados = {
        'adultos': cont_adts,
        'criancas': cont_chds,
        'bebes': cont_cots,
        'origem_viagem': origem.notone(),
        'destino_viagem': destino.notone(),
        'data_checkin': partida,
        'data_checkout': chegada,
        'quartos': $.toJSON(escolhas_quarto),
        'filtro': $.toJSON(filtro),
        'categoria': pacote._estrela_selecionada,
        'nome_hotel': $('#pacote_nome_hotel').val().notone()};

    iframe_redirect_get(dados, _iframe_endereco + __muchtour_login + '/pacote/pesquisa');
    return dados;
}


aereo.pesquisar = function(){
    var ida_volta = $("input[name='aereo_tipo_viagem']:checked").attr('id') == 'ida_volta';

    if (!geral.validacao('aereo', ida_volta)) { return; }

    // Limpa-se os dois frames de produtos que poderão ser utilizados no site para efetuar uma nova pesquisa
    $('#iframe_muchtour, #res_pesquisa').css('height', '0px');
    $('#iframe_muchtour, #res_pesquisa').attr('src', '');
    var _height_atual = 0;

    // TODO: Fazer a questão dos filtros por TODAS e por REGIONAIS
    var filtro = {"cions": ["oceanair", "passaredo", "taf", "trip", "webjet", "rico", "airminas"], "tam": ["tam"], "gol": ["gol"]};

    // calculamos a quantidade de assentos necessárias para cada
    // tipo de passageiro
    var assentos = gerar_qtd_assentos('aereo');
    var cont_adts = assentos[0];
    var cont_chds = assentos[1];
    var cont_cots = assentos[2];

    var partida = $('#aereo_data_checkin').val();
    var chegada = ida_volta ? $('#aereo_data_checkout').val() : '';
    var origem = $('#aereo_origem_viagem').val();
    var destino = $('#aereo_destino_viagem').val();

    var dados = {
        'ida_volta': ida_volta,
        'adultos': cont_adts,
        'criancas': cont_chds,
        'bebes': cont_cots,
        'origem': origem.notone(),
        'destino': destino.notone(),
        'partida': partida,
        'chegada': chegada,
        'num_pesquisa': 0,
        'filtro': $.toJSON(filtro)
    };

    iframe_redirect_get(dados, _iframe_endereco + __muchtour_login + '/aereo/pesquisa');
    return dados;
}



/**
 * Esta função verifica o tamanho do frame e faz um "auto-resize" para que o
 * o scroll que controla a página seja o mesmo controlador do frame.
 */
function redimensionar_frame_automaticamente() {
    var iframe = document.getElementById("iframe_muchtour");
    try {
        var iframe_document = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
        var height = iframe_document.body.scrollHeight;

        // As vezes o tamanho calculado não é o correto e deve ser substituído
        // pelo tamanho calculado diretamente no html, fazemos os 2 porque
        // o tamanho em `height` possui o mesmo problema.
        if(iframe.contentWindow.document.documentElement.offsetHeight > height && !document.all) {
            height = iframe.contentWindow.document.documentElement.offsetHeight;
        }
    } catch(e) {
        // Entra aqui quando não pode acessar a url, normalmente isto acontece
        // na url segura (tela de compra) onde o tamanho pode ser arbitrário.
        height = 1000;
    }

    if(_iframe_height_inicial == null) {
        _iframe_height_inicial = height;
    } else {
        // O frame nunca deve ter seu tamanho diminuído (com relação ao tamanho inicial)
        if(_iframe_height_inicial > height) {
            height = _iframe_height_inicial;
        }

        if(_iframe_height != height) {
            height += 10;
            _iframe_height = height;
            iframe.style.height = height + 'px';
        }
    }

    // Verificação da existência de um thickbox, se existir centraliza a página no centro do frame =D
    if(_iframe_thickbox_timeout >= 900) {
        var e_thickbox = iframe_document.getElementById("TB_window");
        if(e_thickbox) {
            if(!$(e_thickbox).attr('verificado')) {
                var iframe_top = document.all ? window.frames['iframe_muchtour'].screenTop : iframe.offsetTop;
                window.scrollTo(0, 50 + iframe_top + ((e_thickbox.offsetTop)*0.5));
            }
            $(e_thickbox).attr('verificado', 'true');
        }
        _iframe_thickbox_timeout = 0;
    }
    _iframe_thickbox_timeout += 300;
    _iframe_redimensionar_timeout = setTimeout(redimensionar_frame_automaticamente, 300);
}

// Faz com que aoi pesquisar no html fora do frame direcione o scroll do site
// para a posição
function criar_ancora(frame){
    if(_primeira_pesquisa) {
        _primeira_pesquisa = false;
    } else {
        window.top.location = "#iframe_muchtour";
    }
}

/**
 * Remove os acentos de uma string.
 **/
String.prototype.notone = function () {
    var invalidos = 'àèìòùâêîôûäëïöüáéíóúãõçÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÁÉÍÓÚÃÕÇ';
    var validos = 'aeiouaeiouaeiouaeiouaocAEIOUAEIOUAEIOUAEIOUAOC';

    var r = "";
    var s = this;

    for(var i=0; i<s.length; i++) {
        var j = invalidos.indexOf(s.charAt(i));
        if(j > -1) {
            r += validos.charAt(j);
        } else {
            r += s.charAt(i);
        }
    }
    return r;
}

$(document).ready(function(){
    trocar_aba(document.getElementById('mt_aba_pacote'), 'pacote');

    // ** FORMATAÇÃO HOTEL NACIONAL
    /*
     * Esconde/mostra na tela as opçoes de filtro de pesquisa
     */
    $('#hotel_nac_selector_filtros').click(function(){
        $('#hotel_nac_label_nome_hotel, #hotel_nac_categoria_hotel').each(function(){
            toogle_visibility($(this));
        });
    });

    // trata o filtro de estrelas
    $('#hotel_nac_categoria_hotel img').hover(function(){
        exibe_estrelas(this);
    },  esconder_estrelas('hotel_nac'));

    $('#hotel_nac_categoria_hotel img').click(function(){
        hotel_nac._estrela_selecionada = $(this).attr('n_estrela');
        $('#hotel_nac_todas_estrelas').show();
        $('#hotel_nac_todas_estrelas').removeClass('bold');
    });

    // selecionando 'todas as estrelas'
    $('#hotel_nac_todas_estrelas').click(function(){
        $(this).addClass('bold');
        hotel_nac._estrela_selecionada = 0;
        esconder_estrelas('hotel_nac');
        $(this).hide();
    });

    $('#mt_pesquisa_hotel_nacional div[quarto]').each(function(){
        var chds = $(this).children('#hotel_nac_selecao_chds');
        add_idade_chd(chds);
    });

    // Colocando os calendários
    var dias_semana_resumido = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];
    var dias_semana = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'];
    var meses_ano = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
                   'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
    // Calculamos dinamicamente o alcance dos anos que devem aparecer no calendario.
    // Poderão ser selecionadas datas de até dois anos após a data atual
    var ano_atual = (new Date()).getFullYear();

    $.datepicker.setDefaults({dayNamesShort: dias_semana_resumido,
                              dayNamesMin: dias_semana_resumido,
                              dayNames: dias_semana,
                              monthNames: meses_ano,
                              monthNamesShort: meses_ano,
                              dateFormat: 'dd/mm/yy',
                              altFormat: 'dd/mm/yy',
                              yearRange: ano_atual + ":" + (ano_atual + 2),
                              nextText: 'Próximo Mês',
                              prevText: 'Mês Anterior',
                              changeYear: true,
                              changeMonth: true});
   
    // Aplica os alt_fields e o callback do evento onSelect do calendário de ida,
    // para que o calendário de ida integre com o de volta    
    $('#hotel_nac_calendario_ida').datepicker({altField: '#hotel_nac_data_checkin',
                                     minDate: _hotel_nac_data_minima,
                                     onSelect: function() {
                                        var min_date = $('#hotel_nac_calendario_ida').datepicker('getDate');
                                        min_date = new Date(min_date.setDate(min_date.getDate() + _hotel_nac_periodo_minimo));
                                        $('#hotel_nac_calendario_volta').datepicker('option', 'minDate', min_date);
                                     }
                                     });
    
    $('#hotel_nac_calendario_volta').datepicker({altField: '#hotel_nac_data_checkout'});

    // obrigamos dessa forma o usuário a selecionar uma data
    $('#hotel_nac_data_checkin').val('');
    $('#hotel_nac_data_checkout').val('');

    // ** FORMATAÇÂO HOTEL INTERNACIONAL
       /*
    * Esconde/mostra na tela as opçoes de filtro de pesquisa
    */
    $('#hotel_selector_filtros').click(function(){
        $('#hotel_label_nome_hotel, #hotel_categoria_hotel').each(function(){
            toogle_visibility($(this));
        });
    });

    // trata o filtro de estrelas
    $('#hotel_categoria_hotel img').hover(function(){
        exibe_estrelas(this);
    },  esconder_estrelas('hotel'));

    $('#hotel_categoria_hotel img').click(function(){
        hotel._estrela_selecionada = $(this).attr('n_estrela');
        $('#todas_estrelas').show();
        $('#todas_estrelas').removeClass('bold');
    });

    // selecionando 'todas as estrelas'
    $('#hotel_todas_estrelas').click(function(){
        $(this).addClass('bold');
        hotel._estrela_selecionada = 0;
        esconder_estrelas('hotel');
        $(this).hide();
    });

    $('#mt_pesquisa_hotel div[quarto]').each(function(){
        var chds = $(this).children('#hotel_selecao_chds');
        add_idade_chd(chds);
    });

    // Aplica os alt_fields e o callback do evento onSelect do calendário de ida, para que o calendário de ida integre com o de volta
    $('#hotel_calendario_ida').datepicker({altField: '#hotel_data_checkin',
                                     minDate: _hotel_data_minima,
                                     onSelect: function() {                                     
                                     var min_date = $('#hotel_calendario_ida').datepicker('getDate');
                                     min_date = new Date(min_date.setDate(min_date.getDate() + _hotel_periodo_minimo));
                                     $('#hotel_calendario_volta').datepicker('option', 'minDate', min_date);
                                     }                                     
                                     });
        
    $('#hotel_calendario_volta').datepicker({altField: '#hotel_data_checkout'});

    // obrigamos dessa forma o usuário a selecionar uma data
    $('#hotel_data_checkin').val('');
    $('#hotel_data_checkout').val('');

    // ** FORMATAÇÃO PACOTE
    /*
     * Esconde/mostra na tela as opçoes de filtro de pesquisa
     */
    $('#pacote_selector_filtros').click(function(){
        $('#pacote_pesquisa_avancada').each(function(){
            toogle_visibility($(this));
        });
    });


    /*
     * Desabilita/habilita as companhias aéreas na pesquisa avançada
     */
    $('.filtro_companhias_aereas input').click(function(){
        // funções genéricas que serão usadas pelos filtros, implementados
        //  abaixo.
        function checked_true(){
            $(this).attr('checked', true);
        }

        function checked_false(){
            $(this).attr('checked', false);
        }

        var comps = $(this).attr('id');
        switch (comps){
            case 'todas':
                $('.companhias_filtro input').each(checked_true);
                break;
            case 'regionais':
                $('.companhias_filtro input').each(checked_false);
                $('.companhias_filtro input[name^=cions]').each(checked_true);
                break;
            case 'escolha':
                $('.companhias_filtro input').each(checked_false);
                break;
        }
    });

    // trata o filtro de estrelas
    $('#pacote_categoria_hotel img').hover(function(){
        exibe_estrelas(this);
    },  esconder_estrelas('pacote'));

    $('#pacote_categoria_hotel img').click(function(){
        pacote._estrela_selecionada = $(this).attr('n_estrela');
        $('#pacote_todas_estrelas').show();
        $('#pacote_todas_estrelas').removeClass('bold');
    });

    // selecionando 'todas as estrelas'
    $('#pacote_todas_estrelas').click(function(){
        $(this).addClass('bold');
        pacote._estrela_selecionada = 0;
        esconder_estrelas('pacote');
        $(this).hide();
    });

    $('#pacote_categoria_hotel img').click(function(){
        pacote._estrela_selecionada = $(this).attr('n_estrela');
        $('#pacote_todas_estrelas').show();
        $('#pacote_todas_estrelas').removeClass('bold');
    });

    $('mt_pesquisa_pacote div[quarto]').each(function(){
        var chds = $(this).children('#pacote_selecao_chds');
        add_idade_chd(chds);
    });

    // Aplica os alt_fields e o callback do evento onSelect do calendário de ida, para que o calendário de ida integre com o de volta
    $('#pacote_calendario_ida').datepicker({altField: '#pacote_data_checkin',
                                     minDate: _pacote_data_minima,
                                     onSelect: function() {
                                     var min_date = $('#pacote_calendario_ida').datepicker('getDate');
                                     min_date = new Date(min_date.setDate(min_date.getDate() + _pacote_periodo_minimo));
                                     $('#pacote_calendario_volta').datepicker('option', 'minDate', min_date);
                                     } });
    
    $('#pacote_calendario_volta').datepicker({altField: '#pacote_data_checkout'});

    // obrigamos dessa forma o usuário a selecionar uma data
    $('#pacote_data_checkin').val('');
    $('#pacote_data_checkout').val('');


    // ** FORMATAÇÃO AÉREO REGULAR
    // Aplica os alt_fields e o callback do evento onSelect do calendário de ida, para que o calendário de ida integre com o de volta
    $('#aereo_calendario_ida').datepicker({altField: '#aereo_data_checkin',
                                     minDate: _aereo_data_minima,
                                     onSelect: function() {
                                        var min_date = $('#aereo_calendario_ida').datepicker('getDate');
                                        min_date = new Date(min_date.setDate(min_date.getDate() + _aereo_periodo_minimo));
                                        $('#aereo_calendario_volta').datepicker('option', 'minDate', min_date);
                                        
                                        if($("input[name='aereo_tipo_viagem']:checked").attr('id') != 'ida_volta') {
                                            $('#aereo_calendario_volta').datepicker('disable');
                                        }
                                     } });

    $('#aereo_calendario_volta').datepicker({altField: '#aereo_data_checkout'});


    // obrigamos dessa forma o usuário a selecionar uma data
    $('#aereo_data_checkin').val('');
    $('#aereo_data_checkout').val('');

});


aereo.tornar_somente_ida = function() { 
    $('#aereo_calendario_volta').datepicker('disable');
}

aereo.tornar_ida_volta = function() {
    $('#aereo_calendario_volta').datepicker('enable');
}
