$(document).ready(function(){
});
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();
}
);
}
}