var buscaAjaxEmAndamento = null; var localidadesAjax = null; $(document).ready(function () { // $('#preco-min, #preco-max, #area-max, #area-min').selectpicker('destroy').editableSelect({ effects: 'default', filter: false }); var cmd = $("#cmd").val(); $('#transacao').change(function () { trocarTiposImoveis(); trocarFaixaValores(); if (cmd == "imoveis" || cmd == "imovel") { // se página de resultado ou ficha do imóvel, já refazer a busca buscarImoveis(1); // REFAZ A BUSCA, SEM PEDIR CLIQUE NO BOTÃO DE BUSCA } }); $("#tipo-imovel").change(function () { if (!$("#tipo-imovel").val()) { $(".buscador").find('.buscar-imoveis').find("button").addClass("erro"); } else { $(".buscador").find('.buscar-imoveis').find("button").removeClass("erro"); } if (cmd == "imoveis" || cmd == "imovel") { // se página de resultado ou ficha do imóvel, já refazer a busca buscarImoveis(2); // REFAZ A BUSCA, SEM PEDIR CLIQUE NO BOTÃO DE BUSCA } }); $('.precoMinimo,.precoMaximo').maskedInput("000.000.000.000.000,00", {reverse: true}); var xhr; $('#localidade').autoComplete({ minChars: 3, source: function (term, response) { try { xhr.abort(); } catch (e) { console.log("error ajax auto complete", e.message); } xhr = $.post('/ajax-pegar-localidades', {localidade: term}, function (data) { response(data); }); }, renderItem: function (item, search) { search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi"); response = null; if (item.bairros !== "" && item.bairros !== undefined && (item.bairros.length > 0)) { response = "
Bairros
"; zebrado_0 = null; zn_0 = 0; for (var i = 0; i < item.bairros.length; i++) { if (zn_0 % 2 === 0) { zebrado_0 = 'par'; } else { zebrado_0 = 'impar'; } response += '
' + item.bairros[i].localidade.replace(re, "$1") + '
'; zn_0++; } } if (item.cidades !== "" && item.cidades !== undefined && (item.cidades.length > 0)) { response = "
Cidades
"; zebrado_1 = null; zn_1 = 0; for (var i = 0; i < item.cidades.length; i++) { if (zn_1 % 2 === 0) { zebrado_1 = 'par'; } else { zebrado_1 = 'impar'; } response += '
' + item.cidades[i].localidade.replace(re, "$1") + '
'; zn_1++; } } return response; }, onSelect: function (e, term, item) { buscarImoveis(3); } }); $(".buscar-imoveis").change(function () { var cmd = $("#cmd").val(); if (cmd == "imoveis" || cmd == "imovel") { // se página de resultado ou ficha do imóvel, já refazer a busca buscarImoveis(4); } }); $("body").on('click', '#buscar', function(){ buscarImoveis("b"); }); $("#localidade").keyup(function () { if ($(this).val().length > 3) { $("#localidade").removeClass("erro"); } }); $(".buscar").click(function () { buscarImoveis(6); }); $("#pesquisar-codigo").click(function () { var obj = $("#codigo-buscar"); if (obj.val() == "") { obj.addClass("erro"); } else { obj.removeClass("erro"); buscarImoveis("c"); } }); $(".banner").click(function() { var local = $(this).attr("local"); $.post("ajax-registrar-clique-banner", {'id': $(this).attr("id"), 'local': $(this).attr("local"), 'url': document.location.href}, function (url) { // direcionar para a página do banner if(url != ""){ if(local == "1") { window.location = url; } else { window.open(url, '_blank'); } } } ); ; }); $(".registrar-clique").click(function() { $.post("ajax-registrar-clique-resultado-busca", {'pag': 'res', 'id-imovel': $("#id_imovel").val(), 'id': $(this).attr("id")}, function() { }); }); }); function carregarVerTelefone() { $('.b-contatar').find('#ver-telefone').on('click', function () { $(this).addClass("ativo"); $(this).find('.texto').hide('slow'); $(this).find('.telefones').show('slow'); }); } function maisFiltros() { $('#mais-filtros').on('click', function () { $('.mais-filtros').toggle('slow'); if ($(this).text() == 'MAIS FILTROS') { $(this).text('MENOS FILTROS'); $(".buscador").addClass("area-mais-filtros"); } else { $(this).text('MAIS FILTROS'); $(".buscador").removeClass("area-mais-filtros"); } }); } function buscarImoveis(controle, parametro) { $(".buscar").attr('disabled', 'disabled'); var cmd = $("#cmd").val(); var erros = ""; if (!$("#transacao").val()) { $("#transacao").addClass("erro"); erros += ",transação"; } else { $("#transacao").removeClass("erro"); } if ( ($("#tipo-imovel").val() == "" || $("#tipo-imovel").val() == "0") && cmd != "imobiliaria" ) { $(".buscador").find('.buscar-imoveis').find("button").addClass("erro"); erros += ",localidade"; } else { $(".buscador").find('.buscar-imoveis').find("button").removeClass("erro"); } if (!$("#localidade").val()) { $("#localidade").addClass("erro"); erros += ",localidade"; } else { if($("#localidade").val().split(',')[1] != undefined && $("#localidade").val().split(',')[1].trim() != ''){ $("#localidade").removeClass("erro"); }else{ $("#localidade").addClass("erro"); erros += ",localidade"; } } if (erros != "") { $("#msg-erro").html("Por favor, preencha os dados faltantes: " + erros.substr(1)); $("#erro-falta-de-dados").fadeTo(2000, 500).slideUp(500, function () { $("#erro-falta-de-dados").slideUp(500); }); } else { if (controle == undefined) { controle = (cmd == "imoveis" ? "" : "h"); // clique no botão 'BUSCAR' da página principal OU no imóvel } fazerBuscaImoveis(controle, parametro); } $(".buscar").removeAttr('disabled'); } function removerFiltroBuscador(filtro, naoRefazerBusca) { naoRefazerBusca = naoRefazerBusca ? true : false; ajustarFiltroEliminadoNaTela(filtro); var filtros = ""; var idsTiposImoveis = ""; var idsBairros = ""; var idsImobiliarias = ""; var quartos = ""; var vagasGaragem = ""; var banheiros = ""; var outrasOpcoes = ""; $(".filtro-aplicado").each(function () { var valor = $(this).attr("value"); if (!valor || (valor && valor != filtro)) { if (valor.substr(0, 4) == "tip-") { idsTiposImoveis += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "bai-") { idsBairros += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "imb-") { idsImobiliarias += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "qto-") { quartos += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "vag-") { vagasGaragem += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "bnh-") { banheiros += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "out-") { outrasOpcoes += ";" + valor.substr(4); } else if (valor.substr(0, 4) == "vli-" || valor.substr(0, 4) == "vls-" || valor.substr(0, 4) == "ari-" || valor.substr(0, 4) == "ars-") { filtros += "," + valor.substr(0, 3) + "=" + valor.substr(4); } else { filtros += "," + valor + "=" + $(this).html().trim(); } } }); if (idsTiposImoveis != "") { filtros += ",idtip=" + idsTiposImoveis.substr(1); } if (idsBairros != "") { filtros += ",idbai=" + idsBairros.substr(1); } if (idsImobiliarias != "") { filtros += ",idimb=" + idsImobiliarias.substr(1); } if (quartos != "") { filtros += ",qto=" + quartos.substr(1); } if (vagasGaragem != "") { filtros += ",vag=" + vagasGaragem.substr(1); } if (banheiros != "") { filtros += ",bnh=" + banheiros.substr(1); } if (outrasOpcoes != "") { filtros += ",out=" + outrasOpcoes.substr(1); } if (!naoRefazerBusca) { fazerBuscaImoveis("f", filtros.substr(1)); } } function ajustarFiltroEliminadoNaTela(filtro) { if (filtro.substr(0, 4) == "vli-") { $("#preco-min").val($("#preco-min option:first").val()); } else if (filtro.substr(0, 4) == "vls-") { $("#preco-max").val($("#preco-max option:first").val()); } else if (filtro.substr(0, 4) == "ari-") { $("#area-min").val($("#area-min option:first").val()); } else if (filtro.substr(0, 4) == "ars-") { $("#area-max").val($("#area-max option:first").val()); } else if (filtro.substr(0, 4) == "qto-") { ajustarFiltroSelectNaTela("quartos", filtro); } else if (filtro.substr(0, 4) == "vag-") { ajustarFiltroSelectNaTela("vagas", filtro); } else if (filtro.substr(0, 4) == "bnh-") { ajustarFiltroSelectNaTela("banheiros", filtro); } else if (filtro.substr(0, 4) == "out-") { $("#" + filtro).prop("checked", false); } } function ajustarFiltroSelectNaTela(id, filtro) { $(('#' + id) + ' :selected').each(function () { if ($(this).attr("id") == filtro) { $(this).prop("selected", false); } }); $(('#' + id)).selectpicker("refresh"); } function buscaImoveisDeCoordenadas(coordenadas) { buscarImoveis("a", coordenadas); } function buscarImoveisMapa() { buscarImoveis("m"); } function adicionarCliqueOrdenacao() { $('#ordenacao').change(function () { buscarImoveis("o"); }); } function adicionarCliquesImoveis() { $(document).find(".imovel").each( function (i) { $(this).find('.ir-ficha-imovel').each( function () { $(this).on('mouseup', function () { var idImovel = pegarIdImovel($(this)); var url = pegarUrlImovel($(this)); $.post("ajax-registrar-clique-resultado-busca", {'pag': 'res', 'id-imovel': idImovel, 'id': $(this).attr("id")}, function () { } ); }); } ); } ); } $(function () { $('#refinar-busca').click(function () { var btn = $(this); btn.html("Esconder Refinar Busca").css({ cursor: "wait" }); $(".refinar").slideToggle("slow", function () { btn.css({ cursor: "pointer" }); if ($(this).is(":hidden")) { btn.html("Refinar Busca"); } }); }); /* End Refina Busca*/ $(window).on('resize', function () { if (!$(".toggle").is(":visible") && !$(".refinar").is(':visible')) { $(".refinar").css({'display': ''}); } }); var tfocus = false; var localidadeAnterior = $('#localidade').val(); $('#localidade').on("focus, click", function (e) { if ($(this).val().length > 0 && tfocus || tfocus === false) { localidadeAnterior = $('#localidade').val(); $(this).val(""); } e.stopPropagation(); $(this).popover({ trigger: 'manual', container: '.input-group-icon', template: '', html: true, content: function () { return $('#busca_popover').html(); } }); if ($(this).val().length <= 0) { $(this).popover('show'); } }).keyup(function (e) { e.stopPropagation(); if ($(this).val().length >= 1) { $(this).popover('hide'); } }).blur(function (e) { e.stopPropagation(); tfocus = true; // $('#localidade').popover("destroy"); $(this).popover('hide'); if ($(this).val().length == 0) { $(this).val(localidadeAnterior); } }), $(".ir-para-busca").click(function () { irPara(SITE + "/imoveis/" + $(this).attr("alvo")); }), $(".ir-para-topo").click(function () { irParaTopo(); }), $(".posicionar-buscador").click(function () { var link_text = $(this).text(); $("#localidade").popover({ trigger: 'manual', container: '.input-group-icon', template: '', html: true, content: function () { $('#busca_popover_rodape').find("p strong").text(link_text); return $('#busca_popover_rodape').html(); } }).keyup(function (e) { e.stopPropagation(); if ($(this).val().length >= 1) { $(this).popover('hide'); } }).blur(function (e) { e.stopPropagation(); $(this).popover('destroy'); }); $("#localidade").popover('show'); posicionarBuscador($(this).attr("id-transacao"), "#menu-cabecalho"); }); }); function posicionarBuscador(idTransacao, posicao) { $('#transacao option[value=' + idTransacao + ']').attr('selected', 'selected'); $('#transacao').selectpicker("refresh"); trocarTiposImoveis(); irParaTopo(posicao); $("#localidade").focus(); } function trocarTiposImoveis() { // $.ajaxSetup({async: false}); $.post("ajax-pegar-tipos-imoveis", {'transacao': $("#transacao").val(), 'tipo-imovel': $("#tipo-imovel").val(), 'tipo': $("#tipo-imovel").attr("tipo")}, function (html) { $("#tipo-imovel").html(html); } ); } function trocarFaixaValores() { $.post("ajax-pegar-faixa-valores", {'transacao': $("#transacao").val()}, function (html) { // $("#preco-min, #preco-max").editableSelect('destroy'); // $("#preco-min, #preco-max").html(html); // $("#preco-min, #preco-max").editableSelect({ effects: 'default', filter: false }); $("#preco-min").html(html).selectpicker('refresh'); $("#preco-max").html(html).selectpicker('refresh'); } ); } function pegarIdImovel(obj) { while (($(obj) && $(obj).attr("id-imovel")) == undefined) { obj = $(obj).parent(); } return $(obj).attr("id-imovel"); } function pegarUrlImovel(obj) { while (!$(obj).hasClass("imovel")) { obj = $(obj).parent(); } var url = $(obj).find(".url").attr("url-imovel"); if (url != undefined && url != "/?") { return url; } else { return ""; } } function fazerBuscaImoveis(controle, parametro) { controle = (controle != undefined ? controle : ""); $('.bloco-aguarde').show(); /* * controle: * nada: faz a busca na página 1 e atualiza toda a página de resultado * a: busca imóveis nas coordenadas passadas em 'parametro' * b: busca vinda do botão 'buscar imóvel' * c: busca imóveis com código(imobiliária) passado em 'parametro' * f: busca imóveis com os filtros passados em 'parametro' * h: busca vinda da home * l: busca vinda do 'limpar filtros' * m: busca do mapa * 2: quando trocou o select do tipo de imóvel */ if (controle != "+" || (controle == "+" && !buscaAjaxEmAndamento)) { if (buscaAjaxEmAndamento) { buscaAjaxEmAndamento.abort(); buscaAjaxEmAndamento = null; } var filtrosAplicar = ""; if (controle == "a") { coordenadasMapa = parametro; } else { coordenadasMapa = $("#coordenadasMapa").val(); } var tipoImovel = ""; $('#tipo-imovel :selected').each(function () { if ($(this).val().trim() != "") { tipoImovel += "," + ($(this).val().trim()); } }); tipoImovel = tipoImovel.substr(1); var tipo = $('#tipo-imovel').attr("tipo"); var idsTiposImoveis = ""; // NÃO FUNCIONOU // if(controle != "b") { // clicado no botão 'buscar'... pegar os tipos de imóveis do grupo // $(".filtro-aplicado").each(function () { // pegar dos filtros aplicados // var valor = $(this).attr("value"); // if (valor.substr(0, 4) == "tip-") { // idsTiposImoveis += ";" + valor.substr(4); // } // }); // } idsTiposImoveis = idsTiposImoveis.substr(1); if (controle == "f") { // aplicar na busca somente os filtros da sessão 'filtros aplicados' filtrosAplicar = parametro + ",tip=" + tipoImovel + ",tipi=" + tipo; } else { var cmd = $('#cmd').val(); var transacao = $('#transacao').val(); var localidade = $('#localidade').val(); var idImobiliaria = $('#id-imobiliaria').val(); // página de imobiliárias idImobiliaria = idImobiliaria == undefined ? "" : idImobiliaria; if (controle == "b" || controle == "h") { // vindo da home ou da página de imobiliárias //$("#lista-imoveis").html("Aguarde o carregamento dos imóveis..."); $.post("ajax-montar-url-busca", {'transacao': transacao, 'tipo-imovel': tipoImovel, 'localidade': localidade, 'tipo': tipo, 'cmd': cmd, 'id-imobiliaria': idImobiliaria}, function (url) { irPara(SITE + "/" + url); } ); } else { var valorMinimo = (null != $("#preco-min").val()) ? $("#preco-min").val().replaceAll(".", "").replaceAll(",",".") : ''; console.log('VM: '+ valorMinimo); var valorMaximo = (null != $("#preco-max").val()) ? $("#preco-max").val().replaceAll(".", "").replaceAll(",",".") : ''; var areaMinima = (null != $("#area-min").val()) ? $("#area-min").val().replaceAll(".", "").replaceAll(",",".") : ''; var areaMaxima = (null != $("#area-max").val()) ? $("#area-max").val().replaceAll(".", "").replaceAll(",",".") : ''; var dormitorios = ""; $('#quartos :selected').each(function () { if ($(this).val().trim() != "") { dormitorios += (dormitorios == "" ? "" : ";") + ($(this).val().trim()); } }); var vagasGaragem = ""; $('#vagas :selected').each(function () { if ($(this).val().trim() != "") { vagasGaragem += (vagasGaragem == "" ? "" : ";") + ($(this).val().trim()); } }); var banheiros = ""; $('#banheiros :selected').each(function () { if ($(this).val().trim() != "") { banheiros += (banheiros == "" ? "" : ";") + ($(this).val().trim()); } }); var somenteCodigo = ""; var codigoBuscar = ""; if (controle == "c") { somenteCodigo = $("#somente-codigo").prop("checked"); codigoBuscar = $("#codigo-buscar").val(); } var outrasCaracteristicas = ""; $(".buscar").each( function () { outrasCaracteristicas += $(this).prop("checked") ? "1" : "0"; } ); } } if (controle == "+") { var pagina = $("#pagina").val(); pagina++; } else { pagina = 1; } $("#pagina").val(pagina); $("#pag").html(pagina); var ordenacao = $("#ordenacao").val(); var idLogBusca = $("#idLogBusca").val(); var visualizacao = $(".visualizacao.visualizacao-ativa").attr("id"); if (visualizacao == 'mapa' && coordenadasMapa == '') controle = 'm'; // //----------------------- if(controle != "f") { var idsBairros = ""; var idsImobiliarias = ""; var outrasOpcoes = ""; var filtrosAplicar = ",ord=" + ordenacao; if(valorMinimo != "") { filtrosAplicar += ",vli=" + valorMinimo; } if(valorMaximo != "") { filtrosAplicar += ",vls=" + valorMaximo; } if(areaMinima != "") { filtrosAplicar += ",ari=" + areaMinima; } if(areaMaxima != "") { filtrosAplicar += ",ars=" + areaMaxima; } if(transacao != "") { filtrosAplicar += ",trs=" + transacao; } if(outrasCaracteristicas != "") { filtrosAplicar += ",out1=" + outrasCaracteristicas; } if(tipo.toLowerCase() == "grupo") { filtrosAplicar += ",idgrp=" + tipoImovel; } if(idImobiliaria != "") { filtrosAplicar += ",idimb=" + idImobiliaria; } if(idLogBusca != "") { filtrosAplicar += ",idbus=" + idLogBusca; } if(localidade != "") { filtrosAplicar += ",loc=" + localidade.replace(",",";"); } $(".filtro-aplicado").each(function () { var valor = $(this).attr("value"); if (valor.substr(0, 4) == "tip-") { idsTiposImoveis += (idsTiposImoveis == "" ? "" : ";") + valor.substr(4); } else if (valor.substr(0, 4) == "bai-") { idsBairros += (idsBairros == "" ? "" : ";") + valor.substr(4); } else if (valor.substr(0, 4) == "imb-") { idsImobiliarias += (idsImobiliarias == "" ? "" : ";") + valor.substr(4); } else if (valor.substr(0, 4) == "vli-" || valor.substr(0, 4) == "vls-" || valor.substr(0, 4) == "ari-" || valor.substr(0, 4) == "ars-") { filtrosAplicar += (filtrosAplicar == ""? "" : ",") + valor.substr(0, 3) + "=" + valor.substr(4); } else if (localidade == "" && (valor == "cid" || valor == "uf")) { // pegar cidade e uf se não encontrou na caixa de texto filtrosAplicar += (filtrosAplicar == ""? "" : ",") + valor + "=" + $(this).html().trim(); } }); if (idsTiposImoveis != "" && controle != "2") { // ao trocar o tipo de imóvel, não considerar o que tinha nos filtros filtrosAplicar += ",idtip=" + idsTiposImoveis; } if (idsBairros != "") { filtrosAplicar += ",idbai=" + idsBairros; } if (idsImobiliarias != "") { filtrosAplicar += ",idimb=" + idsImobiliarias; } if (dormitorios != "") { filtrosAplicar += ",qto=" + dormitorios; } if (vagasGaragem != "") { filtrosAplicar += ",vag=" + vagasGaragem; } if (banheiros != "") { filtrosAplicar += ",bnh=" + banheiros; } if (outrasOpcoes != "") { filtrosAplicar += ",out=" + outrasOpcoes; } if(codigoBuscar != "") { filtrosAplicar += ",cod=" + codigoBuscar; if(somenteCodigo === true) { filtrosAplicar += ",scod=true"; } } } // //----------------------- if (controle != "m") { // $("#lista-imoveis").html("Aguarde o carregamento dos imóveis..."); } buscaAjaxEmAndamento = $.post("ajax-buscar-imoveis", // {'url': document.location.href, 'transacao': transacao, 'tipo-imovel': tipoImovel, 'ids-tipos-imoveis': idsTiposImoveis, 'tipo': tipo, 'localidade': localidade, 'valor-minimo': valorMinimo, 'valor-maximo': valorMaximo, 'area-minima': areaMinima, 'area-maxima': areaMaxima, 'dormitorios': dormitorios, 'vagas-garagem': vagasGaragem, 'banheiros': banheiros, 'pagina': pagina, 'outras-caracteristicas': outrasCaracteristicas, 'codigo-buscar': codigoBuscar, 'somente-codigo': somenteCodigo, 'controle': controle, 'filtros': filtrosAplicar, 'coordenadas-mapa': coordenadasMapa, 'ordenacao': ordenacao, 'visualizacao': visualizacao, 'id-log-busca': idLogBusca, 'id-imobiliaria': idImobiliaria}, {'url': document.location.href, 'pagina': pagina, 'controle': controle, 'filtros': filtrosAplicar, 'coordenadas-mapa': coordenadasMapa, 'ordenacao': ordenacao, 'visualizacao': visualizacao}, function (html) { if (controle == "m") { // mapa mapa = null; initMap(html.imoveis); // função está no arquivo resultado-busca.js $('.lista-filtros-aplicados').html(html.filtros); var imoveis_encontrados = ''; if (html.qtImoveisEncontrados == 0) imoveis_encontrados = 'Nenhum imóvel encontrado'; else if (html.qtImoveisEncontrados == 1) imoveis_encontrados = '1 imóvel encontrado'; else imoveis_encontrados = html.qtImoveisEncontrados + ' imóveis encontrados'; $('.imoveis-encontrados').html(imoveis_encontrados); } else if (controle == "+") { // paginação ou ordenação $("#lista-imoveis").append(html); $(document).find('.super-destaque').find('.left').click(); // dispara click para carregar todas as imagens do super destaque } else { $("#resultado-busca").html(html); $(document).find('.super-destaque').find('.left').click(); // dispara click para carregar todas as imagens do super destaque var url = document.location.href; var novaURL = $("#novaURL").val(); if (url != SITE + "/" +novaURL) { $(document).prop("title",$("#tituloPagina").val()); if(novaURL != undefined && novaURL.trim() != ''){ window.history.pushState("", "", SITE + "/" +novaURL); } } } buscaAjaxEmAndamento = null; $('select:not(.no-select2)').selectpicker("refresh"); loadImoveis.hide(); } ); } }