/*******************************************************************************
 * @name: muchtour.manage_quartos.js
 * @purpose: Contém os métodos necessários para o controle de quartos nas páginas de pesquisa
 *                        e tarifação dos hoteis
 *
 * @dependency: muchtour.hotel.pesquisa.js e muchtour.pacote.pesquisa.js
 * @author: Carlos Alberto - carlos@2xt.com.br
 * @since: 06/07/2009
 ******************************************************************************/

/*
* Função que adiciona um 'quarto' na tela de pesquisa.
*/
function add_quarto(ultimo_container, obj_clicado, max_quartos){
    //var quant_quartos = jQuery('#selecao_quartos').find('div[quarto]').length;
    var quant_quartos = jQuery(obj_clicado).parent().parent().parent().find('div[quarto]').length;
    if (quant_quartos == 1){
        jQuery(obj_clicado).parent().parent().parent().find('.btn_inserir').show();
    }

    var model = jQuery(ultimo_container).clone();

    model.find('.type_quarto').val('SGL');
    change_max_chds(model.find('.type_quarto'));
    change_max_adts(model.find('.type_quarto'));

    model.find('#qtde_chd').empty();

    if (quant_quartos < max_quartos) {
        var pai = jQuery(ultimo_container).parent();
        jQuery(ultimo_container).parent().parent().find('.btn_add_quarto').before(model);

        // removemos o possível evento 'onclick' para inserir novo quarto
        // e o setamos para remover o quarto quando clicar novamente
        // neste btn
        jQuery(model).find('.btn_inserir').unbind('click');
        jQuery(model).find('.btn_inserir').click(function(){
            remove_quarto(model);
        });
    }
    
    if (quant_quartos == max_quartos-1){
        // caso a quantidade de quartos atingiu o máximo dentro
        // desse método
        jQuery(obj_clicado).hide();
        // Hack for IE
        jQuery(".btn_pesquisar").css("clear", "both");
    }
}

/*
* Função que remove um quarto na tela de pesquisa.
*/
function remove_quarto(quarto, max_quartos){
    var quant_quartos = jQuery(quarto).parent().parent().find('div[quarto]').length;

    // caso a quantidade de quartos no momento do cálculo for dois, quer
    // dizer que com a remoção de mais um quarto resta apenas um :).
    if (quant_quartos == max_quartos-1){
        jQuery(quarto).parent().parent().find('.btn_inserir').hide();
    } else if (quant_quartos == max_quartos) {
        jQuery(quarto).parent().parent().find('.btn_add_quarto').show();
    }

    if (quant_quartos > 1) jQuery(quarto).remove();
}

function get_prefixo(obj) {
    var pref = jQuery(obj).parent().parent().attr('id');
    var prefixo = pref.split('_', 1) + '_'; 

    if(pref.split('_', 2)[1] == 'nac') prefixo = 'hotel_nac_';
    if(!(prefixo == 'pacote_' || prefixo == 'hotel_' || prefixo == 'hotel_nac_')) prefixo = '';

    return prefixo;
}

/*
* Função que altera a quantidade máxima de crianças que determinado tipo de quarto suporta
*/
function change_max_chds(tipo_quarto, modulo) {
    // Adiciona um prefixo para o caso de vir do frame
    // O parametro modulo apenas mantem a compatibilidade com frames antigos
    //if (modulo) var prefixo = modulo + '_';
    //else var prefixo = '';
    var prefixo = get_prefixo(tipo_quarto);

    var rel_max_chds = {'SGL': 1, 'DBL': 2, 'TWN': 2, 'TPL': 1, 'QPL': 0};
    var jq_obj_tp_quarto = jQuery(tipo_quarto);
    var max_chds = rel_max_chds[jq_obj_tp_quarto.val()] + 1;
    var obj_quarto = jq_obj_tp_quarto.parent().parent();
    var obj_chds = obj_quarto.find('[id=' + prefixo + 'selecao_chds]');
    obj_chds.empty();
    obj_quarto.find('[id=' + prefixo + 'qtde_chd]').empty();
    
    for (i=0; i<max_chds; i++) {
        var container_chd = jQuery('<option/>');
        container_chd.attr('value', i).text(i);
        obj_chds.append(container_chd);
    }
}

/**
 * Edita a quantidade de adultos que cabe em cada tipo de quarto
 */
function change_max_adts(tipo_quarto, modulo) {
    // Adiciona um prefixo para o caso de vir do frame
    // O parametro modulo apenas mantem a compatibilidade com frames antigos
    //if (modulo) var prefixo = modulo + '_';
    //else var prefixo = '';
    var prefixo = get_prefixo(tipo_quarto);

    var rel_max_adts = {'SGL': 1, 'DBL': 2, 'TWN': 2, 'TPL': 3, 'QPL': 4};
    var jq_obj_tp_quarto = jQuery(tipo_quarto);
    var max_adts = rel_max_adts[jq_obj_tp_quarto.val()];
    var obj_quarto = jq_obj_tp_quarto.parent().parent();
    var obj_adts = obj_quarto.find('[id=' + prefixo + 'selecao_adts]');
    obj_adts.empty();
    
    var container_adt = jQuery('<option/>');
    container_adt.attr('value', max_adts).text(max_adts);
    obj_adts.append(container_adt);
    container_adt.attr('selected', 'selected');
}

/*
* Função que adiciona a idade da criança na tela de pesquisa
*/
function add_idade_chd(obj_chds, modulo) {
    // Adiciona um prefixo para o caso de vir do frame
    if (modulo) var prefixo = modulo + '_';
    else var prefixo = '';
    
//    var prefixo = get_prefixo(obj_chds);

    var chds = jQuery(obj_chds);
    var qtde_chd = chds.parent().parent().find('[id=' + prefixo + 'qtde_chd]');

    // Limpa para não colocar elementos indefinidamente
    qtde_chd.empty();

    var i = 0;
    for (i=0; i< chds.val(); i++) {
        var container_chd = jQuery('<label/>');
        jQuery('<span/>').text("Idade Criança " + (i+1) + " ").appendTo(container_chd);
        var obj_idade = jQuery('<select/>');

        obj_idade.attr('id', 'chd_' + i);
        
        //Style necessário para permitir que o teste "menor que 2" (vide a seguir)
        //não seja cortado no IE
        obj_idade.attr('style', "width:95px;");
        
        var string_options = '';

        var j = 0;
        for (j=0; j<15; j++) {
            var obj_option = jQuery('<option/>');
            var idade = obj_option.attr('value', j).text(j);
            obj_idade.append(obj_option);
            if(j == 1) {
                obj_idade.append(jQuery('<option value="1">menor que 2</option>'));
            }
        }

        container_chd.append(obj_idade);
        qtde_chd.append(container_chd);
    }
}
 
/*
* Exibe as estrelas preenchidas de acordo com a estrela passada por parametro.
*/
function exibe_estrelas(sender) {
    var sender = jQuery(sender);
    var estrelas = sender.parent().find('img');
    var n_estrela = parseInt(sender.attr('n_estrela'), 10);
    
    for(var i=0; i<n_estrela; i++) {
        var estrela = jQuery(estrelas[i]);
        estrela.attr('src', estrela.attr('src').replace('off', 'on'));
    }
    
    for(var i=n_estrela; i<estrelas.length; i++) {
            var estrela = jQuery(estrelas[i]);
            estrela.attr('src', estrela.attr('src').replace('on', 'off'));
    }
}

/*
* De acordo com a estrela atualmente selecionada (var _estrela_selecionada)
* ele persiste as escolhas do usuario.
*/
function esconder_estrelas() {
    var estrelas = jQuery('#categoria_hotel img');

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

