/**************************************************************
*
* CLASSE JAVASCRIPT COMBO BOX
*
* CRIADO POR: JONATAN BRANDI
* DATA: 13/07/2010
* OBS:
* EDITADO POR: JONATAN BRANDI
* DATA: 13/07/2010
* OBS:
*
*************************************************************/

function getPosicaoElemento(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 &&
			typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return { left: offsetLeft, top: offsetTop };
}

function documentClick (combo) {

    $(document).click(function () {
        $("#master_cont_" + combo.id).hide();
    });

    $(document).bind("keydown", function (event) {

        var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode));
        if (keycode == 27) {

            $("#master_cont_" + combo.id).hide();
        }

    }); 

    $("#bg_" + combo.id).click(function () {

        var browser = navigator.appName
        var ver = navigator.appVersion
        var thestart = parseFloat(ver.indexOf("MSIE")) + 1
        var brow_ver = parseFloat(ver.substring(thestart + 4, thestart + 7))
        if ((browser == "Microsoft Internet Explorer") && (brow_ver == 7)) {
            $("#master_cont_" + combo.id).css("left", getPosicaoElemento(combo.destino).left);
            $("#master_cont_" + combo.id).css("top", getPosicaoElemento(combo.destino).top + 24);
        }
        else {
            //$("#master_cont_" + combo.id).css("left", getPosicaoElemento(combo.destino).left-8);
            $("#master_cont_" + combo.id).css("left", getPosicaoElemento(combo.destino).left);
            $("#master_cont_" + combo.id).css("top", getPosicaoElemento(combo.destino).top + 23);
        }

        if ($("#master_cont_" + combo.id).css("display") == "none") {
            $(".master_cont").hide();
            $("#master_cont_" + combo.id).show()
            $("#cont_" + combo.id).focus()
        }
        else {
            $("#master_cont_" + combo.id).hide()
        }
        return false;
    });
}

function populaInput(id,descricao,controle) {
    $("#" + controle).val(replaceAll(descricao, "!*apo*!", "'"));
    $("#hdn_" + controle).val(replaceAll(id, "!*apo*!", "'"));
    $("#master_cont_" + controle).hide();

    
    
}

function replaceAll(str, de, para) {
    if (typeof (str) == "undefined")
        return "";
    var pos = str.indexOf(de);
    while (pos > -1) {
        str = str.replace(de, para);
        pos = str.indexOf(de);
    }
    return (str);
}

function carregaUf(combo) {
    addNewItem({ combo: combo, value: 'AC', label: 'Acre', selected: false });
    addNewItem({ combo: combo, value: 'AL', label: 'Alagoas', selected: false });
    addNewItem({ combo: combo, value: 'AM', label: 'Amazonas', selected: false });
    addNewItem({ combo: combo, value: 'AP', label: 'Amapá', selected: false });
    addNewItem({ combo: combo, value: 'BA', label: 'Bahia', selected: false });
    addNewItem({ combo: combo, value: 'CE', label: 'Ceará', selected: false });
    addNewItem({ combo: combo, value: 'DF', label: 'Distrito Federal', selected: false });
    addNewItem({ combo: combo, value: 'ES', label: 'Espírito Santo', selected: false });
    addNewItem({ combo: combo, value: 'GO', label: 'Goíás', selected: false });
    addNewItem({ combo: combo, value: 'MA', label: 'Maranhão', selected: false });
    addNewItem({ combo: combo, value: 'MT', label: 'Mato Grosso', selected: false });
    addNewItem({ combo: combo, value: 'MS', label: 'Mato Grosso do Sul', selected: false });
    addNewItem({ combo: combo, value: 'MG', label: 'Minas Gerais', selected: false });
    addNewItem({ combo: combo, value: 'PA', label: 'Pará', selected: false });
    addNewItem({ combo: combo, value: 'PB', label: 'Paraíba', selected: false });
    addNewItem({ combo: combo, value: 'PR', label: 'Paraná', selected: false });
    addNewItem({ combo: combo, value: 'PE', label: 'Pernambuco', selected: false });
    addNewItem({ combo: combo, value: 'PI', label: 'Piauí', selected: false });
    addNewItem({ combo: combo, value: 'RJ', label: 'Rio Janeiro', selected: false });
    addNewItem({ combo: combo, value: 'RN', label: 'Rio Grande do Norte', selected: false });
    addNewItem({ combo: combo, value: 'RS', label: 'Rio Grande do Sul', selected: false });
    addNewItem({ combo: combo, value: 'RO', label: 'Rondônia', selected: false });
    addNewItem({ combo: combo, value: 'RR', label: 'Roraima', selected: false });
    addNewItem({ combo: combo, value: 'SC', label: 'Santa Catarina', selected: false });
    addNewItem({ combo: combo, value: 'SP', label: 'São Paulo', selected: true });
    addNewItem({ combo: combo, value: 'SE', label: 'Sergipe', selected: false });
    addNewItem({ combo: combo, value: 'TO', label: 'Tocantins', selected: false });
}

function carregaFinalidade(combo) {
    addNewItem({ combo: combo, value: 'Residencial', label: 'Residencial', selected: true });
    addNewItem({ combo: combo, value: 'Comercial', label: 'Comercial', selected: false });
    addNewItem({ combo: combo, value: 'Com/Res', label: 'Com/Res', selected: false });
    addNewItem({ combo: combo, value: 'Industrial', label: 'Industrial', selected: false });
    addNewItem({ combo: combo, value: 'Rural', label: 'Rural', selected: false });
}

function carregaTipo(combo) {
    addNewItem({ combo: combo, value: 'indice', label: 'RESIDENCIAIS', selected: false });
    addNewItem({ combo: combo, value: '1', label: 'Apartamentos e Kitnets', selected: false });
    addNewItem({ combo: combo, value: '2', label: 'Coberturas', selected: false });
    addNewItem({ combo: combo, value: '3', label: 'Casas e Sobrados', selected: true });
    addNewItem({ combo: combo, value: '4', label: 'Terrenos', selected: false });
    addNewItem({ combo: combo, value: 'indice', label: 'COMERCIAIS / CORPORATIVOS', selected: false });
    addNewItem({ combo: combo, value: '5', label: 'Casas, Sobrados e Salões', selected: false });
    addNewItem({ combo: combo, value: '6', label: 'Salas, Pontos e Salões', selected: false });
    addNewItem({ combo: combo, value: '7', label: 'Prédios, Galpões e Barracões', selected: false });
    addNewItem({ combo: combo, value: '8', label: 'Áreas e Terrenos', selected: false });
    addNewItem({ combo: combo, value: 'indice', label: 'RURAIS', selected: false });
    addNewItem({ combo: combo, value: '9', label: 'Chácaras e Sítios', selected: false });
    addNewItem({ combo: combo, value: '10', label: 'Fazendas', selected: false });

    /*addNewItem({ combo: combo, value: 'Apartamento', label: 'Apartamento', selected: false });
    addNewItem({ combo: combo, value: 'Área', label: 'Área', selected: false });
    addNewItem({ combo: combo, value: 'Barracão', label: 'Barracão', selected: false });
    addNewItem({ combo: combo, value: 'Casa', label: 'Casa', selected: true });
    addNewItem({ combo: combo, value: 'Chácara', label: 'Chácara', selected: false });
    addNewItem({ combo: combo, value: 'Escritório', label: 'Escritório', selected: false });
    addNewItem({ combo: combo, value: 'Fazenda', label: 'Fazenda', selected: false });
    addNewItem({ combo: combo, value: 'Galpão', label: 'Galpão', selected: false });
    addNewItem({ combo: combo, value: 'Haras', label: 'Haras', selected: false });
    addNewItem({ combo: combo, value: 'Ponto', label: 'Ponto', selected: false });
    addNewItem({ combo: combo, value: 'Prédio', label: 'Prédio', selected: false });
    addNewItem({ combo: combo, value: 'Sala', label: 'Sala', selected: false });
    addNewItem({ combo: combo, value: 'Salão', label: 'Salão', selected: false });
    addNewItem({ combo: combo, value: 'Sítio', label: 'Sítio', selected: false });
    addNewItem({ combo: combo, value: 'Terreno', label: 'Terreno', selected: false });*/
}

function carregaDesejo(combo) {
    addNewItem({ combo: combo, value: 'Comprar', label: 'Comprar', selected: true });
    addNewItem({ combo: combo, value: 'Alugar', label: 'Alugar', selected: false });

}

function populaInput2(value) {
    alert(value);
}



function printCombo(combo) {
    var cont_width = parseInt(combo.width) - 2;
    var cont_height = parseInt(combo.height) - 4;
    var z_index_1 = 100 - parseInt(combo.z_index);
    var z_index_2 = 100 - parseInt(combo.z_index) - 1;


    if (typeof (combo.atualizar) != "undefined" && combo.atualizar != "")
        combo.evtClick = "atualizaCampos('" + combo.atualizar + "');";
    else if (typeof (combo.evtClick) == "undefined" || combo.evtClick == "")
        combo.evtClick = "";


    $("#" + combo.destino).html("<div id='bg_" + combo.id + "' style='width: " + combo.width + "px; height: " + combo.height + "px; background: url(" + combo.background + ") no-repeat; cursor:default; ' onmouseover=\"$(this).css(\'background\', \'url(" + combo.background + ") no-repeat 0px -" + combo.height + "px\');\" " +
                                "onmouseout=\"$(this).css(\'background\', \'url(" + combo.background + ") no-repeat 0px 0px\');\">" +
                                "<input nome='" + combo.label + "' name='"+combo.name+"' type=text id=" + combo.id + " readonly=readonly  style='outline:0 none; background:transparent; cursor:default; width: " + combo.input_width + "px; margin-left: 6px; margin-top: " + combo.input_margin_top + "px; border: 0px; ' />" +
                                "<input type=hidden class='chaveCombo' campo='" + combo.id + "' id=hdn_" + combo.id + " />" +
                                "</div>" +
                                "<div class=master_cont id='master_cont_" + combo.id + "' style='display:none; font-family:Arial;  width: " + cont_width + "px; top: " + cont_height + "px; max-height: 152px; border:solid 1px #CCC; border-top: 0px; background: #FFF; z-index: " + z_index_2 + "; position:absolute;'>" +
                                "<select onkeydown=\" if(OnEnter(event)){ populaInput(this.value, $('#cont_" + combo.id + " option:selected').html(),'" + combo.id + "' ); " + combo.evtClick + " } \" onclick=\"populaInput(this.value, $('#cont_" + combo.id + " option:selected').html(),'" + combo.id + "' ); " + combo.evtClick + " \"  multiple='multiple' id='cont_" + combo.id + "' style='width: " + cont_width + "px;  border:none; outline:0;  background: transparent;  max-height: 152px; '></div>");




 

    combo.documentClick(combo);
    if (combo.tipo == "uf")
        carregaUf(combo);
    else if (combo.tipo == "finalidade")
        carregaFinalidade(combo);
    else if (combo.tipo == "tipo")
        carregaTipo(combo);
    else if (combo.tipo == "desejo")
        carregaDesejo(combo);
}

function addNewItem(parametros) {
   
    if (typeof (parametros.selected) == "undefined")
        parametros.selected = false;


    if (parametros.combo.id == "inf_finalidade")
        parametros.evtClick += " chageValorConsulta(); ";
     

    if (parametros.value == "indice") {
        $("#cont_" + parametros.combo.id).append("<optgroup label=\"" + replaceAll(parametros.label, "!*apo*!", "'") + "\" style=\"background-color:#CCC;\"></optgroup>");
    }
    else {
        $("#cont_" + parametros.combo.id).append("<option value=\"" + replaceAll(parametros.value, "!*apo*!", "'") + "\">" + replaceAll(parametros.label, "!*apo*!", "'") + "</option>");
    }
    
    

    /*if (parametros.value != "indice") {
        $("#cont_" + parametros.combo.id).append("<div style='height: 17px; color:#000; padding:0px 5px; overflow:hidden; cursor:default;' onmouseover=\"$(this).css(\'background-color\', \'#3399FF\'); $(this).css(\'color\', \'#FFF\');\" " +
                                             "onmouseout=\"$(this).css(\'background-color\', \'#FFF\'); $(this).css(\'color\', \'#000\'); \" onClick=' populaInput(\"" + replaceAll(parametros.value, " ", "&nbsp;") + "\",\"" + replaceAll(parametros.label, " ", "&nbsp;") + "\",\"" + parametros.combo.id + "\"); " +
                                             parametros.evtClick + "' >" + replaceAll(parametros.label, "!*apo*!", "'") + "</div>");
    }
    else {
        $("#cont_" + parametros.combo.id).append("<div style='height: 17px; color:#000; font-weight:bold; background:#CCC; text-align:center; padding:0px 5px; overflow:hidden; cursor:default;'  " +
                                              " >" + replaceAll(parametros.label, "!*apo*!", "'") + "</div>");
    }
    */
        if (parametros.selected)
            populaInput(parametros.value, parametros.label, parametros.combo.id);

    
}


function Combo(parametros) {
    // Inicia Variaveis
    this.destino = '';
    this.id = '';
    this.width = '';
    this.input_width = '';
    this.height = '';
    this.background = '';
    this.z_index = '';
    this.atualizar = '';


    // Variaveis de controle

    this.destino = parametros.destino;
    this.label = parametros.label;
    this.name = parametros.name;
    this.id = parametros.id;
    this.tipo = (typeof (parametros.tipo) == 'undefined' ? '' : parametros.tipo);    
    this.width = parametros.width;
    this.input_width = parametros.input_width;
    this.height = parametros.height;
    this.background = parametros.background;
    this.z_index = parametros.z_index;
    this.evtClick = parametros.evtClick;
    this.atualizar = replaceAll(parametros.atualizar, " ", "");
    this.input_margin_top = (typeof (parametros.input_margin_top) == 'undefined' ? '1' : parametros.input_margin_top);

    // Métodos
    this.printCombo = printCombo;
    this.addNewItem = addNewItem;
    this.documentClick = documentClick;
    this.carregaUf = carregaUf;
    this.carregaFinalidade = carregaFinalidade;
    this.carregaTipo = carregaTipo;
}

