PageSourceSearch

https://butantashopping.com.br/js/alimentacao.js

js butantashopping.com.br collected 2026-10-04 13:56:36 UTC 8,003 bytes, 202 lines download raw bytes

1function filtroletra(input) {
2    const codigo = input.charCodeAt(0);
3    if ((codigo >= 65 && codigo <= 90) || (codigo >= 97 && codigo <= 122)) {
4        return codigo >= 97 ? String.fromCharCode(codigo - 32) : input.substring(0, 1);
5    }
6    return "#";
7}
8
9function gerafiltroramo(input) {
10    if (!input) return "";
11    return input.split(",")
12        .map(ramo => "ramofiltro-" + removerCaracteresEspeciais(ramo))
13        .join(" ");
14}
15
16function removerCaracteresEspeciais(input) {
17    const mapCaracteresEspeciais = {
18        'á': 'a',
19        'à': 'a',
20        'ã': 'a',
21        'â': 'a',
22        'é': 'e',
23        'ê': 'e',
24        'è': 'e',
25        'í': 'i',
26        'ì': 'i',
27        'ó': 'o',
28        'ô': 'o',
29        'õ': 'o',
30        'ö': 'o',
31        'ú': 'u',
32        'ü': 'u',
33        'ù': 'u',
34        'ç': 'c',
35        'ñ': 'n',
36        '´': '',
37        '"': '',
38        '\'': '',
39        '-': '',
40        '_': '',
41        '*': ''
42    };
43
44    return input
45        .replace(/[^\w\s]/gi, char => mapCaracteresEspeciais[char] || char)
46        .replace(/\s+/g, '-');
47}
48
49function corrigewhatsapp(input, http) {
50    const retorno = input.replace(/[\s\-()]/g, "");
51    return http.includes("http") ? "https://wa.me/55" + retorno.trim() : input;
52}
53
54// Lojas
55let tipo;
56if (pagina ?.includes("lojas")) tipo = '1';
57if (pagina ?.includes("alimentacao")) tipo = '2';
58
59function lojas(ramo_id, letra) {
60    const url_loja = `https://sal.madnezz.com.br/api/site/json/loja.asp?tipo=${tipo}&shopping_id=${shopping_id}${letra && letra !== 'Todos' ? "&filtro_letra=" + letra : ""}&filtro_loja=${loja_id}${ramo_id ? "&filtro_ramo=" + ramo_id : ""}&llj=true&full=true&jsoncallback=?`;
61
62    $('.lojas_lista').html('<div class="loader"><span class="loader-1"></span></div>');
63
64    $.ajax({
65        url: url_loja,
66        dataType: "json"
67    }).done(function (data) {
68        if (loja_id) return;
69
70        let array_aux = ramo_id || (letra && letra !== 'Todos') ? data : data.loja;
71
72        if (!array_aux ?.length) {
73            $('.lojas_lista').html('<div class="loja_empty">Nenhuma loja encontrada</div>');
74            return;
75        }
76
77        // Ordenação alfabética após remover prefixos
78        array_aux = array_aux.map(loja => {
79            const nomeSemPrefixo = loja.loja_nome.replace(/^BUT[-\s]*/i, '').trim();
80            return {
81                ...loja,
82                nomeSemPrefixo,
83                nomeOrdenacao: nomeSemPrefixo.toLowerCase()
84            };
85        }).sort((a, b) => a.nomeOrdenacao.localeCompare(b.nomeOrdenacao));
86
87        if (!loja_url) {
88            $(".mostralojas").show();
89            $(".mostraloja").hide();
90        }
91
92        $('.lojas_lista').empty();
93
94        array_aux.forEach(loja => {
95            const nome = loja.nomeSemPrefixo;
96            const nomeNormalizado = nome.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
97            const nomeUrl = nome.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "").replace(/\s+/g, '-');
98            const logo = loja.loja_logo ?
99                `https://sites.madnezz.com.br/api/site/upload/loja/${loja.loja_logo}` :
100                "./img/default/home_loja.png";
101            const ramo = loja.ramo_nome || 'Não informado';
102
103            $('.lojas_lista').append(`
104                <li data-url="${nomeUrl}" data-id="${loja.id}" id="${nomeNormalizado}" 
105                    data-nome="${nome.trim().toLowerCase()}" 
106                    class="lojas-item cursor-pointer filtroletra-Todos 
107                           filtroletra-${filtroletra(nome)} ramofiltro-Todos ${gerafiltroramo(ramo)}">
108                    <div class="lojas-imagem" style="background-image:url(${logo})"></div>
109                    <h1>${nome}</h1>
110                    <h2>${ramo}</h2>
111                    <ul>
112                        <li><i class="fa-solid fa-phone"></i>${loja.loja_telefone || 'Não informado'}</li>
113                        <li>${loja.whatsapp
114                    ? `<a class="btn-whatsapp" href="${corrigewhatsapp(loja.whatsapp, 'http')}" target="_blank">
115                                <i class="fa-brands fa-whatsapp"></i>${corrigewhatsapp(loja.whatsapp, '')}
116                               </a>`
117                    : 'Não informado'}
118                        </li>
119                    </ul>
120                </li>
121            `);
122        });
123
124        setTimeout(() => {
125            if (loja_url) $(`[data-url="${loja_url}"]`).click();
126        }, 100);
127
128        if (data ?.ramo ?.length) {
129            $('.lojas-menu-lista').empty();
130            data.ramo.forEach(ramo => {
131                $('.lojas-menu-lista').append(
132                    `<li class="cursor-pointer" data-ramofiltro="${ramo.ramo_id}">${ramo.ramo_nome}</li>`
133                );
134            });
135        }
136
137        $('#filtro_nome').off('input').on('input', function () {
138            const textoBuscado = $(this).val().trim().toLowerCase();
139            $(".lojas_lista li[data-nome]").toggle(!textoBuscado);
140            if (!textoBuscado) return;
141
142            $('.lojas_lista li[data-nome]').each(function () {
143                $(this).toggle($(this).data('nome').includes(textoBuscado));
144            });
145        });
146    });
147}
148
149function loja_info(id) {
150    const url_loja = `https://sal.madnezz.com.br/api/site/json/loja.asp?tipo=${tipo}&shopping_id=${shopping_id}&filtro_loja=${id}&llj=true&full=true&jsoncallback=?`;
151
152    $(".mostralojas").hide();
153    $(".mostraloja").show();
154
155    $.ajax({
156        url: url_loja,
157        dataType: "json"
158    }).done(function (loja) {
159        const nome = loja.loja_nome.replace(/^BUT[-\s]*/i, '');
160
161        console.log(loja)
162
163        $(".loja-lojanome").text(nome);
164        $(".mostraloja .lojaunitaria-informacao").html(`
165            <div class="loja-mostraloja-item">
166                <div class="mostraloja-item-imagem">
167                    <img src="${loja.loja_imagem_1 ? `https://sites.madnezz.com.br/api/site/upload/loja/${loja.loja_imagem_1}` : './img/default/home_loja.png'}" alt="Logo ${nome}"/>
168                </div>
169                <div class="mostraloja-item-informacoes">
170                    <h1>${nome}</h1>
171                    ${loja.loja_texto ? `<p>${loja.loja_texto}</p>` : ''}
172                    ${loja.loja_telefone ? `<p><i class="fa-solid fa-phone"></i> <b>Telefone:</b> ${loja.loja_telefone}</p>` : ''}
173                    ${loja.loja_localizacao ? `<p><i class="fa-solid fa-location-dot"></i> <b>Localização:</b> ${loja.loja_localizacao}</p>` : ''}
174                    ${loja.loja_email ? `<p><i class="fa-regular fa-envelope"></i> <b>Email:</b> ${loja.loja_email}</p>` : ''}
175                    ${loja.whatsapp ? `<p><i class="fa-brands fa-whatsapp"></i> <b>WhatsApp:</b> <a href="${loja.whatsapp.includes("http") ? loja.whatsapp : `http://api.whatsapp.com/send?phone=55${loja.whatsapp.replace(/[^\d]/g, '')}`}" target="_blank">Fale com um vendedor agora</a></p>` : ''}
176                    ${loja.instagram ? `<p><i class="fa-brands fa-instagram"></i> <b>Instagram:</b> <a href="${loja.instagram}" target="_blank">@${loja.instagram.replace('https://www.instagram.com/', '').replace('/', '')}</a></p>` : ''}
177                    ${loja.loja_site ? `<p><i class="fa-solid fa-circle-info"></i> <b>Site:</b> <a href="${loja.loja_site}" target="_blank">${loja.loja_site}</a></p>` : ''}
178                    ${loja.ramo_nome ? `<p><i class="fa-solid fa-circle-info"></i> <b>Segmento:</b> ${loja.ramo_nome}</p>` : ''}
179                </div>
180            </div>
181        `);
182    });
183}
184
185// Event Handlers
186$('.lojas-menu-lista').on('click', 'li', function () {
187    lojas($(this).data('ramofiltro'), null);
188});
189
190$('.filtro-letras').on('click', 'li', function () {
191    const letra = $(this).data('letravalor');
192    $(".lojas_lista li").hide();
193    $(`.filtroletra-${letra}`).show();
194});
195
196$(function () {
197    $(document).on('click', '[data-url]', function () {
198        atualiza_url('?' + $(this).data('url'));
199        loja_info(+$(this).data('id'));
200    });
201    lojas();
202});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.