1<!doctype html> 2<html lang="pt-br" data-tray-theme="Beleza - Full Shop" data-tray-theme-version="2.2.1" data-files="361afbf9ab2035cfedf850d5be0955f4" data-store="1063102" class="page-catalog"> 3 4<head> 5 6 <link rel="icon" type="image/png" href="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Logomarca_parte_Grafica_F_transparente_com_espacamento.png?40911a9f4d7a99b6eef6b4ae366be082" /> 7 8 9 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 10 11 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 12 <meta name="viewport" content="width=device-width, initial-scale=1"> 13 <meta name="theme-color" content="#3b8d4a"> 14 15 <title>Medicamentos Industrializados | Farmacam</title><meta http-equiv="content-language" content="pt-br"/><meta name="author" content="Tray Tecnologia"/><meta name="copyright" content="Tray Tecnologia"/><meta name="robots" content="FOLLOW,INDEX,ALL"/><meta name="MSSmartTagsPreventParsing" content="true"/><meta name="description" content="Encontre medicamentos industrializados, produtos especiais e opções de alta tecnologia na Farmacam. Conte também com fórmulas manipuladas personalizadas." /><meta name="keywords" content="Medicamentos Industrializados é com a Farmacam!, medicamento de drogaria, manipulação e drogaria, farmácia de manipulação, medicamento industrializado, medicamento caro" /><meta http-equiv='expires' content='Thu, 01 Oct 2026 00:00:00 GMT'><meta property="og:url" content="https://www.farmacam.com.br/industrializados" /><link rel="canonical" href="https://www.farmacam.com.br/industrializados"/><base id="tag_base" href="https://www.farmacam.com.br/loja/"/><meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE"/><meta property="og:title" content="Medicamentos Industrializados | Farmacam" /><meta property="og:description" content="Encontre medicamentos industrializados, produtos especiais e opções de alta tecnologia na Farmacam. Conte também com fórmulas manipuladas personalizadas." /><meta property="og:phone_number" content="(21) 2604-7350" /><meta property="og:street-address" content="Rua Coronel Serrado, 1630" /><meta property="og:locality" content="São Gonçalo" /><meta property="og:region" content="RJ" /><meta property="og:email" content="[email protected]" /><meta property="og:type" content="website" /><meta property="og:image" content="https://images.tcdn.com.br/img/img_prod/1063102/1636391836_logomarca_espacada_retangular_236x147_pixel.png" /><link rel="shortcut icon" href="https://images.tcdn.com.br/img/img_prod/1063102/1636390365_icone_favicon_16_pixel.ico?6ab5d36cea5a7" type="image/x-icon"/><link rel="next" href="https://www.farmacam.com.br/loja/catalogo.php?loja=1063102&categoria=3&pg=2"><meta setting='keep_buying' content='1' /></meta><meta setting='liveshop_alert_position' content='0' /></meta><meta name="facebook-domain-verification" content="zeq0086ndaqbrnl5yfbovucn0xhzga" /><meta name="google-site-verification" content="LLRurApyQfhUbEVZHJHveivrx5RiDlGXCBhUI30aGXM" /><link rel="preconnect" href="//images.tcdn.com.br" /><link rel="preconnect" href="//ssl.google-analytics.com" /><!-- CSSVariables ---><meta property="og:type" content="website"/> <style> 16 17 18 19 20 21 22 23 24 25 26 html{ 27 28 --loja_manutencao_cor_fundo: #f1f5f9; 29 --loja_manutencao_cor_texto: #444444; 30 --loja_manutencao_cor_titulo: #3b8d4a; 31 --loja_manutencao_inauguracao_cor_timer: #3b8d4a; 32 33 --font_family : 'Quicksand'; 34 --font_pesso : ; 35 36 --color_font_medium : #3b8d4a; 37 --color_font_dark : #3b8d4a; 38 --color_font_light : #444444; 39 --color_font_inverted : #ffffff; 40 --color_primary : #3b8d4a; 41 --color_primary_medium : #3b8d4a; 42 --color_primary_light : #4b9e5a; 43 --color_secondary_medium : #83b933; 44 --color_gray_medium : #f1f5f9; 45 --color_gray_dark : #f1f5f9; 46 --barra_full_dots_bg : #ffffff; 47 48 --stories_cor_status : #3b8d4a; 49 --stories_bg_icone : #3b8d4a; 50 --stories_color_icone : #ffffff; 51 52 53 --color_header_bg : #ffffff; 54 --color_header_main_font : #000000; 55 --color_header_second_font : #000000; 56 --color_header_highlight : #3b8d4a; 57 --color_header_cart_count : #3b8d4a; 58 --color_text_header_cart_count : #ffffff; 59 --color_header_details : #f1f5f9; 60 61 --menu-cor-fundo-primaria : #3b8d4a; 62 --menu-cor-fundo-secundaria : #83b933; 63 --menu-cor-texto : #444444; 64 --submenu_cor_fundo : #ffffff; 65 --submenu_cor_texto : #444444; 66 --submenu3_cor_texto : #444444; 67 --submenu_details : ; 68 --menu_mobile_fundo : #ffffff; 69 --menu_texto_mobile : #000000; 70 71 --menu-lt-bg : #998b8b;
72 --menu-lt-text : #444444; 73 --menu-lt-text-second : #444444; 74 --menu-lt-categ : #444444; 75 --menu-lt-subcateg : #444444; 76 --menu-lt-subcateg-3 : #444444; 77 --menu-lt-icon : #444444; 78 --menu-lt-icon-item : #444444; 79 --menu-lt-icon-social : #444444; 80 81 --cor-preco-anterior: #979797; 82 --cor-fundo-botao-comprar: #3b8d4a; 83 --cor-texto-botao-comprar: #ffffff; 84 --listagem_produtos_tag_desconto_cor_texto: #ffffff; 85 --listagem_produtos_tag_desconto_cor_fundo: #3b8d4a; 86 87 --cor_titulo_cat_listagem: #3b8d4a; 88 --cor_bg_cat_listagem: #f1f5f9; 89 --cor_hover_cat_listagem: #83b933; 90 91 --newsletter_cor_fundo: #3b8d4a; 92 --newsletter_cor_texto: #ffffff; 93 --newsletter_cor_fundo_campo_email: #ffffff; 94 --newsletter_cor_texto_campo_email: #444444; 95 --newsletter_cor_fundo_botao: #83b933; 96 --newsletter_cor_texto_botao: #ffffff; 97 98 --newsletter_popup_texto_botao_cor_fundo: #8e44ad; 99 --newsletter_popup_texto_botao_cor_texto: #ffffff; 100 --newsletter_popup_bg_cor: #e9e9e9; 101 102 --color_footer_bg : #ffffff; 103 --color_footer_main_font : #3b8d4a; 104 --color_footer_second_font : #000000; 105 --color_footer_highlight : #000000; 106 --color_footer_button : ; 107 --color_footer_details : #f1f5f9; 108 109 --color_seal : #444444; 110 --color_bg_seal : #F1F0FA; 111 112 --banner_slide_cor_dots : #ffffff; 113 --banner_slide_cor_setas : #ffffff; 114 115 --barra_oferta_cabecaho_cor_fundo_1 : #83b933; 116 --barra_oferta_cabecaho_cor_fundo_2 : #3b8d4a; 117 --barra_oferta_cabecaho_cor_texto : #ffffff; 118 119 --barra_oferta_full_banners_cabecaho_cor_fundo: #3b8d4a; 120 --barra_oferta_full_banners_cabecaho_cor_texto: #ffffff; 121 122 --depoimentos_cor_fundo: #f1f5f9; 123 --depoimentos_cor_borda_direita: #ffffff; 124 --depoimentos_cor_texto_nome: #3b8d4a; 125 --depoimentos_cor_texto_depoimento: #444444; 126 127 --comentarios_cor_fundo: #f1f5f9; 128 --comentarios_cor_borda_direita: #ffffff; 129 --comentarios_cor_texto_nome: #000000; 130 --comentarios_cor_texto_depoimento: #444444; 131 132 --opcoes-flutuantes-tamanho: 48px; 133 134 --lgpd_cor_fundo: #3b8d4a; 135 --lgpd_cor_texto: #ffffff; 136 --lgpd_cor_botao: #83b933; 137 --lgpd_cor_texto_botao: #ffffff; 138 139 --vitrine_tipo_titulo: ; 140 --vitrine_personalizada_cor_fundo: #6fb278; 141 --vitrine_personalizada_cor_fundo_2: #4e8956; 142 --vitrine_personalizada_cor_fundo_3: #6fb278; 143 --vitrine_personalizada_cor_texto: #f1f5f9; 144 --vitrine_personalizada_cor_timer_promocao: #ffffff; 145 --vitrine_personalizada_cor_dots: #ffffff; 146 147 --promocao_destaque_cor_fundo: ; 148 --promocao_destaque_cor_texto: ; 149 150 --listagem_produtos_timer_promocao_cor_texto: #3b8d4a; 151 --listagem_produtos_timer_promocao_cor_fundo: #f1f5f9; 152 153 --produto_exibir_botao_whatsapp_frase: "Comprar" ; 154 --produto_cor_botao_comprar: #8e44ad; 155 --color_compreJunto: #ec1212; 156 --produto_timer_promocao_cor_texto: #9b59b6; 157 --produto_timer_promocao_cor_fundo: #f1f5f9; 158 --produto_timer_promocao_cor_texto: #9b59b6; 159 160 --categoria_imagem_borda_arredondada: 100% ; 161 162 --rastreio-botao-cor-texto: #ffffff; 163 --rastreio-botao-cor-fundo: #3b8d4a; 164 --rastreio_campo_cor_fundo: #f4f5f9; 165 --rastreio_campo_cor_texto: #ffffff; 166 167 --listagem_produtos_ver_produto_cor_texto: #3b8d4a; 168 --listagem_produtos_timer_promocao_cor_fundo: #f1f5f9; 169 170 --arrow_select : url("data:image/svg+xml,%3Csvg fill='%23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewB
170ox='0 0 284.929 284.929'%3E%3Cpath d='M282.082,76.511l-14.274-14.273c-1.902-1.906-4.093-2.856-6.57-2.856c-2.471,0-4.661,0.95-6.563,2.856L142.466,174.441 L30.262,62.241c-1.903-1.906-4.093-2.856-6.567-2.856c-2.475,0-4.665,0.95-6.567,2.856L2.856,76.515C0.95,78.417,0,80.607,0,83.082 c0,2.473,0.953,4.663,2.856,6.565l133.043,133.046c1.902,1.903,4.093,2.854,6.567,2.854s4.661-0.951,6.562-2.854L282.082,89.647 c1.902-1.903,2.847-4.093,2.847-6.565C284.929,80.607,283.984,78.417,282.082,76.511z' /%3E%3C/svg%3E%0A"); 171 172 --tabela_medidas_cor_fundo_1: #8e44ad; 173 --tabela_medidas_cor_fonte_1: #ffffff; 174 175 --tabela_medidas_cor_fundo_2: ; 176 --tabela_medidas_cor_fonte_2: ; 177 178 --tabela_medidas_cor_fundo_3: ; 179 --tabela_medidas_cor_fonte_3: ; 180 181 --tabela_medidas_cor_fundo_4: ; 182 --tabela_medidas_cor_fonte_4: ; 183 184 --tabela_medidas_cor_fundo_5: ; 185 --tabela_medidas_cor_fonte_5: ; 186 187 --tabela_medidas_cor_fundo_6: ; 188 --tabela_medidas_cor_fonte_6: ; 189 190 --tabela_medidas_cor_fundo_7: ; 191 --tabela_medidas_cor_fonte_7: ; 192 193 --tabela_medidas_cor_fundo_8: ; 194 --tabela_medidas_cor_fonte_8: ; 195 196 --tabela_medidas_cor_fundo_9: ; 197 --tabela_medidas_cor_fonte_9: ; 198 199 --tabela_medidas_cor_fundo_10: ; 200 --tabela_medidas_cor_fonte_10: ; 201 202 --vitrine_cor_fundo : #ffffff; 203 --vitrine_cor_titulo : #3b8d4a; 204 --vitrine_cor_detalhes : #3b8d4a; 205 --vitrine_cor_fundo_tarja : #f1f5f9; 206 --vitrine_cor_fundo_mini_banners: #ffffff; 207 --vitrine_cor_txt_variacao: #444444; 208 209 --pagina_cor_fundo: #ffffff; 210 211 --cupom_cor_fundo: #3b8d4a; 212 --cupom_cor_titulo: #ffffff; 213 --cupom_cor_descricao: #f1f5f9; 214 --cupom_cor_codigo: #ffffff; 215 216 --video_pagina_inicial_cor_texto: #ffffff; 217 --video_pagina_inicial_cor_fundo: #8e44ad; 218 219 --cor_botoes_calculadora : #8e44ad; 220 --cor_texto_botoes_calculadora : #ffffff; 221 222 --compre_economize_cor_fundo: #3b8d4a; 223 --compre_economize_cor_texto: #ffffff; 224 --cantos_arredondados: 5px; 225 226 --cor_widget_titulo_principal: #444444; 227 --cor_widget_title_produto: #444444; 228 --cor_widget_text_produto: #444444; 229 --cor_widget_aba_text: #ffffff; 230 --cor_widget_aba_bg: #3b8d4a; 231 --cor_widget_aba_ativa: #83b933; 232 --cor_widget_text_botao: #ffffff; 233 --cor_widget_bg_botao: #e92135; 234 235 --color_bg_maioridade_btn_aceitar : #1db84a; 236 --color_maioridade_btn_aceitar : #ffffff; 237 --color_bg_maioridade_btn_recusar : #d70026; 238 --color_maioridade_btn_recusar : #ffffff; 239 240 241 --color_bg_btn_pgpd : #3b8d4a; 242 --color_bg_text_btn_pgpd : #ffffff; 243 --color_bg_icone_btn_pgpd : #ffffff; 244 245 --color_bg_qtd_pgpd : #f1f5f9; 246 --color_text_qtd_pgpd : #444444; 247 --color_icone_qtd_pgpd : #444444; 248 --cor_individual_color_btn : ; 249 250 251 --color_bg_cart : #ffffff; 252 --color_bg_text_cart : #444444; 253 --color_bg_button_bg_cart: #3b8d4a; 254 --color_bg_button_text_cart: #ffffff; 255 --color_bg_qtd_bg_cart: #f1f5f9; 256 --color_bg_qtd_text_cart: #444444; 257 --color_bg_qtd_icone_cart: #444444; 258 259 260 --bg_shorts: #f1f5f9; 261 --title_shorts: #3b8d4a; 262 --text_shorts: #444444; 263 --dots_shorts: #83b933 264 } 265 266 267 .eapps-instagram-feed-header-container{ 268 display: none !important; 269 } 270 271 272 .txt-com-desconto + .txt-forma-pagamento{ 273 display: none; 274 } 275 276 .operadora + .txt-forma-pagamento{ 277 display: none; 278 } 279 280</style> 281 282<!-- --> 283<link rel="preload" href="https://fonts.googleapis.com">
284<link rel="preload" href="https://fonts.gstatic.com" crossorigin> 285 286 287 288 289 290 291 292 293 294 <link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500;600;700&display=swap" rel="stylesheet"> 295 296 297<link rel="preload" href="https://images.tcdn.com.br/files/1063102/themes/216/css/swiper.min.css?40911a9f4d7a99b6eef6b4ae366be082" as="style" type="text/css" > 298 299<link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;1,400&display=swap" rel="stylesheet"> 300<link href="https://images.tcdn.com.br/files/1063102/themes/216/css/swiper.min.css?40911a9f4d7a99b6eef6b4ae366be082" type="text/css" rel="stylesheet"> 301 302<link href="https://images.tcdn.com.br/files/1063102/themes/216/css/style.min.css?40911a9f4d7a99b6eef6b4ae366be082" type="text/css" rel="stylesheet"> 303 304<link href="https://images.tcdn.com.br/files/1063102/themes/216/css/lite-yt-embed.css?40911a9f4d7a99b6eef6b4ae366be082" type="text/css" rel="stylesheet"> 305<link href="https://images.tcdn.com.br/files/1063102/themes/216/css/devrocket.min.css?40911a9f4d7a99b6eef6b4ae366be082" type="text/css" rel="stylesheet"> 306 307 <link href="https://images.tcdn.com.br/files/1063102/themes/216/elements/stories/zuck.min.css?40911a9f4d7a99b6eef6b4ae366be082" rel="stylesheet" type="text/css"> 308 <link href="https://images.tcdn.com.br/files/1063102/themes/216/elements/stories/snapgram.min.css?40911a9f4d7a99b6eef6b4ae366be082" rel="stylesheet" type="text/css"> 309 <link href="https://images.tcdn.com.br/files/1063102/themes/216/elements/stories/style.min.css?40911a9f4d7a99b6eef6b4ae366be082" rel="stylesheet" type="text/css"> 310 311 <!-- Global site tag (gtag.js) - Google Analytics --> 312
312<script async src="https://www.googletagmanager.com/gtag/js?id=G-DQNKGRQB7E&l=dataLayerGa4"></script>
312 313
313<script> 314 window.dataLayerGa4 = window.dataLayerGa4 || []; 315 function gtag(){dataLayerGa4.push(arguments);} 316 gtag('js', new Date()); 317 318 gtag('config', 'G-DQNKGRQB7E',{cookie_flags: 'secure;samesite=none'}); 319 gtag('event', 'view_item_list', {"item_list_id":"produtos_catalog","item_list_name":"Lista de produtos - catalog","items":[{"item_id":"125245510","item_name":"Ambientalize - Ess\u00eancia - Lemon Aqua","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245508","item_name":"Ambientalize - Ess\u00eancia - Th\u00e9rapi","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245506","item_name":"Ambientalize - Ess\u00eancia - Ch\u00e1 Branco","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245504","item_name":"Ambientalize - Ess\u00eancia - Bamboo","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245502","item_name":"Ambientalize - Ess\u00eancia - Lavanda","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245500","item_name":"Ambientalize - Ess\u00eancia - Pistache","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245498","item_name":"Ambientalize - Ess\u00eancia - Especiarias","item_brand":"Floral Th\u00e9rapi","price":15,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245496","item_name":"Home Spray Pistache - Ambientalize - 200 ml","item_brand":"Floral Th\u00e9rapi","price":36,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245494","item_name":"Home Spray Lemon Aqua - Ambientalize - 200 ml","item_brand":"Floral Th\u00e9rapi","price":36,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245492","item_name":"Home Spray Th\u00e9rapi - Ambientalize - 200 ml","item_brand":"Floral Th\u00e9rapi","price":36,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245678","item_name":"Floral KIDS Tranquilito | Calma e Tranquilidade","item_brand":"Floral Th\u00e9rapi","price":32,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245676","item_name":"Floral KIDS Cor\u00e1genis | Coragem e Seguran\u00e7a","item_brand":"Floral Th\u00e9rapi","price":32,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245674","item_name":"Floral de Bach - Equil\u00edbrio Noturno - Turma da M\u00f4nica","item_brand":"Floral Th\u00e9rapi","price":32,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245448","item_name":"Espertim - Floral Th\u00e9rapi Kids","item_brand":"Floral Th\u00e9rapi","price":32,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125245438","item_name":"Escolare - Floral Th\u00e9rapi","item_brand":"Floral Th\u00e9rapi","price":32,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125240154","item_name":"Plusvac SC AP - Subcut\u00e2nea - A\u00e7\u00e3o Prolongada - 5mL","item_brand":"Extratos Alerg\u00eanicos","price":137,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125240152","item_name":"Plusvac SC - Subcut\u00e2nea - 5mL","item_brand":"Extratos Alerg\u00eanicos","price":137,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125240150","item_name":"Insetivac SC AP - Subcut\u00e2nea - A\u00e7\u00e3o Prolongada - 5 ml","item_brand":"Extratos Alerg\u00eanicos","price":127,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125240148","item_name":"Insetivac SC - Subcut\u00e2nea - 5 ml","item_brand":"Extratos Alerg\u00eanicos","price":127,"item_category":"Tipo de Produto","item_category2":"Industrializados"},{"item_id":"125240146","item_name":"Parvulan SC - Subcut\u00e2nea - 5mL","item_brand":"Extratos Alerg\u00eanicos","price":142,"item_category":"Tipo de Produto","item_category2":"Industrializados"}
319,{"item_id":"125240144","item_name":"Extralerg SL - Solu\u00e7\u00e3o Oral Gotas 15 ml","item_brand":"Extratos Alerg\u00eanicos","price":127,"item_category":"Tipo de Produto","item_category2":"Industrializados"}]}); 320 321 </script>
321 322 <!-- Inicio bloco header -->
322<script>dataLayer = [{"pageTitle":"Medicamentos Industrializados | Farmacam","pageCategory":"catalogo","event":"","siteSearchFrom":"","category":"Industrializados","idCategory":"3","quantity":0,"levelCategory":2,"sort":"Lan\u00e7amento","filter":{"category":"Industrializados","brand":"","order":"Lan\u00e7amento","availability":""},"breadcrumb":"P\u00e1gina Inicial > Tipo de Produto > Industrializados","listProducts":[{"idProduct":"125245510","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Lemon Aqua","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_lemon_aqua_125245510_1_e88906aae443170f29648dce64a0f066.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-lemon-aqua","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245508","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Th\u00e9rapi","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_therapi_125245508_1_f602804ada81fd1254cd922657039913.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-therapi","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245506","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Ch\u00e1 Branco","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_cha_branco_125245506_1_444e6209144c0e35eb80e2625e9d727c.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-cha-branco","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245504","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Bamboo","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_bamboo_125245504_1_883a82381eff1334e260e117251e00fc.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-bamboo","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245502","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Lavanda","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_lavanda_125245502_1_a84be741462ed244c6249bca5ceaa11b.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-lavanda","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245500","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Pistache","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_pistache_125245500_1_2f8211fa92a3047ce48efe6d8e8c74d2.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-pistache","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245498","idCategory":"3","category":"Industrializados","nameProduct":"Ambientalize - Ess\u00eancia - Especiarias","sellPrice":"15.00","price":"15.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/ambientalize_essencia_especiarias_125245498_1_25c053ccb2a65144dbee54b1cc6bf443.png","urlProduct":"https:\/\/www.farmacam.com.br\/ambientalize-essencia-especiarias","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245496","idCategory":"3","category":"Industrializados","nameProduct":"Home Spray Pistache - Ambientalize - 200 ml","sellPrice":"36.00","price":"36.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/home_spray_pistache_ambientalize_200_ml_125245496_1_ae4c98cf64843b4a84324f763edbab8a.png","urlProduct":"https:\/\/www.farmacam.com.br\/home-spray-pistache
322-ambientalize-200-ml","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245494","idCategory":"3","category":"Industrializados","nameProduct":"Home Spray Lemon Aqua - Ambientalize - 200 ml","sellPrice":"36.00","price":"36.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/home_spray_lemon_aqua_ambientalize_200_ml_125245494_1_02a47a15f80cde8a594c88d97def64ec.png","urlProduct":"https:\/\/www.farmacam.com.br\/home-spray-lemon-aqua-ambientalize-200-ml","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245492","idCategory":"3","category":"Industrializados","nameProduct":"Home Spray Th\u00e9rapi - Ambientalize - 200 ml","sellPrice":"36.00","price":"36.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/home_spray_therapi_ambientalize_200_ml_125245492_1_df0e977b40652a089ced04326085d683.png","urlProduct":"https:\/\/www.farmacam.com.br\/home-spray-therapi-ambientalize-200-ml","freeShipping":"NO","hot":"YES","additionalButton":"NO","release":"YES"},{"idProduct":"125245678","idCategory":"3","category":"Industrializados","nameProduct":"Floral KIDS Tranquilito | Calma e Tranquilidade","sellPrice":"32.00","price":"32.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/floral_kids_tranquilito_calma_e_tranquilidade_1_20260806093137_8af710ab2240.png","urlProduct":"https:\/\/www.farmacam.com.br\/floral-kids-tranquilito-calma-e-tranquilidade","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125245676","idCategory":"3","category":"Industrializados","nameProduct":"Floral KIDS Cor\u00e1genis | Coragem e Seguran\u00e7a","sellPrice":"32.00","price":"32.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/floral_kids_corgenis_coragem_e_segurana_1_20260806092646_5269b9ecc05f.png","urlProduct":"https:\/\/www.farmacam.com.br\/floral-kids-coragenis-coragem-e-seguranca","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125245674","idCategory":"3","category":"Industrializados","nameProduct":"Floral de Bach - Equil\u00edbrio Noturno - Turma da M\u00f4nica","sellPrice":"32.00","price":"32.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/floral_de_bach_equilbrio_noturno_turma_da_mnica_1_20260806085652_626046b0bf51.png","urlProduct":"https:\/\/www.farmacam.com.br\/floral-de-bach-equilibrio-noturno-turma-da-monica","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125245448","idCategory":"3","category":"Industrializados","nameProduct":"Espertim - Floral Th\u00e9rapi Kids","sellPrice":"32.00","price":"32.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/espertim_floral_therapi_kids_125245448_1_331c91fd408d3a39c84b5af8cedd00cd.png","urlProduct":"https:\/\/www.farmacam.com.br\/espertim-floral-therapi-kids","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125245438","idCategory":"3","category":"Industrializados","nameProduct":"Escolare - Floral Th\u00e9rapi","sellPrice":"32.00","price":"32.00","promotion":"NO","brand":"Floral Th\u00e9rapi","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/e
322scolare_floral_therapi_125245438_1_3ef35a74122695a085e58db52df3f0d8.png","urlProduct":"https:\/\/www.farmacam.com.br\/escolare-floral-therapi","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240154","idCategory":"3","category":"Industrializados","nameProduct":"Plusvac SC AP - Subcut\u00e2nea - A\u00e7\u00e3o Prolongada - 5mL","sellPrice":"137.00","price":"137.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/plusvac_sc_ap_subcutanea_acao_prolongada_5ml_125240154_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/plusvac-sc-ap-subcutanea-acao-prolongada-5ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240152","idCategory":"3","category":"Industrializados","nameProduct":"Plusvac SC - Subcut\u00e2nea - 5mL","sellPrice":"137.00","price":"137.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/plusvac_sc_subcutanea_5ml_125240152_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/plusvac-sc-subcutanea-5ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240150","idCategory":"3","category":"Industrializados","nameProduct":"Insetivac SC AP - Subcut\u00e2nea - A\u00e7\u00e3o Prolongada - 5 ml","sellPrice":"127.00","price":"127.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/insetivac_sc_ap_subcutanea_acao_prolongada_5_ml_125240150_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/insetivac-sc-ap-subcutanea-acao-prolongada-5-ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240148","idCategory":"3","category":"Industrializados","nameProduct":"Insetivac SC - Subcut\u00e2nea - 5 ml","sellPrice":"127.00","price":"127.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/insetivac_sc_subcutanea_5_ml_125240148_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/insetivac-sc-solucao-oral-gotas-10-ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240146","idCategory":"3","category":"Industrializados","nameProduct":"Parvulan SC - Subcut\u00e2nea - 5mL","sellPrice":"142.00","price":"142.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/parvulan_sc_subcutanea_5ml_125240146_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/parvulan-sc-subcutanea-5ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"},{"idProduct":"125240144","idCategory":"3","category":"Industrializados","nameProduct":"Extralerg SL - Solu\u00e7\u00e3o Oral Gotas 15 ml","sellPrice":"127.00","price":"127.00","promotion":"NO","brand":"Extratos Alerg\u00eanicos","model":"Produto industrializado produzido por outra empresa","reference":"","availability":"YES","urlImage":"https:\/\/images.tcdn.com.br\/img\/img_prod\/1063102\/extralerg_sl_solucao_oral_gotas_15_ml_125240144_1_3740e8e00ae905feed155648e56241fb.png","urlProduct":"https:\/\/www.farmacam.com.br\/extralerg-sl-solucao-oral-gotas-15-ml","freeShipping":"NO","hot":"NO","additionalButton":"NO","release":"NO"}]}]</script>
322 323
323<script> 324 document.documentElement.addEventListener("tray-session-loaded", function() { 325 var gtmTray = document.createElement("script"); 326 gtmTray.src = "/mvc/store/1063102/google_tag_manager/updateGTM.js?" + Date.now(); 327 gtmTray.setAttribute("async", "true"); 328 document.querySelector("head").appendChild(gtmTray); 329 }); 330 </script>
330 331 332 <!-- Google Tag Manager --> 333
333<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 334 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 335 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 336 'https://www.googletagmanager.com/gtm.js?id='+i+dl;setTimeout(function(){f.parentNode.insertBefore(j,f)}, 1000); 337 })(window,document,'script','dataLayer','GTM-58WNNRW');</script>
337 338 <!-- End Google Tag Manager --> 339 340 <!-- Fim bloco header --> 341</head> 342 343 <body> 344 <!-- Inicio bloco top --> 345 <!-- Google Tag Manager (noscript) -->
vendor: 76 bytes, lines 345-346
345 346 <noscript><iframe src='https://www.googletagmanager.com/ns.html?id=
346GTM-58WNNRW
vendor: 99 bytes, lines 346-348
346' 347 height='0' width='0' style='display:none;visibility:hidden'></iframe></noscript> 348
348<!-- End Google Tag Manager (noscript) --> 349 <!-- Fim bloco top --> 350 351 352 <div class="apresentacao-preco" opcao="avista"> 353 </div> 354 355 356 <div class="overlay-shadow"></div> 357 <div class="application"> 358 359 360 361 362 363 364<div id="menu-mobile" class="menu-mobile"> 365 366 <div class="close-box close-overlay" role="button" aria-label="Fechar menu" tabindex="0"> 367 <i class="icon icon-times"></i> 368 </div> 369 370 <div class="block-title flex align-center"> 371 <div class="header-menu"> 372 <div></div> 373 <div></div> 374 <div></div> 375 </div> 376 Menu 377 </div> 378 379 <div class="nav-mobile-wrapper"> 380 <nav class="nav-mobile"> 381 382 <ul class="list first-level"> 383 384 <li class="sub"> 385 386 <a class="title-sub"> 387 Contato 388 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 389 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 390 </svg> 391 </a> 392 393 <ul class="second-level"> 394 <li> 395 <p class="box-contato-mobile"> 396 <strong>Telefone </strong>: <a title="(21) 2604-7350" href="tel:2126047350"> (21) 2604-7350</a> 397 </p> 398 399 <p class="box-contato-mobile"> 400 401 <strong>WhatsApp</strong>: <a title="WhatsApp" aria-label="Falar no WhatsApp" href="https://api.whatsapp.com/send?phone=552126047350" rel="noreferrer" target="_blank">(21) 2604-7350</a> 402 </p> 403 404 <p class="box-contato-mobile"> 405 </p> 406 407 <p class="box-contato-mobile"> 408 <strong>E-mail</strong>: <a title="[email protected]" href="mailto:[email protected]">[email protected]</a> 409 </p> 410 411 <p> 412 <strong>Horário de Atendimento</strong> <br /> 413 Segunda a Sexta das 8hs as 17:30hs 414 </p> 415 416 <p> 417 <a title="Fale Conosco" href="/contato"> 418 <strong>Fale Conosco</strong> 419 </a> 420 </p> 421 </li> 422 </ul> 423 424 </li> 425 426 427 <li style="margin: 10px 15px 10px 0px;"><hr/></li> 428 429 </ul> 430 431 <ul class="list first-level"> 432 433 434 435 436 <li class="sub" > 437 438 <a title="Tipo de Produto" href="https://www.farmacam.com.br/tipo-de-produto">Tipo de Produto 439 440 441 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewB
441ox="0 0 16 16"> 442 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 443 </svg> 444 </a> 445 446 <ul class="second-level"> 447 448 <a title="Tipo de Produto" href="https://www.farmacam.com.br/tipo-de-produto">Ver Tipo de Produto</a> 449 450 451 <li > 452 453 <a title="Industrializados" href="https://www.farmacam.com.br/industrializados">Industrializados</a> 454 455 456 457 </li> 458 459 460 <li > 461 462 <a title="Manipulados" href="https://www.farmacam.com.br/manipulados">Manipulados</a> 463 464 465 466 </li> 467 468 469 470 </ul> 471 472 </li> 473 474 475 <li class="sub" > 476 477 <a title="Uso" href="https://www.farmacam.com.br/uso">Uso 478 479 480 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 481 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 482 </svg> 483 </a> 484 485 <ul class="second-level"> 486 487 <a title="Uso" href="https://www.farmacam.com.br/uso">Ver Uso</a> 488 489 490 <li > 491 492 <a title="Adulto" href="https://www.farmacam.com.br/adulto">Adulto</a> 493 494 495 496 </li> 497 498 499 <li > 500 501 <a title="Pediátrico" href="https://www.farmacam.com.br/pediatrico">Pediátrico</a> 502 503 504 505 </li> 506 507 508 <li class="sub" > 509 510 <a title="Veterinário" href="https://www.farmacam.com.br/veterinario">Veterinário</a> 511 512 <ul class="third-level"> 513 <li> 514 <a title="Cães" href="https://www.farmacam.com.br/caes">Cães</a> 515 </li> 516 <li> 517 <a title="Felinos" href="https://www.farmacam.com.br/felinos">Felinos</a> 518 </li> 519 <li> 520 <a title="Equinos" href="https://www.farmacam.com.br/equinos">Equinos</a> 521 </li> 522 <li> 523 <a title="Répteis" href="https://www.farmacam.com.br/repteis">Répteis</a> 524 </li> 525 <li> 526 <a title="Aves Silvestres" href="https://www.farmacam.com.br/aves">Aves Silvestres</a> 527 </li> 528 </ul> 529 530 531 </li> 532 533 534 535 </ul> 536 537 </li> 538 539 540 <li class="sub" > 541 542 <a title="Promoções" href="https://www.farmacam.com.br/promocoes">Promoções 543 544 545 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewB
545ox="0 0 16 16"> 546 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 547 </svg> 548 </a> 549 550 <ul class="second-level"> 551 552 <a title="Promoções" href="https://www.farmacam.com.br/promocoes">Ver Promoções</a> 553 554 555 <li > 556 557 <a title="Promoção do mês de Agosto" href="https://www.farmacam.com.br/promocoes-do-mes">Promoção do mês de Agosto</a> 558 559 560 561 </li> 562 563 564 565 </ul> 566 567 </li> 568 569 570 <li class="sub" > 571 572 <a title="Linha de Produtos" href="https://www.farmacam.com.br/linha-de-produtos">Linha de Produtos 573 574 575 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 576 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 577 </svg> 578 </a> 579 580 <ul class="second-level"> 581 582 <a title="Linha de Produtos" href="https://www.farmacam.com.br/linha-de-produtos">Ver Linha de Produtos</a> 583 584 585 <li > 586 587 <a title="Linha Farma Signature" href="https://www.farmacam.com.br/linha-farma-signature">Linha Farma Signature</a> 588 589 590 591 </li> 592 593 594 <li > 595 596 <a title="Linha Farma-Gym" href="https://www.farmacam.com.br/linha-farma-gym">Linha Farma-Gym</a> 597 598 599 600 </li> 601 602 603 <li > 604 605 <a title="Linha F-Beauty" href="https://www.farmacam.com.br/linha-f-beauty">Linha F-Beauty</a> 606 607 608 609 </li> 610 611 612 <li > 613 614 <a title="Linha FitoCam" href="https://www.farmacam.com.br/linha-fitocam">Linha FitoCam</a> 615 616 617 618 </li> 619 620 621 <li > 622 623 <a title="Linha Farma Vet" href="https://www.farmacam.com.br/linha-farma-vet">Linha Farma Vet</a> 624 625 626 627 </li> 628 629 630 <li class="sub" > 631 632 <a title="Linha HomeopatiCAM" href="https://www.farmacam.com.br/linha-homeopaticam">Linha HomeopatiCAM</a> 633 634 <ul class="third-level"> 635 <li> 636 <a title="Floral Thérapi" href="https://www.farmacam.com.br/floral-therapi">Floral Thérapi</a> 637 </li> 638 </ul> 639 640 641 </li> 642 643 644 <li class="sub" > 645 646 <a title="Linha F-CAM" href="https://www.farmacam.com.br/linha-f-cam">Linha F-CAM</a> 647 648 <ul class="third-level"> 649 <li> 650 <a title="Vitaminas" href="https://www.farmacam.com.br/vitaminas">Vitaminas</a> 651 </li> 652 <li> 653 <a title="Minerais" href="https://www.farmacam.com.br/minerais">Minerais</a> 654 </li> 655 <li> 656 <a title="Lactobacilos" href="https://www.farmacam.com.br/lactobacilos">Lactobacilos</a> 657 </li> 658 <li> 659 <a title="Fibras" href="https://www.farmacam.com.br/fibras">Fibras</a> 660 </li> 661 <li> 662 <a title="Esmaltes" href="https://www.farmacam.com.br/esmaltes">Esmaltes</a> 663 </li> 664 <li> 665 <a title="Cápsulas Oleosas" href="https://www.farmacam.com.br/capsulas-oleosas">Cápsulas Oleosas</a> 666 </li> 667 <li> 668 <a title="Aminoácidos" href="https://www.farmacam.com.br/aminoacidos">Aminoácidos</a> 669 </li> 670 <li> 671 <a title="Hormônios" href="https://www.farmacam.com.br/hormonio">Hormônios</a> 672 </li> 673 <li> 674 <a title="Enzimas" href="https://www.farmacam.com.br/enzimas">Enzimas</a> 675 </li> 676 </ul> 677 678 679 </li> 680 681 682 683 </ul> 684 685 </li> 686 687 688 <li class="sub" > 689 690 <a title="Objetivo" href="https://www.farmacam.com.br/uso-e-objetivo">Objetivo 691 692 693 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewB
693ox="0 0 16 16"> 694 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 695 </svg> 696 </a> 697 698 <ul class="second-level"> 699 700 <a title="Objetivo" href="https://www.farmacam.com.br/uso-e-objetivo">Ver Objetivo</a> 701 702 703 <li > 704 705 <a title="Anabolizantes" href="https://www.farmacam.com.br/anabolizantes">Anabolizantes</a> 706 707 708 709 </li> 710 711 712 <li > 713 714 <a title="Analgésicos" href="https://www.farmacam.com.br/analgesicos">Analgésicos</a> 715 716 717 718 </li> 719 720 721 <li > 722 723 <a title="Anestésicos" href="https://www.farmacam.com.br/anestesicos">Anestésicos</a> 724 725 726 727 </li> 728 729 730 <li > 731 732 <a title="Ansiolíticos" href="https://www.farmacam.com.br/ansioliticos">Ansiolíticos</a> 733 734 735 736 </li> 737 738 739 <li > 740 741 <a title="Anti-aging" href="https://www.farmacam.com.br/anti-aging">Anti-aging</a> 742 743 744 745 </li> 746 747 748 <li > 749 750 <a title="Antiagregantes" href="https://www.farmacam.com.br/antiagregantes">Antiagregantes</a> 751 752 753 754 </li> 755 756 757 <li > 758 759 <a title="Antialérgicos" href="https://www.farmacam.com.br/antialergicos">Antialérgicos</a> 760 761 762 763 </li> 764 765 766 <li > 767 768 <a title="Antidepressivos" href="https://www.farmacam.com.br/antidepressivos">Antidepressivos</a> 769 770 771 772 </li> 773 774 775 <li > 776 777 <a title="Anti-inflamatórios" href="https://www.farmacam.com.br/anti-inflamatorios">Anti-inflamatórios</a> 778 779 780 781 </li> 782 783 784 <li > 785 786 <a title="Antioxidantes" href="https://www.farmacam.com.br/antioxidantes">Antioxidantes</a> 787 788 789 790 </li> 791 792 793 <li > 794 795 <a title="Antissépticos" href="https://www.farmacam.com.br/antissepticos">Antissépticos</a> 796 797 798 799 </li> 800 801 802 <li > 803 804 <a title="Antitérmicos" href="https://www.farmacam.com.br/antitermicos">Antitérmicos</a> 805 806 807 808 </li> 809 810 811 <li > 812 813 <a title="Antivertiginosos" href="https://www.farmacam.com.br/antivertiginosos">Antivertiginosos</a> 814 815 816 817 </li> 818 819 820 <li > 821 822 <a title="Aumento do Apetite" href="https://www.farmacam.com.br/aumento-do-apetite">Aumento do Apetite</a> 823 824 825 826 </li> 827 828 829 <li > 830 831 <a title="Bactericidas" href="https://www.farmacam.com.br/bactericidas">Bactericidas</a> 832 833 834 835 </li> 836 837 838 <li > 839 840 <a title="Calmantes" href="https://www.farmacam.com.br/calmante">Calmantes</a> 841 842 843 844 </li> 845 846 847 <li > 848 849 <a title="Cicatrizantes" href="https://www.farmacam.com.br/cicatrizantes">Cicatrizantes</a> 850 851 852 853 </li> 854 855 856 <li > 857 858 <a title="Dermatológicos" href="https://www.farmacam.com.br/dermatologicos">Dermatológicos</a> 859 860 861 862 </li> 863 864 865 <li > 866 867 <a title="Desempenho Físico" href="https://www.farmacam.com.br/desempenho-fisico">Desempenho Físico</a> 868 869 870 871 </li> 872 873 874 <li > 875 876 <a title="Desempenho Imunológico" href="https://www.farmacam.com.br/desempenho-imunologico">Desempenho Imunológico</a> 877 878 879 880 </li> 881 882 883 <li > 884 885 <a title="Desempenho Mental" href="https://www.farmacam.com.br/desempenho-mental">Desempenho Mental</a> 886 887 888 889 </li> 890 891 892 <li > 893 894 <a title="Desempenho Sexual" href="https://www.farmacam.com.br/desempenho-sexual">Desempenho Sexual</a> 895 896 897 898 </li> 899 900 901 <li > 902 903 <a title="Despigmentantes" href="https://www.farmacam.com.br/despigmentantes">Despigmentantes</a> 904 905 906 907 </li> 908 909 910 <li > 911 912 <a title="Diuréticos" href="https://www.farmacam.com.br/diureticos">Diuréticos</a> 913 914 915 916 </li> 917 918 919 <li > 920 921 <a title="Emagrecimento" href="https://www.farmacam.com.br/emagrecimento">Emagrecimento</a> 922 923 924 925 </li> 926 927 928 <li > 929 930 <a title="Estimulantes" href="https://www.farmacam.com.br/estimulantes">Estimulantes</a> 931 932 933 934 </li> 935 936 937 <li > 938 939 <a title="Expectorantes" href="https://www.farmacam.com.br/expectorantes">Expectorantes</a> 940 941 942 943 </li> 944 945 946 <li > 947 948 <a title="Laxativos" href="https://www.farmacam.com.br/laxativos">Laxativos</a> 949 950 951 952 </li> 953 954 955 <li > 956 957 <a title="Proteção Solar" href="https://www.farmacam.com.br/protecao-solar">Proteção Solar</a> 958 959 960 961 </li> 962 963 964 <li > 965 966 <a title="Qualidade de Vida" href="https://www.farmacam.com.br/qualidade-de-vida">Qualidade de Vida</a> 967 968 969 970 </li> 971 972 973 <li > 974 975 <a title="Repelentes" href="https://www.farmacam.com.br/repelentes">Repelentes</a> 976 977 978 979 </li> 980 981 982 <li > 983 984 <a title="Saúde da Mulher" href="https://www.farmacam.com.br/saude-da-mulher">
984Saúde da Mulher</a> 985 986 987 988 </li> 989 990 991 <li > 992 993 <a title="Suplementação Nutricional" href="https://www.farmacam.com.br/suplementacao-nutricional">Suplementação Nutricional</a> 994 995 996 997 </li> 998 999 1000 <li > 1001 1002 <a title="Tratamento Cardiovascular" href="https://www.farmacam.com.br/tratamento-cardiaco">Tratamento Cardiovascular</a> 1003 1004 1005 1006 </li> 1007 1008 1009 <li > 1010 1011 <a title="Tratamento de Acne" href="https://www.farmacam.com.br/tratamento-de-acne">Tratamento de Acne</a> 1012 1013 1014 1015 </li> 1016 1017 1018 <li > 1019 1020 <a title="Tratamento de Unha e Cabelo" href="https://www.farmacam.com.br/tratamento-de-unha-e-cabelo">Tratamento de Unha e Cabelo</a> 1021 1022 1023 1024 </li> 1025 1026 1027 <li > 1028 1029 <a title="Tratamento Digestório" href="https://www.farmacam.com.br/tratamento-digestorio">Tratamento Digestório</a> 1030 1031 1032 1033 </li> 1034 1035 1036 <li > 1037 1038 <a title="Tratamento Endocrinológico" href="https://www.farmacam.com.br/tratamento-endocrinologico">Tratamento Endocrinológico</a> 1039 1040 1041 1042 </li> 1043 1044 1045 <li > 1046 1047 <a title="Tratamento Ginecológico" href="https://www.farmacam.com.br/tratamento-ginecologico">Tratamento Ginecológico</a> 1048 1049 1050 1051 </li> 1052 1053 1054 <li > 1055 1056 <a title="Tratamento Neurológico e Psiquiátrico" href="https://www.farmacam.com.br/tratamento-neurologico-e-psiquiatrico">Tratamento Neurológico e Psiquiátrico</a> 1057 1058 1059 1060 </li> 1061 1062 1063 <li > 1064 1065 <a title="Tratamento Oftálmico" href="https://www.farmacam.com.br/tratamento-oftalmico">Tratamento Oftálmico</a> 1066 1067 1068 1069 </li> 1070 1071 1072 <li > 1073 1074 <a title="Tratamento Ortopédico e Reumatológico" href="https://www.farmacam.com.br/tratamento-ortopedico-e-reumatologico">Tratamento Ortopédico e Reumatológico</a> 1075 1076 1077 1078 </li> 1079 1080 1081 <li > 1082 1083 <a title="Tratamento Otorrinolaringológico" href="https://www.farmacam.com.br/tratamento-otorrinolaringologico">Tratamento Otorrinolaringológico</a> 1084 1085 1086 1087 </li> 1088 1089 1090 <li > 1091 1092 <a title="Tratamento Proctológico" href="https://www.farmacam.com.br/tratamento-proctologico">Tratamento Proctológico</a> 1093 1094 1095 1096 </li> 1097 1098 1099 <li > 1100 1101 <a title="Tratamento Respiratório" href="https://www.farmacam.com.br/tratamento-respiratorio">Tratamento Respiratório</a> 1102 1103 1104 1105 </li> 1106 1107 1108 <li > 1109 1110 <a title="Tratamento Urinário" href="https://www.farmacam.com.br/tratamento-urinario">Tratamento Urinário</a> 1111 1112 1113 1114 </li> 1115 1116 1117 <li > 1118 1119 <a title="Tratamento Urológico" href="https://www.farmacam.com.br/tratamento-urologico">Tratamento Urológico</a> 1120 1121 1122 1123 </li> 1124 1125 1126 <li > 1127 1128 <a title="Uso em Procedimento" href="https://www.farmacam.com.br/uso-em-procedimento">Uso em Procedimento</a> 1129 1130 1131 1132 </li> 1133 1134 1135 1136 </ul> 1137 1138 </li> 1139 1140 1141 <li class="sub" > 1142 1143 <a title="Tipo de Venda" href="https://www.farmacam.com.br/tipo-venda">Tipo de Venda 1144 1145 1146 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewB
1146ox="0 0 16 16"> 1147 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 1148 </svg> 1149 </a> 1150 1151 <ul class="second-level"> 1152 1153 <a title="Tipo de Venda" href="https://www.farmacam.com.br/tipo-venda">Ver Tipo de Venda</a> 1154 1155 1156 <li > 1157 1158 <a title="Venda Livre" href="https://www.farmacam.com.br/tipo-venda/venda-livre">Venda Livre</a> 1159 1160 1161 1162 </li> 1163 1164 1165 <li > 1166 1167 <a title="Sob Prescrição" href="https://www.farmacam.com.br/tipo-venda/sob-prescricao">Sob Prescrição</a> 1168 1169 1170 1171 </li> 1172 1173 1174 <li > 1175 1176 <a title="Sob Prescrição com Retenção de Notificação de Receita" href="https://www.farmacam.com.br/tipo-venda/sob-prescricao-com-retencao-de-notificacao-de-receita">Sob Prescrição com Retenção de Notificação de Receita</a> 1177 1178 1179 1180 </li> 1181 1182 1183 1184 </ul> 1185 1186 </li> 1187 1188 1189 1190 </ul> 1191 </nav> 1192 </div> 1193 1194 <div class="account flex align-center"> 1195 1196 <!-- <i class="account-icon icon icon-login"></i> --> 1197 1198 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px; margin-right: 8px;" width="26" height="26" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16"> 1199 <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/> 1200 <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/> 1201 </svg> 1202 1203 <div class="tray-hide" data-logged-user="false"> 1204 <span>Minha Conta</span> 1205 <div class="login-links"> 1206 <a href="/my-account/login" title="Entrar">Entrar</a> 1207 <span>/</span> 1208 <a href="/cadastro" title="Cadastrar">Cadastrar</a> 1209 </div> 1210 </div> 1211 1212 <div class="tray-hide" data-logged-user="true"> 1213 <span>Olá, <span data-customer="name"></span></span> 1214 <div class="login-links"> 1215 <a href="/central-do-cliente" title="Minha Conta">Minha conta</a> 1216 <span>/</span> 1217 <a href="/loja/logout.php?loja=1063102" title="Sair">Sair</a> 1218 </div> 1219 </div> 1220 1221 </div> 1222 1223</div> 1224 <header class="header"> 1225 <span class="quant-cart" data-cart="amount" style="display: none;"></span> 1226 1227 1228 <div class="barra-oferta barra-oferta-cabecalho"> 1229 <div class="container center barra-oferta-conteudo"> 1230 1231 <div class="barra-oferta-item barra-oferta-desc marquee"> 1232 1233 1234 <marquee> 1235 Compre sempre pelo Aplicativo da Farmacam e ganhe muito mais descontos! Use o cupom farmacamAPP 1236 </marquee> 1237 1238 </div> 1239 1240 </div> 1241 </div> 1242 1243 <div class="bg"> 1244 1245 <div class="container menu-horizontal"> 1246 1247 1248 <div class="menu-horizontal-item logo-menu-horizontal"> 1249 <a class="logo" href="https://www.farmacam.com.br" title="Farmacam"> 1250 <img src="https://images.tcdn.com.br/files/1063102/themes/2
125016/img/settings/farmacam_logomarca.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Farmacam" width="222" height="36"> 1251 1252 <div class="title-store">Farmacam</div> 1253 </a> 1254 </div> 1255 1256 <div class="menu-horizontal-item icone-menu-lateral"> 1257 <span role="button" aria-label="Abrir menu lateral" tabindex="0"> 1258 <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-align-left"><line x1="21" x2="3" y1="6" y2="6"/><line x1="15" x2="3" y1="12" y2="12"/><line x1="17" x2="3" y1="18" y2="18"/></svg> 1259 </span> 1260 </div> 1261 1262 <div class="menu-horizontal-item icone-menu-pesquisar"> 1263 <span role="button" aria-label="Abrir pesquisa" tabindex="0"> 1264 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg> 1265 </span> 1266 </div> 1267 1268 <div class="menu-horizontal-item logo-menu-horizontal-2"> 1269 <a class="logo" href="https://www.farmacam.com.br" title="Farmacam"> 1270 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/farmacam_logomarca.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Farmacam" width="222" height="36"> 1271 1272 <div class="title-store">Farmacam</div> 1273 </a> 1274 </div> 1275 1276 <div class="menu-horizontal-item menu-menu-horizontal" data-teste="1"> 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294<nav class="nav one-column"> 1295 <div class="container"> 1296 <ul class="list flex justify-between align-center"> 1297 1298 1299 1300 1301 1302 1303 <li class="first-level sub"> 1304 1305 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto"> 1306 <div class="name"> 1307 1308 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/TipoDeProduto.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 1309 1310 1311 1312 1313 Tipo de Produto 1314 1315 </div> 1316 </a> 1317 1318 1319 <div class="sub-list second-level"> 1320 1321 <ul> 1322 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto">Tipo de Produto</a> 1323 1324 <div class="sub-list-columns"> 1325 1326 1327 <li > 1328 1329 <a href="https://www.farmacam.com.br/industrializados" title="Industrializados">Industrializados</a> 1330 1331 1332 1333 </li> 1334 1335 1336 <li > 1337 1338 <a href="https://www.farmacam.com.br/manipulados" title="Manipulados">Manipulados</a> 1339 1340 1341 1342 </li> 1343 1344 </div> 1345 </ul> 1346 1347 1348 <div class="categoria-produto menu-categoria-product-1"></div> 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 </div> 1366 1367 1368 1369 1370 </li> 1371 <li class="first-level sub"> 1372 1373 <a href="https://www.farmacam.com.br/uso" title="Uso"> 1374 <div class="name"> 1375 1376 <img src="https://images.tcdn.com.br/files/1063102/themes/2
137616/img/settings/uso.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 1377 1378 1379 1380 1381 Uso 1382 1383 </div> 1384 </a> 1385 1386 1387 <div class="sub-list second-level"> 1388 1389 <ul> 1390 <a href="https://www.farmacam.com.br/uso" title="Uso">Uso</a> 1391 1392 <div class="sub-list-columns"> 1393 1394 1395 <li > 1396 1397 <a href="https://www.farmacam.com.br/adulto" title="Adulto">Adulto</a> 1398 1399 1400 1401 </li> 1402 1403 1404 <li > 1405 1406 <a href="https://www.farmacam.com.br/pediatrico" title="Pediátrico">Pediátrico</a> 1407 1408 1409 1410 </li> 1411 1412 1413 <li class="sub" > 1414 1415 <a href="https://www.farmacam.com.br/veterinario" title="Veterinário">Veterinário</a> 1416 1417 <ul class="sub-list third-level"> 1418 <li> 1419 <a href="https://www.farmacam.com.br/caes" title="Cães">Cães</a> 1420 </li> 1421 <li> 1422 <a href="https://www.farmacam.com.br/felinos" title="Felinos">Felinos</a> 1423 </li> 1424 <li> 1425 <a href="https://www.farmacam.com.br/equinos" title="Equinos">Equinos</a> 1426 </li> 1427 <li> 1428 <a href="https://www.farmacam.com.br/repteis" title="Répteis">Répteis</a> 1429 </li> 1430 <li> 1431 <a href="https://www.farmacam.com.br/aves" title="Aves Silvestres">Aves Silvestres</a> 1432 </li> 1433 </ul> 1434 1435 1436 </li> 1437 1438 </div> 1439 </ul> 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 </div> 1457 1458 1459 1460 1461 </li> 1462 <li class="first-level sub"> 1463 1464 <a href="https://www.farmacam.com.br/promocoes" title="Promoções"> 1465 <div class="name"> 1466 1467 <img src="https://images.tcdn.com.br/files/1063102/themes/2
146716/img/settings/Promocoes.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 1468 1469 1470 1471 1472 Promoções 1473 1474 </div> 1475 </a> 1476 1477 1478 <div class="sub-list second-level"> 1479 1480 <ul> 1481 <a href="https://www.farmacam.com.br/promocoes" title="Promoções">Promoções</a> 1482 1483 <div class="sub-list-columns"> 1484 1485 1486 <li > 1487 1488 <a href="https://www.farmacam.com.br/promocoes-do-mes" title="Promoção do mês de Agosto">Promoção do mês de Agosto</a> 1489 1490 1491 1492 </li> 1493 1494 </div> 1495 </ul> 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 </div> 1513 1514 1515 1516 1517 </li> 1518 <li class="first-level sub"> 1519 1520 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos"> 1521 <div class="name"> 1522 1523 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/LinhaDeProdutos.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 1524 1525 1526 1527 1528 Linha de Produtos 1529 1530 </div> 1531 </a> 1532 1533 1534 <div class="sub-list second-level"> 1535 1536 <ul> 1537 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos">Linha de Produtos</a> 1538 1539 <div class="sub-list-columns"> 1540 1541 1542 <li > 1543 1544 <a href="https://www.farmacam.com.br/linha-farma-signature" title="Linha Farma Signature">Linha Farma Signature</a> 1545 1546 1547 1548 </li> 1549 1550 1551 <li > 1552 1553 <a href="https://www.farmacam.com.br/linha-farma-gym" title="Linha Farma-Gym">Linha Farma-Gym</a> 1554 1555 1556 1557 </li> 1558 1559 1560 <li > 1561 1562 <a href="https://www.farmacam.com.br/linha-f-beauty" title="Linha F-Beauty">Linha F-Beauty</a> 1563 1564 1565 1566 </li> 1567 1568 1569 <li > 1570 1571 <a href="https://www.farmacam.com.br/linha-fitocam" title="Linha FitoCam">Linha FitoCam</a> 1572 1573 1574 1575 </li> 1576 1577 1578 <li > 1579 1580 <a href="https://www.farmacam.com.br/linha-farma-vet" title="Linha Farma Vet">Linha Farma Vet</a> 1581 1582 1583 1584 </li> 1585 1586 1587 <li class="sub" > 1588 1589 <a href="https://www.farmacam.com.br/linha-homeopaticam" title="Linha HomeopatiCAM">Linha HomeopatiCAM</a> 1590 1591 <ul class="sub-list third-level"> 1592 <li> 1593 <a href="https://www.farmacam.com.br/floral-therapi" title="Floral Thérapi">Floral Thérapi</a> 1594 </li> 1595 </ul> 1596 1597 1598 </li> 1599 1600 1601 <li class="sub" > 1602 1603 <a href="https://www.farmacam.com.br/linha-f-cam" title="Linha F-CAM">Linha F-CAM</a> 1604 1605 <ul class="sub-list third-level"> 1606 <li> 1607 <a href="https://www.farmacam.com.br/vitaminas" title="Vitaminas">Vitaminas</a> 1608 </li> 1609 <li> 1610 <a href="https://www.farmacam.com.br/minerais" title="Minerais">Minerais</a> 1611 </li> 1612 <li> 1613 <a href="https://www.farmacam.com.br/lactobacilos" title="Lactobacilos">Lactobacilos</a> 1614 </li> 1615 <li> 1616 <a href="https://www.farmacam.com.br/fibras" title="Fibras">Fibras</a> 1617 </li> 1618 <li> 1619 <a href="https://www.farmacam.com.br/esmaltes" title="Esmaltes">Esmaltes</a> 1620 </li> 1621 <li> 1622 <a href="https://www.farmacam.com.br/capsulas-oleosas" title="Cápsulas Oleosas">Cápsulas Oleosas</a> 1623 </li> 1624 <li> 1625 <a href="https://www.farmacam.com.br/aminoacidos" title="Aminoácidos">Aminoácidos</a> 1626 </li> 1627 <li> 1628 <a href="https://www.farmacam.com.br/hormonio" title="Hormônios">Hormônios</a> 1629 </li> 1630 <li> 1631 <a href="https://www.farmacam.com.br/enzimas" title="Enzimas">Enzimas</a> 1632 </li> 1633 </ul> 1634 1635 1636 </li> 1637 1638 </div> 1639 </ul> 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 </div> 1657 1658 1659 1660 1661 </li> 1662 <li class="first-level sub"> 1663 1664 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo"> 1665 <div class="name"> 1666 1667 <img src="https://images.tcdn.com.br/files/1063102/themes/2
166716/img/settings/objetivo.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 1668 1669 1670 1671 1672 Objetivo 1673 1674 </div> 1675 </a> 1676 1677 1678 <div class="sub-list second-level"> 1679 1680 <ul> 1681 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo">Objetivo</a> 1682 1683 <div class="sub-list-columns"> 1684 1685 1686 <li > 1687 1688 <a href="https://www.farmacam.com.br/anabolizantes" title="Anabolizantes">Anabolizantes</a> 1689 1690 1691 1692 </li> 1693 1694 1695 <li > 1696 1697 <a href="https://www.farmacam.com.br/analgesicos" title="Analgésicos">Analgésicos</a> 1698 1699 1700 1701 </li> 1702 1703 1704 <li > 1705 1706 <a href="https://www.farmacam.com.br/anestesicos" title="Anestésicos">Anestésicos</a> 1707 1708 1709 1710 </li> 1711 1712 1713 <li > 1714 1715 <a href="https://www.farmacam.com.br/ansioliticos" title="Ansiolíticos">Ansiolíticos</a> 1716 1717 1718 1719 </li> 1720 1721 1722 <li > 1723 1724 <a href="https://www.farmacam.com.br/anti-aging" title="Anti-aging">Anti-aging</a> 1725 1726 1727 1728 </li> 1729 1730 1731 <li > 1732 1733 <a href="https://www.farmacam.com.br/antiagregantes" title="Antiagregantes">Antiagregantes</a> 1734 1735 1736 1737 </li> 1738 1739 1740 <li > 1741 1742 <a href="https://www.farmacam.com.br/antialergicos" title="Antialérgicos">Antialérgicos</a> 1743 1744 1745 1746 </li> 1747 1748 1749 <li > 1750 1751 <a href="https://www.farmacam.com.br/antidepressivos" title="Antidepressivos">Antidepressivos</a> 1752 1753 1754 1755 </li> 1756 1757 1758 <li > 1759 1760 <a href="https://www.farmacam.com.br/anti-inflamatorios" title="Anti-inflamatórios">Anti-inflamatórios</a> 1761 1762 1763 1764 </li> 1765 1766 1767 <li > 1768 1769 <a href="https://www.farmacam.com.br/antioxidantes" title="Antioxidantes">Antioxidantes</a> 1770 1771 1772 1773 </li> 1774 1775 1776 <li > 1777 1778 <a href="https://www.farmacam.com.br/antissepticos" title="Antissépticos">Antissépticos</a> 1779 1780 1781 1782 </li> 1783 1784 1785 <li > 1786 1787 <a href="https://www.farmacam.com.br/antitermicos" title="Antitérmicos">Antitérmicos</a> 1788 1789 1790 1791 </li> 1792 1793 1794 <li > 1795 1796 <a href="https://www.farmacam.com.br/antivertiginosos" title="Antivertiginosos">Antivertiginosos</a> 1797 1798 1799 1800 </li> 1801 1802 1803 <li > 1804 1805 <a href="https://www.farmacam.com.br/aumento-do-apetite" title="Aumento do Apetite">Aumento do Apetite</a> 1806 1807 1808 1809 </li> 1810 1811 1812 <li > 1813 1814 <a href="https://www.farmacam.com.br/bactericidas" title="Bactericidas">Bactericidas</a> 1815 1816 1817 1818 </li> 1819 1820 1821 <li > 1822 1823 <a href="https://www.farmacam.com.br/calmante" title="Calmantes">Calmantes</a> 1824 1825 1826 1827 </li> 1828 1829 1830 <li > 1831 1832 <a href="https://www.farmacam.com.br/cicatrizantes" title="Cicatrizantes">Cicatrizantes</a> 1833 1834 1835 1836 </li> 1837 1838 1839 <li > 1840 1841 <a href="https://www.farmacam.com.br/dermatologicos" title="Dermatológicos">Dermatológicos</a> 1842 1843 1844 1845 </li> 1846 1847 1848 <li > 1849 1850 <a href="https://www.farmacam.com.br/desempenho-fisico" title="Desempenho Físico">Desempenho Físico</a> 1851 1852 1853 1854 </li> 1855 1856 1857 <li > 1858 1859 <a href="https://www.farmacam.com.br/desempenho-imunologico" title="Desempenho Imunológico">Desempenho Imunológico</a> 1860 1861 1862 1863 </li> 1864 1865 1866 <li > 1867 1868 <a href="https://www.farmacam.com.br/desempenho-mental" title="Desempenho Mental">Desempenho Mental</a> 1869 1870 1871 1872 </li> 1873 1874 1875 <li > 1876 1877 <a href="https://www.farmacam.com.br/desempenho-sexual" title="Desempenho Sexual">Desempenho Sexual</a> 1878 1879 1880 1881 </li> 1882 1883 1884 <li > 1885 1886 <a href="https://www.farmacam.com.br/despigmentantes" title="Despigmentantes">Despigmentantes</a> 1887 1888 1889 1890 </li> 1891 1892 1893 <li > 1894 1895 <a href="https://www.farmacam.com.br/diureticos" title="Diuréticos">Diuréticos</a> 1896 1897 1898 1899 </li> 1900 1901 1902 <li > 1903 1904 <a href="https://www.farmacam.com.br/emagrecimento" title="Emagrecimento">Emagrecimento</a> 1905 1906 1907 1908 </li> 1909 1910 1911 <li > 1912 1913 <a href="https://www.farmacam.com.br/estimulantes" title="Estimulantes">Estimulantes</a> 1914 1915 1916 1917 </li> 1918 1919 1920 <li > 1921 1922 <a href="https://www.farmacam.com.br/expectorantes" title="Expectorantes">Expectorantes</a> 1923 1924 1925 1926 </li> 1927 1928 1929 <li > 1930 1931 <a href="https://www.farmacam.com.br/laxativos" title="Laxativos">Laxativos</a> 1932 1933 1934 1935 </li> 1936 1937 1938 <li > 1939 1940 <a href="https://www.farmacam.com.br/protecao-solar" title="Proteção Solar">Proteção Solar</a> 1941 1942 1943 1944 </li> 1945 1946 1947 <li > 1948 1949 <a href="https://www.farmacam.com.br/qualidade-de-vida" title="Qualidade de Vida">Qualidade de Vida</a> 1950 1951 1952 1953 </li> 1954 1955 1956 <li > 1957 1958 <a href="https://www.farmacam.com.br/repelentes" title="Repelentes">Repelentes</a> 1959 1960 1961 1962 </li> 1963 1964 1965 <li > 1966 1967 <a href="https://www.farmacam.com.br/saude-da-mulher" title="Saúde da Mulher">
1967Saúde da Mulher</a> 1968 1969 1970 1971 </li> 1972 1973 1974 <li > 1975 1976 <a href="https://www.farmacam.com.br/suplementacao-nutricional" title="Suplementação Nutricional">Suplementação Nutricional</a> 1977 1978 1979 1980 </li> 1981 1982 1983 <li > 1984 1985 <a href="https://www.farmacam.com.br/tratamento-cardiaco" title="Tratamento Cardiovascular">Tratamento Cardiovascular</a> 1986 1987 1988 1989 </li> 1990 1991 1992 <li > 1993 1994 <a href="https://www.farmacam.com.br/tratamento-de-acne" title="Tratamento de Acne">Tratamento de Acne</a> 1995 1996 1997 1998 </li> 1999 2000 2001 <li > 2002 2003 <a href="https://www.farmacam.com.br/tratamento-de-unha-e-cabelo" title="Tratamento de Unha e Cabelo">Tratamento de Unha e Cabelo</a> 2004 2005 2006 2007 </li> 2008 2009 2010 <li > 2011 2012 <a href="https://www.farmacam.com.br/tratamento-digestorio" title="Tratamento Digestório">Tratamento Digestório</a> 2013 2014 2015 2016 </li> 2017 2018 2019 <li > 2020 2021 <a href="https://www.farmacam.com.br/tratamento-endocrinologico" title="Tratamento Endocrinológico">Tratamento Endocrinológico</a> 2022 2023 2024 2025 </li> 2026 2027 2028 <li > 2029 2030 <a href="https://www.farmacam.com.br/tratamento-ginecologico" title="Tratamento Ginecológico">Tratamento Ginecológico</a> 2031 2032 2033 2034 </li> 2035 2036 2037 <li > 2038 2039 <a href="https://www.farmacam.com.br/tratamento-neurologico-e-psiquiatrico" title="Tratamento Neurológico e Psiquiátrico">Tratamento Neurológico e Psiquiátrico</a> 2040 2041 2042 2043 </li> 2044 2045 2046 <li > 2047 2048 <a href="https://www.farmacam.com.br/tratamento-oftalmico" title="Tratamento Oftálmico">Tratamento Oftálmico</a> 2049 2050 2051 2052 </li> 2053 2054 2055 <li > 2056 2057 <a href="https://www.farmacam.com.br/tratamento-ortopedico-e-reumatologico" title="Tratamento Ortopédico e Reumatológico">Tratamento Ortopédico e Reumatológico</a> 2058 2059 2060 2061 </li> 2062 2063 2064 <li > 2065 2066 <a href="https://www.farmacam.com.br/tratamento-otorrinolaringologico" title="Tratamento Otorrinolaringológico">Tratamento Otorrinolaringológico</a> 2067 2068 2069 2070 </li> 2071 2072 2073 <li > 2074 2075 <a href="https://www.farmacam.com.br/tratamento-proctologico" title="Tratamento Proctológico">Tratamento Proctológico</a> 2076 2077 2078 2079 </li> 2080 2081 2082 <li > 2083 2084 <a href="https://www.farmacam.com.br/tratamento-respiratorio" title="Tratamento Respiratório">Tratamento Respiratório</a> 2085 2086 2087 2088 </li> 2089 2090 2091 <li > 2092 2093 <a href="https://www.farmacam.com.br/tratamento-urinario" title="Tratamento Urinário">Tratamento Urinário</a> 2094 2095 2096 2097 </li> 2098 2099 2100 <li > 2101 2102 <a href="https://www.farmacam.com.br/tratamento-urologico" title="Tratamento Urológico">Tratamento Urológico</a> 2103 2104 2105 2106 </li> 2107 2108 2109 <li > 2110 2111 <a href="https://www.farmacam.com.br/uso-em-procedimento" title="Uso em Procedimento">Uso em Procedimento</a> 2112 2113 2114 2115 </li> 2116 2117 </div> 2118 </ul> 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 </div> 2136 2137 2138 2139 2140 </li> 2141 2142 2143 2144 2145 2146 2147 </ul> 2148 </div> 2149</nav> 2150 2151 </div> 2152 2153 <div class="menu-itens"> 2154 <div class="favoritos" title="Favoritos" role="button" aria-label="Ver favoritos" tabindex="0"> 2155 <svg xmlns="http://www.w3.org/2000/svg" height="25" style="margin-bottom: -2px;" fill="currentColor" class="bi bi-heart" viewBox="0 0 16 16"> 2156 <path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.8
215667 8 15"/> 2157 </svg> 2158 <div class="favoritos-qtde">0</div> 2159 </div> 2160 </div> 2161 2162 2163 2164 2165 <div class="menu-horizontal-item rastreio-menu-horizontal item-menu login-user flex"> 2166 <a title="Rastreio"> 2167 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 2168 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 2169 </svg> 2170 </a> 2171 2172 <div class="item-menu-dropdown rastreio-dropdown"> 2173 <div class="texto-rastreio"> 2174 Rastreie seu pedido 2175 </div> 2176 2177 <div class="box-rastreio"> 2178 <form melhod="GET" action="https://www.linkcorreios.com.br" target="_blank"> 2179 <input type="text" name="id" maxlength="30" placeholder="Insira o código" required=""> 2180 <button type="submit" aria-label="Rastrear"> 2181 Rastrear 2182 </button> 2183 </form> 2184 </div> 2185 </div> 2186 </div> 2187 2188 <div class="menu-horizontal-item contato-menu-horizontal item-menu login-user flex"> 2189 <a title="Contato"> 2190 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle"><path d="m3 21 1.9-5.7a8.5 8.5 0 1 1 3.8 3.8z"/></svg> 2191 </a> 2192 2193 <div class="item-menu-dropdown contact-dropdown"> 2194 2195 <p> 2196 <svg style="margin-bottom: -2px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone" viewBox="0 0 16 16"> 2197 <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/> 2198 </svg> 2199 <strong>Telefone:</strong> <a title="(21) 2604-7350" href="tel:2126047350"> (21) 2604-7350</a> 2200 </p> 2201 2202 <div class="linha"></div> 2203 <p> 2204 2205 2206 <svg style="margin-bottom: -2px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-whatsapp" viewBox="0 0 16 16"> 2207 <path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058
22071.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z"/> 2208 </svg> 2209 <strong>WhatsApp:</strong> <a title="WhatsApp" aria-label="Falar no WhatsApp" href="https://api.whatsapp.com/send?phone=552126047350" rel="noreferrer" target="_blank">(21) 2604-7350</a> 2210 </p> 2211 2212 <div class="linha"></div> 2213 <p> 2214 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16"> 2215 <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/> 2216 </svg> 2217 2218 <strong>E-mail:</strong> <a title="[email protected]" href="mailto:[email protected]">[email protected]</a> 2219 </p> 2220 2221 <div class="linha"></div> 2222 <p> 2223 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock" viewBox="0 0 16 16"> 2224 <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/> 2225 <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/> 2226 </svg> 2227 <strong>Horário de Atendimento</strong> <br /> 2228 Segunda a Sexta das 8hs as 17:30hs 2229 </p> 2230 2231 <div class="linha"></div> 2232 2233 <p> 2234 <a title="Fale Conosco" href="/contato"> 2235 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left" viewBox="0 0 16 16"> 2236 <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/> 2237 </svg> 2238 <strong>Fale Conosco</strong> 2239 </a> 2240 </p> 2241 2242 </div> 2243 </div> 2244 2245 <div class="menu-horizontal-item minha-conta-menu-horizontal item-menu login-user flex"> 2246 <a href="/my-account/login" title="Minha Conta"> 2247 <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" viewBox="0 0 30 30" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user-2"><path d="M21.25 10A6.25 6.25 0 0 1 15 16.25 6.25 6.25 0 0 1 8.75 10a6.25 6.25 0 0 1 12.5 0"/><path d="M25 26.25a10 10 0 1 0-20 0"/></svg> 2248 2249 <span class="tray-hide" data-logged-user="true"> 2250 Olá, <span data-customer="name"></span> 2251 </span> 2252 </a> 2253 2254 <div class="item-menu-dropdown login-dropdown"> 2255 2256 <div class="tray-hide" data-logged-user="true"> 2257 <p> 2258 <a href="/central-do-cliente" title="Minha Conta"> 2259 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-ul" viewBox="0 0 16 16"> 2260 <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/> 2261 </svg> 2262 Minha Conta 2263 </a> 2264 </p> 2265 2266 <p> 2267 <a title="Meus Pedidos" href="/loja/central_anteriores.php?loja=1063102"> 2268 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 2269 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 2270 </svg> 2271 Meus Pedidos 2272 </a> 2273 </p> 2274 2275 <div class="linha"></div> 2276 2277 <div class="text-right"> 2278 <a title="Sair da Conta" href="/loja/logout.php?loja=1063102"> 2279 Sair 2280 <svg style="margin-bottom: -4px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16"> 2281 <path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z"/> 2282 <path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/> 2283 </svg> 2284 </a> 2285 </div> 2286 </div> 2287 2288 <div class="tray-hide" data-logged-user="false"> 2289 <p> 2290 <a title="Entrar na minha conta" href="/my-account/login"> 2291 <svg style="margin-left: -3px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-box-arrow-in-right" viewBox="0 0 16 16"> 2292 <path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0v-2z"/> 2293 <path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/> 2294 </svg> 2295 Entrar Agora 2296 </a> 2297 </p> 2298 2299 <p> 2300 <a title="Meus Pedidos" href="/loja/central_anteriores.php?loja=1063102"> 2301 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 2302 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 2303 </svg> 2304 Meus Pedidos 2305 </a> 2306 </p> 2307 2308 <div class="linha"></div> 2309 2310 <p> 2311 <a title="Criar Conta" href="/cadastro"> 2312 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-pers
2312on-plus" viewBox="0 0 16 16"> 2313 <path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z"/> 2314 <path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z"/> 2315 </svg> 2316 Criar Conta 2317 </a> 2318 </p> 2319 </div> 2320 </div> 2321 2322 </div> 2323 2324 <div class="meu-carrinho-menu-horizontal item-menu flex cart"> 2325 2326 <div class="carrinho-lateral-on" role="button" aria-label="Abrir carrinho" tabindex="0"> 2327 2328 <!-- Carrinho de compras --> 2329 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="currentColor" class="bi bi-cart3" viewBox="0 0 16 16"> 2330 <path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM3.102 4l.84 4.479 9.144-.459L13.89 4H3.102zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/> 2331 </svg> 2332 2333 2334 2335 </div> 2336 2337 <div class="cart-quantity" data-cart="amount">0</div> 2338 2339 2340 </div> 2341 2342 2343 </div> 2344 2345 <div class="menu-horizontal-item menu-menu-horizontal-2"> 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363<nav class="nav one-column"> 2364 <div class="container"> 2365 <ul class="list flex justify-between align-center"> 2366 2367 2368 2369 2370 2371 2372 <li class="first-level sub"> 2373 2374 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto"> 2375 <div class="name"> 2376 2377 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/TipoDeProduto.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 2378 2379 2380 2381 2382 Tipo de Produto 2383 2384 </div> 2385 </a> 2386 2387 2388 <div class="sub-list second-level"> 2389 2390 <ul> 2391 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto">Tipo de Produto</a> 2392 2393 <div class="sub-list-columns"> 2394 2395 2396 <li > 2397 2398 <a href="https://www.farmacam.com.br/industrializados" title="Industrializados">Industrializados</a> 2399 2400 2401 2402 </li> 2403 2404 2405 <li > 2406 2407 <a href="https://www.farmacam.com.br/manipulados" title="Manipulados">Manipulados</a> 2408 2409 2410 2411 </li> 2412 2413 </div> 2414 </ul> 2415 2416 2417 <div class="categoria-produto menu-categoria-product-1"></div> 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 </div> 2435 2436 2437 2438 2439 </li> 2440 <li class="first-level sub"> 2441 2442 <a href="https://www.farmacam.com.br/uso" title="Uso"> 2443 <div class="name"> 2444 2445 <img src="https://images.tcdn.com.br/files/1063102/themes/2
244516/img/settings/uso.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 2446 2447 2448 2449 2450 Uso 2451 2452 </div> 2453 </a> 2454 2455 2456 <div class="sub-list second-level"> 2457 2458 <ul> 2459 <a href="https://www.farmacam.com.br/uso" title="Uso">Uso</a> 2460 2461 <div class="sub-list-columns"> 2462 2463 2464 <li > 2465 2466 <a href="https://www.farmacam.com.br/adulto" title="Adulto">Adulto</a> 2467 2468 2469 2470 </li> 2471 2472 2473 <li > 2474 2475 <a href="https://www.farmacam.com.br/pediatrico" title="Pediátrico">Pediátrico</a> 2476 2477 2478 2479 </li> 2480 2481 2482 <li class="sub" > 2483 2484 <a href="https://www.farmacam.com.br/veterinario" title="Veterinário">Veterinário</a> 2485 2486 <ul class="sub-list third-level"> 2487 <li> 2488 <a href="https://www.farmacam.com.br/caes" title="Cães">Cães</a> 2489 </li> 2490 <li> 2491 <a href="https://www.farmacam.com.br/felinos" title="Felinos">Felinos</a> 2492 </li> 2493 <li> 2494 <a href="https://www.farmacam.com.br/equinos" title="Equinos">Equinos</a> 2495 </li> 2496 <li> 2497 <a href="https://www.farmacam.com.br/repteis" title="Répteis">Répteis</a> 2498 </li> 2499 <li> 2500 <a href="https://www.farmacam.com.br/aves" title="Aves Silvestres">Aves Silvestres</a> 2501 </li> 2502 </ul> 2503 2504 2505 </li> 2506 2507 </div> 2508 </ul> 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 </div> 2526 2527 2528 2529 2530 </li> 2531 <li class="first-level sub"> 2532 2533 <a href="https://www.farmacam.com.br/promocoes" title="Promoções"> 2534 <div class="name"> 2535 2536 <img src="https://images.tcdn.com.br/files/1063102/themes/2
253616/img/settings/Promocoes.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 2537 2538 2539 2540 2541 Promoções 2542 2543 </div> 2544 </a> 2545 2546 2547 <div class="sub-list second-level"> 2548 2549 <ul> 2550 <a href="https://www.farmacam.com.br/promocoes" title="Promoções">Promoções</a> 2551 2552 <div class="sub-list-columns"> 2553 2554 2555 <li > 2556 2557 <a href="https://www.farmacam.com.br/promocoes-do-mes" title="Promoção do mês de Agosto">Promoção do mês de Agosto</a> 2558 2559 2560 2561 </li> 2562 2563 </div> 2564 </ul> 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 </div> 2582 2583 2584 2585 2586 </li> 2587 <li class="first-level sub"> 2588 2589 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos"> 2590 <div class="name"> 2591 2592 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/LinhaDeProdutos.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 2593 2594 2595 2596 2597 Linha de Produtos 2598 2599 </div> 2600 </a> 2601 2602 2603 <div class="sub-list second-level"> 2604 2605 <ul> 2606 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos">Linha de Produtos</a> 2607 2608 <div class="sub-list-columns"> 2609 2610 2611 <li > 2612 2613 <a href="https://www.farmacam.com.br/linha-farma-signature" title="Linha Farma Signature">Linha Farma Signature</a> 2614 2615 2616 2617 </li> 2618 2619 2620 <li > 2621 2622 <a href="https://www.farmacam.com.br/linha-farma-gym" title="Linha Farma-Gym">Linha Farma-Gym</a> 2623 2624 2625 2626 </li> 2627 2628 2629 <li > 2630 2631 <a href="https://www.farmacam.com.br/linha-f-beauty" title="Linha F-Beauty">Linha F-Beauty</a> 2632 2633 2634 2635 </li> 2636 2637 2638 <li > 2639 2640 <a href="https://www.farmacam.com.br/linha-fitocam" title="Linha FitoCam">Linha FitoCam</a> 2641 2642 2643 2644 </li> 2645 2646 2647 <li > 2648 2649 <a href="https://www.farmacam.com.br/linha-farma-vet" title="Linha Farma Vet">Linha Farma Vet</a> 2650 2651 2652 2653 </li> 2654 2655 2656 <li class="sub" > 2657 2658 <a href="https://www.farmacam.com.br/linha-homeopaticam" title="Linha HomeopatiCAM">Linha HomeopatiCAM</a> 2659 2660 <ul class="sub-list third-level"> 2661 <li> 2662 <a href="https://www.farmacam.com.br/floral-therapi" title="Floral Thérapi">Floral Thérapi</a> 2663 </li> 2664 </ul> 2665 2666 2667 </li> 2668 2669 2670 <li class="sub" > 2671 2672 <a href="https://www.farmacam.com.br/linha-f-cam" title="Linha F-CAM">Linha F-CAM</a> 2673 2674 <ul class="sub-list third-level"> 2675 <li> 2676 <a href="https://www.farmacam.com.br/vitaminas" title="Vitaminas">Vitaminas</a> 2677 </li> 2678 <li> 2679 <a href="https://www.farmacam.com.br/minerais" title="Minerais">Minerais</a> 2680 </li> 2681 <li> 2682 <a href="https://www.farmacam.com.br/lactobacilos" title="Lactobacilos">Lactobacilos</a> 2683 </li> 2684 <li> 2685 <a href="https://www.farmacam.com.br/fibras" title="Fibras">Fibras</a> 2686 </li> 2687 <li> 2688 <a href="https://www.farmacam.com.br/esmaltes" title="Esmaltes">Esmaltes</a> 2689 </li> 2690 <li> 2691 <a href="https://www.farmacam.com.br/capsulas-oleosas" title="Cápsulas Oleosas">Cápsulas Oleosas</a> 2692 </li> 2693 <li> 2694 <a href="https://www.farmacam.com.br/aminoacidos" title="Aminoácidos">Aminoácidos</a> 2695 </li> 2696 <li> 2697 <a href="https://www.farmacam.com.br/hormonio" title="Hormônios">Hormônios</a> 2698 </li> 2699 <li> 2700 <a href="https://www.farmacam.com.br/enzimas" title="Enzimas">Enzimas</a> 2701 </li> 2702 </ul> 2703 2704 2705 </li> 2706 2707 </div> 2708 </ul> 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 </div> 2726 2727 2728 2729 2730 </li> 2731 <li class="first-level sub"> 2732 2733 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo"> 2734 <div class="name"> 2735 2736 <img src="https://images.tcdn.com.br/files/1063102/themes/2
273616/img/settings/objetivo.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 2737 2738 2739 2740 2741 Objetivo 2742 2743 </div> 2744 </a> 2745 2746 2747 <div class="sub-list second-level"> 2748 2749 <ul> 2750 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo">Objetivo</a> 2751 2752 <div class="sub-list-columns"> 2753 2754 2755 <li > 2756 2757 <a href="https://www.farmacam.com.br/anabolizantes" title="Anabolizantes">Anabolizantes</a> 2758 2759 2760 2761 </li> 2762 2763 2764 <li > 2765 2766 <a href="https://www.farmacam.com.br/analgesicos" title="Analgésicos">Analgésicos</a> 2767 2768 2769 2770 </li> 2771 2772 2773 <li > 2774 2775 <a href="https://www.farmacam.com.br/anestesicos" title="Anestésicos">Anestésicos</a> 2776 2777 2778 2779 </li> 2780 2781 2782 <li > 2783 2784 <a href="https://www.farmacam.com.br/ansioliticos" title="Ansiolíticos">Ansiolíticos</a> 2785 2786 2787 2788 </li> 2789 2790 2791 <li > 2792 2793 <a href="https://www.farmacam.com.br/anti-aging" title="Anti-aging">Anti-aging</a> 2794 2795 2796 2797 </li> 2798 2799 2800 <li > 2801 2802 <a href="https://www.farmacam.com.br/antiagregantes" title="Antiagregantes">Antiagregantes</a> 2803 2804 2805 2806 </li> 2807 2808 2809 <li > 2810 2811 <a href="https://www.farmacam.com.br/antialergicos" title="Antialérgicos">Antialérgicos</a> 2812 2813 2814 2815 </li> 2816 2817 2818 <li > 2819 2820 <a href="https://www.farmacam.com.br/antidepressivos" title="Antidepressivos">Antidepressivos</a> 2821 2822 2823 2824 </li> 2825 2826 2827 <li > 2828 2829 <a href="https://www.farmacam.com.br/anti-inflamatorios" title="Anti-inflamatórios">Anti-inflamatórios</a> 2830 2831 2832 2833 </li> 2834 2835 2836 <li > 2837 2838 <a href="https://www.farmacam.com.br/antioxidantes" title="Antioxidantes">Antioxidantes</a> 2839 2840 2841 2842 </li> 2843 2844 2845 <li > 2846 2847 <a href="https://www.farmacam.com.br/antissepticos" title="Antissépticos">Antissépticos</a> 2848 2849 2850 2851 </li> 2852 2853 2854 <li > 2855 2856 <a href="https://www.farmacam.com.br/antitermicos" title="Antitérmicos">Antitérmicos</a> 2857 2858 2859 2860 </li> 2861 2862 2863 <li > 2864 2865 <a href="https://www.farmacam.com.br/antivertiginosos" title="Antivertiginosos">Antivertiginosos</a> 2866 2867 2868 2869 </li> 2870 2871 2872 <li > 2873 2874 <a href="https://www.farmacam.com.br/aumento-do-apetite" title="Aumento do Apetite">Aumento do Apetite</a> 2875 2876 2877 2878 </li> 2879 2880 2881 <li > 2882 2883 <a href="https://www.farmacam.com.br/bactericidas" title="Bactericidas">Bactericidas</a> 2884 2885 2886 2887 </li> 2888 2889 2890 <li > 2891 2892 <a href="https://www.farmacam.com.br/calmante" title="Calmantes">Calmantes</a> 2893 2894 2895 2896 </li> 2897 2898 2899 <li > 2900 2901 <a href="https://www.farmacam.com.br/cicatrizantes" title="Cicatrizantes">Cicatrizantes</a> 2902 2903 2904 2905 </li> 2906 2907 2908 <li > 2909 2910 <a href="https://www.farmacam.com.br/dermatologicos" title="Dermatológicos">Dermatológicos</a> 2911 2912 2913 2914 </li> 2915 2916 2917 <li > 2918 2919 <a href="https://www.farmacam.com.br/desempenho-fisico" title="Desempenho Físico">Desempenho Físico</a> 2920 2921 2922 2923 </li> 2924 2925 2926 <li > 2927 2928 <a href="https://www.farmacam.com.br/desempenho-imunologico" title="Desempenho Imunológico">Desempenho Imunológico</a> 2929 2930 2931 2932 </li> 2933 2934 2935 <li > 2936 2937 <a href="https://www.farmacam.com.br/desempenho-mental" title="Desempenho Mental">Desempenho Mental</a> 2938 2939 2940 2941 </li> 2942 2943 2944 <li > 2945 2946 <a href="https://www.farmacam.com.br/desempenho-sexual" title="Desempenho Sexual">Desempenho Sexual</a> 2947 2948 2949 2950 </li> 2951 2952 2953 <li > 2954 2955 <a href="https://www.farmacam.com.br/despigmentantes" title="Despigmentantes">Despigmentantes</a> 2956 2957 2958 2959 </li> 2960 2961 2962 <li > 2963 2964 <a href="https://www.farmacam.com.br/diureticos" title="Diuréticos">Diuréticos</a> 2965 2966 2967 2968 </li> 2969 2970 2971 <li > 2972 2973 <a href="https://www.farmacam.com.br/emagrecimento" title="Emagrecimento">Emagrecimento</a> 2974 2975 2976 2977 </li> 2978 2979 2980 <li > 2981 2982 <a href="https://www.farmacam.com.br/estimulantes" title="Estimulantes">Estimulantes</a> 2983 2984 2985 2986 </li> 2987 2988 2989 <li > 2990 2991 <a href="https://www.farmacam.com.br/expectorantes" title="Expectorantes">Expectorantes</a> 2992 2993 2994 2995 </li> 2996 2997 2998 <li > 2999 3000 <a href="https://www.farmacam.com.br/laxativos" title="Laxativos">Laxativos</a> 3001 3002 3003 3004 </li> 3005 3006 3007 <li > 3008 3009 <a href="https://www.farmacam.com.br/protecao-solar" title="Proteção Solar">Proteção Solar</a> 3010 3011 3012 3013 </li> 3014 3015 3016 <li > 3017 3018 <a href="https://www.farmacam.com.br/qualidade-de-vida" title="Qualidade de Vida">Qualidade de Vida</a> 3019 3020 3021 3022 </li> 3023 3024 3025 <li > 3026 3027 <a href="https://www.farmacam.com.br/repelentes" title="Repelentes">Repelentes</a> 3028 3029 3030 3031 </li> 3032 3033 3034 <li > 3035 3036 <a href="https://www.farmacam.com.br/saude-da-mulher" title="Saúde da Mulher">
3036Saúde da Mulher</a> 3037 3038 3039 3040 </li> 3041 3042 3043 <li > 3044 3045 <a href="https://www.farmacam.com.br/suplementacao-nutricional" title="Suplementação Nutricional">Suplementação Nutricional</a> 3046 3047 3048 3049 </li> 3050 3051 3052 <li > 3053 3054 <a href="https://www.farmacam.com.br/tratamento-cardiaco" title="Tratamento Cardiovascular">Tratamento Cardiovascular</a> 3055 3056 3057 3058 </li> 3059 3060 3061 <li > 3062 3063 <a href="https://www.farmacam.com.br/tratamento-de-acne" title="Tratamento de Acne">Tratamento de Acne</a> 3064 3065 3066 3067 </li> 3068 3069 3070 <li > 3071 3072 <a href="https://www.farmacam.com.br/tratamento-de-unha-e-cabelo" title="Tratamento de Unha e Cabelo">Tratamento de Unha e Cabelo</a> 3073 3074 3075 3076 </li> 3077 3078 3079 <li > 3080 3081 <a href="https://www.farmacam.com.br/tratamento-digestorio" title="Tratamento Digestório">Tratamento Digestório</a> 3082 3083 3084 3085 </li> 3086 3087 3088 <li > 3089 3090 <a href="https://www.farmacam.com.br/tratamento-endocrinologico" title="Tratamento Endocrinológico">Tratamento Endocrinológico</a> 3091 3092 3093 3094 </li> 3095 3096 3097 <li > 3098 3099 <a href="https://www.farmacam.com.br/tratamento-ginecologico" title="Tratamento Ginecológico">Tratamento Ginecológico</a> 3100 3101 3102 3103 </li> 3104 3105 3106 <li > 3107 3108 <a href="https://www.farmacam.com.br/tratamento-neurologico-e-psiquiatrico" title="Tratamento Neurológico e Psiquiátrico">Tratamento Neurológico e Psiquiátrico</a> 3109 3110 3111 3112 </li> 3113 3114 3115 <li > 3116 3117 <a href="https://www.farmacam.com.br/tratamento-oftalmico" title="Tratamento Oftálmico">Tratamento Oftálmico</a> 3118 3119 3120 3121 </li> 3122 3123 3124 <li > 3125 3126 <a href="https://www.farmacam.com.br/tratamento-ortopedico-e-reumatologico" title="Tratamento Ortopédico e Reumatológico">Tratamento Ortopédico e Reumatológico</a> 3127 3128 3129 3130 </li> 3131 3132 3133 <li > 3134 3135 <a href="https://www.farmacam.com.br/tratamento-otorrinolaringologico" title="Tratamento Otorrinolaringológico">Tratamento Otorrinolaringológico</a> 3136 3137 3138 3139 </li> 3140 3141 3142 <li > 3143 3144 <a href="https://www.farmacam.com.br/tratamento-proctologico" title="Tratamento Proctológico">Tratamento Proctológico</a> 3145 3146 3147 3148 </li> 3149 3150 3151 <li > 3152 3153 <a href="https://www.farmacam.com.br/tratamento-respiratorio" title="Tratamento Respiratório">Tratamento Respiratório</a> 3154 3155 3156 3157 </li> 3158 3159 3160 <li > 3161 3162 <a href="https://www.farmacam.com.br/tratamento-urinario" title="Tratamento Urinário">Tratamento Urinário</a> 3163 3164 3165 3166 </li> 3167 3168 3169 <li > 3170 3171 <a href="https://www.farmacam.com.br/tratamento-urologico" title="Tratamento Urológico">Tratamento Urológico</a> 3172 3173 3174 3175 </li> 3176 3177 3178 <li > 3179 3180 <a href="https://www.farmacam.com.br/uso-em-procedimento" title="Uso em Procedimento">Uso em Procedimento</a> 3181 3182 3183 3184 </li> 3185 3186 </div> 3187 </ul> 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 </div> 3205 3206 3207 3208 3209 </li> 3210 3211 3212 3213 3214 3215 3216 </ul> 3217 </div> 3218</nav> 3219 3220 </div> 3221 3222 <div class="container menu-horizontal-busca"> 3223 3224 <div class="header-search-wrapper"> 3225 3226 <div class="box-paginas-extras-cabecalho"> 3227 3228 3229 3230 </div> 3231 3232 <form action="/loja/busca.php?loja=1063102" method="get" data-search="suggestion"> 3233 <input type="hidden" name="loja" value="1063102"> 3234 <input class="input-search" placeholder=" Pesquise aqui " spellcheck="false" autocomplete="off" data-input="suggestion" type="text" name="palavra_busca"> 3235 <button class="button-search" aria-label="Buscar"> 3236 <i class="icon icon-search"></i> 3237 </button> 3238 <div class="suggestion is-hidden" data-container="suggestion"></div> 3239 </form> 3240 3241</div> 3242 3243 </div> 3244 3245 </div> 3246 3247</header> 3248 3249 <style> 3250 @media (min-width: 768px){ 3251 .cabecalho-mobile{ 3252 display: none; 3253 } 3254 } 3255 3256 .cabecalho-mobile{ 3257 position: fixed; 3258 width: 100%; 3259 bottom: 0; 3260 background-color: var(--color_header_bg); 3261 z-index: 18; 3262 max-height: 90px; 3263 box-shadow: 0px 0px 50px -10px rgba(0,0,0,0.1); 3264 opacity: 1; 3265 transition: max-height 0.5s ease-in-out; 3266 z-index: 9999; 3267 } 3268 3269 .cabecalho-mobile:not(.show){ 3270 max-height: 0; 3271 opacity: 0; 3272 } 3273 3274 .header-itens{ 3275 max-width: 100%; 3276 display: flex; 3277 align-items: flex-end; 3278 justify-content: space-between; 3279 margin: 10px 0; 3280 } 3281 3282 .header-item{ 3283 width: calc(100% / 6); 3284 padding: 2px; 3285 display: flex; 3286 flex-direction: column; 3287 align-items: center; 3288 justify-content: center; 3289 } 3290 3291 .h-texto{ 3292 font-size: 12px; 3293 font-weight: 400; 3294 } 3295
3296 .cabecalho-mobile .cart-quantity{ 3297 position: absolute; 3298 top: 12px; 3299 margin-right: -22px; 3300 border-radius: 50%; 3301 width: 16px; 3302 height: 16px; 3303 font-size: 9px; 3304 font-weight: 500; 3305 background-color: var(--color_header_cart_count); 3306 color: var(--color_header_bg); 3307 display: flex; 3308 justify-content: center; 3309 align-items: center; 3310 } 3311 3312 .h-search{ 3313 position: fixed; 3314 width: 100%; 3315 bottom: 0; 3316 display: none; 3317 box-shadow: 0px 0px 50px 5px rgba(0,0,0,0.1); 3318 } 3319 3320 .cabecalho-mobile .header-search-wrapper{ 3321 border-bottom: 1px solid var(--color_gray_medium); 3322 } 3323 3324 .cabecalho-mobile svg{ 3325 color: var(--color_header_highlight); 3326 } 3327 3328 .h-texto{ 3329 color: var(--menu_texto_mobile); 3330 } 3331 3332 .cabecalho-mobile .header-search-wrapper form{ 3333 position: relative; 3334 } 3335 3336 .cabecalho-mobile .header-search-wrapper form .suggestion{ 3337 /* top: -192px; */ 3338 top: calc(100% - 510px); 3339 position: absolute; 3340 left: 50%; 3341 transform: translate(-50%, 0); 3342 } 3343</style> 3344 3345<header class="cabecalho-mobile"> 3346 <div class="h-search"> 3347 <div class="header-search-wrapper"> 3348 3349 <div class="box-paginas-extras-cabecalho"> 3350 3351 3352 3353 </div> 3354 3355 <form action="/loja/busca.php?loja=1063102" method="get" data-search="suggestion"> 3356 <input type="hidden" name="loja" value="1063102"> 3357 <input class="input-search" placeholder=" Pesquise aqui " spellcheck="false" autocomplete="off" data-input="suggestion" type="text" name="palavra_busca"> 3358 <button class="button-search" aria-label="Buscar"> 3359 <i class="icon icon-search"></i> 3360 </button> 3361 <div class="suggestion is-hidden" data-container="suggestion"></div> 3362 </form> 3363 3364</div> 3365 </div> 3366 3367 3368 <div class="header-itens"> 3369 <a class="header-item h-menu" title="Abrir menu" aria-label="Abrir menu" tabindex="0" data-toggle="overlay-shadow" data-target="#menu-lateral"> 3370 <div class="h-icone"> 3371 <svg style="margin-bottom: -5px;" xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor" class="bi bi-list" viewBox="0 0 16 16"> 3372 <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/> 3373 </svg> 3374 </div> 3375 3376 <div class="h-texto"> 3377 Menu 3378 </div> 3379 </a> 3380 3381 <a class="header-item h-busca" title="Buscar" aria-label="Buscar"> 3382 <div class="h-icone"> 3383 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-search" viewBox="0 0 16 16"> 3384 <path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"/> 3385 </svg> 3386 </div> 3387 3388 <div class="h-texto"> 3389 Buscar 3390 </div> 3391 </a> 3392 3393 <a href="#" title="Favoritos" aria-label="Ver favoritos" class="header-item h-pedidos"> 3394 <div class="h-icone"> 3395 <div class="menu-itens"> 3396 <div class="favoritos" title="Favoritos"> 3397 <svg xmlns="http://www.w3.org/2000/svg" height="25" style="margin-bottom: -2px;" fill="currentColor" class="bi bi-heart" viewBox="0 0 16 16"> 3398 <path d="m8 2.748-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143q.09.083.176.171a3 3 0 0 1 .176-.17C12.72-3.042 23.333 4.8
339867 8 15"/> 3399 </svg> 3400 <div class="favoritos-qtde">0</div> 3401 </div> 3402 </div> 3403 </div> 3404 <div class="h-texto"> 3405 Favoritos 3406 </div> 3407 </a> 3408 3409 <a title="Meus Pedidos" href="/loja/central_anteriores.php?loja=1063102" class="header-item h-pedidos"> 3410 <div class="h-icone"> 3411 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 3412 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 3413 </svg> 3414 </div> 3415 3416 <div class="h-texto"> 3417 Pedidos 3418 </div> 3419 </a> 3420 3421 <a title="Minha Conta" href="/central-do-cliente" class="header-item h-conta"> 3422 <div class="h-icone"> 3423 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16"> 3424 <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/> 3425 <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/> 3426 </svg> 3427 </div> 3428 3429 <div class="h-texto"> 3430 Conta 3431 </div> 3432 </a> 3433 3434 <a title="Ofertas" href="/loja/busca.php?loja=1063102&somente_oferta=1&avancada=1" class="header-item h-ofertas"> 3435 <div class="h-icone"> 3436 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-tag" viewBox="0 0 16 16"> 3437 <path d="M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0z"/> 3438 <path d="M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1zm0 5.586 7 7L13.586 9l-7-7H2v4.586z"/> 3439 </svg> 3440 </div> 3441 3442 <div class="h-texto"> 3443 Ofertas 3444 </div> 3445 </a> 3446 3447 <div class="header-item h-carrinho carrinho-lateral-on" role="button" aria-label="Abrir carrinho" tabindex="0"> 3448 3449 <div class="cart-quantity" data-cart="amount">0</div> 3450 3451 <div class="h-icone"> 3452 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-cart2" viewBox="0 0 16 16"> 3453 <path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5zM3.14 5l1.25 5h8.22l1.25-5H3.14zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0z"/> 3454 </svg> 3455 </div> 3456 3457 <div class="h-texto"> 3458 Carrinho 3459 </div> 3460 3461 </div> 3462 </div> 3463</header> 3464 3465<div id="menu-lateral" class="menu-lateral"> 3466 3467 <div class="menu-lateral-cabecalho"> 3468 <div class="menu-lateral-cabecalho-item menu-lateral-logo"> 3469 3470 </div> 3471 <div class="menu-lateral-cabecalho-item menu-lateral-fechar" role="button" aria-label="Fechar menu" tabindex="0"> 3472 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -3px;" width="18" height="18" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16"> 3473 <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/> 3474 </svg> 3475 </div> 3476 </div> 3477 3478 <div class="menu-lateral-busca"> 3479 3480 <form action="/loja/busca.php?loja=1063102" method="get" data-search="suggestion"> 3481 <input type="hidden" name="loja" value="1063102"> 3482 <input class="input-search" placeholder=" Pesquise aqui " spellcheck="false" autocomplete="off" data-input="suggestion" type="text" name="palavra_busca"> 3483 <button class="button-search" aria-label="Buscar"> 3484 <i class="icon icon-search"></i> 3485 </button> 3486 <div class="suggestion is-hidden" data-container="suggestion"></div> 3487 </form> 3488 3489 </div> 3490 3491 <div class="menu-lateral-corpo"> 3492 3493 <div class="menu-lateral-corpo-item"> 3494 3495 <div class="menu-lateral-corpo-item-nome"> 3496 <div class="menu-lateral-desc"> 3497 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -3px;
3497" width="18" height="18" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16"> 3498 <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/> 3499 <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/> 3500 </svg> 3501 3502 <div class="tray-hide" data-logged-user="true"> 3503 Olá, seja bem-vindo(a) 3504 <strong> 3505 <span data-customer="name"></span> 3506 </strong> 3507 </div> 3508 3509 <div class="tray-hide" data-logged-user="false"> 3510 <strong>Entrar</strong> ou <strong>Cadastrar</strong> 3511 </div> 3512 </div> 3513 <div class="menu-lateral-icone"> 3514 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3515 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3516 </svg> 3517 </div> 3518 </div> 3519 3520 <div class="menu-lateral-corpo-item-opcoes"> 3521 3522 <div class="tray-hide" data-logged-user="true"> 3523 <p> 3524 <a href="/central-do-cliente" title="Minha Conta"> 3525 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list-ul" viewBox="0 0 16 16"> 3526 <path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/> 3527 </svg> 3528 Minha Conta 3529 </a> 3530 </p> 3531 3532 <p> 3533 <a title="Meus Pedidos" href="/loja/central_anteriores.php?loja=1063102"> 3534 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 3535 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 3536 </svg> 3537 Meus Pedidos 3538 </a> 3539 </p> 3540 3541 <div class="linha"></div> 3542 3543 <div class="text-right"> 3544 <a href="/loja/logout.php?loja=1063102" title="Sair"> 3545 Sair 3546 <svg style="margin-bottom: -4px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-box-arrow-right" viewBox="0 0 16 16"> 3547 <path fill-rule="evenodd" d="M10 12.5a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v2a.5.5 0 0 0 1 0v-2A1.5 1.5 0 0 0 9.5 2h-8A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-2a.5.5 0 0 0-1 0v2z"/> 3548 <path fill-rule="evenodd" d="M15.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L14.293 7.5H5.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/> 3549 </svg> 3550 </a> 3551 </div> 3552 3553 </div> 3554 3555 <div class="tray-hide" data-logged-user="false"> 3556 <p> 3557 <a title="Fazer o Login" href="/my-account/login"> 3558 <svg style="margin-bottom: -4px; margin-left: -3px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-box-arrow-in-right" viewBox="0 0 16 16"> 3559 <path fill-rule="evenodd" d="M6 3.5a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2A1.5 1.5 0 0 0 6.5 14h8a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-8A1.5 1.5 0 0 0 5 3.5v2a.5.5 0 0 0 1 0v-2z"/> 3560 <path fill-rule="evenodd" d="M11.854 8.354a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H1.5a.5.5 0 0 0 0 1h8.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3z"/> 3561 </svg> 3562 Entrar Agora 3563 </a> 3564 </p> 3565 3566 <p> 3567 <a title="Meus Pedidos" href="/loja/central_anteriores.php?loja=1063102"> 3568 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-seam" viewBox="0 0 16 16"> 3569 <path d="M8.186 1.113a.5.5 0 0 0-.372 0L1.846 3.5l2.404.961L10.404 2l-2.218-.887zm3.564 1.426L5.596 5 8 5.961 14.154 3.5l-2.404-.961zm3.25 1.7-6.5 2.6v7.922l6.5-2.6V4.24zM7.5 14.762V6.838L1 4.239v7.923l6.5 2.6zM7.443.184a1.5 1.5 0 0 1 1.114 0l7.129 2.852A.5.5 0 0 1 16 3.5v8.662a1 1 0 0 1-.629.928l-7.185 2.874a.5.5 0 0 1-.372 0L.63 13.09a1 1 0 0 1-.63-.928V3.5a.5.5 0 0 1 .314-.464L7.443.184z"/> 3570 </svg> 3571 Meus Pedidos 3572 </a> 3573 </p> 3574 3575 <div class="linha"></div> 3576 <p> 3577 <a title="Criar Conta" href="/cadastro"> 3578 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-pers
3578on-plus" viewBox="0 0 16 16"> 3579 <path d="M6 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0zm4 8c0 1-1 1-1 1H1s-1 0-1-1 1-4 6-4 6 3 6 4zm-1-.004c-.001-.246-.154-.986-.832-1.664C9.516 10.68 8.289 10 6 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10z"/> 3580 <path fill-rule="evenodd" d="M13.5 5a.5.5 0 0 1 .5.5V7h1.5a.5.5 0 0 1 0 1H14v1.5a.5.5 0 0 1-1 0V8h-1.5a.5.5 0 0 1 0-1H13V5.5a.5.5 0 0 1 .5-.5z"/> 3581 </svg> 3582 Criar Conta 3583 </a> 3584 </p> 3585 3586 </div> 3587 </div> 3588 3589 </div> 3590 3591 <div class="menu-lateral-corpo-item"> 3592 3593 <div class="menu-lateral-corpo-item-nome"> 3594 <div class="menu-lateral-desc item-contact"> 3595 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -3px;" width="18" height="18" fill="currentColor" class="bi bi-chat" viewBox="0 0 16 16"> 3596 <path d="M2.678 11.894a1 1 0 0 1 .287.801 10.97 10.97 0 0 1-.398 2c1.395-.323 2.247-.697 2.634-.893a1 1 0 0 1 .71-.074A8.06 8.06 0 0 0 8 14c3.996 0 7-2.807 7-6 0-3.192-3.004-6-7-6S1 4.808 1 8c0 1.468.617 2.83 1.678 3.894zm-.493 3.905a21.682 21.682 0 0 1-.713.129c-.2.032-.352-.176-.273-.362a9.68 9.68 0 0 0 .244-.637l.003-.01c.248-.72.45-1.548.524-2.319C.743 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7-3.582 7-8 7a9.06 9.06 0 0 1-2.347-.306c-.52.263-1.639.742-3.468 1.105z"/> 3597 </svg> 3598 Nossos <strong>Contatos</strong> 3599 </div> 3600 <div class="menu-lateral-icone"> 3601 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3602 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3603 </svg> 3604 </div> 3605 </div> 3606 3607 <div class="menu-lateral-corpo-item-opcoes"> 3608 3609 <p> 3610 <svg style="margin-bottom: -2px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone" viewBox="0 0 16 16"> 3611 <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/> 3612 </svg> 3613 <strong>Telefone:</strong> <a title="(21) 2604-7350" href="tel:2126047350"> (21) 2604-7350</a> 3614 </p> 3615 3616 <div class="linha"></div> 3617 <p> 3618 3619 3620 <svg style="margin-bottom: -2px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-whatsapp" viewBox="0 0 16 16"> 3621 <path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058
36211.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z"/> 3622 </svg> 3623 <strong>WhatsApp:</strong> <a title="WhatsApp" aria-label="Falar no WhatsApp" href="https://api.whatsapp.com/send?phone=552126047350" rel="noreferrer" target="_blank">(21) 2604-7350</a> 3624 </p> 3625 3626 <div class="linha"></div> 3627 <p> 3628 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16"> 3629 <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/> 3630 </svg> 3631 3632 <strong>E-mail:</strong> <a title="[email protected]" href="mailto:[email protected]">[email protected]</a> 3633 </p> 3634 3635 <div class="linha"></div> 3636 <p> 3637 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock" viewBox="0 0 16 16"> 3638 <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/> 3639 <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/> 3640 </svg> 3641 <strong>Horário de Atendimento</strong> <br /> 3642 Segunda a Sexta das 8hs as 17:30hs 3643 </p> 3644 3645 <div class="linha"></div> 3646 3647 <p> 3648 <a title="Fale Conosco" href="/contato"> 3649 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-left" viewBox="0 0 16 16"> 3650 <path d="M14 1a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4.414A2 2 0 0 0 3 11.586l-2 2V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12.793a.5.5 0 0 0 .854.353l2.853-2.853A1 1 0 0 1 4.414 12H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/> 3651 </svg> 3652 <strong>Fale Conosco</strong> 3653 </a> 3654 </p> 3655 3656 </div> 3657 3658 </div> 3659 3660 <div class="menu-lateral-corpo-item"> 3661 3662 <div class="menu-lateral-corpo-item-nome"> 3663 3664 <div class="menu-lateral-desc item-prom"> 3665 3666 <!-- Porcentagem --> 3667 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -3px;" width="18" height="18" fill="currentColor" class="bi bi-percent" viewBox="0 0 16 16"> 3668 <path d="M13.442 2.558a.625.625 0 0 1 0 .884l-10 10a.625.625 0 1 1-.884-.884l10-10a.625.625 0 0 1 .884 0zM4.5 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm7 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 3669 </svg> 3670 3671 As melhores <strong>Promoções</strong> 3672 </div> 3673 3674 <div class="menu-lateral-icone"> 3675 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3676 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3677 </svg> 3678 </div> 3679 3680 </div> 3681 3682 <div class="menu-lateral-corpo-item-opcoes"> 3683 3684 <p> 3685 <a title="Promoções" href="/loja/busca.php?loja=1063102&somente_oferta=1&avancada=1"> 3686 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-percent" viewBox="0 0 16 16"> 3687 <path d="M13.442 2.558a.625.625 0 0 1 0 .884l-10 10a.625.625 0 1 1-.884-.884l10-10a.625.625 0 0 1 .884 0zM4.5 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zm7 6a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm0 1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/> 3688 </svg> 3689 Promoções </a> 3690 </p> 3691 3692 <p> 3693 <a title="Lançamento" href="/loja/busca.php?loja=1063102&somente_destaque=1&avancada=1"> 3694 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 3695 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 3696 </svg> 3697 Lançamentos </a> 3698 </p> 3699 3700 <p> 3701 <a title="Novidades" href="/loja/busca.php?loja=1063102&somente_lancamento=1&avancada=1"> 3702 <svg style="margin-bottom: -3px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-fire" viewBox="0 0 16 16"> 3703 <path d="M8 16c3.314 0 6-2 6-5.5 0-1.5-.5-4-2.5-6 .25 1.5-1.25 2-1.25 2C11 4 9 .5 6 0c.357 2 .5 4-2 6-1.25 1-2 2.729-2 4.5C2 14 4.686 16 8 16Zm0-1c-1.657 0-3-1-3-2.75 0-.75.25-2 1.25-3C6.125 10 7 10.5 7 10.5c-.375-1.25.5-3.25 2-3.5-.179 1-.25 2 1 3 .625.5 1 1.364 1 2.25C11 14 9.657 15 8 15Z"/> 3704 </svg> 3705 Novidades </a> 3706 </p> 3707 3708 </div> 3709 </div> 3710 3711 3712 3713 <div class="menu-lateral-corpo-itens mt-2"> 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729<ul class="list"> 3730 3731 3732 3733 3734 3735 3736 3737 <li class="first-level sub"> 3738 3739 3740 <div class="first-level-name-icone"> 3741 3742 <div class="first-level-name"> 3743 3744 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto"> 3745 3746 <div class="name"> 3747 3748 <img src="https://images.tcdn.com.br/files/1063102/themes/2
374816/img/settings/TipoDeProduto.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 3749 3750 Tipo de Produto 3751 3752 </div> 3753 3754 </a> 3755 3756 </div> 3757 3758 <div class="first-level-icone"> 3759 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3760 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3761 </svg> 3762 </div> 3763 3764 </div> 3765 3766 3767 3768 3769 <div class="sub-list second-level"> 3770 3771 <ul> 3772 3773 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto">Tipo de Produto</a> 3774 3775 3776 <li > 3777 3778 <a href="https://www.farmacam.com.br/industrializados" title="Industrializados">Industrializados</a> 3779 3780 3781 3782 </li> 3783 3784 3785 <li > 3786 3787 <a href="https://www.farmacam.com.br/manipulados" title="Manipulados">Manipulados</a> 3788 3789 3790 3791 </li> 3792 3793 3794 3795 </ul> 3796 3797 </div> 3798 3799 3800 3801 3802 </li> 3803 <li class="first-level sub"> 3804 3805 3806 <div class="first-level-name-icone"> 3807 3808 <div class="first-level-name"> 3809 3810 <a href="https://www.farmacam.com.br/uso" title="Uso"> 3811 3812 <div class="name"> 3813 3814 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/uso.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 3815 3816 Uso 3817 3818 </div> 3819 3820 </a> 3821 3822 </div> 3823 3824 <div class="first-level-icone"> 3825 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3826 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3827 </svg> 3828 </div> 3829 3830 </div> 3831 3832 3833 3834 3835 <div class="sub-list second-level"> 3836 3837 <ul> 3838 3839 <a href="https://www.farmacam.com.br/uso" title="Uso">Uso</a> 3840 3841 3842 <li > 3843 3844 <a href="https://www.farmacam.com.br/adulto" title="Adulto">Adulto</a> 3845 3846 3847 3848 </li> 3849 3850 3851 <li > 3852 3853 <a href="https://www.farmacam.com.br/pediatrico" title="Pediátrico">Pediátrico</a> 3854 3855 3856 3857 </li> 3858 3859 3860 <li class="sub" > 3861 3862 <a href="https://www.farmacam.com.br/veterinario" title="Veterinário">Veterinário</a> 3863 3864 <ul class="sub-list third-level"> 3865 <li> 3866 <a href="https://www.farmacam.com.br/caes" title="Cães">Cães</a> 3867 3868 3869 </li> 3870 <li> 3871 <a href="https://www.farmacam.com.br/felinos" title="Felinos">Felinos</a> 3872 3873 3874 </li> 3875 <li> 3876 <a href="https://www.farmacam.com.br/equinos" title="Equinos">Equinos</a> 3877 3878 3879 </li> 3880 <li> 3881 <a href="https://www.farmacam.com.br/repteis" title="Répteis">Répteis</a> 3882 3883 3884 </li> 3885 <li> 3886 <a href="https://www.farmacam.com.br/aves" title="Aves Silvestres">Aves Silvestres</a> 3887 3888 3889 </li> 3890 </ul> 3891 3892 3893 </li> 3894 3895 3896 3897 </ul> 3898 3899 </div> 3900 3901 3902 3903 3904 </li> 3905 <li class="first-level sub"> 3906 3907 3908 <div class="first-level-name-icone"> 3909 3910 <div class="first-level-name"> 3911 3912 <a href="https://www.farmacam.com.br/promocoes" title="Promoções"> 3913 3914 <div class="name"> 3915 3916 <img src="https://images.tcdn.com.br/files/1063102/themes/2
391616/img/settings/Promocoes.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 3917 3918 Promoções 3919 3920 </div> 3921 3922 </a> 3923 3924 </div> 3925 3926 <div class="first-level-icone"> 3927 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3928 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3929 </svg> 3930 </div> 3931 3932 </div> 3933 3934 3935 3936 3937 <div class="sub-list second-level"> 3938 3939 <ul> 3940 3941 <a href="https://www.farmacam.com.br/promocoes" title="Promoções">Promoções</a> 3942 3943 3944 <li > 3945 3946 <a href="https://www.farmacam.com.br/promocoes-do-mes" title="Promoção do mês de Agosto">Promoção do mês de Agosto</a> 3947 3948 3949 3950 </li> 3951 3952 3953 3954 </ul> 3955 3956 </div> 3957 3958 3959 3960 3961 </li> 3962 <li class="first-level sub"> 3963 3964 3965 <div class="first-level-name-icone"> 3966 3967 <div class="first-level-name"> 3968 3969 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos"> 3970 3971 <div class="name"> 3972 3973 <img src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/LinhaDeProdutos.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 3974 3975 Linha de Produtos 3976 3977 </div> 3978 3979 </a> 3980 3981 </div> 3982 3983 <div class="first-level-icone"> 3984 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 3985 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 3986 </svg> 3987 </div> 3988 3989 </div> 3990 3991 3992 3993 3994 <div class="sub-list second-level"> 3995 3996 <ul> 3997 3998 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos">Linha de Produtos</a> 3999 4000 4001 <li > 4002 4003 <a href="https://www.farmacam.com.br/linha-farma-signature" title="Linha Farma Signature">Linha Farma Signature</a> 4004 4005 4006 4007 </li> 4008 4009 4010 <li > 4011 4012 <a href="https://www.farmacam.com.br/linha-farma-gym" title="Linha Farma-Gym">Linha Farma-Gym</a> 4013 4014 4015 4016 </li> 4017 4018 4019 <li > 4020 4021 <a href="https://www.farmacam.com.br/linha-f-beauty" title="Linha F-Beauty">Linha F-Beauty</a> 4022 4023 4024 4025 </li> 4026 4027 4028 <li > 4029 4030 <a href="https://www.farmacam.com.br/linha-fitocam" title="Linha FitoCam">Linha FitoCam</a> 4031 4032 4033 4034 </li> 4035 4036 4037 <li > 4038 4039 <a href="https://www.farmacam.com.br/linha-farma-vet" title="Linha Farma Vet">Linha Farma Vet</a> 4040 4041 4042 4043 </li> 4044 4045 4046 <li class="sub" > 4047 4048 <a href="https://www.farmacam.com.br/linha-homeopaticam" title="Linha HomeopatiCAM">Linha HomeopatiCAM</a> 4049 4050 <ul class="sub-list third-level"> 4051 <li> 4052 <a href="https://www.farmacam.com.br/floral-therapi" title="Floral Thérapi">Floral Thérapi</a> 4053 4054 4055 </li> 4056 </ul> 4057 4058 4059 </li> 4060 4061 4062 <li class="sub" > 4063 4064 <a href="https://www.farmacam.com.br/linha-f-cam" title="Linha F-CAM">Linha F-CAM</a> 4065 4066 <ul class="sub-list third-level"> 4067 <li> 4068 <a href="https://www.farmacam.com.br/vitaminas" title="Vitaminas">Vitaminas</a> 4069 4070 4071 </li> 4072 <li> 4073 <a href="https://www.farmacam.com.br/minerais" title="Minerais">Minerais</a> 4074 4075 4076 </li> 4077 <li> 4078 <a href="https://www.farmacam.com.br/lactobacilos" title="Lactobacilos">Lactobacilos</a> 4079 4080 4081 </li> 4082 <li> 4083 <a href="https://www.farmacam.com.br/fibras" title="Fibras">Fibras</a> 4084 4085 4086 </li> 4087 <li> 4088 <a href="https://www.farmacam.com.br/esmaltes" title="Esmaltes">Esmaltes</a> 4089 4090 4091 </li> 4092 <li> 4093 <a href="https://www.farmacam.com.br/capsulas-oleosas" title="Cápsulas Oleosas">Cápsulas Oleosas</a> 4094 4095 4096 </li> 4097 <li> 4098 <a href="https://www.farmacam.com.br/aminoacidos" title="Aminoácidos">Aminoácidos</a> 4099 4100 4101 </li> 4102 <li> 4103 <a href="https://www.farmacam.com.br/hormonio" title="Hormônios">Hormônios</a> 4104 4105 4106 </li> 4107 <li> 4108 <a href="https://www.farmacam.com.br/enzimas" title="Enzimas">Enzimas</a> 4109 4110 4111 </li> 4112 </ul> 4113 4114 4115 </li> 4116 4117 4118 4119 </ul> 4120 4121 </div> 4122 4123 4124 4125 4126 </li> 4127 <li class="first-level sub"> 4128 4129 4130 <div class="first-level-name-icone"> 4131 4132 <div class="first-level-name"> 4133 4134 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo"> 4135 4136 <div class="name"> 4137 4138 <img src="https://images.tcdn.com.br/files/1063102/themes/2
413816/img/settings/objetivo.png?40911a9f4d7a99b6eef6b4ae366be082" alt="Ícone menu"> 4139 4140 Objetivo 4141 4142 </div> 4143 4144 </a> 4145 4146 </div> 4147 4148 <div class="first-level-icone"> 4149 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 4150 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 4151 </svg> 4152 </div> 4153 4154 </div> 4155 4156 4157 4158 4159 <div class="sub-list second-level"> 4160 4161 <ul> 4162 4163 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo">Objetivo</a> 4164 4165 4166 <li > 4167 4168 <a href="https://www.farmacam.com.br/anabolizantes" title="Anabolizantes">Anabolizantes</a> 4169 4170 4171 4172 </li> 4173 4174 4175 <li > 4176 4177 <a href="https://www.farmacam.com.br/analgesicos" title="Analgésicos">Analgésicos</a> 4178 4179 4180 4181 </li> 4182 4183 4184 <li > 4185 4186 <a href="https://www.farmacam.com.br/anestesicos" title="Anestésicos">Anestésicos</a> 4187 4188 4189 4190 </li> 4191 4192 4193 <li > 4194 4195 <a href="https://www.farmacam.com.br/ansioliticos" title="Ansiolíticos">Ansiolíticos</a> 4196 4197 4198 4199 </li> 4200 4201 4202 <li > 4203 4204 <a href="https://www.farmacam.com.br/anti-aging" title="Anti-aging">Anti-aging</a> 4205 4206 4207 4208 </li> 4209 4210 4211 <li > 4212 4213 <a href="https://www.farmacam.com.br/antiagregantes" title="Antiagregantes">Antiagregantes</a> 4214 4215 4216 4217 </li> 4218 4219 4220 <li > 4221 4222 <a href="https://www.farmacam.com.br/antialergicos" title="Antialérgicos">Antialérgicos</a> 4223 4224 4225 4226 </li> 4227 4228 4229 <li > 4230 4231 <a href="https://www.farmacam.com.br/antidepressivos" title="Antidepressivos">Antidepressivos</a> 4232 4233 4234 4235 </li> 4236 4237 4238 <li > 4239 4240 <a href="https://www.farmacam.com.br/anti-inflamatorios" title="Anti-inflamatórios">Anti-inflamatórios</a> 4241 4242 4243 4244 </li> 4245 4246 4247 <li > 4248 4249 <a href="https://www.farmacam.com.br/antioxidantes" title="Antioxidantes">Antioxidantes</a> 4250 4251 4252 4253 </li> 4254 4255 4256 <li > 4257 4258 <a href="https://www.farmacam.com.br/antissepticos" title="Antissépticos">Antissépticos</a> 4259 4260 4261 4262 </li> 4263 4264 4265 <li > 4266 4267 <a href="https://www.farmacam.com.br/antitermicos" title="Antitérmicos">Antitérmicos</a> 4268 4269 4270 4271 </li> 4272 4273 4274 <li > 4275 4276 <a href="https://www.farmacam.com.br/antivertiginosos" title="Antivertiginosos">Antivertiginosos</a> 4277 4278 4279 4280 </li> 4281 4282 4283 <li > 4284 4285 <a href="https://www.farmacam.com.br/aumento-do-apetite" title="Aumento do Apetite">Aumento do Apetite</a> 4286 4287 4288 4289 </li> 4290 4291 4292 <li > 4293 4294 <a href="https://www.farmacam.com.br/bactericidas" title="Bactericidas">Bactericidas</a> 4295 4296 4297 4298 </li> 4299 4300 4301 <li > 4302 4303 <a href="https://www.farmacam.com.br/calmante" title="Calmantes">Calmantes</a> 4304 4305 4306 4307 </li> 4308 4309 4310 <li > 4311 4312 <a href="https://www.farmacam.com.br/cicatrizantes" title="Cicatrizantes">Cicatrizantes</a> 4313 4314 4315 4316 </li> 4317 4318 4319 <li > 4320 4321 <a href="https://www.farmacam.com.br/dermatologicos" title="Dermatológicos">Dermatológicos</a> 4322 4323 4324 4325 </li> 4326 4327 4328 <li > 4329 4330 <a href="https://www.farmacam.com.br/desempenho-fisico" title="Desempenho Físico">Desempenho Físico</a> 4331 4332 4333 4334 </li> 4335 4336 4337 <li > 4338 4339 <a href="https://www.farmacam.com.br/desempenho-imunologico" title="Desempenho Imunológico">Desempenho Imunológico</a> 4340 4341 4342 4343 </li> 4344 4345 4346 <li > 4347 4348 <a href="https://www.farmacam.com.br/desempenho-mental" title="Desempenho Mental">Desempenho Mental</a> 4349 4350 4351 4352 </li> 4353 4354 4355 <li > 4356 4357 <a href="https://www.farmacam.com.br/desempenho-sexual" title="Desempenho Sexual">Desempenho Sexual</a> 4358 4359 4360 4361 </li> 4362 4363 4364 <li > 4365 4366 <a href="https://www.farmacam.com.br/despigmentantes" title="Despigmentantes">Despigmentantes</a> 4367 4368 4369 4370 </li> 4371 4372 4373 <li > 4374 4375 <a href="https://www.farmacam.com.br/diureticos" title="Diuréticos">Diuréticos</a> 4376 4377 4378 4379 </li> 4380 4381 4382 <li > 4383 4384 <a href="https://www.farmacam.com.br/emagrecimento" title="Emagrecimento">Emagrecimento</a> 4385 4386 4387 4388 </li> 4389 4390 4391 <li > 4392 4393 <a href="https://www.farmacam.com.br/estimulantes" title="Estimulantes">Estimulantes</a> 4394 4395 4396 4397 </li> 4398 4399 4400 <li > 4401 4402 <a href="https://www.farmacam.com.br/expectorantes" title="Expectorantes">Expectorantes</a> 4403 4404 4405 4406 </li> 4407 4408 4409 <li > 4410 4411 <a href="https://www.farmacam.com.br/laxativos" title="Laxativos">Laxativos</a> 4412 4413 4414 4415 </li> 4416 4417 4418 <li > 4419 4420 <a href="https://www.farmacam.com.br/protecao-solar" title="Proteção Solar">Proteção Solar</a> 4421 4422 4423 4424 </li> 4425 4426 4427 <li > 4428 4429 <a href="https://www.farmacam.com.br/qualidade-de-vida" title="Qualidade de Vida">Qualidade de Vida</a> 4430 4431 4432 4433 </li> 4434 4435 4436 <li > 4437 4438 <a href="https://www.farmacam.com.br/repelentes" title="Repelentes">Repelentes</a> 4439 4440 4441 4442 </li> 4443 4444 4445 <li > 4446 4447 <a href="https://www.farmacam.com.br/saude-da-mulher" title="Saúde da Mulher">
4447Saúde da Mulher</a> 4448 4449 4450 4451 </li> 4452 4453 4454 <li > 4455 4456 <a href="https://www.farmacam.com.br/suplementacao-nutricional" title="Suplementação Nutricional">Suplementação Nutricional</a> 4457 4458 4459 4460 </li> 4461 4462 4463 <li > 4464 4465 <a href="https://www.farmacam.com.br/tratamento-cardiaco" title="Tratamento Cardiovascular">Tratamento Cardiovascular</a> 4466 4467 4468 4469 </li> 4470 4471 4472 <li > 4473 4474 <a href="https://www.farmacam.com.br/tratamento-de-acne" title="Tratamento de Acne">Tratamento de Acne</a> 4475 4476 4477 4478 </li> 4479 4480 4481 <li > 4482 4483 <a href="https://www.farmacam.com.br/tratamento-de-unha-e-cabelo" title="Tratamento de Unha e Cabelo">Tratamento de Unha e Cabelo</a> 4484 4485 4486 4487 </li> 4488 4489 4490 <li > 4491 4492 <a href="https://www.farmacam.com.br/tratamento-digestorio" title="Tratamento Digestório">Tratamento Digestório</a> 4493 4494 4495 4496 </li> 4497 4498 4499 <li > 4500 4501 <a href="https://www.farmacam.com.br/tratamento-endocrinologico" title="Tratamento Endocrinológico">Tratamento Endocrinológico</a> 4502 4503 4504 4505 </li> 4506 4507 4508 <li > 4509 4510 <a href="https://www.farmacam.com.br/tratamento-ginecologico" title="Tratamento Ginecológico">Tratamento Ginecológico</a> 4511 4512 4513 4514 </li> 4515 4516 4517 <li > 4518 4519 <a href="https://www.farmacam.com.br/tratamento-neurologico-e-psiquiatrico" title="Tratamento Neurológico e Psiquiátrico">Tratamento Neurológico e Psiquiátrico</a> 4520 4521 4522 4523 </li> 4524 4525 4526 <li > 4527 4528 <a href="https://www.farmacam.com.br/tratamento-oftalmico" title="Tratamento Oftálmico">Tratamento Oftálmico</a> 4529 4530 4531 4532 </li> 4533 4534 4535 <li > 4536 4537 <a href="https://www.farmacam.com.br/tratamento-ortopedico-e-reumatologico" title="Tratamento Ortopédico e Reumatológico">Tratamento Ortopédico e Reumatológico</a> 4538 4539 4540 4541 </li> 4542 4543 4544 <li > 4545 4546 <a href="https://www.farmacam.com.br/tratamento-otorrinolaringologico" title="Tratamento Otorrinolaringológico">Tratamento Otorrinolaringológico</a> 4547 4548 4549 4550 </li> 4551 4552 4553 <li > 4554 4555 <a href="https://www.farmacam.com.br/tratamento-proctologico" title="Tratamento Proctológico">Tratamento Proctológico</a> 4556 4557 4558 4559 </li> 4560 4561 4562 <li > 4563 4564 <a href="https://www.farmacam.com.br/tratamento-respiratorio" title="Tratamento Respiratório">Tratamento Respiratório</a> 4565 4566 4567 4568 </li> 4569 4570 4571 <li > 4572 4573 <a href="https://www.farmacam.com.br/tratamento-urinario" title="Tratamento Urinário">Tratamento Urinário</a> 4574 4575 4576 4577 </li> 4578 4579 4580 <li > 4581 4582 <a href="https://www.farmacam.com.br/tratamento-urologico" title="Tratamento Urológico">Tratamento Urológico</a> 4583 4584 4585 4586 </li> 4587 4588 4589 <li > 4590 4591 <a href="https://www.farmacam.com.br/uso-em-procedimento" title="Uso em Procedimento">Uso em Procedimento</a> 4592 4593 4594 4595 </li> 4596 4597 4598 4599 </ul> 4600 4601 </div> 4602 4603 4604 4605 4606 </li> 4607 4608 <li class="first-level sub more-categ-lateral"> 4609 4610 <div class="first-level-name-icone"> 4611 4612 <div class="first-level-name"> 4613
4614 <span role="button" title="Departamentos" aria-label="Ver mais categorias" tabindex="0"> 4615 <div class="name"> 4616 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" style="margin-right: 8px;" fill="currentColor" class="bi bi-list" viewBox="0 0 16 16"> 4617 <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/> 4618 </svg> 4619 Ver Mais 4620 </div> 4621 </span> 4622 4623 </div> 4624 4625 <div class="first-level-icone"> 4626 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-down" viewBox="0 0 16 16"> 4627 <path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/> 4628 </svg> 4629 </div> 4630 4631 </div> 4632 4633 <div class="sub-list second-level"> 4634 4635 <ul> 4636 4637 <li> 4638 <a href="https://www.farmacam.com.br/tipo-venda" title="Tipo de Venda">Tipo de Venda</a> 4639 </li> 4640 4641 <ul class="sub-list third-level"> 4642 <li class="third-more-categories"> 4643 <a href="https://www.farmacam.com.br/tipo-venda/venda-livre" title="Venda Livre">Venda Livre</a> 4644 4645 </li> 4646 <li class="third-more-categories"> 4647 <a href="https://www.farmacam.com.br/tipo-venda/sob-prescricao" title="Sob Prescrição">Sob Prescrição</a> 4648 4649 </li> 4650 <li class="third-more-categories"> 4651 <a href="https://www.farmacam.com.br/tipo-venda/sob-prescricao-com-retencao-de-notificacao-de-receita" title="Sob Prescrição com Retenção de Notificação de Receita">Sob Prescrição com Retenção de Notificação de Receita</a> 4652 4653 </li> 4654 </ul> 4655 4656 </ul> 4657 4658 </div> 4659 4660 </li> 4661 4662 4663 4664 4665 4666</ul> 4667 4668 </div> 4669 4670 4671 4672 4673 4674 <div class="menu-horizontal-midias-sociais mt-2"> 4675 4676 <a href="https://www.facebook.com/Farmacam" title="Facebook" aria-label="Facebook" target="_blank" rel="noopener noreferrer"> 4677 <i class="icon icon-facebook v-align-middle"></i> 4678 </a> 4679 4680 <a href="https://www.instagram.com/farmacam/" title="Instagram" aria-label="Instagram" target="_blank" rel="noopener noreferrer"> 4681 <i class="icon icon-instagram v-align-middle"></i> 4682 </a> 4683 4684 <a href="https://tiktok.com/@farmacam" title="TikTok" aria-label="TikTok" target="_blank" rel="noopener noreferrer"> 4685 <i class="icon icon-tiktok v-align-middle"></i> 4686 </a> 4687 4688 <a href="https://twitter.com/farmacam" title="X" aria-label="X" target="_blank" rel="noopener noreferrer" style="position: relative; top: 7px;"> 4689 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 19 19"><path d="M8.486.069C5.149.418 2.166 2.615.81 5.726a9.56 9.56 0 0 0-.399 6.447c.767 2.653 2.748 4.895 5.313 6.016a9.56 9.56 0 0 0 6.448.399c3.185-.919 5.693-3.534 6.517-6.783C19.975 6.714 16.821 1.507 11.716.292a9.3 9.3 0 0 0-3.23-.221m.126 5.883c.81 1.076 1.494 1.964 1.52 1.964s.868-.886 1.862-1.964l1.818-1.964h1.033l-.221.235c-.126.132-.95 1.026-1.831 1.982a161 161 0 0 1-1.914 2.058l-.304.323 2.375 3.161c1.304 1.741 2.375 3.185 2.375 3.211 0 .031-.779.05-1.723.05l-1.727-.007-1.608-2.154c-1.109-1.489-1.627-2.128-1.679-2.09-.038.031-.938 1.001-2.002 2.154L4.655 15.01h-.488c-.272 0-.494-.013-.494-.031s1.007-1.121 2.235-2.444a308 308 0 0 0 2.249-2.451c.007-.026-1-1.4-2.235-3.053A262 262 0 0 1 3.673 4.01c0-.012.779-.019 1.736-.019h1.735Zm0 0" style="stroke:none;fill-rule:nonzero;
4689fill:var(--menu-lt-icon-social);fill-opacity:1"/><path d="M5.238 4.838c.026.045 1.621 2.185 3.534 4.743l3.484 4.662.779.007c.482 0 .773-.026.76-.064-.006-.031-1.596-2.172-3.521-4.75L6.764 4.75h-.785c-.652 0-.786.013-.741.088m0 0" style="stroke:none;fill-rule:nonzero;fill:var(--menu-lt-icon-social);fill-opacity:1"/></svg> 4690 </a> 4691 4692 <a href="https://www.youtube.com/@farmacam2239" title="Youtube" aria-label="Youtube" target="_blank" rel="noopener noreferrer"> 4693 <i class="icon icon-youtube v-align-middle"></i> 4694 </a> 4695 4696 <a href="https://br.pinterest.com/farmacam_oficial/_shop/" title="Pinterest" aria-label="Pinterest" target="_blank" rel="noopener noreferrer"> 4697 <i class="icon icon-pinterest v-align-middle"></i> 4698 </a> 4699 4700 <a href="https://www.instagram.com/farmacam/" title="Linkedin" aria-label="Linkedin" target="_blank" rel="noopener noreferrer"> 4701 <i class="icon icon-linkedin v-align-middle"></i> 4702 </a> 4703 4704 </div> 4705 4706 </div> 4707 4708</div> 4709 4710 <main class="site-main"> 4711 <div class="page-content not-padding"> 4712 4713 4714 4715 4716 4717 <div class="container "> 4718 4719 4720 <div class="catalog-cols flex f-wrap catalogo-container infinite"> 4721 4722 <ol class="breadcrumb flex f-wrap" itemscope itemtype="https://schema.org/BreadcrumbList"> 4723 4724 <li class="breadcrumb-item flex align-center" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 4725 <a itemprop="item" class="t-color" title="Home" href="/"> 4726 <span itemprop="name">Home</span> 4727 </a> 4728 <meta itemprop="position" content="1" /> 4729 </li> 4730 4731 4732 <li class="breadcrumb-item flex align-center" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 4733 <a itemprop="item" class="t-color" href="/tipo-de-produto" title="Tipo de Produto"> 4734 <span itemprop="name">Tipo de Produto</span> 4735 </a> 4736 <meta itemprop="position" content="2" /> 4737 </li> 4738 4739 4740 4741 4742 <li class="breadcrumb-item flex align-center" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 4743 <span itemprop="name">Industrializados</span> 4744 <meta itemprop="position" content="3" /> 4745 </li> 4746 4747 4748</ol> 4749 4750 4751 <div id="sidebar-category" class="sidebar-category"> 4752 4753 <div class="sidebar-mobile-header"> 4754 <div class="close-box close-overlay" role="button" aria-label="Fechar" tabindex="0"> 4755 <i class="icon icon-times"></i> 4756 </div> 4757 <div class="block-title flex align-center"> 4758 <i class="icon icon-filter"></i> 4759 Filtros 4760 </div> 4761 </div> 4762 4763 4764 4765 4766<form class="smart-filter" name="form-filter" method="get"> 4767 4768 <input type="hidden" name="loja" value="1063102"> 4769 4770 4771 <input type="hidden" name="categoria" value="3"> 4772 4773 <div class="filters"> 4774 4775 4776 <section class="filter-block filter-block-brands"> 4777 4778 <h4 class="filter-title"> 4779 Marcas 4780 </h4> 4781 <ul class="filter-list" > 4782 4783 4784 <li class="filter-item"> 4785 <div class="filter-checkbox"> 4786 <input type="checkbox" class="filter-input" id="brands-extratos alergênicos" name="brands[]" value="Extratos+Alerg%EAnicos" > 4787 <label class="filter-label" for="brands-extratos alergênicos">
4788 <span class="filter-name">Extratos Alergênicos</span> 4789 <span class="filter-count">(10)</span> 4790 </label> 4791 </div> 4792 </li> 4793 4794 4795 <li class="filter-item"> 4796 <div class="filter-checkbox"> 4797 <input type="checkbox" class="filter-input" id="brands-floral thérapi" name="brands[]" value="Floral+Th%E9rapi" > 4798 <label class="filter-label" for="brands-floral thérapi"> 4799 <span class="filter-name">Floral Thérapi</span> 4800 <span class="filter-count">(46)</span> 4801 </label> 4802 </div> 4803 </li> 4804 4805 4806 <li class="filter-item"> 4807 <div class="filter-checkbox"> 4808 <input type="checkbox" class="filter-input" id="brands-ifal" name="brands[]" value="Ifal" > 4809 <label class="filter-label" for="brands-ifal"> 4810 <span class="filter-name">Ifal</span> 4811 <span class="filter-count">(1)</span> 4812 </label> 4813 </div> 4814 </li> 4815 4816 </ul> 4817 4818 </section> 4819 4820 4821 <section class="filter-block filter-block-prices"> 4822 <h4 class="filter-title"> 4823 Preços 4824 </h4> 4825 <ul class="filter-list" > 4826 4827 4828 <li class="filter-item"> 4829 <div class="filter-checkbox"> 4830 <input type="checkbox" class="filter-input" id="price-14.99-35.99" name="prices[]" value="14.99,35.99" > 4831 <label class="filter-label" for="price-14.99-35.99"> 4832 <span class="filter-name"> 4833 Até R$ 35,99 4834 </span> 4835 </label> 4836 </div> 4837 </li> 4838 4839 4840 <li class="filter-item"> 4841 <div class="filter-checkbox"> 4842 <input type="checkbox" class="filter-input" id="price-36-56.99" name="prices[]" value="36,56.99" > 4843 <label class="filter-label" for="price-36-56.99"> 4844 <span class="filter-name"> 4845 De R$ 36,00 à R$ 56,99 4846 </span> 4847 </label> 4848 </div> 4849 </li> 4850 4851 4852 <li class="filter-item"> 4853 <div class="filter-checkbox"> 4854 <input type="checkbox" class="filter-input" id="price-57-77.99" name="prices[]" value="57,77.99" > 4855 <label class="filter-label" for="price-57-77.99">
4856 <span class="filter-name"> 4857 De R$ 57,00 à R$ 77,99 4858 </span> 4859 </label> 4860 </div> 4861 </li> 4862 4863 4864 <li class="filter-item"> 4865 <div class="filter-checkbox"> 4866 <input type="checkbox" class="filter-input" id="price-78-98.99" name="prices[]" value="78,98.99" > 4867 <label class="filter-label" for="price-78-98.99"> 4868 <span class="filter-name"> 4869 De R$ 78,00 à R$ 98,99 4870 </span> 4871 </label> 4872 </div> 4873 </li> 4874 4875 4876 <li class="filter-item"> 4877 <div class="filter-checkbox"> 4878 <input type="checkbox" class="filter-input" id="price-99-119.99" name="prices[]" value="99,119.99" > 4879 <label class="filter-label" for="price-99-119.99"> 4880 <span class="filter-name"> 4881 De R$ 99,00 à R$ 119,99 4882 </span> 4883 </label> 4884 </div> 4885 </li> 4886 4887 4888 <li class="filter-item"> 4889 <div class="filter-checkbox"> 4890 <input type="checkbox" class="filter-input" id="price-120-142" name="prices[]" value="120,142" > 4891 <label class="filter-label" for="price-120-142"> 4892 <span class="filter-name"> 4893 Acima de R$ 120,00 4894 </span> 4895 </label> 4896 </div> 4897 </li> 4898 </ul> 4899 </section> 4900 4901 4902 <section class="filter-block filter-block-properties" data-filter-type="embalagem"> 4903 4904 <h4 class="filter-title"> 4905 Embalagem 4906 </h4> 4907 <ul class="filter-list" > 4908 4909 4910 4911 <li class="filter-item"> 4912 <div class="filter-checkbox"> 4913 <input type="checkbox" class="filter-input" id="property-embalagem||1ª série" name="variants[]" value="Embalagem||1%AA+S%E9rie" > 4914 <label class="filter-label" for="property-embalagem||1ª série"> 4915 <span class="filter-name">1ª Série</span>
4916 <span class="filter-count">(7)</span> 4917 </label> 4918 </div> 4919 </li> 4920 4921 4922 4923 4924 <li class="filter-item"> 4925 <div class="filter-checkbox"> 4926 <input type="checkbox" class="filter-input" id="property-embalagem||2ª série" name="variants[]" value="Embalagem||2%AA+S%E9rie" > 4927 <label class="filter-label" for="property-embalagem||2ª série"> 4928 <span class="filter-name">2ª Série</span> 4929 <span class="filter-count">(7)</span> 4930 </label> 4931 </div> 4932 </li> 4933 4934 4935 4936 4937 <li class="filter-item"> 4938 <div class="filter-checkbox"> 4939 <input type="checkbox" class="filter-input" id="property-embalagem||3ª série" name="variants[]" value="Embalagem||3%AA+S%E9rie" > 4940 <label class="filter-label" for="property-embalagem||3ª série"> 4941 <span class="filter-name">3ª Série</span> 4942 <span class="filter-count">(7)</span> 4943 </label> 4944 </div> 4945 </li> 4946 4947 </ul> 4948 4949 </section> 4950 4951 </div> 4952 4953 <button type="submit" class="filter-button" aria-label="Filtrar"> 4954 Filtrar 4955 </button> 4956 4957</form> 4958 4959 </div> 4960 4961 <div class="col-content"> 4962 4963 <div class="catalog-header"> 4964 4965 4966 4967 <div class="catalog-info flex justify-between align-center f-wrap"> 4968 4969 <h1 class="catalog-name"> 4970 Industrializados 4971 </h1> 4972 4973 4974 4975 <div class="button-filter-mobile" role="button" aria-label="Abrir filtros" tabindex="0" data-toggle="overlay-shadow" data-target="#sidebar-category"> 4976 <i class="icon icon-filter"></i> 4977 Filtrar 4978 </div> 4979 4980 <div class="system-filter flex justify-center align-center "> 4981 4982 <div class="sort-mobile"> 4983 <div class="sort-mobile-button" role="button" aria-label="Ordenar produtos" tabindex="0" data-toggle="overlay-shadow" data-target="#sort-panel"> 4984 <i class="icon icon-sort"></i> 4985 Ordenar 4986 </div> 4987 <div id="sort-panel" class="sort-panel"> 4988 4989 <div class="close-box close-overlay" role="button" aria-label="Fechar" tabindex="0"> 4990 <i class="icon icon-times"></i> 4991 </div> 4992 4993 <div class="block-title flex align-center"> 4994 <i class="icon icon-sort"></i> 4995 Ordenar Produtos 4996 </div> 4997 4998 <ul class="sort-options"></ul> 4999 5000 </div> 5001 </div> 5002 5003 <div id="sort-mobile-sub" class="sort-mobile"> 5004 <div class="sort-mobile-button" role="button" aria-label="Ordenar produtos" tabindex="0" data-toggle="overlay-shadow" data-target="#sort-panel-sub"> 5005 <i class="icon icon-sort"></i> 5006 Sub 5007 </div>
5008 <div id="sort-panel-sub" class="sort-panel"> 5009 5010 <div class="close-box close-overlay" role="button" aria-label="Fechar" tabindex="0"> 5011 <i class="icon icon-times"></i> 5012 </div> 5013 5014 <div class="block-title flex align-center"> 5015 <i class="icon icon-sort"></i> 5016 Subcategorias 5017 </div> 5018 5019 <ul class="sort-options-sub"></ul> 5020 5021 </div> 5022 </div> 5023 5024 <form class="catalogo-form-filtros" data-form="filter"> 5025 <input name="loja" type="hidden" value="1063102"> 5026 <input name="palavra_busca" type="hidden" value=""> 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 <label class="filtros filtro-ordem"> 5039 Classificar Por 5040 <select name="order" id="select_ordem" class="select"> 5041 <option value="7" >Nome do Produto</option> 5042 <option value="1" >Menor Preço</option> 5043 <option value="2" >Maior Preço</option> 5044 <option value="3" >Mais Vendido</option> 5045 <option value="4" >Destaque</option> 5046 <option value="5" selected="selected">Lançamento</option> 5047 </select> 5048 </label> 5049 5050 5051 <input type="hidden" name="categoria" value="3"> 5052 5053 </form> 5054 5055 <div class="box-filtros-lista"> 5056 <div class="box-filtro-lista-item active" role="button" aria-label="Visualização em grade" tabindex="0" data-tipo=""> 5057 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-grid-3x3" viewBox="0 0 16 16"> 5058 <path d="M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5v-13zM1.5 1a.5.5 0 0 0-.5.5V5h4V1H1.5zM5 6H1v4h4V6zm1 4h4V6H6v4zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5v-4zm1 0v4h4v-4H6zm5 0v4h3.5a.5.5 0 0 0 .5-.5V11h-4zm0-1h4V6h-4v4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H11v4zm-1 0V1H6v4h4z"/> 5059 </svg> 5060 </div> 5061 <div class="box-filtro-lista-item" role="button" aria-label="Visualização em lista" tabindex="0" data-tipo="produtos-lista"> 5062 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-list" viewBox="0 0 16 16"> 5063 <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/> 5064 </svg> 5065 </div> 5066 </div> 5067 5068 </div> 5069 5070 <div class="compare-wrapper"> 5071 <a title="Comparar Produtos" href="/loja/comparador.php?loja=1063102&IdDep=3" class="button-compare"> 5072 Comparar Produto 5073 </a> 5074 </div> 5075 5076 5077 5078 5079 </div> 5080 5081 5082 <div class="description"> 5083 <div class="board_htm"> 5084 <h2><span style="font-size:18px;">Medicamentos Industrializados</span></h2> 5085 5086<p><span style="font-size:18px;"><strong>Medicamentos industrializados também é com a Farmacam!</strong></span></p> 5087 5088<p><span style="font-size:18px;">Trabalhamos com grandes indústrias e distribuidores de todo o país, oferecendo produtos de qualidade, segurança e procedência.</span></p> 5089 5090<p><span style="font-size:18px;">Precisa de medicamentos industrializados especiais ou produtos de alta tecnologia?</span></p> 5091 5092<p><span style="font-size:18px;"><strong>Pode contar com a Farmacam!</strong></span></p> 5093 5094<p><span style="font-size:18px;">Também produzimos diversas opções manipuladas, como <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=shampoo">shampoos</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=creme">cremes</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=lo%E7%F5es">loções</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=sach%EA">sachês</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=pomada">pomadas</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=xarope">xaropes</a>, <a href="https://www.farmacam.com.br/loja/busca.php?loja=1063102&palavra_busca=gel">géis</a> e muito mais!</span></p> 5095 </div> 5096 </div> 5097 5098 </div> 5099 5100 5101 <div class="catalog-content"> 5102 <div class="showcase-catalog"> 5103 <ul class="list-product flex f-wrap"> 5104 5105 <li class="item flex"> 5106 5107 5108 5109 5110<div class="product animate open_cart" 5111 data-id="125245510" 5112 data-farmacam-related-categories=",Array,Array," 5113 data-ga4-id="125245510" 5114 data-ga4-name="Ambientalize - Essência - Lemon Aqua" 5115 data-ga4-price="15.00" 5116 data-ga4-brand="Floral Thérapi" 5117 data-ga4-category="Tipo de Produto;Industrializados;" 5118 > 5119 5120 <div class="product-header"> 5121 5122 <div class="w-100"> 5123 5124 5125 5126 5127 5128 5129 5130 <div class="product-tags-circle"> 5131 5132 5133 <div class="tag-circle discount tag-icone tag-icone1"> 5134 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewB
5134ox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 5135 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 5136 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 5137 </svg> 5138 <span>Lançamento</span> 5139 </div> 5140 5141 <div class="tag-circle discount tag-icone tag-icone2"> 5142 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5143 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5144 </svg> 5145 <span>Destaque</span> 5146 </div> 5147 5148 </div> 5149 5150 5151 5152 <div class="product-tags " data-tags-count="2"> 5153 5154 5155 5156 5157 5158 </div> 5159 5160 5161 5162 <div class="image "> 5163 5164 <a title="Ambientalize - Essência - Lemon Aqua" href="https://www.farmacam.com.br/ambientalize-essencia-lemon-aqua" class="space-image"> 5165 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_lemon_aqua_125245510_1_e88906aae443170f29648dce64a0f066.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_lemon_aqua_125245510_1_e88906aae443170f29648dce64a0f066.png" alt="Ambientalize - Essência - Lemon Aqua"> 5166 </a> 5167 5168 </div> 5169 5170 5171 5172 5173 5174 </div> 5175 5176 </div> 5177 5178 <div class="product-body"> 5179 5180 <a title="Ambientalize - Essência - Lemon Aqua" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-lemon-aqua"> 5181 5182 <div class="product-info-dados"> 5183 5184 5185 5186 5187 5188 5189 <div class="product-name"> 5190 Ambientalize - Essência - Lemon Aqua 5191 </div> 5192 5193 5194 5195 <div class="product-price"> 5196 5197 5198 5199 5200 5201 5202<div class="price display-cash"> 5203 5204 5205 <span class="current-price "> 5206 R$ 15,00 5207 5208 </span> 5209 5210 <span class="product-installments"> 5211 5212 </span> 5213 5214</div> 5215 </div> 5216 5217 </div> 5218 5219 </a> 5220 5221 </div> 5222 5223 5224 <div class="product-footer"> 5225 5226 5227 <div class="w-100"> 5228 5229 5230 5231<div class="product-rating-catalog"> 5232 5233 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5234 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5235 </svg> 5236 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5237 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5238 </svg> 5239 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5240 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5241 </svg> 5242 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5243 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5244 </svg> 5245 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5246 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5247 </svg> 5248 5249 5250 <a title="Ver avaliações de Ambientalize - Essência - Lemon Aqua" href="https://www.farmacam.com.br/ambientalize-essencia-lemon-aqua#comments" class="total"> 5251 Seja o primeiro 5252 </a> 5253 5254 </div> 5255 5256 <div class="compare-buttons"> 5257 5258 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
5258510" class="flex justify-center align-center compare-hidden" data-compare="remove"> 5259 <span class="filter-checkbox checked"></span> 5260 Remover Comparação 5261 </a> 5262 5263 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245510" class="flex justify-center align-center " data-compare="add"> 5264 <span class="filter-checkbox"></span> 5265 Comparar Produto 5266 </a> 5267 5268 </div> 5269 5270 5271 <div class="config-variacoes-compra"> 5272 5273 5274 5275 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245510"> 5276 <input type="hidden" name="product_id" value="125245510"> 5277 <input type="hidden" name="without_stock_sale" value=""> 5278 5279 <input type="hidden" name="estoque" value="9999"> 5280 5281 5282 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 5283 <div class="alerta-estoque"></div> 5284 <div class="alerta-adicionado"></div> 5285 5286 <div class="acao-compra"> 5287 5288 <div class="quantidade-box"> 5289 <div class="quantidade-box-input"> 5290 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9999" /> 5291 </div> 5292 <div class="quantidade-box-controles"> 5293 <div class="quantidade-box-controles-itens" data-item="mais"> 5294 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 5295 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 5296 </svg> 5297 </div> 5298 <div class="quantidade-box-controles-itens" data-item="menus"> 5299 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 5300 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 5301 </svg> 5302 </div> 5303 </div> 5304 </div> 5305 5306 5307 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245510"> 5308 5309 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 5310 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 5311 5312 5313 5314 5315 5316 5317 <!-- Cesta de Compras --> 5318 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 5319 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 5320 </svg> 5321 5322 5323 5324 Comprar 5325 5326 5327 </button> 5328 <!-- </form> --> 5329 5330 </div> 5331 5332</div> 5333 5334 5335 </div> 5336 5337 </div> 5338 5339 5340</div> 5341
5342<script> 5343(function (window, document) { 5344 'use strict'; 5345 5346 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 5347 5348 if (window[GLOBAL_KEY]) { 5349 return; 5350 } 5351 5352 if (!window.Map || !window.WeakMap || !window.Promise) { 5353 return; 5354 } 5355 5356 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 5357 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 5358 '#vitrine-personalizada .product[data-id]'; 5359 var BADGE_CLASS = 'farmacam-prescription-badge'; 5360 var HOST_CLASS = 'farmacam-prescription-badge-host'; 5361 var MAX_CONCURRENT_REQUESTS = 6; 5362 var REQUEST_TIMEOUT_MS = 12000; 5363 5364 var rules = { 5365 '294': { 5366 level: '294', 5367 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 5368 }, 5369 '296': { 5370 level: '296', 5371 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 5372 }, 5373 '298': { 5374 level: '298', 5375 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 5376 } 5377 }; 5378 5379 var cache = new Map(); 5380 var pending = new Map(); 5381 var cardStates = new WeakMap(); 5382 var queue = []; 5383 var activeRequests = 0; 5384 var trayAjaxHooked = false; 5385 5386 function injectStyles() { 5387 if (document.getElementById('farmacam-prescription-cards-style')) { 5388 return; 5389 } 5390 5391 var style = document.createElement('style'); 5392 style.id = 'farmacam-prescription-cards-style'; 5393 style.textContent = [ 5394 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 5395 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 5396 'position:absolute!important;', 5397 'top:52px!important;', 5398 'left:10px!important;', 5399 'z-index:999!important;', 5400 'display:block!important;', 5401 'max-width:calc(100% - 20px)!important;', 5402 'box-sizing:border-box!important;', 5403 'padding:8px 12px!important;', 5404 'color:#fff!important;', 5405 'font-family:inherit!important;', 5406 'font-size:13px!important;', 5407 'font-weight:900!important;', 5408 'line-height:1.15!important;', 5409 'text-align:center!important;', 5410 'text-transform:uppercase!important;', 5411 'letter-spacing:.3px!important;', 5412 'white-space:normal!important;', 5413 'overflow-wrap:break-word!important;', 5414 'border-radius:3px!important;', 5415 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 5416 'pointer-events:none!important;', 5417 '}', 5418 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 5419 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 5420 'background:#d70008!important;', 5421 '}', 5422 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 5423 'background:#000!important;', 5424 '}', 5425 '@media (max-width:767px){', 5426 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 5427 'top:42px!important;', 5428 'left:6px!important;', 5429 'max-width:calc(100% - 12px)!important;', 5430 'padding:6px 8px!important;', 5431 'font-size:10px!important;', 5432 '}', 5433 '}' 5434 ].join(''); 5435 5436 (document.head || document.documentElement).appendChild(style); 5437 } 5438 5439 function normalizeProductId(value) { 5440 var id = String(value == null ? '' : value).trim(); 5441 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 5442 } 5443 5444 function classifyRelatedCategories(relatedCategories) { 5445 var found = { 5446 '292': false, 5447 '294': false, 5448 '296': false, 5449 '298': false 5450 }; 5451 5452 function inspect(value, depth) { 5453 var index; 5454 var normalized; 5455 5456 if (value == null || depth > 8) { 5457 return; 5458 } 5459 5460 if (Array.isArray(value)) { 5461 for (index = 0; index < value.length; index += 1) { 5462 inspect(value[index], depth + 1); 5463 } 5464 return; 5465 } 5466 5467 if (typeof value === 'object') { 5468 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 5469 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 5470 inspect(value.id, depth + 1); 5471 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 5472 inspect(value.category_id, depth + 1); 5473 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 5474 inspect(value.Category, depth + 1); 5475 } 5476 return; 5477 } 5478 5479 if (typeof value !== 'string' && typeof value !== 'number') { 5480 return; 5481 } 5482 normalized = normalizeProductId(value); 5483 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 5484 found[normalized] = true; 5485 } 5486 } 5487 5488 inspect(relatedCategories, 0); 5489 5490 if (found['298']) { 5491 return rules['298']; 5492 } 5493 if (found['296']) { 5494 return rules['296']; 5495 } 5496 if (found['294']) { 5497 return rules['294']; 5498 } 5499 5500 // 292 e qualquer classificacao desconhecida ficam sem tarja. 5501 return null; 5502 } 5503 5504 function ruleFromPayload(payload, productId) { 5505 var product = payload && payload.Product; 5506 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 5507 return null; 5508 } 5509 return classifyRelatedCategories(product && product.related_categories); 5510 } 5511 5512 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 5513 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 5514 function attachTrayAjaxCache() { 5515 var jq = window.jQuery; 5516 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 5517 return; 5518 } 5519
5520 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 5521 var url; 5522 var match; 5523 var productId; 5524 var payload; 5525 try { 5526 url = new URL(settings.url, window.location.href); 5527 if (url.origin !== window.location.origin) { 5528 return; 5529 } 5530 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 5531 if (!match) { 5532 return; 5533 } 5534 productId = normalizeProductId(match[1]); 5535 if (!cache.has(productId) && !pending.has(productId)) { 5536 payload = data || xhr.responseJSON; 5537 if (typeof payload === 'string') { 5538 payload = JSON.parse(payload); 5539 } 5540 if (!payload || !payload.Product || 5541 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 5542 return; 5543 } 5544 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 5545 return; 5546 } 5547 cache.set(productId, ruleFromPayload(payload, productId)); 5548 } 5549 } catch (error) { 5550 // Respostas de outras integracoes nao interferem nas tarjas. 5551 } 5552 }); 5553 5554 trayAjaxHooked = true; 5555 document.removeEventListener('load', onTrayScriptLoad, true); 5556 } 5557 5558 function onTrayScriptLoad(event) { 5559 if (event.target && event.target.tagName === 'SCRIPT') { 5560 attachTrayAjaxCache(); 5561 } 5562 } 5563 5564 function requestRule(productId) { 5565 var controller = null; 5566 var timeoutId = null; 5567 var options = { 5568 credentials: 'same-origin', 5569 headers: { 5570 'Accept': 'application/json' 5571 } 5572 }; 5573 var request; 5574 5575 if (typeof window.fetch !== 'function') { 5576 return Promise.resolve(null); 5577 } 5578 5579 if (typeof window.AbortController === 'function') { 5580 controller = new window.AbortController(); 5581 options.signal = controller.signal; 5582 timeoutId = window.setTimeout(function () { 5583 controller.abort(); 5584 }, REQUEST_TIMEOUT_MS); 5585 } 5586 5587 try { 5588 request = window.fetch( 5589 '/web_api/products/' + encodeURIComponent(productId), 5590 options 5591 ); 5592 } catch (error) { 5593 if (timeoutId !== null) { 5594 window.clearTimeout(timeoutId); 5595 } 5596 return Promise.resolve(null); 5597 } 5598 5599 return request.then(function (response) { 5600 if (!response.ok) { 5601 throw new Error('HTTP ' + response.status); 5602 } 5603 return response.json(); 5604 }).then(function (payload) { 5605 return ruleFromPayload(payload, productId); 5606 }).then(function (rule) { 5607 if (timeoutId !== null) { 5608 window.clearTimeout(timeoutId); 5609 } 5610 return rule; 5611 }, function () { 5612 if (timeoutId !== null) { 5613 window.clearTimeout(timeoutId); 5614 } 5615 5616 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 5617 return null; 5618 }); 5619 } 5620 5621 function finishJob(job, rule) { 5622 cache.set(job.productId, rule); 5623 pending.delete(job.productId); 5624 activeRequests -= 1; 5625 job.resolve(rule); 5626 pumpQueue(); 5627 } 5628 5629 function pumpQueue() { 5630 var job; 5631 5632 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 5633 job = queue.shift(); 5634 activeRequests += 1; 5635 5636 (function (currentJob) { 5637 requestRule(currentJob.productId).then(function (rule) { 5638 finishJob(currentJob, rule); 5639 }, function () { 5640 finishJob(currentJob, null); 5641 }); 5642 }(job)); 5643 } 5644 } 5645 5646 function getRule(productId) { 5647 var resolver; 5648 var promise; 5649 5650 if (cache.has(productId)) { 5651 return Promise.resolve(cache.get(productId)); 5652 } 5653 5654 if (pending.has(productId)) { 5655 return pending.get(productId); 5656 } 5657 5658 promise = new Promise(function (resolve) { 5659 resolver = resolve; 5660 }); 5661 5662 pending.set(productId, promise); 5663 queue.push({ 5664 productId: productId, 5665 resolve: resolver 5666 }); 5667 pumpQueue(); 5668 5669 return promise; 5670 } 5671 5672 function findBadge(card) { 5673 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 5674 } 5675 5676 function clearBadge(card) { 5677 var badge = findBadge(card); 5678 var image = card.querySelector('.product-header > .w-100 > .image'); 5679 5680 if (badge && badge.parentNode) { 5681 badge.parentNode.removeChild(badge); 5682 } 5683 5684 if (image) { 5685 image.classList.remove(HOST_CLASS); 5686 } 5687 5688 card.removeAttribute('data-farmacam-prescription-level'); 5689 } 5690 5691 function applyBadge(card, productId, rule) { 5692 var image; 5693 var badge; 5694 5695 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 5696 return false;
5697 } 5698 5699 clearBadge(card); 5700 5701 if (!rule) { 5702 return true; 5703 } 5704 5705 image = card.querySelector('.product-header > .w-100 > .image'); 5706 if (!image) { 5707 return false; 5708 } 5709 5710 badge = document.createElement('span'); 5711 badge.className = BADGE_CLASS; 5712 badge.setAttribute('data-farmacam-generated', 'true'); 5713 badge.setAttribute('data-farmacam-prescription-level', rule.level); 5714 badge.setAttribute('role', 'note'); 5715 badge.textContent = rule.text; 5716 5717 image.classList.add(HOST_CLASS); 5718 image.insertBefore(badge, image.firstChild); 5719 card.setAttribute('data-farmacam-prescription-level', rule.level); 5720 5721 return true; 5722 } 5723 5724 function processCard(card) { 5725 var productId; 5726 var previousState; 5727 var currentState; 5728 5729 if (!card || card.nodeType !== 1) { 5730 return; 5731 } 5732 5733 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 5734 return; 5735 } 5736 5737 productId = normalizeProductId(card.getAttribute('data-id')); 5738 previousState = cardStates.get(card); 5739 5740 if (!productId) { 5741 clearBadge(card); 5742 cardStates.delete(card); 5743 return; 5744 } 5745 5746 if ( 5747 previousState && 5748 previousState.productId === productId && 5749 previousState.status === 'loading' 5750 ) { 5751 return; 5752 } 5753 5754 if ( 5755 previousState && 5756 previousState.productId === productId && 5757 previousState.status === 'processed' 5758 ) { 5759 if (!previousState.rule || findBadge(card)) { 5760 return; 5761 } 5762 } 5763 5764 if (!previousState || previousState.productId !== productId) { 5765 clearBadge(card); 5766 } 5767 5768 currentState = { 5769 productId: productId, 5770 status: 'loading', 5771 rule: null 5772 }; 5773 cardStates.set(card, currentState); 5774 5775 getRule(productId).then(function (rule) { 5776 var applied; 5777 5778 if ( 5779 cardStates.get(card) !== currentState || 5780 normalizeProductId(card.getAttribute('data-id')) !== productId 5781 ) { 5782 return; 5783 } 5784 5785 applied = applyBadge(card, productId, rule); 5786 currentState.rule = rule; 5787 currentState.status = applied ? 'processed' : 'waiting-image'; 5788 }); 5789 } 5790 5791 function scan(root) { 5792 var cards; 5793 var index; 5794 5795 if (!root) { 5796 return; 5797 } 5798 5799 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 5800 processCard(root); 5801 } 5802 5803 if (!root.querySelectorAll) { 5804 return; 5805 } 5806 5807 cards = root.querySelectorAll(CARD_SELECTOR); 5808 for (index = 0; index < cards.length; index += 1) { 5809 processCard(cards[index]); 5810 } 5811 } 5812 5813 function startObserver() { 5814 var observer; 5815 5816 if (!window.MutationObserver || !document.documentElement) { 5817 return; 5818 } 5819 5820 observer = new MutationObserver(function (mutations) { 5821 var mutationIndex; 5822 var nodeIndex; 5823 var mutation; 5824 var node; 5825 var ownerCard; 5826 5827 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 5828 mutation = mutations[mutationIndex]; 5829 5830 if (mutation.type === 'attributes') { 5831 processCard(mutation.target); 5832 continue; 5833 } 5834 5835 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 5836 node = mutation.addedNodes[nodeIndex]; 5837 if (node.nodeType !== 1) { 5838 continue; 5839 } 5840 5841 scan(node); 5842 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 5843 if (ownerCard) { 5844 processCard(ownerCard); 5845 } 5846 } 5847 } 5848 }); 5849 5850 observer.observe(document.documentElement, { 5851 childList: true, 5852 subtree: true, 5853 attributes: true, 5854 attributeFilter: ['data-id'] 5855 }); 5856 5857 window[GLOBAL_KEY].observer = observer; 5858 } 5859 5860 window[GLOBAL_KEY] = { 5861 version: '1.1.0', 5862 cache: cache, 5863 pending: pending, 5864 cardStates: cardStates, 5865 scan: scan, 5866 processCard: processCard, 5867 observer: null 5868 }; 5869 5870 document.addEventListener('load', onTrayScriptLoad, true); 5871 attachTrayAjaxCache(); 5872 injectStyles(); 5873 scan(document); 5874 startObserver(); 5875 5876 if (document.readyState === 'loading') { 5877 document.addEventListener('DOMContentLoaded', function () { 5878 attachTrayAjaxCache(); 5879 scan(document); 5880 }); 5881 } 5882}(window, document)); 5883</script>
5883 5884 </li> 5885 <li class="item flex"> 5886 5887 5888 5889 5890<div class="product animate open_cart" 5891 data-id="125245508" 5892 data-farmacam-related-categories=",Array,Array," 5893 data-ga4-id="125245508" 5894 data-ga4-name="Ambientalize - Essência - Thérapi" 5895 data-ga4-price="15.00" 5896 data-ga4-brand="Floral Thérapi" 5897 data-ga4-category="Tipo de Produto;Industrializados;" 5898 > 5899 5900 <div class="product-header"> 5901 5902 <div class="w-100"> 5903 5904 5905 5906 5907 5908 5909 5910 <div class="product-tags-circle"> 5911 5912 5913 <div class="tag-circle discount tag-icone tag-icone1"> 5914 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 5915 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 5916 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 5917 </svg> 5918 <span>Lançamento</span> 5919 </div> 5920 5921 <div class="tag-circle discount tag-icone tag-icone2"> 5922 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 5923 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 5924 </svg> 5925 <span>Destaque</span> 5926 </div> 5927 5928 </div> 5929 5930 5931 5932 <div class="product-tags " data-tags-count="2"> 5933 5934 5935 5936 5937 5938 </div> 5939 5940 5941 5942 <div class="image "> 5943 5944 <a title="Ambientalize - Essência - Thérapi" href="https://www.farmacam.com.br/ambientalize-essencia-therapi" class="space-image"> 5945 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_therapi_125245508_1_f602804ada81fd1254cd922657039913.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_therapi_125245508_1_f602804ada81fd1254cd922657039913.png" alt="Ambientalize - Essência - Thérapi"> 5946 </a> 5947 5948 </div> 5949 5950 5951 5952 5953 5954 </div> 5955 5956 </div> 5957 5958 <div class="product-body"> 5959 5960 <a title="Ambientalize - Essência - Thérapi" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-therapi"> 5961 5962 <div class="product-info-dados"> 5963 5964 5965 5966 5967 5968 5969 <div class="product-name"> 5970 Ambientalize - Essência - Thérapi 5971 </div> 5972 5973 5974 5975 <div class="product-price"> 5976 5977 5978 5979 5980 5981 5982<div class="price display-cash"> 5983 5984 5985 <span class="current-price "> 5986 R$ 15,00 5987 5988 </span> 5989 5990 <span class="product-installments"> 5991 5992 </span> 5993 5994</div> 5995 </div> 5996 5997 </div> 5998 5999 </a> 6000 6001 </div> 6002 6003 6004 <div class="product-footer"> 6005 6006 6007 <div class="w-100"> 6008 6009 6010 6011<div class="product-rating-catalog"> 6012 6013 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6014 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6015 </svg> 6016 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6017 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6018 </svg> 6019 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6020 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6021 </svg> 6022 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6023 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6024 </svg> 6025 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6026 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6027 </svg> 6028 6029 6030 <a title="Ver avaliações de Ambientalize - Essência - Thérapi" href="https://www.farmacam.com.br/ambientalize-essencia-therapi#comments" class="total"> 6031 Seja o primeiro 6032 </a> 6033 6034 </div> 6035 6036 <div class="compare-buttons"> 6037 6038 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
6038508" class="flex justify-center align-center compare-hidden" data-compare="remove"> 6039 <span class="filter-checkbox checked"></span> 6040 Remover Comparação 6041 </a> 6042 6043 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245508" class="flex justify-center align-center " data-compare="add"> 6044 <span class="filter-checkbox"></span> 6045 Comparar Produto 6046 </a> 6047 6048 </div> 6049 6050 6051 <div class="config-variacoes-compra"> 6052 6053 6054 6055 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245508"> 6056 <input type="hidden" name="product_id" value="125245508"> 6057 <input type="hidden" name="without_stock_sale" value=""> 6058 6059 <input type="hidden" name="estoque" value="10000"> 6060 6061 6062 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 6063 <div class="alerta-estoque"></div> 6064 <div class="alerta-adicionado"></div> 6065 6066 <div class="acao-compra"> 6067 6068 <div class="quantidade-box"> 6069 <div class="quantidade-box-input"> 6070 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="10000" /> 6071 </div> 6072 <div class="quantidade-box-controles"> 6073 <div class="quantidade-box-controles-itens" data-item="mais"> 6074 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 6075 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 6076 </svg> 6077 </div> 6078 <div class="quantidade-box-controles-itens" data-item="menus"> 6079 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 6080 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 6081 </svg> 6082 </div> 6083 </div> 6084 </div> 6085 6086 6087 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245508"> 6088 6089 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 6090 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 6091 6092 6093 6094 6095 6096 6097 <!-- Cesta de Compras --> 6098 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 6099 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 6100 </svg> 6101 6102 6103 6104 Comprar 6105 6106 6107 </button> 6108 <!-- </form> --> 6109 6110 </div> 6111 6112</div> 6113 6114 6115 </div> 6116 6117 </div> 6118 6119 6120</div> 6121
6122<script> 6123(function (window, document) { 6124 'use strict'; 6125 6126 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 6127 6128 if (window[GLOBAL_KEY]) { 6129 return; 6130 } 6131 6132 if (!window.Map || !window.WeakMap || !window.Promise) { 6133 return; 6134 } 6135 6136 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 6137 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 6138 '#vitrine-personalizada .product[data-id]'; 6139 var BADGE_CLASS = 'farmacam-prescription-badge'; 6140 var HOST_CLASS = 'farmacam-prescription-badge-host'; 6141 var MAX_CONCURRENT_REQUESTS = 6; 6142 var REQUEST_TIMEOUT_MS = 12000; 6143 6144 var rules = { 6145 '294': { 6146 level: '294', 6147 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 6148 }, 6149 '296': { 6150 level: '296', 6151 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 6152 }, 6153 '298': { 6154 level: '298', 6155 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 6156 } 6157 }; 6158 6159 var cache = new Map(); 6160 var pending = new Map(); 6161 var cardStates = new WeakMap(); 6162 var queue = []; 6163 var activeRequests = 0; 6164 var trayAjaxHooked = false; 6165 6166 function injectStyles() { 6167 if (document.getElementById('farmacam-prescription-cards-style')) { 6168 return; 6169 } 6170 6171 var style = document.createElement('style'); 6172 style.id = 'farmacam-prescription-cards-style'; 6173 style.textContent = [ 6174 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 6175 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 6176 'position:absolute!important;', 6177 'top:52px!important;', 6178 'left:10px!important;', 6179 'z-index:999!important;', 6180 'display:block!important;', 6181 'max-width:calc(100% - 20px)!important;', 6182 'box-sizing:border-box!important;', 6183 'padding:8px 12px!important;', 6184 'color:#fff!important;', 6185 'font-family:inherit!important;', 6186 'font-size:13px!important;', 6187 'font-weight:900!important;', 6188 'line-height:1.15!important;', 6189 'text-align:center!important;', 6190 'text-transform:uppercase!important;', 6191 'letter-spacing:.3px!important;', 6192 'white-space:normal!important;', 6193 'overflow-wrap:break-word!important;', 6194 'border-radius:3px!important;', 6195 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 6196 'pointer-events:none!important;', 6197 '}', 6198 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 6199 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 6200 'background:#d70008!important;', 6201 '}', 6202 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 6203 'background:#000!important;', 6204 '}', 6205 '@media (max-width:767px){', 6206 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 6207 'top:42px!important;', 6208 'left:6px!important;', 6209 'max-width:calc(100% - 12px)!important;', 6210 'padding:6px 8px!important;', 6211 'font-size:10px!important;', 6212 '}', 6213 '}' 6214 ].join(''); 6215 6216 (document.head || document.documentElement).appendChild(style); 6217 } 6218 6219 function normalizeProductId(value) { 6220 var id = String(value == null ? '' : value).trim(); 6221 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 6222 } 6223 6224 function classifyRelatedCategories(relatedCategories) { 6225 var found = { 6226 '292': false, 6227 '294': false, 6228 '296': false, 6229 '298': false 6230 }; 6231 6232 function inspect(value, depth) { 6233 var index; 6234 var normalized; 6235 6236 if (value == null || depth > 8) { 6237 return; 6238 } 6239 6240 if (Array.isArray(value)) { 6241 for (index = 0; index < value.length; index += 1) { 6242 inspect(value[index], depth + 1); 6243 } 6244 return; 6245 } 6246 6247 if (typeof value === 'object') { 6248 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 6249 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 6250 inspect(value.id, depth + 1); 6251 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 6252 inspect(value.category_id, depth + 1); 6253 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 6254 inspect(value.Category, depth + 1); 6255 } 6256 return; 6257 } 6258 6259 if (typeof value !== 'string' && typeof value !== 'number') { 6260 return; 6261 } 6262 normalized = normalizeProductId(value); 6263 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 6264 found[normalized] = true; 6265 } 6266 } 6267 6268 inspect(relatedCategories, 0); 6269 6270 if (found['298']) { 6271 return rules['298']; 6272 } 6273 if (found['296']) { 6274 return rules['296']; 6275 } 6276 if (found['294']) { 6277 return rules['294']; 6278 } 6279 6280 // 292 e qualquer classificacao desconhecida ficam sem tarja. 6281 return null; 6282 } 6283 6284 function ruleFromPayload(payload, productId) { 6285 var product = payload && payload.Product; 6286 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 6287 return null; 6288 } 6289 return classifyRelatedCategories(product && product.related_categories); 6290 } 6291 6292 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 6293 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 6294 function attachTrayAjaxCache() { 6295 var jq = window.jQuery; 6296 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 6297 return; 6298 } 6299
6300 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 6301 var url; 6302 var match; 6303 var productId; 6304 var payload; 6305 try { 6306 url = new URL(settings.url, window.location.href); 6307 if (url.origin !== window.location.origin) { 6308 return; 6309 } 6310 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 6311 if (!match) { 6312 return; 6313 } 6314 productId = normalizeProductId(match[1]); 6315 if (!cache.has(productId) && !pending.has(productId)) { 6316 payload = data || xhr.responseJSON; 6317 if (typeof payload === 'string') { 6318 payload = JSON.parse(payload); 6319 } 6320 if (!payload || !payload.Product || 6321 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 6322 return; 6323 } 6324 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 6325 return; 6326 } 6327 cache.set(productId, ruleFromPayload(payload, productId)); 6328 } 6329 } catch (error) { 6330 // Respostas de outras integracoes nao interferem nas tarjas. 6331 } 6332 }); 6333 6334 trayAjaxHooked = true; 6335 document.removeEventListener('load', onTrayScriptLoad, true); 6336 } 6337 6338 function onTrayScriptLoad(event) { 6339 if (event.target && event.target.tagName === 'SCRIPT') { 6340 attachTrayAjaxCache(); 6341 } 6342 } 6343 6344 function requestRule(productId) { 6345 var controller = null; 6346 var timeoutId = null; 6347 var options = { 6348 credentials: 'same-origin', 6349 headers: { 6350 'Accept': 'application/json' 6351 } 6352 }; 6353 var request; 6354 6355 if (typeof window.fetch !== 'function') { 6356 return Promise.resolve(null); 6357 } 6358 6359 if (typeof window.AbortController === 'function') { 6360 controller = new window.AbortController(); 6361 options.signal = controller.signal; 6362 timeoutId = window.setTimeout(function () { 6363 controller.abort(); 6364 }, REQUEST_TIMEOUT_MS); 6365 } 6366 6367 try { 6368 request = window.fetch( 6369 '/web_api/products/' + encodeURIComponent(productId), 6370 options 6371 ); 6372 } catch (error) { 6373 if (timeoutId !== null) { 6374 window.clearTimeout(timeoutId); 6375 } 6376 return Promise.resolve(null); 6377 } 6378 6379 return request.then(function (response) { 6380 if (!response.ok) { 6381 throw new Error('HTTP ' + response.status); 6382 } 6383 return response.json(); 6384 }).then(function (payload) { 6385 return ruleFromPayload(payload, productId); 6386 }).then(function (rule) { 6387 if (timeoutId !== null) { 6388 window.clearTimeout(timeoutId); 6389 } 6390 return rule; 6391 }, function () { 6392 if (timeoutId !== null) { 6393 window.clearTimeout(timeoutId); 6394 } 6395 6396 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 6397 return null; 6398 }); 6399 } 6400 6401 function finishJob(job, rule) { 6402 cache.set(job.productId, rule); 6403 pending.delete(job.productId); 6404 activeRequests -= 1; 6405 job.resolve(rule); 6406 pumpQueue(); 6407 } 6408 6409 function pumpQueue() { 6410 var job; 6411 6412 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 6413 job = queue.shift(); 6414 activeRequests += 1; 6415 6416 (function (currentJob) { 6417 requestRule(currentJob.productId).then(function (rule) { 6418 finishJob(currentJob, rule); 6419 }, function () { 6420 finishJob(currentJob, null); 6421 }); 6422 }(job)); 6423 } 6424 } 6425 6426 function getRule(productId) { 6427 var resolver; 6428 var promise; 6429 6430 if (cache.has(productId)) { 6431 return Promise.resolve(cache.get(productId)); 6432 } 6433 6434 if (pending.has(productId)) { 6435 return pending.get(productId); 6436 } 6437 6438 promise = new Promise(function (resolve) { 6439 resolver = resolve; 6440 }); 6441 6442 pending.set(productId, promise); 6443 queue.push({ 6444 productId: productId, 6445 resolve: resolver 6446 }); 6447 pumpQueue(); 6448 6449 return promise; 6450 } 6451 6452 function findBadge(card) { 6453 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 6454 } 6455 6456 function clearBadge(card) { 6457 var badge = findBadge(card); 6458 var image = card.querySelector('.product-header > .w-100 > .image'); 6459 6460 if (badge && badge.parentNode) { 6461 badge.parentNode.removeChild(badge); 6462 } 6463 6464 if (image) { 6465 image.classList.remove(HOST_CLASS); 6466 } 6467 6468 card.removeAttribute('data-farmacam-prescription-level'); 6469 } 6470 6471 function applyBadge(card, productId, rule) { 6472 var image; 6473 var badge; 6474 6475 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 6476 return false;
6477 } 6478 6479 clearBadge(card); 6480 6481 if (!rule) { 6482 return true; 6483 } 6484 6485 image = card.querySelector('.product-header > .w-100 > .image'); 6486 if (!image) { 6487 return false; 6488 } 6489 6490 badge = document.createElement('span'); 6491 badge.className = BADGE_CLASS; 6492 badge.setAttribute('data-farmacam-generated', 'true'); 6493 badge.setAttribute('data-farmacam-prescription-level', rule.level); 6494 badge.setAttribute('role', 'note'); 6495 badge.textContent = rule.text; 6496 6497 image.classList.add(HOST_CLASS); 6498 image.insertBefore(badge, image.firstChild); 6499 card.setAttribute('data-farmacam-prescription-level', rule.level); 6500 6501 return true; 6502 } 6503 6504 function processCard(card) { 6505 var productId; 6506 var previousState; 6507 var currentState; 6508 6509 if (!card || card.nodeType !== 1) { 6510 return; 6511 } 6512 6513 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 6514 return; 6515 } 6516 6517 productId = normalizeProductId(card.getAttribute('data-id')); 6518 previousState = cardStates.get(card); 6519 6520 if (!productId) { 6521 clearBadge(card); 6522 cardStates.delete(card); 6523 return; 6524 } 6525 6526 if ( 6527 previousState && 6528 previousState.productId === productId && 6529 previousState.status === 'loading' 6530 ) { 6531 return; 6532 } 6533 6534 if ( 6535 previousState && 6536 previousState.productId === productId && 6537 previousState.status === 'processed' 6538 ) { 6539 if (!previousState.rule || findBadge(card)) { 6540 return; 6541 } 6542 } 6543 6544 if (!previousState || previousState.productId !== productId) { 6545 clearBadge(card); 6546 } 6547 6548 currentState = { 6549 productId: productId, 6550 status: 'loading', 6551 rule: null 6552 }; 6553 cardStates.set(card, currentState); 6554 6555 getRule(productId).then(function (rule) { 6556 var applied; 6557 6558 if ( 6559 cardStates.get(card) !== currentState || 6560 normalizeProductId(card.getAttribute('data-id')) !== productId 6561 ) { 6562 return; 6563 } 6564 6565 applied = applyBadge(card, productId, rule); 6566 currentState.rule = rule; 6567 currentState.status = applied ? 'processed' : 'waiting-image'; 6568 }); 6569 } 6570 6571 function scan(root) { 6572 var cards; 6573 var index; 6574 6575 if (!root) { 6576 return; 6577 } 6578 6579 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 6580 processCard(root); 6581 } 6582 6583 if (!root.querySelectorAll) { 6584 return; 6585 } 6586 6587 cards = root.querySelectorAll(CARD_SELECTOR); 6588 for (index = 0; index < cards.length; index += 1) { 6589 processCard(cards[index]); 6590 } 6591 } 6592 6593 function startObserver() { 6594 var observer; 6595 6596 if (!window.MutationObserver || !document.documentElement) { 6597 return; 6598 } 6599 6600 observer = new MutationObserver(function (mutations) { 6601 var mutationIndex; 6602 var nodeIndex; 6603 var mutation; 6604 var node; 6605 var ownerCard; 6606 6607 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 6608 mutation = mutations[mutationIndex]; 6609 6610 if (mutation.type === 'attributes') { 6611 processCard(mutation.target); 6612 continue; 6613 } 6614 6615 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 6616 node = mutation.addedNodes[nodeIndex]; 6617 if (node.nodeType !== 1) { 6618 continue; 6619 } 6620 6621 scan(node); 6622 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 6623 if (ownerCard) { 6624 processCard(ownerCard); 6625 } 6626 } 6627 } 6628 }); 6629 6630 observer.observe(document.documentElement, { 6631 childList: true, 6632 subtree: true, 6633 attributes: true, 6634 attributeFilter: ['data-id'] 6635 }); 6636 6637 window[GLOBAL_KEY].observer = observer; 6638 } 6639 6640 window[GLOBAL_KEY] = { 6641 version: '1.1.0', 6642 cache: cache, 6643 pending: pending, 6644 cardStates: cardStates, 6645 scan: scan, 6646 processCard: processCard, 6647 observer: null 6648 }; 6649 6650 document.addEventListener('load', onTrayScriptLoad, true); 6651 attachTrayAjaxCache(); 6652 injectStyles(); 6653 scan(document); 6654 startObserver(); 6655 6656 if (document.readyState === 'loading') { 6657 document.addEventListener('DOMContentLoaded', function () { 6658 attachTrayAjaxCache(); 6659 scan(document); 6660 }); 6661 } 6662}(window, document)); 6663</script>
6663 6664 </li> 6665 <li class="item flex"> 6666 6667 6668 6669 6670<div class="product animate open_cart" 6671 data-id="125245506" 6672 data-farmacam-related-categories=",Array,Array," 6673 data-ga4-id="125245506" 6674 data-ga4-name="Ambientalize - Essência - Chá Branco" 6675 data-ga4-price="15.00" 6676 data-ga4-brand="Floral Thérapi" 6677 data-ga4-category="Tipo de Produto;Industrializados;" 6678 > 6679 6680 <div class="product-header"> 6681 6682 <div class="w-100"> 6683 6684 6685 6686 6687 6688 6689 6690 <div class="product-tags-circle"> 6691 6692 6693 <div class="tag-circle discount tag-icone tag-icone1"> 6694 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 6695 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 6696 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 6697 </svg> 6698 <span>Lançamento</span> 6699 </div> 6700 6701 <div class="tag-circle discount tag-icone tag-icone2"> 6702 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6703 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6704 </svg> 6705 <span>Destaque</span> 6706 </div> 6707 6708 </div> 6709 6710 6711 6712 <div class="product-tags " data-tags-count="2"> 6713 6714 6715 6716 6717 6718 </div> 6719 6720 6721 6722 <div class="image "> 6723 6724 <a title="Ambientalize - Essência - Chá Branco" href="https://www.farmacam.com.br/ambientalize-essencia-cha-branco" class="space-image"> 6725 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_cha_branco_125245506_1_444e6209144c0e35eb80e2625e9d727c.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_cha_branco_125245506_1_444e6209144c0e35eb80e2625e9d727c.png" alt="Ambientalize - Essência - Chá Branco"> 6726 </a> 6727 6728 </div> 6729 6730 6731 6732 6733 6734 </div> 6735 6736 </div> 6737 6738 <div class="product-body"> 6739 6740 <a title="Ambientalize - Essência - Chá Branco" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-cha-branco"> 6741 6742 <div class="product-info-dados"> 6743 6744 6745 6746 6747 6748 6749 <div class="product-name"> 6750 Ambientalize - Essência - Chá Branco 6751 </div> 6752 6753 6754 6755 <div class="product-price"> 6756 6757 6758 6759 6760 6761 6762<div class="price display-cash"> 6763 6764 6765 <span class="current-price "> 6766 R$ 15,00 6767 6768 </span> 6769 6770 <span class="product-installments"> 6771 6772 </span> 6773 6774</div> 6775 </div> 6776 6777 </div> 6778 6779 </a> 6780 6781 </div> 6782 6783 6784 <div class="product-footer"> 6785 6786 6787 <div class="w-100"> 6788 6789 6790 6791<div class="product-rating-catalog"> 6792 6793 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6794 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6795 </svg> 6796 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6797 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6798 </svg> 6799 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6800 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6801 </svg> 6802 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6803 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6804 </svg> 6805 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 6806 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 6807 </svg> 6808 6809 6810 <a title="Ver avaliações de Ambientalize - Essência - Chá Branco" href="https://www.farmacam.com.br/ambientalize-essencia-cha-branco#comments" class="total"> 6811 Seja o primeiro 6812 </a> 6813 6814 </div> 6815 6816 <div class="compare-buttons"> 6817 6818 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
6818506" class="flex justify-center align-center compare-hidden" data-compare="remove"> 6819 <span class="filter-checkbox checked"></span> 6820 Remover Comparação 6821 </a> 6822 6823 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245506" class="flex justify-center align-center " data-compare="add"> 6824 <span class="filter-checkbox"></span> 6825 Comparar Produto 6826 </a> 6827 6828 </div> 6829 6830 6831 <div class="config-variacoes-compra"> 6832 6833 6834 6835 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245506"> 6836 <input type="hidden" name="product_id" value="125245506"> 6837 <input type="hidden" name="without_stock_sale" value=""> 6838 6839 <input type="hidden" name="estoque" value="9999"> 6840 6841 6842 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 6843 <div class="alerta-estoque"></div> 6844 <div class="alerta-adicionado"></div> 6845 6846 <div class="acao-compra"> 6847 6848 <div class="quantidade-box"> 6849 <div class="quantidade-box-input"> 6850 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9999" /> 6851 </div> 6852 <div class="quantidade-box-controles"> 6853 <div class="quantidade-box-controles-itens" data-item="mais"> 6854 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 6855 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 6856 </svg> 6857 </div> 6858 <div class="quantidade-box-controles-itens" data-item="menus"> 6859 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 6860 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 6861 </svg> 6862 </div> 6863 </div> 6864 </div> 6865 6866 6867 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245506"> 6868 6869 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 6870 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 6871 6872 6873 6874 6875 6876 6877 <!-- Cesta de Compras --> 6878 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 6879 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 6880 </svg> 6881 6882 6883 6884 Comprar 6885 6886 6887 </button> 6888 <!-- </form> --> 6889 6890 </div> 6891 6892</div> 6893 6894 6895 </div> 6896 6897 </div> 6898 6899 6900</div> 6901
6902<script> 6903(function (window, document) { 6904 'use strict'; 6905 6906 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 6907 6908 if (window[GLOBAL_KEY]) { 6909 return; 6910 } 6911 6912 if (!window.Map || !window.WeakMap || !window.Promise) { 6913 return; 6914 } 6915 6916 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 6917 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 6918 '#vitrine-personalizada .product[data-id]'; 6919 var BADGE_CLASS = 'farmacam-prescription-badge'; 6920 var HOST_CLASS = 'farmacam-prescription-badge-host'; 6921 var MAX_CONCURRENT_REQUESTS = 6; 6922 var REQUEST_TIMEOUT_MS = 12000; 6923 6924 var rules = { 6925 '294': { 6926 level: '294', 6927 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 6928 }, 6929 '296': { 6930 level: '296', 6931 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 6932 }, 6933 '298': { 6934 level: '298', 6935 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 6936 } 6937 }; 6938 6939 var cache = new Map(); 6940 var pending = new Map(); 6941 var cardStates = new WeakMap(); 6942 var queue = []; 6943 var activeRequests = 0; 6944 var trayAjaxHooked = false; 6945 6946 function injectStyles() { 6947 if (document.getElementById('farmacam-prescription-cards-style')) { 6948 return; 6949 } 6950 6951 var style = document.createElement('style'); 6952 style.id = 'farmacam-prescription-cards-style'; 6953 style.textContent = [ 6954 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 6955 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 6956 'position:absolute!important;', 6957 'top:52px!important;', 6958 'left:10px!important;', 6959 'z-index:999!important;', 6960 'display:block!important;', 6961 'max-width:calc(100% - 20px)!important;', 6962 'box-sizing:border-box!important;', 6963 'padding:8px 12px!important;', 6964 'color:#fff!important;', 6965 'font-family:inherit!important;', 6966 'font-size:13px!important;', 6967 'font-weight:900!important;', 6968 'line-height:1.15!important;', 6969 'text-align:center!important;', 6970 'text-transform:uppercase!important;', 6971 'letter-spacing:.3px!important;', 6972 'white-space:normal!important;', 6973 'overflow-wrap:break-word!important;', 6974 'border-radius:3px!important;', 6975 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 6976 'pointer-events:none!important;', 6977 '}', 6978 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 6979 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 6980 'background:#d70008!important;', 6981 '}', 6982 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 6983 'background:#000!important;', 6984 '}', 6985 '@media (max-width:767px){', 6986 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 6987 'top:42px!important;', 6988 'left:6px!important;', 6989 'max-width:calc(100% - 12px)!important;', 6990 'padding:6px 8px!important;', 6991 'font-size:10px!important;', 6992 '}', 6993 '}' 6994 ].join(''); 6995 6996 (document.head || document.documentElement).appendChild(style); 6997 } 6998 6999 function normalizeProductId(value) { 7000 var id = String(value == null ? '' : value).trim(); 7001 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 7002 } 7003 7004 function classifyRelatedCategories(relatedCategories) { 7005 var found = { 7006 '292': false, 7007 '294': false, 7008 '296': false, 7009 '298': false 7010 }; 7011 7012 function inspect(value, depth) { 7013 var index; 7014 var normalized; 7015 7016 if (value == null || depth > 8) { 7017 return; 7018 } 7019 7020 if (Array.isArray(value)) { 7021 for (index = 0; index < value.length; index += 1) { 7022 inspect(value[index], depth + 1); 7023 } 7024 return; 7025 } 7026 7027 if (typeof value === 'object') { 7028 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 7029 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 7030 inspect(value.id, depth + 1); 7031 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 7032 inspect(value.category_id, depth + 1); 7033 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 7034 inspect(value.Category, depth + 1); 7035 } 7036 return; 7037 } 7038 7039 if (typeof value !== 'string' && typeof value !== 'number') { 7040 return; 7041 } 7042 normalized = normalizeProductId(value); 7043 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 7044 found[normalized] = true; 7045 } 7046 } 7047 7048 inspect(relatedCategories, 0); 7049 7050 if (found['298']) { 7051 return rules['298']; 7052 } 7053 if (found['296']) { 7054 return rules['296']; 7055 } 7056 if (found['294']) { 7057 return rules['294']; 7058 } 7059 7060 // 292 e qualquer classificacao desconhecida ficam sem tarja. 7061 return null; 7062 } 7063 7064 function ruleFromPayload(payload, productId) { 7065 var product = payload && payload.Product; 7066 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 7067 return null; 7068 } 7069 return classifyRelatedCategories(product && product.related_categories); 7070 } 7071 7072 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 7073 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 7074 function attachTrayAjaxCache() { 7075 var jq = window.jQuery; 7076 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 7077 return; 7078 } 7079
7080 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 7081 var url; 7082 var match; 7083 var productId; 7084 var payload; 7085 try { 7086 url = new URL(settings.url, window.location.href); 7087 if (url.origin !== window.location.origin) { 7088 return; 7089 } 7090 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 7091 if (!match) { 7092 return; 7093 } 7094 productId = normalizeProductId(match[1]); 7095 if (!cache.has(productId) && !pending.has(productId)) { 7096 payload = data || xhr.responseJSON; 7097 if (typeof payload === 'string') { 7098 payload = JSON.parse(payload); 7099 } 7100 if (!payload || !payload.Product || 7101 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 7102 return; 7103 } 7104 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 7105 return; 7106 } 7107 cache.set(productId, ruleFromPayload(payload, productId)); 7108 } 7109 } catch (error) { 7110 // Respostas de outras integracoes nao interferem nas tarjas. 7111 } 7112 }); 7113 7114 trayAjaxHooked = true; 7115 document.removeEventListener('load', onTrayScriptLoad, true); 7116 } 7117 7118 function onTrayScriptLoad(event) { 7119 if (event.target && event.target.tagName === 'SCRIPT') { 7120 attachTrayAjaxCache(); 7121 } 7122 } 7123 7124 function requestRule(productId) { 7125 var controller = null; 7126 var timeoutId = null; 7127 var options = { 7128 credentials: 'same-origin', 7129 headers: { 7130 'Accept': 'application/json' 7131 } 7132 }; 7133 var request; 7134 7135 if (typeof window.fetch !== 'function') { 7136 return Promise.resolve(null); 7137 } 7138 7139 if (typeof window.AbortController === 'function') { 7140 controller = new window.AbortController(); 7141 options.signal = controller.signal; 7142 timeoutId = window.setTimeout(function () { 7143 controller.abort(); 7144 }, REQUEST_TIMEOUT_MS); 7145 } 7146 7147 try { 7148 request = window.fetch( 7149 '/web_api/products/' + encodeURIComponent(productId), 7150 options 7151 ); 7152 } catch (error) { 7153 if (timeoutId !== null) { 7154 window.clearTimeout(timeoutId); 7155 } 7156 return Promise.resolve(null); 7157 } 7158 7159 return request.then(function (response) { 7160 if (!response.ok) { 7161 throw new Error('HTTP ' + response.status); 7162 } 7163 return response.json(); 7164 }).then(function (payload) { 7165 return ruleFromPayload(payload, productId); 7166 }).then(function (rule) { 7167 if (timeoutId !== null) { 7168 window.clearTimeout(timeoutId); 7169 } 7170 return rule; 7171 }, function () { 7172 if (timeoutId !== null) { 7173 window.clearTimeout(timeoutId); 7174 } 7175 7176 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 7177 return null; 7178 }); 7179 } 7180 7181 function finishJob(job, rule) { 7182 cache.set(job.productId, rule); 7183 pending.delete(job.productId); 7184 activeRequests -= 1; 7185 job.resolve(rule); 7186 pumpQueue(); 7187 } 7188 7189 function pumpQueue() { 7190 var job; 7191 7192 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 7193 job = queue.shift(); 7194 activeRequests += 1; 7195 7196 (function (currentJob) { 7197 requestRule(currentJob.productId).then(function (rule) { 7198 finishJob(currentJob, rule); 7199 }, function () { 7200 finishJob(currentJob, null); 7201 }); 7202 }(job)); 7203 } 7204 } 7205 7206 function getRule(productId) { 7207 var resolver; 7208 var promise; 7209 7210 if (cache.has(productId)) { 7211 return Promise.resolve(cache.get(productId)); 7212 } 7213 7214 if (pending.has(productId)) { 7215 return pending.get(productId); 7216 } 7217 7218 promise = new Promise(function (resolve) { 7219 resolver = resolve; 7220 }); 7221 7222 pending.set(productId, promise); 7223 queue.push({ 7224 productId: productId, 7225 resolve: resolver 7226 }); 7227 pumpQueue(); 7228 7229 return promise; 7230 } 7231 7232 function findBadge(card) { 7233 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 7234 } 7235 7236 function clearBadge(card) { 7237 var badge = findBadge(card); 7238 var image = card.querySelector('.product-header > .w-100 > .image'); 7239 7240 if (badge && badge.parentNode) { 7241 badge.parentNode.removeChild(badge); 7242 } 7243 7244 if (image) { 7245 image.classList.remove(HOST_CLASS); 7246 } 7247 7248 card.removeAttribute('data-farmacam-prescription-level'); 7249 } 7250 7251 function applyBadge(card, productId, rule) { 7252 var image; 7253 var badge; 7254 7255 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 7256 return false;
7257 } 7258 7259 clearBadge(card); 7260 7261 if (!rule) { 7262 return true; 7263 } 7264 7265 image = card.querySelector('.product-header > .w-100 > .image'); 7266 if (!image) { 7267 return false; 7268 } 7269 7270 badge = document.createElement('span'); 7271 badge.className = BADGE_CLASS; 7272 badge.setAttribute('data-farmacam-generated', 'true'); 7273 badge.setAttribute('data-farmacam-prescription-level', rule.level); 7274 badge.setAttribute('role', 'note'); 7275 badge.textContent = rule.text; 7276 7277 image.classList.add(HOST_CLASS); 7278 image.insertBefore(badge, image.firstChild); 7279 card.setAttribute('data-farmacam-prescription-level', rule.level); 7280 7281 return true; 7282 } 7283 7284 function processCard(card) { 7285 var productId; 7286 var previousState; 7287 var currentState; 7288 7289 if (!card || card.nodeType !== 1) { 7290 return; 7291 } 7292 7293 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 7294 return; 7295 } 7296 7297 productId = normalizeProductId(card.getAttribute('data-id')); 7298 previousState = cardStates.get(card); 7299 7300 if (!productId) { 7301 clearBadge(card); 7302 cardStates.delete(card); 7303 return; 7304 } 7305 7306 if ( 7307 previousState && 7308 previousState.productId === productId && 7309 previousState.status === 'loading' 7310 ) { 7311 return; 7312 } 7313 7314 if ( 7315 previousState && 7316 previousState.productId === productId && 7317 previousState.status === 'processed' 7318 ) { 7319 if (!previousState.rule || findBadge(card)) { 7320 return; 7321 } 7322 } 7323 7324 if (!previousState || previousState.productId !== productId) { 7325 clearBadge(card); 7326 } 7327 7328 currentState = { 7329 productId: productId, 7330 status: 'loading', 7331 rule: null 7332 }; 7333 cardStates.set(card, currentState); 7334 7335 getRule(productId).then(function (rule) { 7336 var applied; 7337 7338 if ( 7339 cardStates.get(card) !== currentState || 7340 normalizeProductId(card.getAttribute('data-id')) !== productId 7341 ) { 7342 return; 7343 } 7344 7345 applied = applyBadge(card, productId, rule); 7346 currentState.rule = rule; 7347 currentState.status = applied ? 'processed' : 'waiting-image'; 7348 }); 7349 } 7350 7351 function scan(root) { 7352 var cards; 7353 var index; 7354 7355 if (!root) { 7356 return; 7357 } 7358 7359 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 7360 processCard(root); 7361 } 7362 7363 if (!root.querySelectorAll) { 7364 return; 7365 } 7366 7367 cards = root.querySelectorAll(CARD_SELECTOR); 7368 for (index = 0; index < cards.length; index += 1) { 7369 processCard(cards[index]); 7370 } 7371 } 7372 7373 function startObserver() { 7374 var observer; 7375 7376 if (!window.MutationObserver || !document.documentElement) { 7377 return; 7378 } 7379 7380 observer = new MutationObserver(function (mutations) { 7381 var mutationIndex; 7382 var nodeIndex; 7383 var mutation; 7384 var node; 7385 var ownerCard; 7386 7387 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 7388 mutation = mutations[mutationIndex]; 7389 7390 if (mutation.type === 'attributes') { 7391 processCard(mutation.target); 7392 continue; 7393 } 7394 7395 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 7396 node = mutation.addedNodes[nodeIndex]; 7397 if (node.nodeType !== 1) { 7398 continue; 7399 } 7400 7401 scan(node); 7402 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 7403 if (ownerCard) { 7404 processCard(ownerCard); 7405 } 7406 } 7407 } 7408 }); 7409 7410 observer.observe(document.documentElement, { 7411 childList: true, 7412 subtree: true, 7413 attributes: true, 7414 attributeFilter: ['data-id'] 7415 }); 7416 7417 window[GLOBAL_KEY].observer = observer; 7418 } 7419 7420 window[GLOBAL_KEY] = { 7421 version: '1.1.0', 7422 cache: cache, 7423 pending: pending, 7424 cardStates: cardStates, 7425 scan: scan, 7426 processCard: processCard, 7427 observer: null 7428 }; 7429 7430 document.addEventListener('load', onTrayScriptLoad, true); 7431 attachTrayAjaxCache(); 7432 injectStyles(); 7433 scan(document); 7434 startObserver(); 7435 7436 if (document.readyState === 'loading') { 7437 document.addEventListener('DOMContentLoaded', function () { 7438 attachTrayAjaxCache(); 7439 scan(document); 7440 }); 7441 } 7442}(window, document)); 7443</script>
7443 7444 </li> 7445 <li class="item flex"> 7446 7447 7448 7449 7450<div class="product animate open_cart" 7451 data-id="125245504" 7452 data-farmacam-related-categories=",Array,Array," 7453 data-ga4-id="125245504" 7454 data-ga4-name="Ambientalize - Essência - Bamboo" 7455 data-ga4-price="15.00" 7456 data-ga4-brand="Floral Thérapi" 7457 data-ga4-category="Tipo de Produto;Industrializados;" 7458 > 7459 7460 <div class="product-header"> 7461 7462 <div class="w-100"> 7463 7464 7465 7466 7467 7468 7469 7470 <div class="product-tags-circle"> 7471 7472 7473 <div class="tag-circle discount tag-icone tag-icone1"> 7474 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 7475 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 7476 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 7477 </svg> 7478 <span>Lançamento</span> 7479 </div> 7480 7481 <div class="tag-circle discount tag-icone tag-icone2"> 7482 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7483 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7484 </svg> 7485 <span>Destaque</span> 7486 </div> 7487 7488 </div> 7489 7490 7491 7492 <div class="product-tags " data-tags-count="2"> 7493 7494 7495 7496 7497 7498 </div> 7499 7500 7501 7502 <div class="image "> 7503 7504 <a title="Ambientalize - Essência - Bamboo" href="https://www.farmacam.com.br/ambientalize-essencia-bamboo" class="space-image"> 7505 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_bamboo_125245504_1_883a82381eff1334e260e117251e00fc.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_bamboo_125245504_1_883a82381eff1334e260e117251e00fc.png" alt="Ambientalize - Essência - Bamboo"> 7506 </a> 7507 7508 </div> 7509 7510 7511 7512 7513 7514 </div> 7515 7516 </div> 7517 7518 <div class="product-body"> 7519 7520 <a title="Ambientalize - Essência - Bamboo" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-bamboo"> 7521 7522 <div class="product-info-dados"> 7523 7524 7525 7526 7527 7528 7529 <div class="product-name"> 7530 Ambientalize - Essência - Bamboo 7531 </div> 7532 7533 7534 7535 <div class="product-price"> 7536 7537 7538 7539 7540 7541 7542<div class="price display-cash"> 7543 7544 7545 <span class="current-price "> 7546 R$ 15,00 7547 7548 </span> 7549 7550 <span class="product-installments"> 7551 7552 </span> 7553 7554</div> 7555 </div> 7556 7557 </div> 7558 7559 </a> 7560 7561 </div> 7562 7563 7564 <div class="product-footer"> 7565 7566 7567 <div class="w-100"> 7568 7569 7570 7571<div class="product-rating-catalog"> 7572 7573 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7574 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7575 </svg> 7576 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7577 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7578 </svg> 7579 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7580 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7581 </svg> 7582 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7583 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7584 </svg> 7585 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 7586 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 7587 </svg> 7588 7589 7590 <a title="Ver avaliações de Ambientalize - Essência - Bamboo" href="https://www.farmacam.com.br/ambientalize-essencia-bamboo#comments" class="total"> 7591 Seja o primeiro 7592 </a> 7593 7594 </div> 7595 7596 <div class="compare-buttons"> 7597 7598 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
7598504" class="flex justify-center align-center compare-hidden" data-compare="remove"> 7599 <span class="filter-checkbox checked"></span> 7600 Remover Comparação 7601 </a> 7602 7603 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245504" class="flex justify-center align-center " data-compare="add"> 7604 <span class="filter-checkbox"></span> 7605 Comparar Produto 7606 </a> 7607 7608 </div> 7609 7610 7611 <div class="config-variacoes-compra"> 7612 7613 7614 7615 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245504"> 7616 <input type="hidden" name="product_id" value="125245504"> 7617 <input type="hidden" name="without_stock_sale" value=""> 7618 7619 <input type="hidden" name="estoque" value="9998"> 7620 7621 7622 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 7623 <div class="alerta-estoque"></div> 7624 <div class="alerta-adicionado"></div> 7625 7626 <div class="acao-compra"> 7627 7628 <div class="quantidade-box"> 7629 <div class="quantidade-box-input"> 7630 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9998" /> 7631 </div> 7632 <div class="quantidade-box-controles"> 7633 <div class="quantidade-box-controles-itens" data-item="mais"> 7634 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 7635 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 7636 </svg> 7637 </div> 7638 <div class="quantidade-box-controles-itens" data-item="menus"> 7639 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 7640 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 7641 </svg> 7642 </div> 7643 </div> 7644 </div> 7645 7646 7647 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245504"> 7648 7649 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 7650 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 7651 7652 7653 7654 7655 7656 7657 <!-- Cesta de Compras --> 7658 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 7659 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 7660 </svg> 7661 7662 7663 7664 Comprar 7665 7666 7667 </button> 7668 <!-- </form> --> 7669 7670 </div> 7671 7672</div> 7673 7674 7675 </div> 7676 7677 </div> 7678 7679 7680</div> 7681
7682<script> 7683(function (window, document) { 7684 'use strict'; 7685 7686 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 7687 7688 if (window[GLOBAL_KEY]) { 7689 return; 7690 } 7691 7692 if (!window.Map || !window.WeakMap || !window.Promise) { 7693 return; 7694 } 7695 7696 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 7697 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 7698 '#vitrine-personalizada .product[data-id]'; 7699 var BADGE_CLASS = 'farmacam-prescription-badge'; 7700 var HOST_CLASS = 'farmacam-prescription-badge-host'; 7701 var MAX_CONCURRENT_REQUESTS = 6; 7702 var REQUEST_TIMEOUT_MS = 12000; 7703 7704 var rules = { 7705 '294': { 7706 level: '294', 7707 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 7708 }, 7709 '296': { 7710 level: '296', 7711 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 7712 }, 7713 '298': { 7714 level: '298', 7715 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 7716 } 7717 }; 7718 7719 var cache = new Map(); 7720 var pending = new Map(); 7721 var cardStates = new WeakMap(); 7722 var queue = []; 7723 var activeRequests = 0; 7724 var trayAjaxHooked = false; 7725 7726 function injectStyles() { 7727 if (document.getElementById('farmacam-prescription-cards-style')) { 7728 return; 7729 } 7730 7731 var style = document.createElement('style'); 7732 style.id = 'farmacam-prescription-cards-style'; 7733 style.textContent = [ 7734 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 7735 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 7736 'position:absolute!important;', 7737 'top:52px!important;', 7738 'left:10px!important;', 7739 'z-index:999!important;', 7740 'display:block!important;', 7741 'max-width:calc(100% - 20px)!important;', 7742 'box-sizing:border-box!important;', 7743 'padding:8px 12px!important;', 7744 'color:#fff!important;', 7745 'font-family:inherit!important;', 7746 'font-size:13px!important;', 7747 'font-weight:900!important;', 7748 'line-height:1.15!important;', 7749 'text-align:center!important;', 7750 'text-transform:uppercase!important;', 7751 'letter-spacing:.3px!important;', 7752 'white-space:normal!important;', 7753 'overflow-wrap:break-word!important;', 7754 'border-radius:3px!important;', 7755 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 7756 'pointer-events:none!important;', 7757 '}', 7758 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 7759 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 7760 'background:#d70008!important;', 7761 '}', 7762 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 7763 'background:#000!important;', 7764 '}', 7765 '@media (max-width:767px){', 7766 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 7767 'top:42px!important;', 7768 'left:6px!important;', 7769 'max-width:calc(100% - 12px)!important;', 7770 'padding:6px 8px!important;', 7771 'font-size:10px!important;', 7772 '}', 7773 '}' 7774 ].join(''); 7775 7776 (document.head || document.documentElement).appendChild(style); 7777 } 7778 7779 function normalizeProductId(value) { 7780 var id = String(value == null ? '' : value).trim(); 7781 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 7782 } 7783 7784 function classifyRelatedCategories(relatedCategories) { 7785 var found = { 7786 '292': false, 7787 '294': false, 7788 '296': false, 7789 '298': false 7790 }; 7791 7792 function inspect(value, depth) { 7793 var index; 7794 var normalized; 7795 7796 if (value == null || depth > 8) { 7797 return; 7798 } 7799 7800 if (Array.isArray(value)) { 7801 for (index = 0; index < value.length; index += 1) { 7802 inspect(value[index], depth + 1); 7803 } 7804 return; 7805 } 7806 7807 if (typeof value === 'object') { 7808 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 7809 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 7810 inspect(value.id, depth + 1); 7811 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 7812 inspect(value.category_id, depth + 1); 7813 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 7814 inspect(value.Category, depth + 1); 7815 } 7816 return; 7817 } 7818 7819 if (typeof value !== 'string' && typeof value !== 'number') { 7820 return; 7821 } 7822 normalized = normalizeProductId(value); 7823 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 7824 found[normalized] = true; 7825 } 7826 } 7827 7828 inspect(relatedCategories, 0); 7829 7830 if (found['298']) { 7831 return rules['298']; 7832 } 7833 if (found['296']) { 7834 return rules['296']; 7835 } 7836 if (found['294']) { 7837 return rules['294']; 7838 } 7839 7840 // 292 e qualquer classificacao desconhecida ficam sem tarja. 7841 return null; 7842 } 7843 7844 function ruleFromPayload(payload, productId) { 7845 var product = payload && payload.Product; 7846 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 7847 return null; 7848 } 7849 return classifyRelatedCategories(product && product.related_categories); 7850 } 7851 7852 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 7853 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 7854 function attachTrayAjaxCache() { 7855 var jq = window.jQuery; 7856 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 7857 return; 7858 } 7859
7860 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 7861 var url; 7862 var match; 7863 var productId; 7864 var payload; 7865 try { 7866 url = new URL(settings.url, window.location.href); 7867 if (url.origin !== window.location.origin) { 7868 return; 7869 } 7870 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 7871 if (!match) { 7872 return; 7873 } 7874 productId = normalizeProductId(match[1]); 7875 if (!cache.has(productId) && !pending.has(productId)) { 7876 payload = data || xhr.responseJSON; 7877 if (typeof payload === 'string') { 7878 payload = JSON.parse(payload); 7879 } 7880 if (!payload || !payload.Product || 7881 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 7882 return; 7883 } 7884 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 7885 return; 7886 } 7887 cache.set(productId, ruleFromPayload(payload, productId)); 7888 } 7889 } catch (error) { 7890 // Respostas de outras integracoes nao interferem nas tarjas. 7891 } 7892 }); 7893 7894 trayAjaxHooked = true; 7895 document.removeEventListener('load', onTrayScriptLoad, true); 7896 } 7897 7898 function onTrayScriptLoad(event) { 7899 if (event.target && event.target.tagName === 'SCRIPT') { 7900 attachTrayAjaxCache(); 7901 } 7902 } 7903 7904 function requestRule(productId) { 7905 var controller = null; 7906 var timeoutId = null; 7907 var options = { 7908 credentials: 'same-origin', 7909 headers: { 7910 'Accept': 'application/json' 7911 } 7912 }; 7913 var request; 7914 7915 if (typeof window.fetch !== 'function') { 7916 return Promise.resolve(null); 7917 } 7918 7919 if (typeof window.AbortController === 'function') { 7920 controller = new window.AbortController(); 7921 options.signal = controller.signal; 7922 timeoutId = window.setTimeout(function () { 7923 controller.abort(); 7924 }, REQUEST_TIMEOUT_MS); 7925 } 7926 7927 try { 7928 request = window.fetch( 7929 '/web_api/products/' + encodeURIComponent(productId), 7930 options 7931 ); 7932 } catch (error) { 7933 if (timeoutId !== null) { 7934 window.clearTimeout(timeoutId); 7935 } 7936 return Promise.resolve(null); 7937 } 7938 7939 return request.then(function (response) { 7940 if (!response.ok) { 7941 throw new Error('HTTP ' + response.status); 7942 } 7943 return response.json(); 7944 }).then(function (payload) { 7945 return ruleFromPayload(payload, productId); 7946 }).then(function (rule) { 7947 if (timeoutId !== null) { 7948 window.clearTimeout(timeoutId); 7949 } 7950 return rule; 7951 }, function () { 7952 if (timeoutId !== null) { 7953 window.clearTimeout(timeoutId); 7954 } 7955 7956 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 7957 return null; 7958 }); 7959 } 7960 7961 function finishJob(job, rule) { 7962 cache.set(job.productId, rule); 7963 pending.delete(job.productId); 7964 activeRequests -= 1; 7965 job.resolve(rule); 7966 pumpQueue(); 7967 } 7968 7969 function pumpQueue() { 7970 var job; 7971 7972 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 7973 job = queue.shift(); 7974 activeRequests += 1; 7975 7976 (function (currentJob) { 7977 requestRule(currentJob.productId).then(function (rule) { 7978 finishJob(currentJob, rule); 7979 }, function () { 7980 finishJob(currentJob, null); 7981 }); 7982 }(job)); 7983 } 7984 } 7985 7986 function getRule(productId) { 7987 var resolver; 7988 var promise; 7989 7990 if (cache.has(productId)) { 7991 return Promise.resolve(cache.get(productId)); 7992 } 7993 7994 if (pending.has(productId)) { 7995 return pending.get(productId); 7996 } 7997 7998 promise = new Promise(function (resolve) { 7999 resolver = resolve; 8000 }); 8001 8002 pending.set(productId, promise); 8003 queue.push({ 8004 productId: productId, 8005 resolve: resolver 8006 }); 8007 pumpQueue(); 8008 8009 return promise; 8010 } 8011 8012 function findBadge(card) { 8013 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 8014 } 8015 8016 function clearBadge(card) { 8017 var badge = findBadge(card); 8018 var image = card.querySelector('.product-header > .w-100 > .image'); 8019 8020 if (badge && badge.parentNode) { 8021 badge.parentNode.removeChild(badge); 8022 } 8023 8024 if (image) { 8025 image.classList.remove(HOST_CLASS); 8026 } 8027 8028 card.removeAttribute('data-farmacam-prescription-level'); 8029 } 8030 8031 function applyBadge(card, productId, rule) { 8032 var image; 8033 var badge; 8034 8035 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 8036 return false;
8037 } 8038 8039 clearBadge(card); 8040 8041 if (!rule) { 8042 return true; 8043 } 8044 8045 image = card.querySelector('.product-header > .w-100 > .image'); 8046 if (!image) { 8047 return false; 8048 } 8049 8050 badge = document.createElement('span'); 8051 badge.className = BADGE_CLASS; 8052 badge.setAttribute('data-farmacam-generated', 'true'); 8053 badge.setAttribute('data-farmacam-prescription-level', rule.level); 8054 badge.setAttribute('role', 'note'); 8055 badge.textContent = rule.text; 8056 8057 image.classList.add(HOST_CLASS); 8058 image.insertBefore(badge, image.firstChild); 8059 card.setAttribute('data-farmacam-prescription-level', rule.level); 8060 8061 return true; 8062 } 8063 8064 function processCard(card) { 8065 var productId; 8066 var previousState; 8067 var currentState; 8068 8069 if (!card || card.nodeType !== 1) { 8070 return; 8071 } 8072 8073 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 8074 return; 8075 } 8076 8077 productId = normalizeProductId(card.getAttribute('data-id')); 8078 previousState = cardStates.get(card); 8079 8080 if (!productId) { 8081 clearBadge(card); 8082 cardStates.delete(card); 8083 return; 8084 } 8085 8086 if ( 8087 previousState && 8088 previousState.productId === productId && 8089 previousState.status === 'loading' 8090 ) { 8091 return; 8092 } 8093 8094 if ( 8095 previousState && 8096 previousState.productId === productId && 8097 previousState.status === 'processed' 8098 ) { 8099 if (!previousState.rule || findBadge(card)) { 8100 return; 8101 } 8102 } 8103 8104 if (!previousState || previousState.productId !== productId) { 8105 clearBadge(card); 8106 } 8107 8108 currentState = { 8109 productId: productId, 8110 status: 'loading', 8111 rule: null 8112 }; 8113 cardStates.set(card, currentState); 8114 8115 getRule(productId).then(function (rule) { 8116 var applied; 8117 8118 if ( 8119 cardStates.get(card) !== currentState || 8120 normalizeProductId(card.getAttribute('data-id')) !== productId 8121 ) { 8122 return; 8123 } 8124 8125 applied = applyBadge(card, productId, rule); 8126 currentState.rule = rule; 8127 currentState.status = applied ? 'processed' : 'waiting-image'; 8128 }); 8129 } 8130 8131 function scan(root) { 8132 var cards; 8133 var index; 8134 8135 if (!root) { 8136 return; 8137 } 8138 8139 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 8140 processCard(root); 8141 } 8142 8143 if (!root.querySelectorAll) { 8144 return; 8145 } 8146 8147 cards = root.querySelectorAll(CARD_SELECTOR); 8148 for (index = 0; index < cards.length; index += 1) { 8149 processCard(cards[index]); 8150 } 8151 } 8152 8153 function startObserver() { 8154 var observer; 8155 8156 if (!window.MutationObserver || !document.documentElement) { 8157 return; 8158 } 8159 8160 observer = new MutationObserver(function (mutations) { 8161 var mutationIndex; 8162 var nodeIndex; 8163 var mutation; 8164 var node; 8165 var ownerCard; 8166 8167 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 8168 mutation = mutations[mutationIndex]; 8169 8170 if (mutation.type === 'attributes') { 8171 processCard(mutation.target); 8172 continue; 8173 } 8174 8175 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 8176 node = mutation.addedNodes[nodeIndex]; 8177 if (node.nodeType !== 1) { 8178 continue; 8179 } 8180 8181 scan(node); 8182 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 8183 if (ownerCard) { 8184 processCard(ownerCard); 8185 } 8186 } 8187 } 8188 }); 8189 8190 observer.observe(document.documentElement, { 8191 childList: true, 8192 subtree: true, 8193 attributes: true, 8194 attributeFilter: ['data-id'] 8195 }); 8196 8197 window[GLOBAL_KEY].observer = observer; 8198 } 8199 8200 window[GLOBAL_KEY] = { 8201 version: '1.1.0', 8202 cache: cache, 8203 pending: pending, 8204 cardStates: cardStates, 8205 scan: scan, 8206 processCard: processCard, 8207 observer: null 8208 }; 8209 8210 document.addEventListener('load', onTrayScriptLoad, true); 8211 attachTrayAjaxCache(); 8212 injectStyles(); 8213 scan(document); 8214 startObserver(); 8215 8216 if (document.readyState === 'loading') { 8217 document.addEventListener('DOMContentLoaded', function () { 8218 attachTrayAjaxCache(); 8219 scan(document); 8220 }); 8221 } 8222}(window, document)); 8223</script>
8223 8224 </li> 8225 <li class="item flex"> 8226 8227 8228 8229 8230<div class="product animate open_cart" 8231 data-id="125245502" 8232 data-farmacam-related-categories=",Array,Array," 8233 data-ga4-id="125245502" 8234 data-ga4-name="Ambientalize - Essência - Lavanda" 8235 data-ga4-price="15.00" 8236 data-ga4-brand="Floral Thérapi" 8237 data-ga4-category="Tipo de Produto;Industrializados;" 8238 > 8239 8240 <div class="product-header"> 8241 8242 <div class="w-100"> 8243 8244 8245 8246 8247 8248 8249 8250 <div class="product-tags-circle"> 8251 8252 8253 <div class="tag-circle discount tag-icone tag-icone1"> 8254 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 8255 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 8256 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 8257 </svg> 8258 <span>Lançamento</span> 8259 </div> 8260 8261 <div class="tag-circle discount tag-icone tag-icone2"> 8262 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8263 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8264 </svg> 8265 <span>Destaque</span> 8266 </div> 8267 8268 </div> 8269 8270 8271 8272 <div class="product-tags " data-tags-count="2"> 8273 8274 8275 8276 8277 8278 </div> 8279 8280 8281 8282 <div class="image "> 8283 8284 <a title="Ambientalize - Essência - Lavanda" href="https://www.farmacam.com.br/ambientalize-essencia-lavanda" class="space-image"> 8285 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_lavanda_125245502_1_a84be741462ed244c6249bca5ceaa11b.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_lavanda_125245502_1_a84be741462ed244c6249bca5ceaa11b.png" alt="Ambientalize - Essência - Lavanda"> 8286 </a> 8287 8288 </div> 8289 8290 8291 8292 8293 8294 </div> 8295 8296 </div> 8297 8298 <div class="product-body"> 8299 8300 <a title="Ambientalize - Essência - Lavanda" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-lavanda"> 8301 8302 <div class="product-info-dados"> 8303 8304 8305 8306 8307 8308 8309 <div class="product-name"> 8310 Ambientalize - Essência - Lavanda 8311 </div> 8312 8313 8314 8315 <div class="product-price"> 8316 8317 8318 8319 8320 8321 8322<div class="price display-cash"> 8323 8324 8325 <span class="current-price "> 8326 R$ 15,00 8327 8328 </span> 8329 8330 <span class="product-installments"> 8331 8332 </span> 8333 8334</div> 8335 </div> 8336 8337 </div> 8338 8339 </a> 8340 8341 </div> 8342 8343 8344 <div class="product-footer"> 8345 8346 8347 <div class="w-100"> 8348 8349 8350 8351<div class="product-rating-catalog"> 8352 8353 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8354 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8355 </svg> 8356 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8357 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8358 </svg> 8359 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8360 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8361 </svg> 8362 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8363 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8364 </svg> 8365 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 8366 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 8367 </svg> 8368 8369 8370 <a title="Ver avaliações de Ambientalize - Essência - Lavanda" href="https://www.farmacam.com.br/ambientalize-essencia-lavanda#comments" class="total"> 8371 Seja o primeiro 8372 </a> 8373 8374 </div> 8375 8376 <div class="compare-buttons"> 8377 8378 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
8378502" class="flex justify-center align-center compare-hidden" data-compare="remove"> 8379 <span class="filter-checkbox checked"></span> 8380 Remover Comparação 8381 </a> 8382 8383 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245502" class="flex justify-center align-center " data-compare="add"> 8384 <span class="filter-checkbox"></span> 8385 Comparar Produto 8386 </a> 8387 8388 </div> 8389 8390 8391 <div class="config-variacoes-compra"> 8392 8393 8394 8395 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245502"> 8396 <input type="hidden" name="product_id" value="125245502"> 8397 <input type="hidden" name="without_stock_sale" value=""> 8398 8399 <input type="hidden" name="estoque" value="9997"> 8400 8401 8402 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 8403 <div class="alerta-estoque"></div> 8404 <div class="alerta-adicionado"></div> 8405 8406 <div class="acao-compra"> 8407 8408 <div class="quantidade-box"> 8409 <div class="quantidade-box-input"> 8410 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9997" /> 8411 </div> 8412 <div class="quantidade-box-controles"> 8413 <div class="quantidade-box-controles-itens" data-item="mais"> 8414 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 8415 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 8416 </svg> 8417 </div> 8418 <div class="quantidade-box-controles-itens" data-item="menus"> 8419 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 8420 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 8421 </svg> 8422 </div> 8423 </div> 8424 </div> 8425 8426 8427 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245502"> 8428 8429 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 8430 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 8431 8432 8433 8434 8435 8436 8437 <!-- Cesta de Compras --> 8438 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 8439 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 8440 </svg> 8441 8442 8443 8444 Comprar 8445 8446 8447 </button> 8448 <!-- </form> --> 8449 8450 </div> 8451 8452</div> 8453 8454 8455 </div> 8456 8457 </div> 8458 8459 8460</div> 8461
8462<script> 8463(function (window, document) { 8464 'use strict'; 8465 8466 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 8467 8468 if (window[GLOBAL_KEY]) { 8469 return; 8470 } 8471 8472 if (!window.Map || !window.WeakMap || !window.Promise) { 8473 return; 8474 } 8475 8476 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 8477 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 8478 '#vitrine-personalizada .product[data-id]'; 8479 var BADGE_CLASS = 'farmacam-prescription-badge'; 8480 var HOST_CLASS = 'farmacam-prescription-badge-host'; 8481 var MAX_CONCURRENT_REQUESTS = 6; 8482 var REQUEST_TIMEOUT_MS = 12000; 8483 8484 var rules = { 8485 '294': { 8486 level: '294', 8487 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 8488 }, 8489 '296': { 8490 level: '296', 8491 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 8492 }, 8493 '298': { 8494 level: '298', 8495 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 8496 } 8497 }; 8498 8499 var cache = new Map(); 8500 var pending = new Map(); 8501 var cardStates = new WeakMap(); 8502 var queue = []; 8503 var activeRequests = 0; 8504 var trayAjaxHooked = false; 8505 8506 function injectStyles() { 8507 if (document.getElementById('farmacam-prescription-cards-style')) { 8508 return; 8509 } 8510 8511 var style = document.createElement('style'); 8512 style.id = 'farmacam-prescription-cards-style'; 8513 style.textContent = [ 8514 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 8515 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 8516 'position:absolute!important;', 8517 'top:52px!important;', 8518 'left:10px!important;', 8519 'z-index:999!important;', 8520 'display:block!important;', 8521 'max-width:calc(100% - 20px)!important;', 8522 'box-sizing:border-box!important;', 8523 'padding:8px 12px!important;', 8524 'color:#fff!important;', 8525 'font-family:inherit!important;', 8526 'font-size:13px!important;', 8527 'font-weight:900!important;', 8528 'line-height:1.15!important;', 8529 'text-align:center!important;', 8530 'text-transform:uppercase!important;', 8531 'letter-spacing:.3px!important;', 8532 'white-space:normal!important;', 8533 'overflow-wrap:break-word!important;', 8534 'border-radius:3px!important;', 8535 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 8536 'pointer-events:none!important;', 8537 '}', 8538 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 8539 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 8540 'background:#d70008!important;', 8541 '}', 8542 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 8543 'background:#000!important;', 8544 '}', 8545 '@media (max-width:767px){', 8546 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 8547 'top:42px!important;', 8548 'left:6px!important;', 8549 'max-width:calc(100% - 12px)!important;', 8550 'padding:6px 8px!important;', 8551 'font-size:10px!important;', 8552 '}', 8553 '}' 8554 ].join(''); 8555 8556 (document.head || document.documentElement).appendChild(style); 8557 } 8558 8559 function normalizeProductId(value) { 8560 var id = String(value == null ? '' : value).trim(); 8561 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 8562 } 8563 8564 function classifyRelatedCategories(relatedCategories) { 8565 var found = { 8566 '292': false, 8567 '294': false, 8568 '296': false, 8569 '298': false 8570 }; 8571 8572 function inspect(value, depth) { 8573 var index; 8574 var normalized; 8575 8576 if (value == null || depth > 8) { 8577 return; 8578 } 8579 8580 if (Array.isArray(value)) { 8581 for (index = 0; index < value.length; index += 1) { 8582 inspect(value[index], depth + 1); 8583 } 8584 return; 8585 } 8586 8587 if (typeof value === 'object') { 8588 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 8589 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 8590 inspect(value.id, depth + 1); 8591 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 8592 inspect(value.category_id, depth + 1); 8593 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 8594 inspect(value.Category, depth + 1); 8595 } 8596 return; 8597 } 8598 8599 if (typeof value !== 'string' && typeof value !== 'number') { 8600 return; 8601 } 8602 normalized = normalizeProductId(value); 8603 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 8604 found[normalized] = true; 8605 } 8606 } 8607 8608 inspect(relatedCategories, 0); 8609 8610 if (found['298']) { 8611 return rules['298']; 8612 } 8613 if (found['296']) { 8614 return rules['296']; 8615 } 8616 if (found['294']) { 8617 return rules['294']; 8618 } 8619 8620 // 292 e qualquer classificacao desconhecida ficam sem tarja. 8621 return null; 8622 } 8623 8624 function ruleFromPayload(payload, productId) { 8625 var product = payload && payload.Product; 8626 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 8627 return null; 8628 } 8629 return classifyRelatedCategories(product && product.related_categories); 8630 } 8631 8632 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 8633 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 8634 function attachTrayAjaxCache() { 8635 var jq = window.jQuery; 8636 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 8637 return; 8638 } 8639
8640 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 8641 var url; 8642 var match; 8643 var productId; 8644 var payload; 8645 try { 8646 url = new URL(settings.url, window.location.href); 8647 if (url.origin !== window.location.origin) { 8648 return; 8649 } 8650 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 8651 if (!match) { 8652 return; 8653 } 8654 productId = normalizeProductId(match[1]); 8655 if (!cache.has(productId) && !pending.has(productId)) { 8656 payload = data || xhr.responseJSON; 8657 if (typeof payload === 'string') { 8658 payload = JSON.parse(payload); 8659 } 8660 if (!payload || !payload.Product || 8661 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 8662 return; 8663 } 8664 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 8665 return; 8666 } 8667 cache.set(productId, ruleFromPayload(payload, productId)); 8668 } 8669 } catch (error) { 8670 // Respostas de outras integracoes nao interferem nas tarjas. 8671 } 8672 }); 8673 8674 trayAjaxHooked = true; 8675 document.removeEventListener('load', onTrayScriptLoad, true); 8676 } 8677 8678 function onTrayScriptLoad(event) { 8679 if (event.target && event.target.tagName === 'SCRIPT') { 8680 attachTrayAjaxCache(); 8681 } 8682 } 8683 8684 function requestRule(productId) { 8685 var controller = null; 8686 var timeoutId = null; 8687 var options = { 8688 credentials: 'same-origin', 8689 headers: { 8690 'Accept': 'application/json' 8691 } 8692 }; 8693 var request; 8694 8695 if (typeof window.fetch !== 'function') { 8696 return Promise.resolve(null); 8697 } 8698 8699 if (typeof window.AbortController === 'function') { 8700 controller = new window.AbortController(); 8701 options.signal = controller.signal; 8702 timeoutId = window.setTimeout(function () { 8703 controller.abort(); 8704 }, REQUEST_TIMEOUT_MS); 8705 } 8706 8707 try { 8708 request = window.fetch( 8709 '/web_api/products/' + encodeURIComponent(productId), 8710 options 8711 ); 8712 } catch (error) { 8713 if (timeoutId !== null) { 8714 window.clearTimeout(timeoutId); 8715 } 8716 return Promise.resolve(null); 8717 } 8718 8719 return request.then(function (response) { 8720 if (!response.ok) { 8721 throw new Error('HTTP ' + response.status); 8722 } 8723 return response.json(); 8724 }).then(function (payload) { 8725 return ruleFromPayload(payload, productId); 8726 }).then(function (rule) { 8727 if (timeoutId !== null) { 8728 window.clearTimeout(timeoutId); 8729 } 8730 return rule; 8731 }, function () { 8732 if (timeoutId !== null) { 8733 window.clearTimeout(timeoutId); 8734 } 8735 8736 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 8737 return null; 8738 }); 8739 } 8740 8741 function finishJob(job, rule) { 8742 cache.set(job.productId, rule); 8743 pending.delete(job.productId); 8744 activeRequests -= 1; 8745 job.resolve(rule); 8746 pumpQueue(); 8747 } 8748 8749 function pumpQueue() { 8750 var job; 8751 8752 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 8753 job = queue.shift(); 8754 activeRequests += 1; 8755 8756 (function (currentJob) { 8757 requestRule(currentJob.productId).then(function (rule) { 8758 finishJob(currentJob, rule); 8759 }, function () { 8760 finishJob(currentJob, null); 8761 }); 8762 }(job)); 8763 } 8764 } 8765 8766 function getRule(productId) { 8767 var resolver; 8768 var promise; 8769 8770 if (cache.has(productId)) { 8771 return Promise.resolve(cache.get(productId)); 8772 } 8773 8774 if (pending.has(productId)) { 8775 return pending.get(productId); 8776 } 8777 8778 promise = new Promise(function (resolve) { 8779 resolver = resolve; 8780 }); 8781 8782 pending.set(productId, promise); 8783 queue.push({ 8784 productId: productId, 8785 resolve: resolver 8786 }); 8787 pumpQueue(); 8788 8789 return promise; 8790 } 8791 8792 function findBadge(card) { 8793 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 8794 } 8795 8796 function clearBadge(card) { 8797 var badge = findBadge(card); 8798 var image = card.querySelector('.product-header > .w-100 > .image'); 8799 8800 if (badge && badge.parentNode) { 8801 badge.parentNode.removeChild(badge); 8802 } 8803 8804 if (image) { 8805 image.classList.remove(HOST_CLASS); 8806 } 8807 8808 card.removeAttribute('data-farmacam-prescription-level'); 8809 } 8810 8811 function applyBadge(card, productId, rule) { 8812 var image; 8813 var badge; 8814 8815 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 8816 return false;
8817 } 8818 8819 clearBadge(card); 8820 8821 if (!rule) { 8822 return true; 8823 } 8824 8825 image = card.querySelector('.product-header > .w-100 > .image'); 8826 if (!image) { 8827 return false; 8828 } 8829 8830 badge = document.createElement('span'); 8831 badge.className = BADGE_CLASS; 8832 badge.setAttribute('data-farmacam-generated', 'true'); 8833 badge.setAttribute('data-farmacam-prescription-level', rule.level); 8834 badge.setAttribute('role', 'note'); 8835 badge.textContent = rule.text; 8836 8837 image.classList.add(HOST_CLASS); 8838 image.insertBefore(badge, image.firstChild); 8839 card.setAttribute('data-farmacam-prescription-level', rule.level); 8840 8841 return true; 8842 } 8843 8844 function processCard(card) { 8845 var productId; 8846 var previousState; 8847 var currentState; 8848 8849 if (!card || card.nodeType !== 1) { 8850 return; 8851 } 8852 8853 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 8854 return; 8855 } 8856 8857 productId = normalizeProductId(card.getAttribute('data-id')); 8858 previousState = cardStates.get(card); 8859 8860 if (!productId) { 8861 clearBadge(card); 8862 cardStates.delete(card); 8863 return; 8864 } 8865 8866 if ( 8867 previousState && 8868 previousState.productId === productId && 8869 previousState.status === 'loading' 8870 ) { 8871 return; 8872 } 8873 8874 if ( 8875 previousState && 8876 previousState.productId === productId && 8877 previousState.status === 'processed' 8878 ) { 8879 if (!previousState.rule || findBadge(card)) { 8880 return; 8881 } 8882 } 8883 8884 if (!previousState || previousState.productId !== productId) { 8885 clearBadge(card); 8886 } 8887 8888 currentState = { 8889 productId: productId, 8890 status: 'loading', 8891 rule: null 8892 }; 8893 cardStates.set(card, currentState); 8894 8895 getRule(productId).then(function (rule) { 8896 var applied; 8897 8898 if ( 8899 cardStates.get(card) !== currentState || 8900 normalizeProductId(card.getAttribute('data-id')) !== productId 8901 ) { 8902 return; 8903 } 8904 8905 applied = applyBadge(card, productId, rule); 8906 currentState.rule = rule; 8907 currentState.status = applied ? 'processed' : 'waiting-image'; 8908 }); 8909 } 8910 8911 function scan(root) { 8912 var cards; 8913 var index; 8914 8915 if (!root) { 8916 return; 8917 } 8918 8919 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 8920 processCard(root); 8921 } 8922 8923 if (!root.querySelectorAll) { 8924 return; 8925 } 8926 8927 cards = root.querySelectorAll(CARD_SELECTOR); 8928 for (index = 0; index < cards.length; index += 1) { 8929 processCard(cards[index]); 8930 } 8931 } 8932 8933 function startObserver() { 8934 var observer; 8935 8936 if (!window.MutationObserver || !document.documentElement) { 8937 return; 8938 } 8939 8940 observer = new MutationObserver(function (mutations) { 8941 var mutationIndex; 8942 var nodeIndex; 8943 var mutation; 8944 var node; 8945 var ownerCard; 8946 8947 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 8948 mutation = mutations[mutationIndex]; 8949 8950 if (mutation.type === 'attributes') { 8951 processCard(mutation.target); 8952 continue; 8953 } 8954 8955 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 8956 node = mutation.addedNodes[nodeIndex]; 8957 if (node.nodeType !== 1) { 8958 continue; 8959 } 8960 8961 scan(node); 8962 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 8963 if (ownerCard) { 8964 processCard(ownerCard); 8965 } 8966 } 8967 } 8968 }); 8969 8970 observer.observe(document.documentElement, { 8971 childList: true, 8972 subtree: true, 8973 attributes: true, 8974 attributeFilter: ['data-id'] 8975 }); 8976 8977 window[GLOBAL_KEY].observer = observer; 8978 } 8979 8980 window[GLOBAL_KEY] = { 8981 version: '1.1.0', 8982 cache: cache, 8983 pending: pending, 8984 cardStates: cardStates, 8985 scan: scan, 8986 processCard: processCard, 8987 observer: null 8988 }; 8989 8990 document.addEventListener('load', onTrayScriptLoad, true); 8991 attachTrayAjaxCache(); 8992 injectStyles(); 8993 scan(document); 8994 startObserver(); 8995 8996 if (document.readyState === 'loading') { 8997 document.addEventListener('DOMContentLoaded', function () { 8998 attachTrayAjaxCache(); 8999 scan(document); 9000 }); 9001 } 9002}(window, document)); 9003</script>
9003 9004 </li> 9005 <li class="item flex"> 9006 9007 9008 9009 9010<div class="product animate open_cart" 9011 data-id="125245500" 9012 data-farmacam-related-categories=",Array,Array," 9013 data-ga4-id="125245500" 9014 data-ga4-name="Ambientalize - Essência - Pistache" 9015 data-ga4-price="15.00" 9016 data-ga4-brand="Floral Thérapi" 9017 data-ga4-category="Tipo de Produto;Industrializados;" 9018 > 9019 9020 <div class="product-header"> 9021 9022 <div class="w-100"> 9023 9024 9025 9026 9027 9028 9029 9030 <div class="product-tags-circle"> 9031 9032 9033 <div class="tag-circle discount tag-icone tag-icone1"> 9034 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 9035 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 9036 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 9037 </svg> 9038 <span>Lançamento</span> 9039 </div> 9040 9041 <div class="tag-circle discount tag-icone tag-icone2"> 9042 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9043 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9044 </svg> 9045 <span>Destaque</span> 9046 </div> 9047 9048 </div> 9049 9050 9051 9052 <div class="product-tags " data-tags-count="2"> 9053 9054 9055 9056 9057 9058 </div> 9059 9060 9061 9062 <div class="image "> 9063 9064 <a title="Ambientalize - Essência - Pistache" href="https://www.farmacam.com.br/ambientalize-essencia-pistache" class="space-image"> 9065 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_pistache_125245500_1_2f8211fa92a3047ce48efe6d8e8c74d2.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_pistache_125245500_1_2f8211fa92a3047ce48efe6d8e8c74d2.png" alt="Ambientalize - Essência - Pistache"> 9066 </a> 9067 9068 </div> 9069 9070 9071 9072 9073 9074 </div> 9075 9076 </div> 9077 9078 <div class="product-body"> 9079 9080 <a title="Ambientalize - Essência - Pistache" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-pistache"> 9081 9082 <div class="product-info-dados"> 9083 9084 9085 9086 9087 9088 9089 <div class="product-name"> 9090 Ambientalize - Essência - Pistache 9091 </div> 9092 9093 9094 9095 <div class="product-price"> 9096 9097 9098 9099 9100 9101 9102<div class="price display-cash"> 9103 9104 9105 <span class="current-price "> 9106 R$ 15,00 9107 9108 </span> 9109 9110 <span class="product-installments"> 9111 9112 </span> 9113 9114</div> 9115 </div> 9116 9117 </div> 9118 9119 </a> 9120 9121 </div> 9122 9123 9124 <div class="product-footer"> 9125 9126 9127 <div class="w-100"> 9128 9129 9130 9131<div class="product-rating-catalog"> 9132 9133 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9134 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9135 </svg> 9136 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9137 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9138 </svg> 9139 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9140 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9141 </svg> 9142 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9143 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9144 </svg> 9145 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9146 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9147 </svg> 9148 9149 9150 <a title="Ver avaliações de Ambientalize - Essência - Pistache" href="https://www.farmacam.com.br/ambientalize-essencia-pistache#comments" class="total"> 9151 Seja o primeiro 9152 </a> 9153 9154 </div> 9155 9156 <div class="compare-buttons"> 9157 9158 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245
9158500" class="flex justify-center align-center compare-hidden" data-compare="remove"> 9159 <span class="filter-checkbox checked"></span> 9160 Remover Comparação 9161 </a> 9162 9163 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245500" class="flex justify-center align-center " data-compare="add"> 9164 <span class="filter-checkbox"></span> 9165 Comparar Produto 9166 </a> 9167 9168 </div> 9169 9170 9171 <div class="config-variacoes-compra"> 9172 9173 9174 9175 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245500"> 9176 <input type="hidden" name="product_id" value="125245500"> 9177 <input type="hidden" name="without_stock_sale" value=""> 9178 9179 <input type="hidden" name="estoque" value="10000"> 9180 9181 9182 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 9183 <div class="alerta-estoque"></div> 9184 <div class="alerta-adicionado"></div> 9185 9186 <div class="acao-compra"> 9187 9188 <div class="quantidade-box"> 9189 <div class="quantidade-box-input"> 9190 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="10000" /> 9191 </div> 9192 <div class="quantidade-box-controles"> 9193 <div class="quantidade-box-controles-itens" data-item="mais"> 9194 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 9195 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 9196 </svg> 9197 </div> 9198 <div class="quantidade-box-controles-itens" data-item="menus"> 9199 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 9200 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 9201 </svg> 9202 </div> 9203 </div> 9204 </div> 9205 9206 9207 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245500"> 9208 9209 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 9210 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 9211 9212 9213 9214 9215 9216 9217 <!-- Cesta de Compras --> 9218 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 9219 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 9220 </svg> 9221 9222 9223 9224 Comprar 9225 9226 9227 </button> 9228 <!-- </form> --> 9229 9230 </div> 9231 9232</div> 9233 9234 9235 </div> 9236 9237 </div> 9238 9239 9240</div> 9241
9242<script> 9243(function (window, document) { 9244 'use strict'; 9245 9246 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 9247 9248 if (window[GLOBAL_KEY]) { 9249 return; 9250 } 9251 9252 if (!window.Map || !window.WeakMap || !window.Promise) { 9253 return; 9254 } 9255 9256 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 9257 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 9258 '#vitrine-personalizada .product[data-id]'; 9259 var BADGE_CLASS = 'farmacam-prescription-badge'; 9260 var HOST_CLASS = 'farmacam-prescription-badge-host'; 9261 var MAX_CONCURRENT_REQUESTS = 6; 9262 var REQUEST_TIMEOUT_MS = 12000; 9263 9264 var rules = { 9265 '294': { 9266 level: '294', 9267 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 9268 }, 9269 '296': { 9270 level: '296', 9271 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 9272 }, 9273 '298': { 9274 level: '298', 9275 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 9276 } 9277 }; 9278 9279 var cache = new Map(); 9280 var pending = new Map(); 9281 var cardStates = new WeakMap(); 9282 var queue = []; 9283 var activeRequests = 0; 9284 var trayAjaxHooked = false; 9285 9286 function injectStyles() { 9287 if (document.getElementById('farmacam-prescription-cards-style')) { 9288 return; 9289 } 9290 9291 var style = document.createElement('style'); 9292 style.id = 'farmacam-prescription-cards-style'; 9293 style.textContent = [ 9294 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 9295 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 9296 'position:absolute!important;', 9297 'top:52px!important;', 9298 'left:10px!important;', 9299 'z-index:999!important;', 9300 'display:block!important;', 9301 'max-width:calc(100% - 20px)!important;', 9302 'box-sizing:border-box!important;', 9303 'padding:8px 12px!important;', 9304 'color:#fff!important;', 9305 'font-family:inherit!important;', 9306 'font-size:13px!important;', 9307 'font-weight:900!important;', 9308 'line-height:1.15!important;', 9309 'text-align:center!important;', 9310 'text-transform:uppercase!important;', 9311 'letter-spacing:.3px!important;', 9312 'white-space:normal!important;', 9313 'overflow-wrap:break-word!important;', 9314 'border-radius:3px!important;', 9315 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 9316 'pointer-events:none!important;', 9317 '}', 9318 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 9319 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 9320 'background:#d70008!important;', 9321 '}', 9322 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 9323 'background:#000!important;', 9324 '}', 9325 '@media (max-width:767px){', 9326 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 9327 'top:42px!important;', 9328 'left:6px!important;', 9329 'max-width:calc(100% - 12px)!important;', 9330 'padding:6px 8px!important;', 9331 'font-size:10px!important;', 9332 '}', 9333 '}' 9334 ].join(''); 9335 9336 (document.head || document.documentElement).appendChild(style); 9337 } 9338 9339 function normalizeProductId(value) { 9340 var id = String(value == null ? '' : value).trim(); 9341 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 9342 } 9343 9344 function classifyRelatedCategories(relatedCategories) { 9345 var found = { 9346 '292': false, 9347 '294': false, 9348 '296': false, 9349 '298': false 9350 }; 9351 9352 function inspect(value, depth) { 9353 var index; 9354 var normalized; 9355 9356 if (value == null || depth > 8) { 9357 return; 9358 } 9359 9360 if (Array.isArray(value)) { 9361 for (index = 0; index < value.length; index += 1) { 9362 inspect(value[index], depth + 1); 9363 } 9364 return; 9365 } 9366 9367 if (typeof value === 'object') { 9368 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 9369 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 9370 inspect(value.id, depth + 1); 9371 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 9372 inspect(value.category_id, depth + 1); 9373 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 9374 inspect(value.Category, depth + 1); 9375 } 9376 return; 9377 } 9378 9379 if (typeof value !== 'string' && typeof value !== 'number') { 9380 return; 9381 } 9382 normalized = normalizeProductId(value); 9383 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 9384 found[normalized] = true; 9385 } 9386 } 9387 9388 inspect(relatedCategories, 0); 9389 9390 if (found['298']) { 9391 return rules['298']; 9392 } 9393 if (found['296']) { 9394 return rules['296']; 9395 } 9396 if (found['294']) { 9397 return rules['294']; 9398 } 9399 9400 // 292 e qualquer classificacao desconhecida ficam sem tarja. 9401 return null; 9402 } 9403 9404 function ruleFromPayload(payload, productId) { 9405 var product = payload && payload.Product; 9406 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 9407 return null; 9408 } 9409 return classifyRelatedCategories(product && product.related_categories); 9410 } 9411 9412 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 9413 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 9414 function attachTrayAjaxCache() { 9415 var jq = window.jQuery; 9416 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 9417 return; 9418 } 9419
9420 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 9421 var url; 9422 var match; 9423 var productId; 9424 var payload; 9425 try { 9426 url = new URL(settings.url, window.location.href); 9427 if (url.origin !== window.location.origin) { 9428 return; 9429 } 9430 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 9431 if (!match) { 9432 return; 9433 } 9434 productId = normalizeProductId(match[1]); 9435 if (!cache.has(productId) && !pending.has(productId)) { 9436 payload = data || xhr.responseJSON; 9437 if (typeof payload === 'string') { 9438 payload = JSON.parse(payload); 9439 } 9440 if (!payload || !payload.Product || 9441 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 9442 return; 9443 } 9444 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 9445 return; 9446 } 9447 cache.set(productId, ruleFromPayload(payload, productId)); 9448 } 9449 } catch (error) { 9450 // Respostas de outras integracoes nao interferem nas tarjas. 9451 } 9452 }); 9453 9454 trayAjaxHooked = true; 9455 document.removeEventListener('load', onTrayScriptLoad, true); 9456 } 9457 9458 function onTrayScriptLoad(event) { 9459 if (event.target && event.target.tagName === 'SCRIPT') { 9460 attachTrayAjaxCache(); 9461 } 9462 } 9463 9464 function requestRule(productId) { 9465 var controller = null; 9466 var timeoutId = null; 9467 var options = { 9468 credentials: 'same-origin', 9469 headers: { 9470 'Accept': 'application/json' 9471 } 9472 }; 9473 var request; 9474 9475 if (typeof window.fetch !== 'function') { 9476 return Promise.resolve(null); 9477 } 9478 9479 if (typeof window.AbortController === 'function') { 9480 controller = new window.AbortController(); 9481 options.signal = controller.signal; 9482 timeoutId = window.setTimeout(function () { 9483 controller.abort(); 9484 }, REQUEST_TIMEOUT_MS); 9485 } 9486 9487 try { 9488 request = window.fetch( 9489 '/web_api/products/' + encodeURIComponent(productId), 9490 options 9491 ); 9492 } catch (error) { 9493 if (timeoutId !== null) { 9494 window.clearTimeout(timeoutId); 9495 } 9496 return Promise.resolve(null); 9497 } 9498 9499 return request.then(function (response) { 9500 if (!response.ok) { 9501 throw new Error('HTTP ' + response.status); 9502 } 9503 return response.json(); 9504 }).then(function (payload) { 9505 return ruleFromPayload(payload, productId); 9506 }).then(function (rule) { 9507 if (timeoutId !== null) { 9508 window.clearTimeout(timeoutId); 9509 } 9510 return rule; 9511 }, function () { 9512 if (timeoutId !== null) { 9513 window.clearTimeout(timeoutId); 9514 } 9515 9516 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 9517 return null; 9518 }); 9519 } 9520 9521 function finishJob(job, rule) { 9522 cache.set(job.productId, rule); 9523 pending.delete(job.productId); 9524 activeRequests -= 1; 9525 job.resolve(rule); 9526 pumpQueue(); 9527 } 9528 9529 function pumpQueue() { 9530 var job; 9531 9532 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 9533 job = queue.shift(); 9534 activeRequests += 1; 9535 9536 (function (currentJob) { 9537 requestRule(currentJob.productId).then(function (rule) { 9538 finishJob(currentJob, rule); 9539 }, function () { 9540 finishJob(currentJob, null); 9541 }); 9542 }(job)); 9543 } 9544 } 9545 9546 function getRule(productId) { 9547 var resolver; 9548 var promise; 9549 9550 if (cache.has(productId)) { 9551 return Promise.resolve(cache.get(productId)); 9552 } 9553 9554 if (pending.has(productId)) { 9555 return pending.get(productId); 9556 } 9557 9558 promise = new Promise(function (resolve) { 9559 resolver = resolve; 9560 }); 9561 9562 pending.set(productId, promise); 9563 queue.push({ 9564 productId: productId, 9565 resolve: resolver 9566 }); 9567 pumpQueue(); 9568 9569 return promise; 9570 } 9571 9572 function findBadge(card) { 9573 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 9574 } 9575 9576 function clearBadge(card) { 9577 var badge = findBadge(card); 9578 var image = card.querySelector('.product-header > .w-100 > .image'); 9579 9580 if (badge && badge.parentNode) { 9581 badge.parentNode.removeChild(badge); 9582 } 9583 9584 if (image) { 9585 image.classList.remove(HOST_CLASS); 9586 } 9587 9588 card.removeAttribute('data-farmacam-prescription-level'); 9589 } 9590 9591 function applyBadge(card, productId, rule) { 9592 var image; 9593 var badge; 9594 9595 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 9596 return false;
9597 } 9598 9599 clearBadge(card); 9600 9601 if (!rule) { 9602 return true; 9603 } 9604 9605 image = card.querySelector('.product-header > .w-100 > .image'); 9606 if (!image) { 9607 return false; 9608 } 9609 9610 badge = document.createElement('span'); 9611 badge.className = BADGE_CLASS; 9612 badge.setAttribute('data-farmacam-generated', 'true'); 9613 badge.setAttribute('data-farmacam-prescription-level', rule.level); 9614 badge.setAttribute('role', 'note'); 9615 badge.textContent = rule.text; 9616 9617 image.classList.add(HOST_CLASS); 9618 image.insertBefore(badge, image.firstChild); 9619 card.setAttribute('data-farmacam-prescription-level', rule.level); 9620 9621 return true; 9622 } 9623 9624 function processCard(card) { 9625 var productId; 9626 var previousState; 9627 var currentState; 9628 9629 if (!card || card.nodeType !== 1) { 9630 return; 9631 } 9632 9633 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 9634 return; 9635 } 9636 9637 productId = normalizeProductId(card.getAttribute('data-id')); 9638 previousState = cardStates.get(card); 9639 9640 if (!productId) { 9641 clearBadge(card); 9642 cardStates.delete(card); 9643 return; 9644 } 9645 9646 if ( 9647 previousState && 9648 previousState.productId === productId && 9649 previousState.status === 'loading' 9650 ) { 9651 return; 9652 } 9653 9654 if ( 9655 previousState && 9656 previousState.productId === productId && 9657 previousState.status === 'processed' 9658 ) { 9659 if (!previousState.rule || findBadge(card)) { 9660 return; 9661 } 9662 } 9663 9664 if (!previousState || previousState.productId !== productId) { 9665 clearBadge(card); 9666 } 9667 9668 currentState = { 9669 productId: productId, 9670 status: 'loading', 9671 rule: null 9672 }; 9673 cardStates.set(card, currentState); 9674 9675 getRule(productId).then(function (rule) { 9676 var applied; 9677 9678 if ( 9679 cardStates.get(card) !== currentState || 9680 normalizeProductId(card.getAttribute('data-id')) !== productId 9681 ) { 9682 return; 9683 } 9684 9685 applied = applyBadge(card, productId, rule); 9686 currentState.rule = rule; 9687 currentState.status = applied ? 'processed' : 'waiting-image'; 9688 }); 9689 } 9690 9691 function scan(root) { 9692 var cards; 9693 var index; 9694 9695 if (!root) { 9696 return; 9697 } 9698 9699 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 9700 processCard(root); 9701 } 9702 9703 if (!root.querySelectorAll) { 9704 return; 9705 } 9706 9707 cards = root.querySelectorAll(CARD_SELECTOR); 9708 for (index = 0; index < cards.length; index += 1) { 9709 processCard(cards[index]); 9710 } 9711 } 9712 9713 function startObserver() { 9714 var observer; 9715 9716 if (!window.MutationObserver || !document.documentElement) { 9717 return; 9718 } 9719 9720 observer = new MutationObserver(function (mutations) { 9721 var mutationIndex; 9722 var nodeIndex; 9723 var mutation; 9724 var node; 9725 var ownerCard; 9726 9727 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 9728 mutation = mutations[mutationIndex]; 9729 9730 if (mutation.type === 'attributes') { 9731 processCard(mutation.target); 9732 continue; 9733 } 9734 9735 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 9736 node = mutation.addedNodes[nodeIndex]; 9737 if (node.nodeType !== 1) { 9738 continue; 9739 } 9740 9741 scan(node); 9742 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 9743 if (ownerCard) { 9744 processCard(ownerCard); 9745 } 9746 } 9747 } 9748 }); 9749 9750 observer.observe(document.documentElement, { 9751 childList: true, 9752 subtree: true, 9753 attributes: true, 9754 attributeFilter: ['data-id'] 9755 }); 9756 9757 window[GLOBAL_KEY].observer = observer; 9758 } 9759 9760 window[GLOBAL_KEY] = { 9761 version: '1.1.0', 9762 cache: cache, 9763 pending: pending, 9764 cardStates: cardStates, 9765 scan: scan, 9766 processCard: processCard, 9767 observer: null 9768 }; 9769 9770 document.addEventListener('load', onTrayScriptLoad, true); 9771 attachTrayAjaxCache(); 9772 injectStyles(); 9773 scan(document); 9774 startObserver(); 9775 9776 if (document.readyState === 'loading') { 9777 document.addEventListener('DOMContentLoaded', function () { 9778 attachTrayAjaxCache(); 9779 scan(document); 9780 }); 9781 } 9782}(window, document)); 9783</script>
9783 9784 </li> 9785 <li class="item flex"> 9786 9787 9788 9789 9790<div class="product animate open_cart" 9791 data-id="125245498" 9792 data-farmacam-related-categories=",Array,Array," 9793 data-ga4-id="125245498" 9794 data-ga4-name="Ambientalize - Essência - Especiarias" 9795 data-ga4-price="15.00" 9796 data-ga4-brand="Floral Thérapi" 9797 data-ga4-category="Tipo de Produto;Industrializados;" 9798 > 9799 9800 <div class="product-header"> 9801 9802 <div class="w-100"> 9803 9804 9805 9806 9807 9808 9809 9810 <div class="product-tags-circle"> 9811 9812 9813 <div class="tag-circle discount tag-icone tag-icone1"> 9814 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 9815 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 9816 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 9817 </svg> 9818 <span>Lançamento</span> 9819 </div> 9820 9821 <div class="tag-circle discount tag-icone tag-icone2"> 9822 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9823 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9824 </svg> 9825 <span>Destaque</span> 9826 </div> 9827 9828 </div> 9829 9830 9831 9832 <div class="product-tags " data-tags-count="2"> 9833 9834 9835 9836 9837 9838 </div> 9839 9840 9841 9842 <div class="image "> 9843 9844 <a title="Ambientalize - Essência - Especiarias" href="https://www.farmacam.com.br/ambientalize-essencia-especiarias" class="space-image"> 9845 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_especiarias_125245498_1_25c053ccb2a65144dbee54b1cc6bf443.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/ambientalize_essencia_especiarias_125245498_1_25c053ccb2a65144dbee54b1cc6bf443.png" alt="Ambientalize - Essência - Especiarias"> 9846 </a> 9847 9848 </div> 9849 9850 9851 9852 9853 9854 </div> 9855 9856 </div> 9857 9858 <div class="product-body"> 9859 9860 <a title="Ambientalize - Essência - Especiarias" class="product-info" href="https://www.farmacam.com.br/ambientalize-essencia-especiarias"> 9861 9862 <div class="product-info-dados"> 9863 9864 9865 9866 9867 9868 9869 <div class="product-name"> 9870 Ambientalize - Essência - Especiarias 9871 </div> 9872 9873 9874 9875 <div class="product-price"> 9876 9877 9878 9879 9880 9881 9882<div class="price display-cash"> 9883 9884 9885 <span class="current-price "> 9886 R$ 15,00 9887 9888 </span> 9889 9890 <span class="product-installments"> 9891 9892 </span> 9893 9894</div> 9895 </div> 9896 9897 </div> 9898 9899 </a> 9900 9901 </div> 9902 9903 9904 <div class="product-footer"> 9905 9906 9907 <div class="w-100"> 9908 9909 9910 9911<div class="product-rating-catalog"> 9912 9913 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9914 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9915 </svg> 9916 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9917 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9918 </svg> 9919 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9920 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9921 </svg> 9922 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9923 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9924 </svg> 9925 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 9926 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 9927 </svg> 9928 9929 9930 <a title="Ver avaliações de Ambientalize - Essência - Especiarias" href="https://www.farmacam.com.br/ambientalize-essencia-especiarias#comments" class="total"> 9931 Seja o primeiro 9932 </a> 9933 9934 </div> 9935 9936 <div class="compare-buttons"> 9937 9938 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245498" class="flex justify-center align-center compare-hidden" data-compare="remove">
9939 <span class="filter-checkbox checked"></span> 9940 Remover Comparação 9941 </a> 9942 9943 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245498" class="flex justify-center align-center " data-compare="add"> 9944 <span class="filter-checkbox"></span> 9945 Comparar Produto 9946 </a> 9947 9948 </div> 9949 9950 9951 <div class="config-variacoes-compra"> 9952 9953 9954 9955 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245498"> 9956 <input type="hidden" name="product_id" value="125245498"> 9957 <input type="hidden" name="without_stock_sale" value=""> 9958 9959 <input type="hidden" name="estoque" value="9999"> 9960 9961 9962 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 9963 <div class="alerta-estoque"></div> 9964 <div class="alerta-adicionado"></div> 9965 9966 <div class="acao-compra"> 9967 9968 <div class="quantidade-box"> 9969 <div class="quantidade-box-input"> 9970 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9999" /> 9971 </div> 9972 <div class="quantidade-box-controles"> 9973 <div class="quantidade-box-controles-itens" data-item="mais"> 9974 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 9975 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 9976 </svg> 9977 </div> 9978 <div class="quantidade-box-controles-itens" data-item="menus"> 9979 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 9980 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 9981 </svg> 9982 </div> 9983 </div> 9984 </div> 9985 9986 9987 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245498"> 9988 9989 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 9990 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 9991 9992 9993 9994 9995 9996 9997 <!-- Cesta de Compras --> 9998 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 9999 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 10000 </svg> 10001 10002 10003 10004 Comprar 10005 10006 10007 </button> 10008 <!-- </form> --> 10009 10010 </div> 10011 10012</div> 10013 10014 10015 </div> 10016 10017 </div> 10018 10019 10020</div> 10021
10022<script> 10023(function (window, document) { 10024 'use strict'; 10025 10026 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 10027 10028 if (window[GLOBAL_KEY]) { 10029 return; 10030 } 10031 10032 if (!window.Map || !window.WeakMap || !window.Promise) { 10033 return; 10034 } 10035 10036 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 10037 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 10038 '#vitrine-personalizada .product[data-id]'; 10039 var BADGE_CLASS = 'farmacam-prescription-badge'; 10040 var HOST_CLASS = 'farmacam-prescription-badge-host'; 10041 var MAX_CONCURRENT_REQUESTS = 6; 10042 var REQUEST_TIMEOUT_MS = 12000; 10043 10044 var rules = { 10045 '294': { 10046 level: '294', 10047 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 10048 }, 10049 '296': { 10050 level: '296', 10051 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 10052 }, 10053 '298': { 10054 level: '298', 10055 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 10056 } 10057 }; 10058 10059 var cache = new Map(); 10060 var pending = new Map(); 10061 var cardStates = new WeakMap(); 10062 var queue = []; 10063 var activeRequests = 0; 10064 var trayAjaxHooked = false; 10065 10066 function injectStyles() { 10067 if (document.getElementById('farmacam-prescription-cards-style')) { 10068 return; 10069 } 10070 10071 var style = document.createElement('style'); 10072 style.id = 'farmacam-prescription-cards-style'; 10073 style.textContent = [ 10074 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 10075 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 10076 'position:absolute!important;', 10077 'top:52px!important;', 10078 'left:10px!important;', 10079 'z-index:999!important;', 10080 'display:block!important;', 10081 'max-width:calc(100% - 20px)!important;', 10082 'box-sizing:border-box!important;', 10083 'padding:8px 12px!important;', 10084 'color:#fff!important;', 10085 'font-family:inherit!important;', 10086 'font-size:13px!important;', 10087 'font-weight:900!important;', 10088 'line-height:1.15!important;', 10089 'text-align:center!important;', 10090 'text-transform:uppercase!important;', 10091 'letter-spacing:.3px!important;', 10092 'white-space:normal!important;', 10093 'overflow-wrap:break-word!important;', 10094 'border-radius:3px!important;', 10095 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 10096 'pointer-events:none!important;', 10097 '}', 10098 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 10099 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 10100 'background:#d70008!important;', 10101 '}', 10102 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 10103 'background:#000!important;', 10104 '}', 10105 '@media (max-width:767px){', 10106 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 10107 'top:42px!important;', 10108 'left:6px!important;', 10109 'max-width:calc(100% - 12px)!important;', 10110 'padding:6px 8px!important;', 10111 'font-size:10px!important;', 10112 '}', 10113 '}' 10114 ].join(''); 10115 10116 (document.head || document.documentElement).appendChild(style); 10117 } 10118 10119 function normalizeProductId(value) { 10120 var id = String(value == null ? '' : value).trim(); 10121 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 10122 } 10123 10124 function classifyRelatedCategories(relatedCategories) { 10125 var found = { 10126 '292': false, 10127 '294': false, 10128 '296': false, 10129 '298': false 10130 }; 10131 10132 function inspect(value, depth) { 10133 var index; 10134 var normalized; 10135 10136 if (value == null || depth > 8) { 10137 return; 10138 } 10139 10140 if (Array.isArray(value)) { 10141 for (index = 0; index < value.length; index += 1) { 10142 inspect(value[index], depth + 1); 10143 } 10144 return; 10145 } 10146 10147 if (typeof value === 'object') { 10148 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 10149 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 10150 inspect(value.id, depth + 1); 10151 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 10152 inspect(value.category_id, depth + 1); 10153 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 10154 inspect(value.Category, depth + 1); 10155 } 10156 return; 10157 } 10158 10159 if (typeof value !== 'string' && typeof value !== 'number') { 10160 return; 10161 } 10162 normalized = normalizeProductId(value); 10163 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 10164 found[normalized] = true; 10165 } 10166 } 10167 10168 inspect(relatedCategories, 0); 10169 10170 if (found['298']) { 10171 return rules['298']; 10172 } 10173 if (found['296']) { 10174 return rules['296']; 10175 } 10176 if (found['294']) { 10177 return rules['294']; 10178 } 10179 10180 // 292 e qualquer classificacao desconhecida ficam sem tarja. 10181 return null; 10182 } 10183 10184 function ruleFromPayload(payload, productId) { 10185 var product = payload && payload.Product; 10186 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 10187 return null; 10188 } 10189 return classifyRelatedCategories(product && product.related_categories); 10190 } 10191 10192 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 10193 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 10194 function attachTrayAjaxCache() { 10195 var jq = window.jQuery; 10196 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 10197 return; 10198 } 10199
10200 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 10201 var url; 10202 var match; 10203 var productId; 10204 var payload; 10205 try { 10206 url = new URL(settings.url, window.location.href); 10207 if (url.origin !== window.location.origin) { 10208 return; 10209 } 10210 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 10211 if (!match) { 10212 return; 10213 } 10214 productId = normalizeProductId(match[1]); 10215 if (!cache.has(productId) && !pending.has(productId)) { 10216 payload = data || xhr.responseJSON; 10217 if (typeof payload === 'string') { 10218 payload = JSON.parse(payload); 10219 } 10220 if (!payload || !payload.Product || 10221 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 10222 return; 10223 } 10224 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 10225 return; 10226 } 10227 cache.set(productId, ruleFromPayload(payload, productId)); 10228 } 10229 } catch (error) { 10230 // Respostas de outras integracoes nao interferem nas tarjas. 10231 } 10232 }); 10233 10234 trayAjaxHooked = true; 10235 document.removeEventListener('load', onTrayScriptLoad, true); 10236 } 10237 10238 function onTrayScriptLoad(event) { 10239 if (event.target && event.target.tagName === 'SCRIPT') { 10240 attachTrayAjaxCache(); 10241 } 10242 } 10243 10244 function requestRule(productId) { 10245 var controller = null; 10246 var timeoutId = null; 10247 var options = { 10248 credentials: 'same-origin', 10249 headers: { 10250 'Accept': 'application/json' 10251 } 10252 }; 10253 var request; 10254 10255 if (typeof window.fetch !== 'function') { 10256 return Promise.resolve(null); 10257 } 10258 10259 if (typeof window.AbortController === 'function') { 10260 controller = new window.AbortController(); 10261 options.signal = controller.signal; 10262 timeoutId = window.setTimeout(function () { 10263 controller.abort(); 10264 }, REQUEST_TIMEOUT_MS); 10265 } 10266 10267 try { 10268 request = window.fetch( 10269 '/web_api/products/' + encodeURIComponent(productId), 10270 options 10271 ); 10272 } catch (error) { 10273 if (timeoutId !== null) { 10274 window.clearTimeout(timeoutId); 10275 } 10276 return Promise.resolve(null); 10277 } 10278 10279 return request.then(function (response) { 10280 if (!response.ok) { 10281 throw new Error('HTTP ' + response.status); 10282 } 10283 return response.json(); 10284 }).then(function (payload) { 10285 return ruleFromPayload(payload, productId); 10286 }).then(function (rule) { 10287 if (timeoutId !== null) { 10288 window.clearTimeout(timeoutId); 10289 } 10290 return rule; 10291 }, function () { 10292 if (timeoutId !== null) { 10293 window.clearTimeout(timeoutId); 10294 } 10295 10296 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 10297 return null; 10298 }); 10299 } 10300 10301 function finishJob(job, rule) { 10302 cache.set(job.productId, rule); 10303 pending.delete(job.productId); 10304 activeRequests -= 1; 10305 job.resolve(rule); 10306 pumpQueue(); 10307 } 10308 10309 function pumpQueue() { 10310 var job; 10311 10312 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 10313 job = queue.shift(); 10314 activeRequests += 1; 10315 10316 (function (currentJob) { 10317 requestRule(currentJob.productId).then(function (rule) { 10318 finishJob(currentJob, rule); 10319 }, function () { 10320 finishJob(currentJob, null); 10321 }); 10322 }(job)); 10323 } 10324 } 10325 10326 function getRule(productId) { 10327 var resolver; 10328 var promise; 10329 10330 if (cache.has(productId)) { 10331 return Promise.resolve(cache.get(productId)); 10332 } 10333 10334 if (pending.has(productId)) { 10335 return pending.get(productId); 10336 } 10337 10338 promise = new Promise(function (resolve) { 10339 resolver = resolve; 10340 }); 10341 10342 pending.set(productId, promise); 10343 queue.push({ 10344 productId: productId, 10345 resolve: resolver 10346 }); 10347 pumpQueue(); 10348 10349 return promise; 10350 } 10351 10352 function findBadge(card) { 10353 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 10354 } 10355 10356 function clearBadge(card) { 10357 var badge = findBadge(card); 10358 var image = card.querySelector('.product-header > .w-100 > .image'); 10359 10360 if (badge && badge.parentNode) { 10361 badge.parentNode.removeChild(badge); 10362 } 10363 10364 if (image) { 10365 image.classList.remove(HOST_CLASS); 10366 } 10367 10368 card.removeAttribute('data-farmacam-prescription-level'); 10369 } 10370 10371 function applyBadge(card, productId, rule) { 10372 var image; 10373 var badge; 10374 10375 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 10376 return false;
10377 } 10378 10379 clearBadge(card); 10380 10381 if (!rule) { 10382 return true; 10383 } 10384 10385 image = card.querySelector('.product-header > .w-100 > .image'); 10386 if (!image) { 10387 return false; 10388 } 10389 10390 badge = document.createElement('span'); 10391 badge.className = BADGE_CLASS; 10392 badge.setAttribute('data-farmacam-generated', 'true'); 10393 badge.setAttribute('data-farmacam-prescription-level', rule.level); 10394 badge.setAttribute('role', 'note'); 10395 badge.textContent = rule.text; 10396 10397 image.classList.add(HOST_CLASS); 10398 image.insertBefore(badge, image.firstChild); 10399 card.setAttribute('data-farmacam-prescription-level', rule.level); 10400 10401 return true; 10402 } 10403 10404 function processCard(card) { 10405 var productId; 10406 var previousState; 10407 var currentState; 10408 10409 if (!card || card.nodeType !== 1) { 10410 return; 10411 } 10412 10413 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 10414 return; 10415 } 10416 10417 productId = normalizeProductId(card.getAttribute('data-id')); 10418 previousState = cardStates.get(card); 10419 10420 if (!productId) { 10421 clearBadge(card); 10422 cardStates.delete(card); 10423 return; 10424 } 10425 10426 if ( 10427 previousState && 10428 previousState.productId === productId && 10429 previousState.status === 'loading' 10430 ) { 10431 return; 10432 } 10433 10434 if ( 10435 previousState && 10436 previousState.productId === productId && 10437 previousState.status === 'processed' 10438 ) { 10439 if (!previousState.rule || findBadge(card)) { 10440 return; 10441 } 10442 } 10443 10444 if (!previousState || previousState.productId !== productId) { 10445 clearBadge(card); 10446 } 10447 10448 currentState = { 10449 productId: productId, 10450 status: 'loading', 10451 rule: null 10452 }; 10453 cardStates.set(card, currentState); 10454 10455 getRule(productId).then(function (rule) { 10456 var applied; 10457 10458 if ( 10459 cardStates.get(card) !== currentState || 10460 normalizeProductId(card.getAttribute('data-id')) !== productId 10461 ) { 10462 return; 10463 } 10464 10465 applied = applyBadge(card, productId, rule); 10466 currentState.rule = rule; 10467 currentState.status = applied ? 'processed' : 'waiting-image'; 10468 }); 10469 } 10470 10471 function scan(root) { 10472 var cards; 10473 var index; 10474 10475 if (!root) { 10476 return; 10477 } 10478 10479 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 10480 processCard(root); 10481 } 10482 10483 if (!root.querySelectorAll) { 10484 return; 10485 } 10486 10487 cards = root.querySelectorAll(CARD_SELECTOR); 10488 for (index = 0; index < cards.length; index += 1) { 10489 processCard(cards[index]); 10490 } 10491 } 10492 10493 function startObserver() { 10494 var observer; 10495 10496 if (!window.MutationObserver || !document.documentElement) { 10497 return; 10498 } 10499 10500 observer = new MutationObserver(function (mutations) { 10501 var mutationIndex; 10502 var nodeIndex; 10503 var mutation; 10504 var node; 10505 var ownerCard; 10506 10507 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 10508 mutation = mutations[mutationIndex]; 10509 10510 if (mutation.type === 'attributes') { 10511 processCard(mutation.target); 10512 continue; 10513 } 10514 10515 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 10516 node = mutation.addedNodes[nodeIndex]; 10517 if (node.nodeType !== 1) { 10518 continue; 10519 } 10520 10521 scan(node); 10522 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 10523 if (ownerCard) { 10524 processCard(ownerCard); 10525 } 10526 } 10527 } 10528 }); 10529 10530 observer.observe(document.documentElement, { 10531 childList: true, 10532 subtree: true, 10533 attributes: true, 10534 attributeFilter: ['data-id'] 10535 }); 10536 10537 window[GLOBAL_KEY].observer = observer; 10538 } 10539 10540 window[GLOBAL_KEY] = { 10541 version: '1.1.0', 10542 cache: cache, 10543 pending: pending, 10544 cardStates: cardStates, 10545 scan: scan, 10546 processCard: processCard, 10547 observer: null 10548 }; 10549 10550 document.addEventListener('load', onTrayScriptLoad, true); 10551 attachTrayAjaxCache(); 10552 injectStyles(); 10553 scan(document); 10554 startObserver(); 10555 10556 if (document.readyState === 'loading') { 10557 document.addEventListener('DOMContentLoaded', function () { 10558 attachTrayAjaxCache(); 10559 scan(document); 10560 }); 10561 } 10562}(window, document)); 10563</script>
10563 10564 </li> 10565 <li class="item flex"> 10566 10567 10568 10569 10570<div class="product animate open_cart" 10571 data-id="125245496" 10572 data-farmacam-related-categories=",Array,Array," 10573 data-ga4-id="125245496" 10574 data-ga4-name="Home Spray Pistache - Ambientalize - 200 ml" 10575 data-ga4-price="36.00" 10576 data-ga4-brand="Floral Thérapi" 10577 data-ga4-category="Tipo de Produto;Industrializados;" 10578 > 10579 10580 <div class="product-header"> 10581 10582 <div class="w-100"> 10583 10584 10585 10586 10587 10588 10589 10590 <div class="product-tags-circle"> 10591 10592 10593 <div class="tag-circle discount tag-icone tag-icone1"> 10594 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 10595 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 10596 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 10597 </svg> 10598 <span>Lançamento</span> 10599 </div> 10600 10601 <div class="tag-circle discount tag-icone tag-icone2"> 10602 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10603 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10604 </svg> 10605 <span>Destaque</span> 10606 </div> 10607 10608 </div> 10609 10610 10611 10612 <div class="product-tags " data-tags-count="2"> 10613 10614 10615 10616 10617 10618 </div> 10619 10620 10621 10622 <div class="image "> 10623 10624 <a title="Home Spray Pistache - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-pistache-ambientalize-200-ml" class="space-image"> 10625 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_pistache_ambientalize_200_ml_125245496_1_ae4c98cf64843b4a84324f763edbab8a.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_pistache_ambientalize_200_ml_125245496_1_ae4c98cf64843b4a84324f763edbab8a.png" alt="Home Spray Pistache - Ambientalize - 200 ml"> 10626 </a> 10627 10628 </div> 10629 10630 10631 10632 10633 10634 </div> 10635 10636 </div> 10637 10638 <div class="product-body"> 10639 10640 <a title="Home Spray Pistache - Ambientalize - 200 ml" class="product-info" href="https://www.farmacam.com.br/home-spray-pistache-ambientalize-200-ml"> 10641 10642 <div class="product-info-dados"> 10643 10644 10645 10646 10647 10648 10649 <div class="product-name"> 10650 Home Spray Pistache - Ambientalize - 200 ml 10651 </div> 10652 10653 10654 10655 <div class="product-price"> 10656 10657 10658 10659 10660 10661 10662<div class="price display-cash"> 10663 10664 10665 <span class="current-price "> 10666 R$ 36,00 10667 10668 </span> 10669
10670 <span class="product-installments"> 10671 10672 </span> 10673 10674</div> 10675 </div> 10676 10677 </div> 10678 10679 </a> 10680 10681 </div> 10682 10683 10684 <div class="product-footer"> 10685 10686 10687 <div class="w-100"> 10688 10689 10690 10691<div class="product-rating-catalog"> 10692 10693 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10694 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10695 </svg> 10696 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10697 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10698 </svg> 10699 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10700 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10701 </svg> 10702 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10703 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10704 </svg> 10705 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 10706 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 10707 </svg> 10708 10709 10710 <a title="Ver avaliações de Home Spray Pistache - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-pistache
10710-ambientalize-200-ml#comments" class="total"> 10711 Seja o primeiro 10712 </a> 10713 10714 </div> 10715 10716 <div class="compare-buttons"> 10717 10718 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245496" class="flex justify-center align-center compare-hidden" data-compare="remove"> 10719 <span class="filter-checkbox checked"></span> 10720 Remover Comparação 10721 </a> 10722 10723 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245496" class="flex justify-center align-center " data-compare="add"> 10724 <span class="filter-checkbox"></span> 10725 Comparar Produto 10726 </a> 10727 10728 </div> 10729 10730 10731 <div class="config-variacoes-compra"> 10732 10733 10734 10735 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245496"> 10736 <input type="hidden" name="product_id" value="125245496"> 10737 <input type="hidden" name="without_stock_sale" value=""> 10738 10739 <input type="hidden" name="estoque" value="10000"> 10740 10741 10742 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 10743 <div class="alerta-estoque"></div> 10744 <div class="alerta-adicionado"></div> 10745 10746 <div class="acao-compra"> 10747 10748 <div class="quantidade-box"> 10749 <div class="quantidade-box-input"> 10750 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="10000" /> 10751 </div> 10752 <div class="quantidade-box-controles"> 10753 <div class="quantidade-box-controles-itens" data-item="mais"> 10754 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 10755 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 10756 </svg> 10757 </div> 10758 <div class="quantidade-box-controles-itens" data-item="menus"> 10759 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 10760 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 10761 </svg> 10762 </div> 10763 </div> 10764 </div> 10765 10766 10767 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245496"> 10768 10769 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 10770 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 10771 10772 10773 10774 10775 10776 10777 <!-- Cesta de Compras --> 10778 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 10779 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 10780 </svg> 10781 10782 10783 10784 Comprar 10785 10786 10787 </button> 10788 <!-- </form> --> 10789 10790 </div> 10791 10792</div> 10793 10794 10795 </div> 10796 10797 </div> 10798 10799 10800</div> 10801
10802<script> 10803(function (window, document) { 10804 'use strict'; 10805 10806 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 10807 10808 if (window[GLOBAL_KEY]) { 10809 return; 10810 } 10811 10812 if (!window.Map || !window.WeakMap || !window.Promise) { 10813 return; 10814 } 10815 10816 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 10817 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 10818 '#vitrine-personalizada .product[data-id]'; 10819 var BADGE_CLASS = 'farmacam-prescription-badge'; 10820 var HOST_CLASS = 'farmacam-prescription-badge-host'; 10821 var MAX_CONCURRENT_REQUESTS = 6; 10822 var REQUEST_TIMEOUT_MS = 12000; 10823 10824 var rules = { 10825 '294': { 10826 level: '294', 10827 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 10828 }, 10829 '296': { 10830 level: '296', 10831 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 10832 }, 10833 '298': { 10834 level: '298', 10835 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 10836 } 10837 }; 10838 10839 var cache = new Map(); 10840 var pending = new Map(); 10841 var cardStates = new WeakMap(); 10842 var queue = []; 10843 var activeRequests = 0; 10844 var trayAjaxHooked = false; 10845 10846 function injectStyles() { 10847 if (document.getElementById('farmacam-prescription-cards-style')) { 10848 return; 10849 } 10850 10851 var style = document.createElement('style'); 10852 style.id = 'farmacam-prescription-cards-style'; 10853 style.textContent = [ 10854 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 10855 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 10856 'position:absolute!important;', 10857 'top:52px!important;', 10858 'left:10px!important;', 10859 'z-index:999!important;', 10860 'display:block!important;', 10861 'max-width:calc(100% - 20px)!important;', 10862 'box-sizing:border-box!important;', 10863 'padding:8px 12px!important;', 10864 'color:#fff!important;', 10865 'font-family:inherit!important;', 10866 'font-size:13px!important;', 10867 'font-weight:900!important;', 10868 'line-height:1.15!important;', 10869 'text-align:center!important;', 10870 'text-transform:uppercase!important;', 10871 'letter-spacing:.3px!important;', 10872 'white-space:normal!important;', 10873 'overflow-wrap:break-word!important;', 10874 'border-radius:3px!important;', 10875 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 10876 'pointer-events:none!important;', 10877 '}', 10878 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 10879 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 10880 'background:#d70008!important;', 10881 '}', 10882 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 10883 'background:#000!important;', 10884 '}', 10885 '@media (max-width:767px){', 10886 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 10887 'top:42px!important;', 10888 'left:6px!important;', 10889 'max-width:calc(100% - 12px)!important;', 10890 'padding:6px 8px!important;', 10891 'font-size:10px!important;', 10892 '}', 10893 '}' 10894 ].join(''); 10895 10896 (document.head || document.documentElement).appendChild(style); 10897 } 10898 10899 function normalizeProductId(value) { 10900 var id = String(value == null ? '' : value).trim(); 10901 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 10902 } 10903 10904 function classifyRelatedCategories(relatedCategories) { 10905 var found = { 10906 '292': false, 10907 '294': false, 10908 '296': false, 10909 '298': false 10910 }; 10911 10912 function inspect(value, depth) { 10913 var index; 10914 var normalized; 10915 10916 if (value == null || depth > 8) { 10917 return; 10918 } 10919 10920 if (Array.isArray(value)) { 10921 for (index = 0; index < value.length; index += 1) { 10922 inspect(value[index], depth + 1); 10923 } 10924 return; 10925 } 10926 10927 if (typeof value === 'object') { 10928 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 10929 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 10930 inspect(value.id, depth + 1); 10931 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 10932 inspect(value.category_id, depth + 1); 10933 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 10934 inspect(value.Category, depth + 1); 10935 } 10936 return; 10937 } 10938 10939 if (typeof value !== 'string' && typeof value !== 'number') { 10940 return; 10941 } 10942 normalized = normalizeProductId(value); 10943 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 10944 found[normalized] = true; 10945 } 10946 } 10947 10948 inspect(relatedCategories, 0); 10949 10950 if (found['298']) { 10951 return rules['298']; 10952 } 10953 if (found['296']) { 10954 return rules['296']; 10955 } 10956 if (found['294']) { 10957 return rules['294']; 10958 } 10959 10960 // 292 e qualquer classificacao desconhecida ficam sem tarja. 10961 return null; 10962 } 10963 10964 function ruleFromPayload(payload, productId) { 10965 var product = payload && payload.Product; 10966 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 10967 return null; 10968 } 10969 return classifyRelatedCategories(product && product.related_categories); 10970 } 10971 10972 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 10973 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 10974 function attachTrayAjaxCache() { 10975 var jq = window.jQuery; 10976 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 10977 return; 10978 } 10979
10980 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 10981 var url; 10982 var match; 10983 var productId; 10984 var payload; 10985 try { 10986 url = new URL(settings.url, window.location.href); 10987 if (url.origin !== window.location.origin) { 10988 return; 10989 } 10990 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 10991 if (!match) { 10992 return; 10993 } 10994 productId = normalizeProductId(match[1]); 10995 if (!cache.has(productId) && !pending.has(productId)) { 10996 payload = data || xhr.responseJSON; 10997 if (typeof payload === 'string') { 10998 payload = JSON.parse(payload); 10999 } 11000 if (!payload || !payload.Product || 11001 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 11002 return; 11003 } 11004 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 11005 return; 11006 } 11007 cache.set(productId, ruleFromPayload(payload, productId)); 11008 } 11009 } catch (error) { 11010 // Respostas de outras integracoes nao interferem nas tarjas. 11011 } 11012 }); 11013 11014 trayAjaxHooked = true; 11015 document.removeEventListener('load', onTrayScriptLoad, true); 11016 } 11017 11018 function onTrayScriptLoad(event) { 11019 if (event.target && event.target.tagName === 'SCRIPT') { 11020 attachTrayAjaxCache(); 11021 } 11022 } 11023 11024 function requestRule(productId) { 11025 var controller = null; 11026 var timeoutId = null; 11027 var options = { 11028 credentials: 'same-origin', 11029 headers: { 11030 'Accept': 'application/json' 11031 } 11032 }; 11033 var request; 11034 11035 if (typeof window.fetch !== 'function') { 11036 return Promise.resolve(null); 11037 } 11038 11039 if (typeof window.AbortController === 'function') { 11040 controller = new window.AbortController(); 11041 options.signal = controller.signal; 11042 timeoutId = window.setTimeout(function () { 11043 controller.abort(); 11044 }, REQUEST_TIMEOUT_MS); 11045 } 11046 11047 try { 11048 request = window.fetch( 11049 '/web_api/products/' + encodeURIComponent(productId), 11050 options 11051 ); 11052 } catch (error) { 11053 if (timeoutId !== null) { 11054 window.clearTimeout(timeoutId); 11055 } 11056 return Promise.resolve(null); 11057 } 11058 11059 return request.then(function (response) { 11060 if (!response.ok) { 11061 throw new Error('HTTP ' + response.status); 11062 } 11063 return response.json(); 11064 }).then(function (payload) { 11065 return ruleFromPayload(payload, productId); 11066 }).then(function (rule) { 11067 if (timeoutId !== null) { 11068 window.clearTimeout(timeoutId); 11069 } 11070 return rule; 11071 }, function () { 11072 if (timeoutId !== null) { 11073 window.clearTimeout(timeoutId); 11074 } 11075 11076 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 11077 return null; 11078 }); 11079 } 11080 11081 function finishJob(job, rule) { 11082 cache.set(job.productId, rule); 11083 pending.delete(job.productId); 11084 activeRequests -= 1; 11085 job.resolve(rule); 11086 pumpQueue(); 11087 } 11088 11089 function pumpQueue() { 11090 var job; 11091 11092 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 11093 job = queue.shift(); 11094 activeRequests += 1; 11095 11096 (function (currentJob) { 11097 requestRule(currentJob.productId).then(function (rule) { 11098 finishJob(currentJob, rule); 11099 }, function () { 11100 finishJob(currentJob, null); 11101 }); 11102 }(job)); 11103 } 11104 } 11105 11106 function getRule(productId) { 11107 var resolver; 11108 var promise; 11109 11110 if (cache.has(productId)) { 11111 return Promise.resolve(cache.get(productId)); 11112 } 11113 11114 if (pending.has(productId)) { 11115 return pending.get(productId); 11116 } 11117 11118 promise = new Promise(function (resolve) { 11119 resolver = resolve; 11120 }); 11121 11122 pending.set(productId, promise); 11123 queue.push({ 11124 productId: productId, 11125 resolve: resolver 11126 }); 11127 pumpQueue(); 11128 11129 return promise; 11130 } 11131 11132 function findBadge(card) { 11133 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 11134 } 11135 11136 function clearBadge(card) { 11137 var badge = findBadge(card); 11138 var image = card.querySelector('.product-header > .w-100 > .image'); 11139 11140 if (badge && badge.parentNode) { 11141 badge.parentNode.removeChild(badge); 11142 } 11143 11144 if (image) { 11145 image.classList.remove(HOST_CLASS); 11146 } 11147 11148 card.removeAttribute('data-farmacam-prescription-level'); 11149 } 11150 11151 function applyBadge(card, productId, rule) { 11152 var image; 11153 var badge; 11154 11155 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 11156 return false;
11157 } 11158 11159 clearBadge(card); 11160 11161 if (!rule) { 11162 return true; 11163 } 11164 11165 image = card.querySelector('.product-header > .w-100 > .image'); 11166 if (!image) { 11167 return false; 11168 } 11169 11170 badge = document.createElement('span'); 11171 badge.className = BADGE_CLASS; 11172 badge.setAttribute('data-farmacam-generated', 'true'); 11173 badge.setAttribute('data-farmacam-prescription-level', rule.level); 11174 badge.setAttribute('role', 'note'); 11175 badge.textContent = rule.text; 11176 11177 image.classList.add(HOST_CLASS); 11178 image.insertBefore(badge, image.firstChild); 11179 card.setAttribute('data-farmacam-prescription-level', rule.level); 11180 11181 return true; 11182 } 11183 11184 function processCard(card) { 11185 var productId; 11186 var previousState; 11187 var currentState; 11188 11189 if (!card || card.nodeType !== 1) { 11190 return; 11191 } 11192 11193 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 11194 return; 11195 } 11196 11197 productId = normalizeProductId(card.getAttribute('data-id')); 11198 previousState = cardStates.get(card); 11199 11200 if (!productId) { 11201 clearBadge(card); 11202 cardStates.delete(card); 11203 return; 11204 } 11205 11206 if ( 11207 previousState && 11208 previousState.productId === productId && 11209 previousState.status === 'loading' 11210 ) { 11211 return; 11212 } 11213 11214 if ( 11215 previousState && 11216 previousState.productId === productId && 11217 previousState.status === 'processed' 11218 ) { 11219 if (!previousState.rule || findBadge(card)) { 11220 return; 11221 } 11222 } 11223 11224 if (!previousState || previousState.productId !== productId) { 11225 clearBadge(card); 11226 } 11227 11228 currentState = { 11229 productId: productId, 11230 status: 'loading', 11231 rule: null 11232 }; 11233 cardStates.set(card, currentState); 11234 11235 getRule(productId).then(function (rule) { 11236 var applied; 11237 11238 if ( 11239 cardStates.get(card) !== currentState || 11240 normalizeProductId(card.getAttribute('data-id')) !== productId 11241 ) { 11242 return; 11243 } 11244 11245 applied = applyBadge(card, productId, rule); 11246 currentState.rule = rule; 11247 currentState.status = applied ? 'processed' : 'waiting-image'; 11248 }); 11249 } 11250 11251 function scan(root) { 11252 var cards; 11253 var index; 11254 11255 if (!root) { 11256 return; 11257 } 11258 11259 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 11260 processCard(root); 11261 } 11262 11263 if (!root.querySelectorAll) { 11264 return; 11265 } 11266 11267 cards = root.querySelectorAll(CARD_SELECTOR); 11268 for (index = 0; index < cards.length; index += 1) { 11269 processCard(cards[index]); 11270 } 11271 } 11272 11273 function startObserver() { 11274 var observer; 11275 11276 if (!window.MutationObserver || !document.documentElement) { 11277 return; 11278 } 11279 11280 observer = new MutationObserver(function (mutations) { 11281 var mutationIndex; 11282 var nodeIndex; 11283 var mutation; 11284 var node; 11285 var ownerCard; 11286 11287 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 11288 mutation = mutations[mutationIndex]; 11289 11290 if (mutation.type === 'attributes') { 11291 processCard(mutation.target); 11292 continue; 11293 } 11294 11295 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 11296 node = mutation.addedNodes[nodeIndex]; 11297 if (node.nodeType !== 1) { 11298 continue; 11299 } 11300 11301 scan(node); 11302 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 11303 if (ownerCard) { 11304 processCard(ownerCard); 11305 } 11306 } 11307 } 11308 }); 11309 11310 observer.observe(document.documentElement, { 11311 childList: true, 11312 subtree: true, 11313 attributes: true, 11314 attributeFilter: ['data-id'] 11315 }); 11316 11317 window[GLOBAL_KEY].observer = observer; 11318 } 11319 11320 window[GLOBAL_KEY] = { 11321 version: '1.1.0', 11322 cache: cache, 11323 pending: pending, 11324 cardStates: cardStates, 11325 scan: scan, 11326 processCard: processCard, 11327 observer: null 11328 }; 11329 11330 document.addEventListener('load', onTrayScriptLoad, true); 11331 attachTrayAjaxCache(); 11332 injectStyles(); 11333 scan(document); 11334 startObserver(); 11335 11336 if (document.readyState === 'loading') { 11337 document.addEventListener('DOMContentLoaded', function () { 11338 attachTrayAjaxCache(); 11339 scan(document); 11340 }); 11341 } 11342}(window, document)); 11343</script>
11343 11344 </li> 11345 <li class="item flex"> 11346 11347 11348 11349 11350<div class="product animate open_cart" 11351 data-id="125245494" 11352 data-farmacam-related-categories=",Array,Array," 11353 data-ga4-id="125245494" 11354 data-ga4-name="Home Spray Lemon Aqua - Ambientalize - 200 ml" 11355 data-ga4-price="36.00" 11356 data-ga4-brand="Floral Thérapi" 11357 data-ga4-category="Tipo de Produto;Industrializados;" 11358 > 11359 11360 <div class="product-header"> 11361 11362 <div class="w-100"> 11363 11364 11365 11366 11367 11368 11369 11370 <div class="product-tags-circle"> 11371 11372 11373 <div class="tag-circle discount tag-icone tag-icone1"> 11374 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 11375 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 11376 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 11377 </svg> 11378 <span>Lançamento</span> 11379 </div> 11380 11381 <div class="tag-circle discount tag-icone tag-icone2"> 11382 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11383 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11384 </svg> 11385 <span>Destaque</span> 11386 </div> 11387 11388 </div> 11389 11390 11391 11392 <div class="product-tags " data-tags-count="2"> 11393 11394 11395 11396 11397 11398 </div> 11399 11400 11401 11402 <div class="image "> 11403 11404 <a title="Home Spray Lemon Aqua - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-lemon-aqua-ambientalize-200-ml" class="space-image"> 11405 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_lemon_aqua_ambientalize_200_ml_125245494_1_02a47a15f80cde8a594c88d97def64ec.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_lemon_aqua_ambientalize_200_ml_125245494_1_02a47a15f80cde8a594c88d97def64ec.png" alt="Home Spray Lemon Aqua - Ambientalize - 200 ml"> 11406 </a> 11407 11408 </div> 11409 11410 11411 11412 11413 11414 </div> 11415 11416 </div> 11417 11418 <div class="product-body"> 11419 11420 <a title="Home Spray Lemon Aqua - Ambientalize - 200 ml" class="product-info" href="https://www.farmacam.com.br/home-spray-lemon-aqua-ambientalize-200-ml"> 11421 11422 <div class="product-info-dados"> 11423 11424 11425 11426 11427 11428 11429 <div class="product-name"> 11430 Home Spray Lemon Aqua - Ambientalize - 200 ml 11431 </div> 11432 11433 11434 11435 <div class="product-price"> 11436 11437 11438 11439 11440 11441 11442<div class="price display-cash"> 11443 11444 11445 <span class="current-price "> 11446 R$ 36,00 11447 11448 </span> 11449
11450 <span class="product-installments"> 11451 11452 </span> 11453 11454</div> 11455 </div> 11456 11457 </div> 11458 11459 </a> 11460 11461 </div> 11462 11463 11464 <div class="product-footer"> 11465 11466 11467 <div class="w-100"> 11468 11469 11470 11471<div class="product-rating-catalog"> 11472 11473 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11474 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11475 </svg> 11476 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11477 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11478 </svg> 11479 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11480 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11481 </svg> 11482 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11483 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11484 </svg> 11485 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 11486 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 11487 </svg> 11488 11489 11490 <a title="Ver avaliações de Home Spray Lemon Aqua - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-lemon-aqua-ambientalize-200-ml#comments" class="total"> 11491 Seja o primeiro 11492 </a> 11493 11494 </div> 11495 11496 <div class="compare-buttons"> 11497 11498 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245494" class="flex justify-center align-center compare-hidden" data-compare="remove">
11499 <span class="filter-checkbox checked"></span> 11500 Remover Comparação 11501 </a> 11502 11503 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245494" class="flex justify-center align-center " data-compare="add"> 11504 <span class="filter-checkbox"></span> 11505 Comparar Produto 11506 </a> 11507 11508 </div> 11509 11510 11511 <div class="config-variacoes-compra"> 11512 11513 11514 11515 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245494"> 11516 <input type="hidden" name="product_id" value="125245494"> 11517 <input type="hidden" name="without_stock_sale" value=""> 11518 11519 <input type="hidden" name="estoque" value="10000"> 11520 11521 11522 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 11523 <div class="alerta-estoque"></div> 11524 <div class="alerta-adicionado"></div> 11525 11526 <div class="acao-compra"> 11527 11528 <div class="quantidade-box"> 11529 <div class="quantidade-box-input"> 11530 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="10000" /> 11531 </div> 11532 <div class="quantidade-box-controles"> 11533 <div class="quantidade-box-controles-itens" data-item="mais"> 11534 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 11535 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 11536 </svg> 11537 </div> 11538 <div class="quantidade-box-controles-itens" data-item="menus"> 11539 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 11540 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 11541 </svg> 11542 </div> 11543 </div> 11544 </div> 11545 11546 11547 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245494"> 11548 11549 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 11550 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 11551 11552 11553 11554 11555 11556 11557 <!-- Cesta de Compras --> 11558 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 11559 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 11560 </svg> 11561 11562 11563 11564 Comprar 11565 11566 11567 </button> 11568 <!-- </form> --> 11569 11570 </div> 11571 11572</div> 11573 11574 11575 </div> 11576 11577 </div> 11578 11579 11580</div> 11581
11582<script> 11583(function (window, document) { 11584 'use strict'; 11585 11586 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 11587 11588 if (window[GLOBAL_KEY]) { 11589 return; 11590 } 11591 11592 if (!window.Map || !window.WeakMap || !window.Promise) { 11593 return; 11594 } 11595 11596 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 11597 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 11598 '#vitrine-personalizada .product[data-id]'; 11599 var BADGE_CLASS = 'farmacam-prescription-badge'; 11600 var HOST_CLASS = 'farmacam-prescription-badge-host'; 11601 var MAX_CONCURRENT_REQUESTS = 6; 11602 var REQUEST_TIMEOUT_MS = 12000; 11603 11604 var rules = { 11605 '294': { 11606 level: '294', 11607 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 11608 }, 11609 '296': { 11610 level: '296', 11611 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 11612 }, 11613 '298': { 11614 level: '298', 11615 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 11616 } 11617 }; 11618 11619 var cache = new Map(); 11620 var pending = new Map(); 11621 var cardStates = new WeakMap(); 11622 var queue = []; 11623 var activeRequests = 0; 11624 var trayAjaxHooked = false; 11625 11626 function injectStyles() { 11627 if (document.getElementById('farmacam-prescription-cards-style')) { 11628 return; 11629 } 11630 11631 var style = document.createElement('style'); 11632 style.id = 'farmacam-prescription-cards-style'; 11633 style.textContent = [ 11634 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 11635 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 11636 'position:absolute!important;', 11637 'top:52px!important;', 11638 'left:10px!important;', 11639 'z-index:999!important;', 11640 'display:block!important;', 11641 'max-width:calc(100% - 20px)!important;', 11642 'box-sizing:border-box!important;', 11643 'padding:8px 12px!important;', 11644 'color:#fff!important;', 11645 'font-family:inherit!important;', 11646 'font-size:13px!important;', 11647 'font-weight:900!important;', 11648 'line-height:1.15!important;', 11649 'text-align:center!important;', 11650 'text-transform:uppercase!important;', 11651 'letter-spacing:.3px!important;', 11652 'white-space:normal!important;', 11653 'overflow-wrap:break-word!important;', 11654 'border-radius:3px!important;', 11655 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 11656 'pointer-events:none!important;', 11657 '}', 11658 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 11659 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 11660 'background:#d70008!important;', 11661 '}', 11662 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 11663 'background:#000!important;', 11664 '}', 11665 '@media (max-width:767px){', 11666 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 11667 'top:42px!important;', 11668 'left:6px!important;', 11669 'max-width:calc(100% - 12px)!important;', 11670 'padding:6px 8px!important;', 11671 'font-size:10px!important;', 11672 '}', 11673 '}' 11674 ].join(''); 11675 11676 (document.head || document.documentElement).appendChild(style); 11677 } 11678 11679 function normalizeProductId(value) { 11680 var id = String(value == null ? '' : value).trim(); 11681 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 11682 } 11683 11684 function classifyRelatedCategories(relatedCategories) { 11685 var found = { 11686 '292': false, 11687 '294': false, 11688 '296': false, 11689 '298': false 11690 }; 11691 11692 function inspect(value, depth) { 11693 var index; 11694 var normalized; 11695 11696 if (value == null || depth > 8) { 11697 return; 11698 } 11699 11700 if (Array.isArray(value)) { 11701 for (index = 0; index < value.length; index += 1) { 11702 inspect(value[index], depth + 1); 11703 } 11704 return; 11705 } 11706 11707 if (typeof value === 'object') { 11708 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 11709 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 11710 inspect(value.id, depth + 1); 11711 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 11712 inspect(value.category_id, depth + 1); 11713 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 11714 inspect(value.Category, depth + 1); 11715 } 11716 return; 11717 } 11718 11719 if (typeof value !== 'string' && typeof value !== 'number') { 11720 return; 11721 } 11722 normalized = normalizeProductId(value); 11723 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 11724 found[normalized] = true; 11725 } 11726 } 11727 11728 inspect(relatedCategories, 0); 11729 11730 if (found['298']) { 11731 return rules['298']; 11732 } 11733 if (found['296']) { 11734 return rules['296']; 11735 } 11736 if (found['294']) { 11737 return rules['294']; 11738 } 11739 11740 // 292 e qualquer classificacao desconhecida ficam sem tarja. 11741 return null; 11742 } 11743 11744 function ruleFromPayload(payload, productId) { 11745 var product = payload && payload.Product; 11746 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 11747 return null; 11748 } 11749 return classifyRelatedCategories(product && product.related_categories); 11750 } 11751 11752 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 11753 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 11754 function attachTrayAjaxCache() { 11755 var jq = window.jQuery; 11756 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 11757 return; 11758 } 11759
11760 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 11761 var url; 11762 var match; 11763 var productId; 11764 var payload; 11765 try { 11766 url = new URL(settings.url, window.location.href); 11767 if (url.origin !== window.location.origin) { 11768 return; 11769 } 11770 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 11771 if (!match) { 11772 return; 11773 } 11774 productId = normalizeProductId(match[1]); 11775 if (!cache.has(productId) && !pending.has(productId)) { 11776 payload = data || xhr.responseJSON; 11777 if (typeof payload === 'string') { 11778 payload = JSON.parse(payload); 11779 } 11780 if (!payload || !payload.Product || 11781 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 11782 return; 11783 } 11784 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 11785 return; 11786 } 11787 cache.set(productId, ruleFromPayload(payload, productId)); 11788 } 11789 } catch (error) { 11790 // Respostas de outras integracoes nao interferem nas tarjas. 11791 } 11792 }); 11793 11794 trayAjaxHooked = true; 11795 document.removeEventListener('load', onTrayScriptLoad, true); 11796 } 11797 11798 function onTrayScriptLoad(event) { 11799 if (event.target && event.target.tagName === 'SCRIPT') { 11800 attachTrayAjaxCache(); 11801 } 11802 } 11803 11804 function requestRule(productId) { 11805 var controller = null; 11806 var timeoutId = null; 11807 var options = { 11808 credentials: 'same-origin', 11809 headers: { 11810 'Accept': 'application/json' 11811 } 11812 }; 11813 var request; 11814 11815 if (typeof window.fetch !== 'function') { 11816 return Promise.resolve(null); 11817 } 11818 11819 if (typeof window.AbortController === 'function') { 11820 controller = new window.AbortController(); 11821 options.signal = controller.signal; 11822 timeoutId = window.setTimeout(function () { 11823 controller.abort(); 11824 }, REQUEST_TIMEOUT_MS); 11825 } 11826 11827 try { 11828 request = window.fetch( 11829 '/web_api/products/' + encodeURIComponent(productId), 11830 options 11831 ); 11832 } catch (error) { 11833 if (timeoutId !== null) { 11834 window.clearTimeout(timeoutId); 11835 } 11836 return Promise.resolve(null); 11837 } 11838 11839 return request.then(function (response) { 11840 if (!response.ok) { 11841 throw new Error('HTTP ' + response.status); 11842 } 11843 return response.json(); 11844 }).then(function (payload) { 11845 return ruleFromPayload(payload, productId); 11846 }).then(function (rule) { 11847 if (timeoutId !== null) { 11848 window.clearTimeout(timeoutId); 11849 } 11850 return rule; 11851 }, function () { 11852 if (timeoutId !== null) { 11853 window.clearTimeout(timeoutId); 11854 } 11855 11856 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 11857 return null; 11858 }); 11859 } 11860 11861 function finishJob(job, rule) { 11862 cache.set(job.productId, rule); 11863 pending.delete(job.productId); 11864 activeRequests -= 1; 11865 job.resolve(rule); 11866 pumpQueue(); 11867 } 11868 11869 function pumpQueue() { 11870 var job; 11871 11872 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 11873 job = queue.shift(); 11874 activeRequests += 1; 11875 11876 (function (currentJob) { 11877 requestRule(currentJob.productId).then(function (rule) { 11878 finishJob(currentJob, rule); 11879 }, function () { 11880 finishJob(currentJob, null); 11881 }); 11882 }(job)); 11883 } 11884 } 11885 11886 function getRule(productId) { 11887 var resolver; 11888 var promise; 11889 11890 if (cache.has(productId)) { 11891 return Promise.resolve(cache.get(productId)); 11892 } 11893 11894 if (pending.has(productId)) { 11895 return pending.get(productId); 11896 } 11897 11898 promise = new Promise(function (resolve) { 11899 resolver = resolve; 11900 }); 11901 11902 pending.set(productId, promise); 11903 queue.push({ 11904 productId: productId, 11905 resolve: resolver 11906 }); 11907 pumpQueue(); 11908 11909 return promise; 11910 } 11911 11912 function findBadge(card) { 11913 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 11914 } 11915 11916 function clearBadge(card) { 11917 var badge = findBadge(card); 11918 var image = card.querySelector('.product-header > .w-100 > .image'); 11919 11920 if (badge && badge.parentNode) { 11921 badge.parentNode.removeChild(badge); 11922 } 11923 11924 if (image) { 11925 image.classList.remove(HOST_CLASS); 11926 } 11927 11928 card.removeAttribute('data-farmacam-prescription-level'); 11929 } 11930 11931 function applyBadge(card, productId, rule) { 11932 var image; 11933 var badge; 11934 11935 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 11936 return false;
11937 } 11938 11939 clearBadge(card); 11940 11941 if (!rule) { 11942 return true; 11943 } 11944 11945 image = card.querySelector('.product-header > .w-100 > .image'); 11946 if (!image) { 11947 return false; 11948 } 11949 11950 badge = document.createElement('span'); 11951 badge.className = BADGE_CLASS; 11952 badge.setAttribute('data-farmacam-generated', 'true'); 11953 badge.setAttribute('data-farmacam-prescription-level', rule.level); 11954 badge.setAttribute('role', 'note'); 11955 badge.textContent = rule.text; 11956 11957 image.classList.add(HOST_CLASS); 11958 image.insertBefore(badge, image.firstChild); 11959 card.setAttribute('data-farmacam-prescription-level', rule.level); 11960 11961 return true; 11962 } 11963 11964 function processCard(card) { 11965 var productId; 11966 var previousState; 11967 var currentState; 11968 11969 if (!card || card.nodeType !== 1) { 11970 return; 11971 } 11972 11973 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 11974 return; 11975 } 11976 11977 productId = normalizeProductId(card.getAttribute('data-id')); 11978 previousState = cardStates.get(card); 11979 11980 if (!productId) { 11981 clearBadge(card); 11982 cardStates.delete(card); 11983 return; 11984 } 11985 11986 if ( 11987 previousState && 11988 previousState.productId === productId && 11989 previousState.status === 'loading' 11990 ) { 11991 return; 11992 } 11993 11994 if ( 11995 previousState && 11996 previousState.productId === productId && 11997 previousState.status === 'processed' 11998 ) { 11999 if (!previousState.rule || findBadge(card)) { 12000 return; 12001 } 12002 } 12003 12004 if (!previousState || previousState.productId !== productId) { 12005 clearBadge(card); 12006 } 12007 12008 currentState = { 12009 productId: productId, 12010 status: 'loading', 12011 rule: null 12012 }; 12013 cardStates.set(card, currentState); 12014 12015 getRule(productId).then(function (rule) { 12016 var applied; 12017 12018 if ( 12019 cardStates.get(card) !== currentState || 12020 normalizeProductId(card.getAttribute('data-id')) !== productId 12021 ) { 12022 return; 12023 } 12024 12025 applied = applyBadge(card, productId, rule); 12026 currentState.rule = rule; 12027 currentState.status = applied ? 'processed' : 'waiting-image'; 12028 }); 12029 } 12030 12031 function scan(root) { 12032 var cards; 12033 var index; 12034 12035 if (!root) { 12036 return; 12037 } 12038 12039 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 12040 processCard(root); 12041 } 12042 12043 if (!root.querySelectorAll) { 12044 return; 12045 } 12046 12047 cards = root.querySelectorAll(CARD_SELECTOR); 12048 for (index = 0; index < cards.length; index += 1) { 12049 processCard(cards[index]); 12050 } 12051 } 12052 12053 function startObserver() { 12054 var observer; 12055 12056 if (!window.MutationObserver || !document.documentElement) { 12057 return; 12058 } 12059 12060 observer = new MutationObserver(function (mutations) { 12061 var mutationIndex; 12062 var nodeIndex; 12063 var mutation; 12064 var node; 12065 var ownerCard; 12066 12067 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 12068 mutation = mutations[mutationIndex]; 12069 12070 if (mutation.type === 'attributes') { 12071 processCard(mutation.target); 12072 continue; 12073 } 12074 12075 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 12076 node = mutation.addedNodes[nodeIndex]; 12077 if (node.nodeType !== 1) { 12078 continue; 12079 } 12080 12081 scan(node); 12082 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 12083 if (ownerCard) { 12084 processCard(ownerCard); 12085 } 12086 } 12087 } 12088 }); 12089 12090 observer.observe(document.documentElement, { 12091 childList: true, 12092 subtree: true, 12093 attributes: true, 12094 attributeFilter: ['data-id'] 12095 }); 12096 12097 window[GLOBAL_KEY].observer = observer; 12098 } 12099 12100 window[GLOBAL_KEY] = { 12101 version: '1.1.0', 12102 cache: cache, 12103 pending: pending, 12104 cardStates: cardStates, 12105 scan: scan, 12106 processCard: processCard, 12107 observer: null 12108 }; 12109 12110 document.addEventListener('load', onTrayScriptLoad, true); 12111 attachTrayAjaxCache(); 12112 injectStyles(); 12113 scan(document); 12114 startObserver(); 12115 12116 if (document.readyState === 'loading') { 12117 document.addEventListener('DOMContentLoaded', function () { 12118 attachTrayAjaxCache(); 12119 scan(document); 12120 }); 12121 } 12122}(window, document)); 12123</script>
12123 12124 </li> 12125 <li class="item flex"> 12126 12127 12128 12129 12130<div class="product animate open_cart" 12131 data-id="125245492" 12132 data-farmacam-related-categories=",Array,Array," 12133 data-ga4-id="125245492" 12134 data-ga4-name="Home Spray Thérapi - Ambientalize - 200 ml" 12135 data-ga4-price="36.00" 12136 data-ga4-brand="Floral Thérapi" 12137 data-ga4-category="Tipo de Produto;Industrializados;" 12138 > 12139 12140 <div class="product-header"> 12141 12142 <div class="w-100"> 12143 12144 12145 12146 12147 12148 12149 12150 <div class="product-tags-circle"> 12151 12152 12153 <div class="tag-circle discount tag-icone tag-icone1"> 12154 <svg fill="none" height="16" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 12155 <path stroke-linecap="round" stroke-linejoin="round" d="M15.362 5.214A8.252 8.252 0 0112 21 8.25 8.25 0 016.038 7.048 8.287 8.287 0 009 9.6a8.983 8.983 0 013.361-6.867 8.21 8.21 0 003 2.48z"></path> 12156 <path stroke-linecap="round" stroke-linejoin="round" d="M12 18a3.75 3.75 0 00.495-7.467 5.99 5.99 0 00-1.925 3.546 5.974 5.974 0 01-2.133-1A3.75 3.75 0 0012 18z"></path> 12157 </svg> 12158 <span>Lançamento</span> 12159 </div> 12160 12161 <div class="tag-circle discount tag-icone tag-icone2"> 12162 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12163 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12164 </svg> 12165 <span>Destaque</span> 12166 </div> 12167 12168 </div> 12169 12170 12171 12172 <div class="product-tags " data-tags-count="2"> 12173 12174 12175 12176 12177 12178 </div> 12179 12180 12181 12182 <div class="image "> 12183 12184 <a title="Home Spray Thérapi - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-therapi-ambientalize-200-ml" class="space-image"> 12185 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_therapi_ambientalize_200_ml_125245492_1_df0e977b40652a089ced04326085d683.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/home_spray_therapi_ambientalize_200_ml_125245492_1_df0e977b40652a089ced04326085d683.png" alt="Home Spray Thérapi - Ambientalize - 200 ml"> 12186 </a> 12187 12188 </div> 12189 12190 12191 12192 12193 12194 </div> 12195 12196 </div> 12197 12198 <div class="product-body"> 12199 12200 <a title="Home Spray Thérapi - Ambientalize - 200 ml" class="product-info" href="https://www.farmacam.com.br/home-spray-therapi-ambientalize-200-ml"> 12201 12202 <div class="product-info-dados"> 12203 12204 12205 12206 12207 12208 12209 <div class="product-name"> 12210 Home Spray Thérapi - Ambientalize - 200 ml 12211 </div> 12212 12213 12214 12215 <div class="product-price"> 12216 12217 12218 12219 12220 12221 12222<div class="price display-cash"> 12223 12224 12225 <span class="current-price "> 12226 R$ 36,00 12227 12228 </span> 12229
12230 <span class="product-installments"> 12231 12232 </span> 12233 12234</div> 12235 </div> 12236 12237 </div> 12238 12239 </a> 12240 12241 </div> 12242 12243 12244 <div class="product-footer"> 12245 12246 12247 <div class="w-100"> 12248 12249 12250 12251<div class="product-rating-catalog"> 12252 12253 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12254 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12255 </svg> 12256 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12257 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12258 </svg> 12259 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12260 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12261 </svg> 12262 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12263 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12264 </svg> 12265 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 12266 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 12267 </svg> 12268 12269 12270 <a title="Ver avaliações de Home Spray Thérapi - Ambientalize - 200 ml" href="https://www.farmacam.com.br/home-spray-therapi-ambientalize-200-ml#comments" class="total"> 12271 Seja o primeiro 12272 </a> 12273 12274 </div> 12275 12276 <div class="compare-buttons"> 12277 12278 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245492" class="flex justify-center align-center compare-hidden" data-compare="remove">
12279 <span class="filter-checkbox checked"></span> 12280 Remover Comparação 12281 </a> 12282 12283 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245492" class="flex justify-center align-center " data-compare="add"> 12284 <span class="filter-checkbox"></span> 12285 Comparar Produto 12286 </a> 12287 12288 </div> 12289 12290 12291 <div class="config-variacoes-compra"> 12292 12293 12294 12295 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245492"> 12296 <input type="hidden" name="product_id" value="125245492"> 12297 <input type="hidden" name="without_stock_sale" value=""> 12298 12299 <input type="hidden" name="estoque" value="10000"> 12300 12301 12302 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 12303 <div class="alerta-estoque"></div> 12304 <div class="alerta-adicionado"></div> 12305 12306 <div class="acao-compra"> 12307 12308 <div class="quantidade-box"> 12309 <div class="quantidade-box-input"> 12310 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="10000" /> 12311 </div> 12312 <div class="quantidade-box-controles"> 12313 <div class="quantidade-box-controles-itens" data-item="mais"> 12314 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 12315 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 12316 </svg> 12317 </div> 12318 <div class="quantidade-box-controles-itens" data-item="menus"> 12319 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 12320 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 12321 </svg> 12322 </div> 12323 </div> 12324 </div> 12325 12326 12327 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245492"> 12328 12329 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 12330 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 12331 12332 12333 12334 12335 12336 12337 <!-- Cesta de Compras --> 12338 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 12339 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 12340 </svg> 12341 12342 12343 12344 Comprar 12345 12346 12347 </button> 12348 <!-- </form> --> 12349 12350 </div> 12351 12352</div> 12353 12354 12355 </div> 12356 12357 </div> 12358 12359 12360</div> 12361
12362<script> 12363(function (window, document) { 12364 'use strict'; 12365 12366 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 12367 12368 if (window[GLOBAL_KEY]) { 12369 return; 12370 } 12371 12372 if (!window.Map || !window.WeakMap || !window.Promise) { 12373 return; 12374 } 12375 12376 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 12377 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 12378 '#vitrine-personalizada .product[data-id]'; 12379 var BADGE_CLASS = 'farmacam-prescription-badge'; 12380 var HOST_CLASS = 'farmacam-prescription-badge-host'; 12381 var MAX_CONCURRENT_REQUESTS = 6; 12382 var REQUEST_TIMEOUT_MS = 12000; 12383 12384 var rules = { 12385 '294': { 12386 level: '294', 12387 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 12388 }, 12389 '296': { 12390 level: '296', 12391 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 12392 }, 12393 '298': { 12394 level: '298', 12395 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 12396 } 12397 }; 12398 12399 var cache = new Map(); 12400 var pending = new Map(); 12401 var cardStates = new WeakMap(); 12402 var queue = []; 12403 var activeRequests = 0; 12404 var trayAjaxHooked = false; 12405 12406 function injectStyles() { 12407 if (document.getElementById('farmacam-prescription-cards-style')) { 12408 return; 12409 } 12410 12411 var style = document.createElement('style'); 12412 style.id = 'farmacam-prescription-cards-style'; 12413 style.textContent = [ 12414 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 12415 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 12416 'position:absolute!important;', 12417 'top:52px!important;', 12418 'left:10px!important;', 12419 'z-index:999!important;', 12420 'display:block!important;', 12421 'max-width:calc(100% - 20px)!important;', 12422 'box-sizing:border-box!important;', 12423 'padding:8px 12px!important;', 12424 'color:#fff!important;', 12425 'font-family:inherit!important;', 12426 'font-size:13px!important;', 12427 'font-weight:900!important;', 12428 'line-height:1.15!important;', 12429 'text-align:center!important;', 12430 'text-transform:uppercase!important;', 12431 'letter-spacing:.3px!important;', 12432 'white-space:normal!important;', 12433 'overflow-wrap:break-word!important;', 12434 'border-radius:3px!important;', 12435 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 12436 'pointer-events:none!important;', 12437 '}', 12438 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 12439 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 12440 'background:#d70008!important;', 12441 '}', 12442 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 12443 'background:#000!important;', 12444 '}', 12445 '@media (max-width:767px){', 12446 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 12447 'top:42px!important;', 12448 'left:6px!important;', 12449 'max-width:calc(100% - 12px)!important;', 12450 'padding:6px 8px!important;', 12451 'font-size:10px!important;', 12452 '}', 12453 '}' 12454 ].join(''); 12455 12456 (document.head || document.documentElement).appendChild(style); 12457 } 12458 12459 function normalizeProductId(value) { 12460 var id = String(value == null ? '' : value).trim(); 12461 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 12462 } 12463 12464 function classifyRelatedCategories(relatedCategories) { 12465 var found = { 12466 '292': false, 12467 '294': false, 12468 '296': false, 12469 '298': false 12470 }; 12471 12472 function inspect(value, depth) { 12473 var index; 12474 var normalized; 12475 12476 if (value == null || depth > 8) { 12477 return; 12478 } 12479 12480 if (Array.isArray(value)) { 12481 for (index = 0; index < value.length; index += 1) { 12482 inspect(value[index], depth + 1); 12483 } 12484 return; 12485 } 12486 12487 if (typeof value === 'object') { 12488 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 12489 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 12490 inspect(value.id, depth + 1); 12491 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 12492 inspect(value.category_id, depth + 1); 12493 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 12494 inspect(value.Category, depth + 1); 12495 } 12496 return; 12497 } 12498 12499 if (typeof value !== 'string' && typeof value !== 'number') { 12500 return; 12501 } 12502 normalized = normalizeProductId(value); 12503 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 12504 found[normalized] = true; 12505 } 12506 } 12507 12508 inspect(relatedCategories, 0); 12509 12510 if (found['298']) { 12511 return rules['298']; 12512 } 12513 if (found['296']) { 12514 return rules['296']; 12515 } 12516 if (found['294']) { 12517 return rules['294']; 12518 } 12519 12520 // 292 e qualquer classificacao desconhecida ficam sem tarja. 12521 return null; 12522 } 12523 12524 function ruleFromPayload(payload, productId) { 12525 var product = payload && payload.Product; 12526 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 12527 return null; 12528 } 12529 return classifyRelatedCategories(product && product.related_categories); 12530 } 12531 12532 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 12533 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 12534 function attachTrayAjaxCache() { 12535 var jq = window.jQuery; 12536 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 12537 return; 12538 } 12539
12540 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 12541 var url; 12542 var match; 12543 var productId; 12544 var payload; 12545 try { 12546 url = new URL(settings.url, window.location.href); 12547 if (url.origin !== window.location.origin) { 12548 return; 12549 } 12550 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 12551 if (!match) { 12552 return; 12553 } 12554 productId = normalizeProductId(match[1]); 12555 if (!cache.has(productId) && !pending.has(productId)) { 12556 payload = data || xhr.responseJSON; 12557 if (typeof payload === 'string') { 12558 payload = JSON.parse(payload); 12559 } 12560 if (!payload || !payload.Product || 12561 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 12562 return; 12563 } 12564 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 12565 return; 12566 } 12567 cache.set(productId, ruleFromPayload(payload, productId)); 12568 } 12569 } catch (error) { 12570 // Respostas de outras integracoes nao interferem nas tarjas. 12571 } 12572 }); 12573 12574 trayAjaxHooked = true; 12575 document.removeEventListener('load', onTrayScriptLoad, true); 12576 } 12577 12578 function onTrayScriptLoad(event) { 12579 if (event.target && event.target.tagName === 'SCRIPT') { 12580 attachTrayAjaxCache(); 12581 } 12582 } 12583 12584 function requestRule(productId) { 12585 var controller = null; 12586 var timeoutId = null; 12587 var options = { 12588 credentials: 'same-origin', 12589 headers: { 12590 'Accept': 'application/json' 12591 } 12592 }; 12593 var request; 12594 12595 if (typeof window.fetch !== 'function') { 12596 return Promise.resolve(null); 12597 } 12598 12599 if (typeof window.AbortController === 'function') { 12600 controller = new window.AbortController(); 12601 options.signal = controller.signal; 12602 timeoutId = window.setTimeout(function () { 12603 controller.abort(); 12604 }, REQUEST_TIMEOUT_MS); 12605 } 12606 12607 try { 12608 request = window.fetch( 12609 '/web_api/products/' + encodeURIComponent(productId), 12610 options 12611 ); 12612 } catch (error) { 12613 if (timeoutId !== null) { 12614 window.clearTimeout(timeoutId); 12615 } 12616 return Promise.resolve(null); 12617 } 12618 12619 return request.then(function (response) { 12620 if (!response.ok) { 12621 throw new Error('HTTP ' + response.status); 12622 } 12623 return response.json(); 12624 }).then(function (payload) { 12625 return ruleFromPayload(payload, productId); 12626 }).then(function (rule) { 12627 if (timeoutId !== null) { 12628 window.clearTimeout(timeoutId); 12629 } 12630 return rule; 12631 }, function () { 12632 if (timeoutId !== null) { 12633 window.clearTimeout(timeoutId); 12634 } 12635 12636 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 12637 return null; 12638 }); 12639 } 12640 12641 function finishJob(job, rule) { 12642 cache.set(job.productId, rule); 12643 pending.delete(job.productId); 12644 activeRequests -= 1; 12645 job.resolve(rule); 12646 pumpQueue(); 12647 } 12648 12649 function pumpQueue() { 12650 var job; 12651 12652 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 12653 job = queue.shift(); 12654 activeRequests += 1; 12655 12656 (function (currentJob) { 12657 requestRule(currentJob.productId).then(function (rule) { 12658 finishJob(currentJob, rule); 12659 }, function () { 12660 finishJob(currentJob, null); 12661 }); 12662 }(job)); 12663 } 12664 } 12665 12666 function getRule(productId) { 12667 var resolver; 12668 var promise; 12669 12670 if (cache.has(productId)) { 12671 return Promise.resolve(cache.get(productId)); 12672 } 12673 12674 if (pending.has(productId)) { 12675 return pending.get(productId); 12676 } 12677 12678 promise = new Promise(function (resolve) { 12679 resolver = resolve; 12680 }); 12681 12682 pending.set(productId, promise); 12683 queue.push({ 12684 productId: productId, 12685 resolve: resolver 12686 }); 12687 pumpQueue(); 12688 12689 return promise; 12690 } 12691 12692 function findBadge(card) { 12693 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 12694 } 12695 12696 function clearBadge(card) { 12697 var badge = findBadge(card); 12698 var image = card.querySelector('.product-header > .w-100 > .image'); 12699 12700 if (badge && badge.parentNode) { 12701 badge.parentNode.removeChild(badge); 12702 } 12703 12704 if (image) { 12705 image.classList.remove(HOST_CLASS); 12706 } 12707 12708 card.removeAttribute('data-farmacam-prescription-level'); 12709 } 12710 12711 function applyBadge(card, productId, rule) { 12712 var image; 12713 var badge; 12714 12715 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 12716 return false;
12717 } 12718 12719 clearBadge(card); 12720 12721 if (!rule) { 12722 return true; 12723 } 12724 12725 image = card.querySelector('.product-header > .w-100 > .image'); 12726 if (!image) { 12727 return false; 12728 } 12729 12730 badge = document.createElement('span'); 12731 badge.className = BADGE_CLASS; 12732 badge.setAttribute('data-farmacam-generated', 'true'); 12733 badge.setAttribute('data-farmacam-prescription-level', rule.level); 12734 badge.setAttribute('role', 'note'); 12735 badge.textContent = rule.text; 12736 12737 image.classList.add(HOST_CLASS); 12738 image.insertBefore(badge, image.firstChild); 12739 card.setAttribute('data-farmacam-prescription-level', rule.level); 12740 12741 return true; 12742 } 12743 12744 function processCard(card) { 12745 var productId; 12746 var previousState; 12747 var currentState; 12748 12749 if (!card || card.nodeType !== 1) { 12750 return; 12751 } 12752 12753 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 12754 return; 12755 } 12756 12757 productId = normalizeProductId(card.getAttribute('data-id')); 12758 previousState = cardStates.get(card); 12759 12760 if (!productId) { 12761 clearBadge(card); 12762 cardStates.delete(card); 12763 return; 12764 } 12765 12766 if ( 12767 previousState && 12768 previousState.productId === productId && 12769 previousState.status === 'loading' 12770 ) { 12771 return; 12772 } 12773 12774 if ( 12775 previousState && 12776 previousState.productId === productId && 12777 previousState.status === 'processed' 12778 ) { 12779 if (!previousState.rule || findBadge(card)) { 12780 return; 12781 } 12782 } 12783 12784 if (!previousState || previousState.productId !== productId) { 12785 clearBadge(card); 12786 } 12787 12788 currentState = { 12789 productId: productId, 12790 status: 'loading', 12791 rule: null 12792 }; 12793 cardStates.set(card, currentState); 12794 12795 getRule(productId).then(function (rule) { 12796 var applied; 12797 12798 if ( 12799 cardStates.get(card) !== currentState || 12800 normalizeProductId(card.getAttribute('data-id')) !== productId 12801 ) { 12802 return; 12803 } 12804 12805 applied = applyBadge(card, productId, rule); 12806 currentState.rule = rule; 12807 currentState.status = applied ? 'processed' : 'waiting-image'; 12808 }); 12809 } 12810 12811 function scan(root) { 12812 var cards; 12813 var index; 12814 12815 if (!root) { 12816 return; 12817 } 12818 12819 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 12820 processCard(root); 12821 } 12822 12823 if (!root.querySelectorAll) { 12824 return; 12825 } 12826 12827 cards = root.querySelectorAll(CARD_SELECTOR); 12828 for (index = 0; index < cards.length; index += 1) { 12829 processCard(cards[index]); 12830 } 12831 } 12832 12833 function startObserver() { 12834 var observer; 12835 12836 if (!window.MutationObserver || !document.documentElement) { 12837 return; 12838 } 12839 12840 observer = new MutationObserver(function (mutations) { 12841 var mutationIndex; 12842 var nodeIndex; 12843 var mutation; 12844 var node; 12845 var ownerCard; 12846 12847 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 12848 mutation = mutations[mutationIndex]; 12849 12850 if (mutation.type === 'attributes') { 12851 processCard(mutation.target); 12852 continue; 12853 } 12854 12855 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 12856 node = mutation.addedNodes[nodeIndex]; 12857 if (node.nodeType !== 1) { 12858 continue; 12859 } 12860 12861 scan(node); 12862 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 12863 if (ownerCard) { 12864 processCard(ownerCard); 12865 } 12866 } 12867 } 12868 }); 12869 12870 observer.observe(document.documentElement, { 12871 childList: true, 12872 subtree: true, 12873 attributes: true, 12874 attributeFilter: ['data-id'] 12875 }); 12876 12877 window[GLOBAL_KEY].observer = observer; 12878 } 12879 12880 window[GLOBAL_KEY] = { 12881 version: '1.1.0', 12882 cache: cache, 12883 pending: pending, 12884 cardStates: cardStates, 12885 scan: scan, 12886 processCard: processCard, 12887 observer: null 12888 }; 12889 12890 document.addEventListener('load', onTrayScriptLoad, true); 12891 attachTrayAjaxCache(); 12892 injectStyles(); 12893 scan(document); 12894 startObserver(); 12895 12896 if (document.readyState === 'loading') { 12897 document.addEventListener('DOMContentLoaded', function () { 12898 attachTrayAjaxCache(); 12899 scan(document); 12900 }); 12901 } 12902}(window, document)); 12903</script>
12903 12904 </li> 12905 <li class="item flex"> 12906 12907 12908 12909 12910<div class="product animate open_cart" 12911 data-id="125245678" 12912 data-farmacam-related-categories=",Array,Array," 12913 data-ga4-id="125245678" 12914 data-ga4-name="Floral KIDS Tranquilito | Calma e Tranquilidade" 12915 data-ga4-price="32.00" 12916 data-ga4-brand="Floral Thérapi" 12917 data-ga4-category="Tipo de Produto;Industrializados;" 12918 > 12919 12920 <div class="product-header"> 12921 12922 <div class="w-100"> 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 <div class="image "> 12934 12935 <a title="Floral KIDS Tranquilito | Calma e Tranquilidade" href="https://www.farmacam.com.br/floral-kids-tranquilito-calma-e-tranquilidade" class="space-image"> 12936 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/floral_kids_tranquilito_calma_e_tranquilidade_1_20260806093137_8af710ab2240.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/floral_kids_tranquilito_calma_e_tranquilidade_1_20260806093137_8af710ab2240.png" alt="Floral KIDS Tranquilito | Calma e Tranquilidade"> 12937 </a> 12938 12939 </div> 12940 12941 12942 12943 12944 12945 </div> 12946 12947 </div> 12948 12949 <div class="product-body"> 12950 12951 <a title="Floral KIDS Tranquilito | Calma e Tranquilidade" class="product-info" href="https://www.farmacam.com.br/floral-kids-tranquilito-calma-e-tranquilidade"> 12952 12953 <div class="product-info-dados"> 12954 12955 12956 12957 12958 12959 12960 <div class="product-name"> 12961 Floral KIDS Tranquilito | Calma e Tranquilidade 12962 </div> 12963 12964 12965 12966 <div class="product-price"> 12967 12968 12969 12970 12971 12972 12973<div class="price display-cash"> 12974 12975 12976 <span class="current-price "> 12977 R$ 32,00 12978 12979 </span> 12980 12981 <span class="product-installments"> 12982 12983 </span> 12984 12985</div> 12986 </div> 12987 12988 </div> 12989 12990 </a> 12991 12992 </div> 12993 12994 12995 <div class="product-footer"> 12996 12997 12998 <div class="w-100"> 12999 13000 13001 13002<div class="product-rating-catalog"> 13003 13004 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13005 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13006 </svg> 13007 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13008 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13009 </svg> 13010 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13011 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13012 </svg> 13013 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13014 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13015 </svg> 13016 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13017 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13018 </svg> 13019 13020 13021 <a title="Ver avaliações de Floral KIDS Tranquilito | Calma e Tranquilidade" href="https://www.farmacam.com.br/floral-kids-tranquilito-calma-e-tranquilidade#comments" class="total"> 13022 Seja o primeiro 13023 </a> 13024 13025 </div> 13026 13027 <div class="compare-buttons"> 13028 13029 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245678" class="flex justify-center align-center compare-hidden" data-compare="remove">
13030 <span class="filter-checkbox checked"></span> 13031 Remover Comparação 13032 </a> 13033 13034 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245678" class="flex justify-center align-center " data-compare="add"> 13035 <span class="filter-checkbox"></span> 13036 Comparar Produto 13037 </a> 13038 13039 </div> 13040 13041 13042 <div class="config-variacoes-compra"> 13043 13044 13045 13046 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245678"> 13047 <input type="hidden" name="product_id" value="125245678"> 13048 <input type="hidden" name="without_stock_sale" value=""> 13049 13050 <input type="hidden" name="estoque" value="2"> 13051 13052 13053 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 13054 <div class="alerta-estoque"></div> 13055 <div class="alerta-adicionado"></div> 13056 13057 <div class="acao-compra"> 13058 13059 <div class="quantidade-box"> 13060 <div class="quantidade-box-input"> 13061 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="2" /> 13062 </div> 13063 <div class="quantidade-box-controles"> 13064 <div class="quantidade-box-controles-itens" data-item="mais"> 13065 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 13066 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 13067 </svg> 13068 </div> 13069 <div class="quantidade-box-controles-itens" data-item="menus"> 13070 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 13071 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 13072 </svg> 13073 </div> 13074 </div> 13075 </div> 13076 13077 13078 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245678"> 13079 13080 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 13081 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 13082 13083 13084 13085 13086 13087 13088 <!-- Cesta de Compras --> 13089 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 13090 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 13091 </svg> 13092 13093 13094 13095 Comprar 13096 13097 13098 </button> 13099 <!-- </form> --> 13100 13101 </div> 13102 13103</div> 13104 13105 13106 </div> 13107 13108 </div> 13109 13110 13111</div> 13112
13113<script> 13114(function (window, document) { 13115 'use strict'; 13116 13117 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 13118 13119 if (window[GLOBAL_KEY]) { 13120 return; 13121 } 13122 13123 if (!window.Map || !window.WeakMap || !window.Promise) { 13124 return; 13125 } 13126 13127 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 13128 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 13129 '#vitrine-personalizada .product[data-id]'; 13130 var BADGE_CLASS = 'farmacam-prescription-badge'; 13131 var HOST_CLASS = 'farmacam-prescription-badge-host'; 13132 var MAX_CONCURRENT_REQUESTS = 6; 13133 var REQUEST_TIMEOUT_MS = 12000; 13134 13135 var rules = { 13136 '294': { 13137 level: '294', 13138 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 13139 }, 13140 '296': { 13141 level: '296', 13142 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 13143 }, 13144 '298': { 13145 level: '298', 13146 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 13147 } 13148 }; 13149 13150 var cache = new Map(); 13151 var pending = new Map(); 13152 var cardStates = new WeakMap(); 13153 var queue = []; 13154 var activeRequests = 0; 13155 var trayAjaxHooked = false; 13156 13157 function injectStyles() { 13158 if (document.getElementById('farmacam-prescription-cards-style')) { 13159 return; 13160 } 13161 13162 var style = document.createElement('style'); 13163 style.id = 'farmacam-prescription-cards-style'; 13164 style.textContent = [ 13165 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 13166 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 13167 'position:absolute!important;', 13168 'top:52px!important;', 13169 'left:10px!important;', 13170 'z-index:999!important;', 13171 'display:block!important;', 13172 'max-width:calc(100% - 20px)!important;', 13173 'box-sizing:border-box!important;', 13174 'padding:8px 12px!important;', 13175 'color:#fff!important;', 13176 'font-family:inherit!important;', 13177 'font-size:13px!important;', 13178 'font-weight:900!important;', 13179 'line-height:1.15!important;', 13180 'text-align:center!important;', 13181 'text-transform:uppercase!important;', 13182 'letter-spacing:.3px!important;', 13183 'white-space:normal!important;', 13184 'overflow-wrap:break-word!important;', 13185 'border-radius:3px!important;', 13186 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 13187 'pointer-events:none!important;', 13188 '}', 13189 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 13190 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 13191 'background:#d70008!important;', 13192 '}', 13193 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 13194 'background:#000!important;', 13195 '}', 13196 '@media (max-width:767px){', 13197 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 13198 'top:42px!important;', 13199 'left:6px!important;', 13200 'max-width:calc(100% - 12px)!important;', 13201 'padding:6px 8px!important;', 13202 'font-size:10px!important;', 13203 '}', 13204 '}' 13205 ].join(''); 13206 13207 (document.head || document.documentElement).appendChild(style); 13208 } 13209 13210 function normalizeProductId(value) { 13211 var id = String(value == null ? '' : value).trim(); 13212 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 13213 } 13214 13215 function classifyRelatedCategories(relatedCategories) { 13216 var found = { 13217 '292': false, 13218 '294': false, 13219 '296': false, 13220 '298': false 13221 }; 13222 13223 function inspect(value, depth) { 13224 var index; 13225 var normalized; 13226 13227 if (value == null || depth > 8) { 13228 return; 13229 } 13230 13231 if (Array.isArray(value)) { 13232 for (index = 0; index < value.length; index += 1) { 13233 inspect(value[index], depth + 1); 13234 } 13235 return; 13236 } 13237 13238 if (typeof value === 'object') { 13239 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 13240 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 13241 inspect(value.id, depth + 1); 13242 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 13243 inspect(value.category_id, depth + 1); 13244 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 13245 inspect(value.Category, depth + 1); 13246 } 13247 return; 13248 } 13249 13250 if (typeof value !== 'string' && typeof value !== 'number') { 13251 return; 13252 } 13253 normalized = normalizeProductId(value); 13254 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 13255 found[normalized] = true; 13256 } 13257 } 13258 13259 inspect(relatedCategories, 0); 13260 13261 if (found['298']) { 13262 return rules['298']; 13263 } 13264 if (found['296']) { 13265 return rules['296']; 13266 } 13267 if (found['294']) { 13268 return rules['294']; 13269 } 13270 13271 // 292 e qualquer classificacao desconhecida ficam sem tarja. 13272 return null; 13273 } 13274 13275 function ruleFromPayload(payload, productId) { 13276 var product = payload && payload.Product; 13277 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 13278 return null; 13279 } 13280 return classifyRelatedCategories(product && product.related_categories); 13281 } 13282 13283 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 13284 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 13285 function attachTrayAjaxCache() { 13286 var jq = window.jQuery; 13287 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 13288 return; 13289 } 13290
13291 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 13292 var url; 13293 var match; 13294 var productId; 13295 var payload; 13296 try { 13297 url = new URL(settings.url, window.location.href); 13298 if (url.origin !== window.location.origin) { 13299 return; 13300 } 13301 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 13302 if (!match) { 13303 return; 13304 } 13305 productId = normalizeProductId(match[1]); 13306 if (!cache.has(productId) && !pending.has(productId)) { 13307 payload = data || xhr.responseJSON; 13308 if (typeof payload === 'string') { 13309 payload = JSON.parse(payload); 13310 } 13311 if (!payload || !payload.Product || 13312 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 13313 return; 13314 } 13315 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 13316 return; 13317 } 13318 cache.set(productId, ruleFromPayload(payload, productId)); 13319 } 13320 } catch (error) { 13321 // Respostas de outras integracoes nao interferem nas tarjas. 13322 } 13323 }); 13324 13325 trayAjaxHooked = true; 13326 document.removeEventListener('load', onTrayScriptLoad, true); 13327 } 13328 13329 function onTrayScriptLoad(event) { 13330 if (event.target && event.target.tagName === 'SCRIPT') { 13331 attachTrayAjaxCache(); 13332 } 13333 } 13334 13335 function requestRule(productId) { 13336 var controller = null; 13337 var timeoutId = null; 13338 var options = { 13339 credentials: 'same-origin', 13340 headers: { 13341 'Accept': 'application/json' 13342 } 13343 }; 13344 var request; 13345 13346 if (typeof window.fetch !== 'function') { 13347 return Promise.resolve(null); 13348 } 13349 13350 if (typeof window.AbortController === 'function') { 13351 controller = new window.AbortController(); 13352 options.signal = controller.signal; 13353 timeoutId = window.setTimeout(function () { 13354 controller.abort(); 13355 }, REQUEST_TIMEOUT_MS); 13356 } 13357 13358 try { 13359 request = window.fetch( 13360 '/web_api/products/' + encodeURIComponent(productId), 13361 options 13362 ); 13363 } catch (error) { 13364 if (timeoutId !== null) { 13365 window.clearTimeout(timeoutId); 13366 } 13367 return Promise.resolve(null); 13368 } 13369 13370 return request.then(function (response) { 13371 if (!response.ok) { 13372 throw new Error('HTTP ' + response.status); 13373 } 13374 return response.json(); 13375 }).then(function (payload) { 13376 return ruleFromPayload(payload, productId); 13377 }).then(function (rule) { 13378 if (timeoutId !== null) { 13379 window.clearTimeout(timeoutId); 13380 } 13381 return rule; 13382 }, function () { 13383 if (timeoutId !== null) { 13384 window.clearTimeout(timeoutId); 13385 } 13386 13387 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 13388 return null; 13389 }); 13390 } 13391 13392 function finishJob(job, rule) { 13393 cache.set(job.productId, rule); 13394 pending.delete(job.productId); 13395 activeRequests -= 1; 13396 job.resolve(rule); 13397 pumpQueue(); 13398 } 13399 13400 function pumpQueue() { 13401 var job; 13402 13403 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 13404 job = queue.shift(); 13405 activeRequests += 1; 13406 13407 (function (currentJob) { 13408 requestRule(currentJob.productId).then(function (rule) { 13409 finishJob(currentJob, rule); 13410 }, function () { 13411 finishJob(currentJob, null); 13412 }); 13413 }(job)); 13414 } 13415 } 13416 13417 function getRule(productId) { 13418 var resolver; 13419 var promise; 13420 13421 if (cache.has(productId)) { 13422 return Promise.resolve(cache.get(productId)); 13423 } 13424 13425 if (pending.has(productId)) { 13426 return pending.get(productId); 13427 } 13428 13429 promise = new Promise(function (resolve) { 13430 resolver = resolve; 13431 }); 13432 13433 pending.set(productId, promise); 13434 queue.push({ 13435 productId: productId, 13436 resolve: resolver 13437 }); 13438 pumpQueue(); 13439 13440 return promise; 13441 } 13442 13443 function findBadge(card) { 13444 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 13445 } 13446 13447 function clearBadge(card) { 13448 var badge = findBadge(card); 13449 var image = card.querySelector('.product-header > .w-100 > .image'); 13450 13451 if (badge && badge.parentNode) { 13452 badge.parentNode.removeChild(badge); 13453 } 13454 13455 if (image) { 13456 image.classList.remove(HOST_CLASS); 13457 } 13458 13459 card.removeAttribute('data-farmacam-prescription-level'); 13460 } 13461 13462 function applyBadge(card, productId, rule) { 13463 var image; 13464 var badge; 13465 13466 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 13467 return false;
13468 } 13469 13470 clearBadge(card); 13471 13472 if (!rule) { 13473 return true; 13474 } 13475 13476 image = card.querySelector('.product-header > .w-100 > .image'); 13477 if (!image) { 13478 return false; 13479 } 13480 13481 badge = document.createElement('span'); 13482 badge.className = BADGE_CLASS; 13483 badge.setAttribute('data-farmacam-generated', 'true'); 13484 badge.setAttribute('data-farmacam-prescription-level', rule.level); 13485 badge.setAttribute('role', 'note'); 13486 badge.textContent = rule.text; 13487 13488 image.classList.add(HOST_CLASS); 13489 image.insertBefore(badge, image.firstChild); 13490 card.setAttribute('data-farmacam-prescription-level', rule.level); 13491 13492 return true; 13493 } 13494 13495 function processCard(card) { 13496 var productId; 13497 var previousState; 13498 var currentState; 13499 13500 if (!card || card.nodeType !== 1) { 13501 return; 13502 } 13503 13504 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 13505 return; 13506 } 13507 13508 productId = normalizeProductId(card.getAttribute('data-id')); 13509 previousState = cardStates.get(card); 13510 13511 if (!productId) { 13512 clearBadge(card); 13513 cardStates.delete(card); 13514 return; 13515 } 13516 13517 if ( 13518 previousState && 13519 previousState.productId === productId && 13520 previousState.status === 'loading' 13521 ) { 13522 return; 13523 } 13524 13525 if ( 13526 previousState && 13527 previousState.productId === productId && 13528 previousState.status === 'processed' 13529 ) { 13530 if (!previousState.rule || findBadge(card)) { 13531 return; 13532 } 13533 } 13534 13535 if (!previousState || previousState.productId !== productId) { 13536 clearBadge(card); 13537 } 13538 13539 currentState = { 13540 productId: productId, 13541 status: 'loading', 13542 rule: null 13543 }; 13544 cardStates.set(card, currentState); 13545 13546 getRule(productId).then(function (rule) { 13547 var applied; 13548 13549 if ( 13550 cardStates.get(card) !== currentState || 13551 normalizeProductId(card.getAttribute('data-id')) !== productId 13552 ) { 13553 return; 13554 } 13555 13556 applied = applyBadge(card, productId, rule); 13557 currentState.rule = rule; 13558 currentState.status = applied ? 'processed' : 'waiting-image'; 13559 }); 13560 } 13561 13562 function scan(root) { 13563 var cards; 13564 var index; 13565 13566 if (!root) { 13567 return; 13568 } 13569 13570 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 13571 processCard(root); 13572 } 13573 13574 if (!root.querySelectorAll) { 13575 return; 13576 } 13577 13578 cards = root.querySelectorAll(CARD_SELECTOR); 13579 for (index = 0; index < cards.length; index += 1) { 13580 processCard(cards[index]); 13581 } 13582 } 13583 13584 function startObserver() { 13585 var observer; 13586 13587 if (!window.MutationObserver || !document.documentElement) { 13588 return; 13589 } 13590 13591 observer = new MutationObserver(function (mutations) { 13592 var mutationIndex; 13593 var nodeIndex; 13594 var mutation; 13595 var node; 13596 var ownerCard; 13597 13598 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 13599 mutation = mutations[mutationIndex]; 13600 13601 if (mutation.type === 'attributes') { 13602 processCard(mutation.target); 13603 continue; 13604 } 13605 13606 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 13607 node = mutation.addedNodes[nodeIndex]; 13608 if (node.nodeType !== 1) { 13609 continue; 13610 } 13611 13612 scan(node); 13613 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 13614 if (ownerCard) { 13615 processCard(ownerCard); 13616 } 13617 } 13618 } 13619 }); 13620 13621 observer.observe(document.documentElement, { 13622 childList: true, 13623 subtree: true, 13624 attributes: true, 13625 attributeFilter: ['data-id'] 13626 }); 13627 13628 window[GLOBAL_KEY].observer = observer; 13629 } 13630 13631 window[GLOBAL_KEY] = { 13632 version: '1.1.0', 13633 cache: cache, 13634 pending: pending, 13635 cardStates: cardStates, 13636 scan: scan, 13637 processCard: processCard, 13638 observer: null 13639 }; 13640 13641 document.addEventListener('load', onTrayScriptLoad, true); 13642 attachTrayAjaxCache(); 13643 injectStyles(); 13644 scan(document); 13645 startObserver(); 13646 13647 if (document.readyState === 'loading') { 13648 document.addEventListener('DOMContentLoaded', function () { 13649 attachTrayAjaxCache(); 13650 scan(document); 13651 }); 13652 } 13653}(window, document)); 13654</script>
13654 13655 </li> 13656 <li class="item flex"> 13657 13658 13659 13660 13661<div class="product animate open_cart" 13662 data-id="125245676" 13663 data-farmacam-related-categories=",Array,Array," 13664 data-ga4-id="125245676" 13665 data-ga4-name="Floral KIDS Corágenis | Coragem e Segurança" 13666 data-ga4-price="32.00" 13667 data-ga4-brand="Floral Thérapi" 13668 data-ga4-category="Tipo de Produto;Industrializados;" 13669 > 13670 13671 <div class="product-header"> 13672 13673 <div class="w-100"> 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 <div class="image "> 13685 13686 <a title="Floral KIDS Corágenis | Coragem e Segurança" href="https://www.farmacam.com.br/floral-kids-coragenis-coragem-e-seguranca" class="space-image"> 13687 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/floral_kids_corgenis_coragem_e_segurana_1_20260806092646_5269b9ecc05f.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/floral_kids_corgenis_coragem_e_segurana_1_20260806092646_5269b9ecc05f.png" alt="Floral KIDS Corágenis | Coragem e Segurança"> 13688 </a> 13689 13690 </div> 13691 13692 13693 13694 13695 13696 </div> 13697 13698 </div> 13699 13700 <div class="product-body"> 13701 13702 <a title="Floral KIDS Corágenis | Coragem e Segurança" class="product-info" href="https://www.farmacam.com.br/floral-kids-coragenis-coragem-e-seguranca"> 13703 13704 <div class="product-info-dados"> 13705 13706 13707 13708 13709 13710 13711 <div class="product-name"> 13712 Floral KIDS Corágenis | Coragem e Segurança 13713 </div> 13714 13715 13716 13717 <div class="product-price"> 13718 13719 13720 13721 13722 13723 13724<div class="price display-cash"> 13725 13726 13727 <span class="current-price "> 13728 R$ 32,00 13729 13730 </span> 13731 13732 <span class="product-installments"> 13733 13734 </span> 13735 13736</div> 13737 </div> 13738 13739 </div> 13740 13741 </a> 13742 13743 </div> 13744 13745 13746 <div class="product-footer"> 13747 13748 13749 <div class="w-100"> 13750 13751 13752 13753<div class="product-rating-catalog"> 13754 13755 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13756 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13757 </svg> 13758 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13759 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13760 </svg> 13761 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13762 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13763 </svg> 13764 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13765 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13766 </svg> 13767 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 13768 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 13769 </svg> 13770 13771 13772 <a title="Ver avaliações de Floral KIDS Corágenis | Coragem e Segurança" href="https://www.farmacam.com.br/floral-kids-coragenis-coragem-e-seguranca#comments" class="total"> 13773 Seja o primeiro 13774 </a> 13775 13776 </div> 13777 13778 <div class="compare-buttons"> 13779 13780 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245676" class="flex justify-center align-center compare-hidden" data-compare="remove">
13781 <span class="filter-checkbox checked"></span> 13782 Remover Comparação 13783 </a> 13784 13785 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245676" class="flex justify-center align-center " data-compare="add"> 13786 <span class="filter-checkbox"></span> 13787 Comparar Produto 13788 </a> 13789 13790 </div> 13791 13792 13793 <div class="config-variacoes-compra"> 13794 13795 13796 13797 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245676"> 13798 <input type="hidden" name="product_id" value="125245676"> 13799 <input type="hidden" name="without_stock_sale" value=""> 13800 13801 <input type="hidden" name="estoque" value="1"> 13802 13803 13804 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 13805 <div class="alerta-estoque"></div> 13806 <div class="alerta-adicionado"></div> 13807 13808 <div class="acao-compra"> 13809 13810 <div class="quantidade-box"> 13811 <div class="quantidade-box-input"> 13812 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="1" /> 13813 </div> 13814 <div class="quantidade-box-controles"> 13815 <div class="quantidade-box-controles-itens" data-item="mais"> 13816 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 13817 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 13818 </svg> 13819 </div> 13820 <div class="quantidade-box-controles-itens" data-item="menus"> 13821 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 13822 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 13823 </svg> 13824 </div> 13825 </div> 13826 </div> 13827 13828 13829 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245676"> 13830 13831 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 13832 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 13833 13834 13835 13836 13837 13838 13839 <!-- Cesta de Compras --> 13840 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 13841 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 13842 </svg> 13843 13844 13845 13846 Comprar 13847 13848 13849 </button> 13850 <!-- </form> --> 13851 13852 </div> 13853 13854</div> 13855 13856 13857 </div> 13858 13859 </div> 13860 13861 13862</div> 13863
13864<script> 13865(function (window, document) { 13866 'use strict'; 13867 13868 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 13869 13870 if (window[GLOBAL_KEY]) { 13871 return; 13872 } 13873 13874 if (!window.Map || !window.WeakMap || !window.Promise) { 13875 return; 13876 } 13877 13878 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 13879 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 13880 '#vitrine-personalizada .product[data-id]'; 13881 var BADGE_CLASS = 'farmacam-prescription-badge'; 13882 var HOST_CLASS = 'farmacam-prescription-badge-host'; 13883 var MAX_CONCURRENT_REQUESTS = 6; 13884 var REQUEST_TIMEOUT_MS = 12000; 13885 13886 var rules = { 13887 '294': { 13888 level: '294', 13889 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 13890 }, 13891 '296': { 13892 level: '296', 13893 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 13894 }, 13895 '298': { 13896 level: '298', 13897 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 13898 } 13899 }; 13900 13901 var cache = new Map(); 13902 var pending = new Map(); 13903 var cardStates = new WeakMap(); 13904 var queue = []; 13905 var activeRequests = 0; 13906 var trayAjaxHooked = false; 13907 13908 function injectStyles() { 13909 if (document.getElementById('farmacam-prescription-cards-style')) { 13910 return; 13911 } 13912 13913 var style = document.createElement('style'); 13914 style.id = 'farmacam-prescription-cards-style'; 13915 style.textContent = [ 13916 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 13917 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 13918 'position:absolute!important;', 13919 'top:52px!important;', 13920 'left:10px!important;', 13921 'z-index:999!important;', 13922 'display:block!important;', 13923 'max-width:calc(100% - 20px)!important;', 13924 'box-sizing:border-box!important;', 13925 'padding:8px 12px!important;', 13926 'color:#fff!important;', 13927 'font-family:inherit!important;', 13928 'font-size:13px!important;', 13929 'font-weight:900!important;', 13930 'line-height:1.15!important;', 13931 'text-align:center!important;', 13932 'text-transform:uppercase!important;', 13933 'letter-spacing:.3px!important;', 13934 'white-space:normal!important;', 13935 'overflow-wrap:break-word!important;', 13936 'border-radius:3px!important;', 13937 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 13938 'pointer-events:none!important;', 13939 '}', 13940 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 13941 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 13942 'background:#d70008!important;', 13943 '}', 13944 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 13945 'background:#000!important;', 13946 '}', 13947 '@media (max-width:767px){', 13948 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 13949 'top:42px!important;', 13950 'left:6px!important;', 13951 'max-width:calc(100% - 12px)!important;', 13952 'padding:6px 8px!important;', 13953 'font-size:10px!important;', 13954 '}', 13955 '}' 13956 ].join(''); 13957 13958 (document.head || document.documentElement).appendChild(style); 13959 } 13960 13961 function normalizeProductId(value) { 13962 var id = String(value == null ? '' : value).trim(); 13963 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 13964 } 13965 13966 function classifyRelatedCategories(relatedCategories) { 13967 var found = { 13968 '292': false, 13969 '294': false, 13970 '296': false, 13971 '298': false 13972 }; 13973 13974 function inspect(value, depth) { 13975 var index; 13976 var normalized; 13977 13978 if (value == null || depth > 8) { 13979 return; 13980 } 13981 13982 if (Array.isArray(value)) { 13983 for (index = 0; index < value.length; index += 1) { 13984 inspect(value[index], depth + 1); 13985 } 13986 return; 13987 } 13988 13989 if (typeof value === 'object') { 13990 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 13991 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 13992 inspect(value.id, depth + 1); 13993 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 13994 inspect(value.category_id, depth + 1); 13995 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 13996 inspect(value.Category, depth + 1); 13997 } 13998 return; 13999 } 14000 14001 if (typeof value !== 'string' && typeof value !== 'number') { 14002 return; 14003 } 14004 normalized = normalizeProductId(value); 14005 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 14006 found[normalized] = true; 14007 } 14008 } 14009 14010 inspect(relatedCategories, 0); 14011 14012 if (found['298']) { 14013 return rules['298']; 14014 } 14015 if (found['296']) { 14016 return rules['296']; 14017 } 14018 if (found['294']) { 14019 return rules['294']; 14020 } 14021 14022 // 292 e qualquer classificacao desconhecida ficam sem tarja. 14023 return null; 14024 } 14025 14026 function ruleFromPayload(payload, productId) { 14027 var product = payload && payload.Product; 14028 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 14029 return null; 14030 } 14031 return classifyRelatedCategories(product && product.related_categories); 14032 } 14033 14034 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 14035 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 14036 function attachTrayAjaxCache() { 14037 var jq = window.jQuery; 14038 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 14039 return; 14040 } 14041
14042 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 14043 var url; 14044 var match; 14045 var productId; 14046 var payload; 14047 try { 14048 url = new URL(settings.url, window.location.href); 14049 if (url.origin !== window.location.origin) { 14050 return; 14051 } 14052 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 14053 if (!match) { 14054 return; 14055 } 14056 productId = normalizeProductId(match[1]); 14057 if (!cache.has(productId) && !pending.has(productId)) { 14058 payload = data || xhr.responseJSON; 14059 if (typeof payload === 'string') { 14060 payload = JSON.parse(payload); 14061 } 14062 if (!payload || !payload.Product || 14063 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 14064 return; 14065 } 14066 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 14067 return; 14068 } 14069 cache.set(productId, ruleFromPayload(payload, productId)); 14070 } 14071 } catch (error) { 14072 // Respostas de outras integracoes nao interferem nas tarjas. 14073 } 14074 }); 14075 14076 trayAjaxHooked = true; 14077 document.removeEventListener('load', onTrayScriptLoad, true); 14078 } 14079 14080 function onTrayScriptLoad(event) { 14081 if (event.target && event.target.tagName === 'SCRIPT') { 14082 attachTrayAjaxCache(); 14083 } 14084 } 14085 14086 function requestRule(productId) { 14087 var controller = null; 14088 var timeoutId = null; 14089 var options = { 14090 credentials: 'same-origin', 14091 headers: { 14092 'Accept': 'application/json' 14093 } 14094 }; 14095 var request; 14096 14097 if (typeof window.fetch !== 'function') { 14098 return Promise.resolve(null); 14099 } 14100 14101 if (typeof window.AbortController === 'function') { 14102 controller = new window.AbortController(); 14103 options.signal = controller.signal; 14104 timeoutId = window.setTimeout(function () { 14105 controller.abort(); 14106 }, REQUEST_TIMEOUT_MS); 14107 } 14108 14109 try { 14110 request = window.fetch( 14111 '/web_api/products/' + encodeURIComponent(productId), 14112 options 14113 ); 14114 } catch (error) { 14115 if (timeoutId !== null) { 14116 window.clearTimeout(timeoutId); 14117 } 14118 return Promise.resolve(null); 14119 } 14120 14121 return request.then(function (response) { 14122 if (!response.ok) { 14123 throw new Error('HTTP ' + response.status); 14124 } 14125 return response.json(); 14126 }).then(function (payload) { 14127 return ruleFromPayload(payload, productId); 14128 }).then(function (rule) { 14129 if (timeoutId !== null) { 14130 window.clearTimeout(timeoutId); 14131 } 14132 return rule; 14133 }, function () { 14134 if (timeoutId !== null) { 14135 window.clearTimeout(timeoutId); 14136 } 14137 14138 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 14139 return null; 14140 }); 14141 } 14142 14143 function finishJob(job, rule) { 14144 cache.set(job.productId, rule); 14145 pending.delete(job.productId); 14146 activeRequests -= 1; 14147 job.resolve(rule); 14148 pumpQueue(); 14149 } 14150 14151 function pumpQueue() { 14152 var job; 14153 14154 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 14155 job = queue.shift(); 14156 activeRequests += 1; 14157 14158 (function (currentJob) { 14159 requestRule(currentJob.productId).then(function (rule) { 14160 finishJob(currentJob, rule); 14161 }, function () { 14162 finishJob(currentJob, null); 14163 }); 14164 }(job)); 14165 } 14166 } 14167 14168 function getRule(productId) { 14169 var resolver; 14170 var promise; 14171 14172 if (cache.has(productId)) { 14173 return Promise.resolve(cache.get(productId)); 14174 } 14175 14176 if (pending.has(productId)) { 14177 return pending.get(productId); 14178 } 14179 14180 promise = new Promise(function (resolve) { 14181 resolver = resolve; 14182 }); 14183 14184 pending.set(productId, promise); 14185 queue.push({ 14186 productId: productId, 14187 resolve: resolver 14188 }); 14189 pumpQueue(); 14190 14191 return promise; 14192 } 14193 14194 function findBadge(card) { 14195 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 14196 } 14197 14198 function clearBadge(card) { 14199 var badge = findBadge(card); 14200 var image = card.querySelector('.product-header > .w-100 > .image'); 14201 14202 if (badge && badge.parentNode) { 14203 badge.parentNode.removeChild(badge); 14204 } 14205 14206 if (image) { 14207 image.classList.remove(HOST_CLASS); 14208 } 14209 14210 card.removeAttribute('data-farmacam-prescription-level'); 14211 } 14212 14213 function applyBadge(card, productId, rule) { 14214 var image; 14215 var badge; 14216 14217 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 14218 return false;
14219 } 14220 14221 clearBadge(card); 14222 14223 if (!rule) { 14224 return true; 14225 } 14226 14227 image = card.querySelector('.product-header > .w-100 > .image'); 14228 if (!image) { 14229 return false; 14230 } 14231 14232 badge = document.createElement('span'); 14233 badge.className = BADGE_CLASS; 14234 badge.setAttribute('data-farmacam-generated', 'true'); 14235 badge.setAttribute('data-farmacam-prescription-level', rule.level); 14236 badge.setAttribute('role', 'note'); 14237 badge.textContent = rule.text; 14238 14239 image.classList.add(HOST_CLASS); 14240 image.insertBefore(badge, image.firstChild); 14241 card.setAttribute('data-farmacam-prescription-level', rule.level); 14242 14243 return true; 14244 } 14245 14246 function processCard(card) { 14247 var productId; 14248 var previousState; 14249 var currentState; 14250 14251 if (!card || card.nodeType !== 1) { 14252 return; 14253 } 14254 14255 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 14256 return; 14257 } 14258 14259 productId = normalizeProductId(card.getAttribute('data-id')); 14260 previousState = cardStates.get(card); 14261 14262 if (!productId) { 14263 clearBadge(card); 14264 cardStates.delete(card); 14265 return; 14266 } 14267 14268 if ( 14269 previousState && 14270 previousState.productId === productId && 14271 previousState.status === 'loading' 14272 ) { 14273 return; 14274 } 14275 14276 if ( 14277 previousState && 14278 previousState.productId === productId && 14279 previousState.status === 'processed' 14280 ) { 14281 if (!previousState.rule || findBadge(card)) { 14282 return; 14283 } 14284 } 14285 14286 if (!previousState || previousState.productId !== productId) { 14287 clearBadge(card); 14288 } 14289 14290 currentState = { 14291 productId: productId, 14292 status: 'loading', 14293 rule: null 14294 }; 14295 cardStates.set(card, currentState); 14296 14297 getRule(productId).then(function (rule) { 14298 var applied; 14299 14300 if ( 14301 cardStates.get(card) !== currentState || 14302 normalizeProductId(card.getAttribute('data-id')) !== productId 14303 ) { 14304 return; 14305 } 14306 14307 applied = applyBadge(card, productId, rule); 14308 currentState.rule = rule; 14309 currentState.status = applied ? 'processed' : 'waiting-image'; 14310 }); 14311 } 14312 14313 function scan(root) { 14314 var cards; 14315 var index; 14316 14317 if (!root) { 14318 return; 14319 } 14320 14321 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 14322 processCard(root); 14323 } 14324 14325 if (!root.querySelectorAll) { 14326 return; 14327 } 14328 14329 cards = root.querySelectorAll(CARD_SELECTOR); 14330 for (index = 0; index < cards.length; index += 1) { 14331 processCard(cards[index]); 14332 } 14333 } 14334 14335 function startObserver() { 14336 var observer; 14337 14338 if (!window.MutationObserver || !document.documentElement) { 14339 return; 14340 } 14341 14342 observer = new MutationObserver(function (mutations) { 14343 var mutationIndex; 14344 var nodeIndex; 14345 var mutation; 14346 var node; 14347 var ownerCard; 14348 14349 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 14350 mutation = mutations[mutationIndex]; 14351 14352 if (mutation.type === 'attributes') { 14353 processCard(mutation.target); 14354 continue; 14355 } 14356 14357 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 14358 node = mutation.addedNodes[nodeIndex]; 14359 if (node.nodeType !== 1) { 14360 continue; 14361 } 14362 14363 scan(node); 14364 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 14365 if (ownerCard) { 14366 processCard(ownerCard); 14367 } 14368 } 14369 } 14370 }); 14371 14372 observer.observe(document.documentElement, { 14373 childList: true, 14374 subtree: true, 14375 attributes: true, 14376 attributeFilter: ['data-id'] 14377 }); 14378 14379 window[GLOBAL_KEY].observer = observer; 14380 } 14381 14382 window[GLOBAL_KEY] = { 14383 version: '1.1.0', 14384 cache: cache, 14385 pending: pending, 14386 cardStates: cardStates, 14387 scan: scan, 14388 processCard: processCard, 14389 observer: null 14390 }; 14391 14392 document.addEventListener('load', onTrayScriptLoad, true); 14393 attachTrayAjaxCache(); 14394 injectStyles(); 14395 scan(document); 14396 startObserver(); 14397 14398 if (document.readyState === 'loading') { 14399 document.addEventListener('DOMContentLoaded', function () { 14400 attachTrayAjaxCache(); 14401 scan(document); 14402 }); 14403 } 14404}(window, document)); 14405</script>
14405 14406 </li> 14407 <li class="item flex"> 14408 14409 14410 14411 14412<div class="product animate open_cart" 14413 data-id="125245674" 14414 data-farmacam-related-categories=",Array,Array," 14415 data-ga4-id="125245674" 14416 data-ga4-name="Floral de Bach - Equilíbrio Noturno - Turma da Mônica" 14417 data-ga4-price="32.00" 14418 data-ga4-brand="Floral Thérapi" 14419 data-ga4-category="Tipo de Produto;Industrializados;" 14420 > 14421 14422 <div class="product-header"> 14423 14424 <div class="w-100"> 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 <div class="image "> 14436 14437 <a title="Floral de Bach - Equilíbrio Noturno - Turma da Mônica" href="https://www.farmacam.com.br/floral-de-bach-equilibrio-noturno-turma-da-monica" class="space-image"> 14438 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/floral_de_bach_equilbrio_noturno_turma_da_mnica_1_20260806085652_626046b0bf51.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/floral_de_bach_equilbrio_noturno_turma_da_mnica_1_20260806085652_626046b0bf51.png" alt="Floral de Bach - Equilíbrio Noturno - Turma da Mônica"> 14439 </a> 14440 14441 </div> 14442 14443 14444 14445 14446 14447 </div> 14448 14449 </div> 14450 14451 <div class="product-body"> 14452 14453 <a title="Floral de Bach - Equilíbrio Noturno - Turma da Mônica" class="product-info" href="https://www.farmacam.com.br/floral-de-bach-equilibrio-noturno-turma-da-monica"> 14454 14455 <div class="product-info-dados"> 14456 14457 14458 14459 14460 14461 14462 <div class="product-name"> 14463 Floral de Bach - Equilíbrio Noturno - Turma da Mônica 14464 </div> 14465 14466 14467 14468 <div class="product-price"> 14469 14470 14471 14472 14473 14474 14475<div class="price display-cash"> 14476 14477 14478 <span class="current-price "> 14479 R$ 32,00 14480 14481 </span> 14482 14483 <span class="product-installments"> 14484 14485 </span> 14486 14487</div> 14488 </div> 14489 14490 </div> 14491 14492 </a> 14493 14494 </div> 14495 14496 14497 <div class="product-footer"> 14498 14499 14500 <div class="w-100"> 14501 14502 14503 14504<div class="product-rating-catalog"> 14505 14506 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 14507 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 14508 </svg> 14509 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 14510 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 14511 </svg> 14512 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 14513 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 14514 </svg> 14515 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 14516 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 14517 </svg> 14518 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 14519 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 14520 </svg> 14521 14522 14523 <a title="Ver avaliações de Floral de Bach - Equilíbrio Noturno - Turma da Mônica" href="https://www.farmacam.com.br/floral-de-bach-equilibrio-noturno-turma-da-monica#comments" class="total"> 14524 Seja o primeiro 14525 </a> 14526 14527 </div> 14528 14529 <div class="compare-buttons"> 14530 14531 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245674" class="flex justify-center align-center compare-hidden" data-compare="remove">
14532 <span class="filter-checkbox checked"></span> 14533 Remover Comparação 14534 </a> 14535 14536 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245674" class="flex justify-center align-center " data-compare="add"> 14537 <span class="filter-checkbox"></span> 14538 Comparar Produto 14539 </a> 14540 14541 </div> 14542 14543 14544 <div class="config-variacoes-compra"> 14545 14546 14547 14548 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245674"> 14549 <input type="hidden" name="product_id" value="125245674"> 14550 <input type="hidden" name="without_stock_sale" value=""> 14551 14552 <input type="hidden" name="estoque" value="1"> 14553 14554 14555 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 14556 <div class="alerta-estoque"></div> 14557 <div class="alerta-adicionado"></div> 14558 14559 <div class="acao-compra"> 14560 14561 <div class="quantidade-box"> 14562 <div class="quantidade-box-input"> 14563 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="1" /> 14564 </div> 14565 <div class="quantidade-box-controles"> 14566 <div class="quantidade-box-controles-itens" data-item="mais"> 14567 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 14568 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 14569 </svg> 14570 </div> 14571 <div class="quantidade-box-controles-itens" data-item="menus"> 14572 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 14573 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 14574 </svg> 14575 </div> 14576 </div> 14577 </div> 14578 14579 14580 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245674"> 14581 14582 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 14583 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 14584 14585 14586 14587 14588 14589 14590 <!-- Cesta de Compras --> 14591 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 14592 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 14593 </svg> 14594 14595 14596 14597 Comprar 14598 14599 14600 </button> 14601 <!-- </form> --> 14602 14603 </div> 14604 14605</div> 14606 14607 14608 </div> 14609 14610 </div> 14611 14612 14613</div> 14614
14615<script> 14616(function (window, document) { 14617 'use strict'; 14618 14619 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 14620 14621 if (window[GLOBAL_KEY]) { 14622 return; 14623 } 14624 14625 if (!window.Map || !window.WeakMap || !window.Promise) { 14626 return; 14627 } 14628 14629 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 14630 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 14631 '#vitrine-personalizada .product[data-id]'; 14632 var BADGE_CLASS = 'farmacam-prescription-badge'; 14633 var HOST_CLASS = 'farmacam-prescription-badge-host'; 14634 var MAX_CONCURRENT_REQUESTS = 6; 14635 var REQUEST_TIMEOUT_MS = 12000; 14636 14637 var rules = { 14638 '294': { 14639 level: '294', 14640 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 14641 }, 14642 '296': { 14643 level: '296', 14644 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 14645 }, 14646 '298': { 14647 level: '298', 14648 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 14649 } 14650 }; 14651 14652 var cache = new Map(); 14653 var pending = new Map(); 14654 var cardStates = new WeakMap(); 14655 var queue = []; 14656 var activeRequests = 0; 14657 var trayAjaxHooked = false; 14658 14659 function injectStyles() { 14660 if (document.getElementById('farmacam-prescription-cards-style')) { 14661 return; 14662 } 14663 14664 var style = document.createElement('style'); 14665 style.id = 'farmacam-prescription-cards-style'; 14666 style.textContent = [ 14667 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 14668 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 14669 'position:absolute!important;', 14670 'top:52px!important;', 14671 'left:10px!important;', 14672 'z-index:999!important;', 14673 'display:block!important;', 14674 'max-width:calc(100% - 20px)!important;', 14675 'box-sizing:border-box!important;', 14676 'padding:8px 12px!important;', 14677 'color:#fff!important;', 14678 'font-family:inherit!important;', 14679 'font-size:13px!important;', 14680 'font-weight:900!important;', 14681 'line-height:1.15!important;', 14682 'text-align:center!important;', 14683 'text-transform:uppercase!important;', 14684 'letter-spacing:.3px!important;', 14685 'white-space:normal!important;', 14686 'overflow-wrap:break-word!important;', 14687 'border-radius:3px!important;', 14688 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 14689 'pointer-events:none!important;', 14690 '}', 14691 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 14692 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 14693 'background:#d70008!important;', 14694 '}', 14695 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 14696 'background:#000!important;', 14697 '}', 14698 '@media (max-width:767px){', 14699 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 14700 'top:42px!important;', 14701 'left:6px!important;', 14702 'max-width:calc(100% - 12px)!important;', 14703 'padding:6px 8px!important;', 14704 'font-size:10px!important;', 14705 '}', 14706 '}' 14707 ].join(''); 14708 14709 (document.head || document.documentElement).appendChild(style); 14710 } 14711 14712 function normalizeProductId(value) { 14713 var id = String(value == null ? '' : value).trim(); 14714 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 14715 } 14716 14717 function classifyRelatedCategories(relatedCategories) { 14718 var found = { 14719 '292': false, 14720 '294': false, 14721 '296': false, 14722 '298': false 14723 }; 14724 14725 function inspect(value, depth) { 14726 var index; 14727 var normalized; 14728 14729 if (value == null || depth > 8) { 14730 return; 14731 } 14732 14733 if (Array.isArray(value)) { 14734 for (index = 0; index < value.length; index += 1) { 14735 inspect(value[index], depth + 1); 14736 } 14737 return; 14738 } 14739 14740 if (typeof value === 'object') { 14741 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 14742 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 14743 inspect(value.id, depth + 1); 14744 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 14745 inspect(value.category_id, depth + 1); 14746 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 14747 inspect(value.Category, depth + 1); 14748 } 14749 return; 14750 } 14751 14752 if (typeof value !== 'string' && typeof value !== 'number') { 14753 return; 14754 } 14755 normalized = normalizeProductId(value); 14756 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 14757 found[normalized] = true; 14758 } 14759 } 14760 14761 inspect(relatedCategories, 0); 14762 14763 if (found['298']) { 14764 return rules['298']; 14765 } 14766 if (found['296']) { 14767 return rules['296']; 14768 } 14769 if (found['294']) { 14770 return rules['294']; 14771 } 14772 14773 // 292 e qualquer classificacao desconhecida ficam sem tarja. 14774 return null; 14775 } 14776 14777 function ruleFromPayload(payload, productId) { 14778 var product = payload && payload.Product; 14779 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 14780 return null; 14781 } 14782 return classifyRelatedCategories(product && product.related_categories); 14783 } 14784 14785 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 14786 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 14787 function attachTrayAjaxCache() { 14788 var jq = window.jQuery; 14789 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 14790 return; 14791 } 14792
14793 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 14794 var url; 14795 var match; 14796 var productId; 14797 var payload; 14798 try { 14799 url = new URL(settings.url, window.location.href); 14800 if (url.origin !== window.location.origin) { 14801 return; 14802 } 14803 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 14804 if (!match) { 14805 return; 14806 } 14807 productId = normalizeProductId(match[1]); 14808 if (!cache.has(productId) && !pending.has(productId)) { 14809 payload = data || xhr.responseJSON; 14810 if (typeof payload === 'string') { 14811 payload = JSON.parse(payload); 14812 } 14813 if (!payload || !payload.Product || 14814 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 14815 return; 14816 } 14817 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 14818 return; 14819 } 14820 cache.set(productId, ruleFromPayload(payload, productId)); 14821 } 14822 } catch (error) { 14823 // Respostas de outras integracoes nao interferem nas tarjas. 14824 } 14825 }); 14826 14827 trayAjaxHooked = true; 14828 document.removeEventListener('load', onTrayScriptLoad, true); 14829 } 14830 14831 function onTrayScriptLoad(event) { 14832 if (event.target && event.target.tagName === 'SCRIPT') { 14833 attachTrayAjaxCache(); 14834 } 14835 } 14836 14837 function requestRule(productId) { 14838 var controller = null; 14839 var timeoutId = null; 14840 var options = { 14841 credentials: 'same-origin', 14842 headers: { 14843 'Accept': 'application/json' 14844 } 14845 }; 14846 var request; 14847 14848 if (typeof window.fetch !== 'function') { 14849 return Promise.resolve(null); 14850 } 14851 14852 if (typeof window.AbortController === 'function') { 14853 controller = new window.AbortController(); 14854 options.signal = controller.signal; 14855 timeoutId = window.setTimeout(function () { 14856 controller.abort(); 14857 }, REQUEST_TIMEOUT_MS); 14858 } 14859 14860 try { 14861 request = window.fetch( 14862 '/web_api/products/' + encodeURIComponent(productId), 14863 options 14864 ); 14865 } catch (error) { 14866 if (timeoutId !== null) { 14867 window.clearTimeout(timeoutId); 14868 } 14869 return Promise.resolve(null); 14870 } 14871 14872 return request.then(function (response) { 14873 if (!response.ok) { 14874 throw new Error('HTTP ' + response.status); 14875 } 14876 return response.json(); 14877 }).then(function (payload) { 14878 return ruleFromPayload(payload, productId); 14879 }).then(function (rule) { 14880 if (timeoutId !== null) { 14881 window.clearTimeout(timeoutId); 14882 } 14883 return rule; 14884 }, function () { 14885 if (timeoutId !== null) { 14886 window.clearTimeout(timeoutId); 14887 } 14888 14889 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 14890 return null; 14891 }); 14892 } 14893 14894 function finishJob(job, rule) { 14895 cache.set(job.productId, rule); 14896 pending.delete(job.productId); 14897 activeRequests -= 1; 14898 job.resolve(rule); 14899 pumpQueue(); 14900 } 14901 14902 function pumpQueue() { 14903 var job; 14904 14905 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 14906 job = queue.shift(); 14907 activeRequests += 1; 14908 14909 (function (currentJob) { 14910 requestRule(currentJob.productId).then(function (rule) { 14911 finishJob(currentJob, rule); 14912 }, function () { 14913 finishJob(currentJob, null); 14914 }); 14915 }(job)); 14916 } 14917 } 14918 14919 function getRule(productId) { 14920 var resolver; 14921 var promise; 14922 14923 if (cache.has(productId)) { 14924 return Promise.resolve(cache.get(productId)); 14925 } 14926 14927 if (pending.has(productId)) { 14928 return pending.get(productId); 14929 } 14930 14931 promise = new Promise(function (resolve) { 14932 resolver = resolve; 14933 }); 14934 14935 pending.set(productId, promise); 14936 queue.push({ 14937 productId: productId, 14938 resolve: resolver 14939 }); 14940 pumpQueue(); 14941 14942 return promise; 14943 } 14944 14945 function findBadge(card) { 14946 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 14947 } 14948 14949 function clearBadge(card) { 14950 var badge = findBadge(card); 14951 var image = card.querySelector('.product-header > .w-100 > .image'); 14952 14953 if (badge && badge.parentNode) { 14954 badge.parentNode.removeChild(badge); 14955 } 14956 14957 if (image) { 14958 image.classList.remove(HOST_CLASS); 14959 } 14960 14961 card.removeAttribute('data-farmacam-prescription-level'); 14962 } 14963 14964 function applyBadge(card, productId, rule) { 14965 var image; 14966 var badge; 14967 14968 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 14969 return false;
14970 } 14971 14972 clearBadge(card); 14973 14974 if (!rule) { 14975 return true; 14976 } 14977 14978 image = card.querySelector('.product-header > .w-100 > .image'); 14979 if (!image) { 14980 return false; 14981 } 14982 14983 badge = document.createElement('span'); 14984 badge.className = BADGE_CLASS; 14985 badge.setAttribute('data-farmacam-generated', 'true'); 14986 badge.setAttribute('data-farmacam-prescription-level', rule.level); 14987 badge.setAttribute('role', 'note'); 14988 badge.textContent = rule.text; 14989 14990 image.classList.add(HOST_CLASS); 14991 image.insertBefore(badge, image.firstChild); 14992 card.setAttribute('data-farmacam-prescription-level', rule.level); 14993 14994 return true; 14995 } 14996 14997 function processCard(card) { 14998 var productId; 14999 var previousState; 15000 var currentState; 15001 15002 if (!card || card.nodeType !== 1) { 15003 return; 15004 } 15005 15006 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 15007 return; 15008 } 15009 15010 productId = normalizeProductId(card.getAttribute('data-id')); 15011 previousState = cardStates.get(card); 15012 15013 if (!productId) { 15014 clearBadge(card); 15015 cardStates.delete(card); 15016 return; 15017 } 15018 15019 if ( 15020 previousState && 15021 previousState.productId === productId && 15022 previousState.status === 'loading' 15023 ) { 15024 return; 15025 } 15026 15027 if ( 15028 previousState && 15029 previousState.productId === productId && 15030 previousState.status === 'processed' 15031 ) { 15032 if (!previousState.rule || findBadge(card)) { 15033 return; 15034 } 15035 } 15036 15037 if (!previousState || previousState.productId !== productId) { 15038 clearBadge(card); 15039 } 15040 15041 currentState = { 15042 productId: productId, 15043 status: 'loading', 15044 rule: null 15045 }; 15046 cardStates.set(card, currentState); 15047 15048 getRule(productId).then(function (rule) { 15049 var applied; 15050 15051 if ( 15052 cardStates.get(card) !== currentState || 15053 normalizeProductId(card.getAttribute('data-id')) !== productId 15054 ) { 15055 return; 15056 } 15057 15058 applied = applyBadge(card, productId, rule); 15059 currentState.rule = rule; 15060 currentState.status = applied ? 'processed' : 'waiting-image'; 15061 }); 15062 } 15063 15064 function scan(root) { 15065 var cards; 15066 var index; 15067 15068 if (!root) { 15069 return; 15070 } 15071 15072 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 15073 processCard(root); 15074 } 15075 15076 if (!root.querySelectorAll) { 15077 return; 15078 } 15079 15080 cards = root.querySelectorAll(CARD_SELECTOR); 15081 for (index = 0; index < cards.length; index += 1) { 15082 processCard(cards[index]); 15083 } 15084 } 15085 15086 function startObserver() { 15087 var observer; 15088 15089 if (!window.MutationObserver || !document.documentElement) { 15090 return; 15091 } 15092 15093 observer = new MutationObserver(function (mutations) { 15094 var mutationIndex; 15095 var nodeIndex; 15096 var mutation; 15097 var node; 15098 var ownerCard; 15099 15100 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 15101 mutation = mutations[mutationIndex]; 15102 15103 if (mutation.type === 'attributes') { 15104 processCard(mutation.target); 15105 continue; 15106 } 15107 15108 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 15109 node = mutation.addedNodes[nodeIndex]; 15110 if (node.nodeType !== 1) { 15111 continue; 15112 } 15113 15114 scan(node); 15115 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 15116 if (ownerCard) { 15117 processCard(ownerCard); 15118 } 15119 } 15120 } 15121 }); 15122 15123 observer.observe(document.documentElement, { 15124 childList: true, 15125 subtree: true, 15126 attributes: true, 15127 attributeFilter: ['data-id'] 15128 }); 15129 15130 window[GLOBAL_KEY].observer = observer; 15131 } 15132 15133 window[GLOBAL_KEY] = { 15134 version: '1.1.0', 15135 cache: cache, 15136 pending: pending, 15137 cardStates: cardStates, 15138 scan: scan, 15139 processCard: processCard, 15140 observer: null 15141 }; 15142 15143 document.addEventListener('load', onTrayScriptLoad, true); 15144 attachTrayAjaxCache(); 15145 injectStyles(); 15146 scan(document); 15147 startObserver(); 15148 15149 if (document.readyState === 'loading') { 15150 document.addEventListener('DOMContentLoaded', function () { 15151 attachTrayAjaxCache(); 15152 scan(document); 15153 }); 15154 } 15155}(window, document)); 15156</script>
15156 15157 </li> 15158 <li class="item flex"> 15159 15160 15161 15162 15163<div class="product animate open_cart" 15164 data-id="125245448" 15165 data-farmacam-related-categories=",Array,Array," 15166 data-ga4-id="125245448" 15167 data-ga4-name="Espertim - Floral Thérapi Kids" 15168 data-ga4-price="32.00" 15169 data-ga4-brand="Floral Thérapi" 15170 data-ga4-category="Tipo de Produto;Industrializados;" 15171 > 15172 15173 <div class="product-header"> 15174 15175 <div class="w-100"> 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 <div class="image "> 15187 15188 <a title="Espertim - Floral Thérapi Kids" href="https://www.farmacam.com.br/espertim-floral-therapi-kids" class="space-image"> 15189 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/espertim_floral_therapi_kids_125245448_1_331c91fd408d3a39c84b5af8cedd00cd.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/espertim_floral_therapi_kids_125245448_1_331c91fd408d3a39c84b5af8cedd00cd.png" alt="Espertim - Floral Thérapi Kids"> 15190 </a> 15191 15192 </div> 15193 15194 15195 15196 15197 15198 </div> 15199 15200 </div> 15201 15202 <div class="product-body"> 15203 15204 <a title="Espertim - Floral Thérapi Kids" class="product-info" href="https://www.farmacam.com.br/espertim-floral-therapi-kids"> 15205 15206 <div class="product-info-dados"> 15207 15208 15209 15210 15211 15212 15213 <div class="product-name"> 15214 Espertim - Floral Thérapi Kids 15215 </div> 15216 15217 15218 15219 <div class="product-price"> 15220 15221 15222 15223 15224 15225 15226<div class="price display-cash"> 15227 15228 15229 <span class="current-price "> 15230 R$ 32,00 15231 15232 </span> 15233 15234 <span class="product-installments"> 15235 15236 </span> 15237 15238</div> 15239 </div> 15240 15241 </div> 15242 15243 </a> 15244 15245 </div> 15246 15247 15248 <div class="product-footer"> 15249 15250 15251 <div class="w-100"> 15252 15253 15254 15255<div class="product-rating-catalog"> 15256 15257 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 15258 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 15259 </svg> 15260 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 15261 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 15262 </svg> 15263 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 15264 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 15265 </svg> 15266 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 15267 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 15268 </svg> 15269 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 15270 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 15271 </svg> 15272 15273 15274 <a title="Ver avaliações de Espertim - Floral Thérapi Kids" href="https://www.farmacam.com.br/espertim-floral-therapi-kids#comments" class="total"> 15275 Seja o primeiro 15276 </a> 15277 15278 </div> 15279 15280 <div class="compare-buttons"> 15281 15282 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245448" class="flex justify-center align-center compare-hidden" data-compare="remove">
15283 <span class="filter-checkbox checked"></span> 15284 Remover Comparação 15285 </a> 15286 15287 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245448" class="flex justify-center align-center " data-compare="add"> 15288 <span class="filter-checkbox"></span> 15289 Comparar Produto 15290 </a> 15291 15292 </div> 15293 15294 15295 <div class="config-variacoes-compra"> 15296 15297 15298 15299 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245448"> 15300 <input type="hidden" name="product_id" value="125245448"> 15301 <input type="hidden" name="without_stock_sale" value=""> 15302 15303 <input type="hidden" name="estoque" value="4"> 15304 15305 15306 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 15307 <div class="alerta-estoque"></div> 15308 <div class="alerta-adicionado"></div> 15309 15310 <div class="acao-compra"> 15311 15312 <div class="quantidade-box"> 15313 <div class="quantidade-box-input"> 15314 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="4" /> 15315 </div> 15316 <div class="quantidade-box-controles"> 15317 <div class="quantidade-box-controles-itens" data-item="mais"> 15318 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 15319 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 15320 </svg> 15321 </div> 15322 <div class="quantidade-box-controles-itens" data-item="menus"> 15323 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 15324 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 15325 </svg> 15326 </div> 15327 </div> 15328 </div> 15329 15330 15331 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245448"> 15332 15333 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 15334 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 15335 15336 15337 15338 15339 15340 15341 <!-- Cesta de Compras --> 15342 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 15343 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 15344 </svg> 15345 15346 15347 15348 Comprar 15349 15350 15351 </button> 15352 <!-- </form> --> 15353 15354 </div> 15355 15356</div> 15357 15358 15359 </div> 15360 15361 </div> 15362 15363 15364</div> 15365
15366<script> 15367(function (window, document) { 15368 'use strict'; 15369 15370 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 15371 15372 if (window[GLOBAL_KEY]) { 15373 return; 15374 } 15375 15376 if (!window.Map || !window.WeakMap || !window.Promise) { 15377 return; 15378 } 15379 15380 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 15381 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 15382 '#vitrine-personalizada .product[data-id]'; 15383 var BADGE_CLASS = 'farmacam-prescription-badge'; 15384 var HOST_CLASS = 'farmacam-prescription-badge-host'; 15385 var MAX_CONCURRENT_REQUESTS = 6; 15386 var REQUEST_TIMEOUT_MS = 12000; 15387 15388 var rules = { 15389 '294': { 15390 level: '294', 15391 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 15392 }, 15393 '296': { 15394 level: '296', 15395 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 15396 }, 15397 '298': { 15398 level: '298', 15399 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 15400 } 15401 }; 15402 15403 var cache = new Map(); 15404 var pending = new Map(); 15405 var cardStates = new WeakMap(); 15406 var queue = []; 15407 var activeRequests = 0; 15408 var trayAjaxHooked = false; 15409 15410 function injectStyles() { 15411 if (document.getElementById('farmacam-prescription-cards-style')) { 15412 return; 15413 } 15414 15415 var style = document.createElement('style'); 15416 style.id = 'farmacam-prescription-cards-style'; 15417 style.textContent = [ 15418 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 15419 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 15420 'position:absolute!important;', 15421 'top:52px!important;', 15422 'left:10px!important;', 15423 'z-index:999!important;', 15424 'display:block!important;', 15425 'max-width:calc(100% - 20px)!important;', 15426 'box-sizing:border-box!important;', 15427 'padding:8px 12px!important;', 15428 'color:#fff!important;', 15429 'font-family:inherit!important;', 15430 'font-size:13px!important;', 15431 'font-weight:900!important;', 15432 'line-height:1.15!important;', 15433 'text-align:center!important;', 15434 'text-transform:uppercase!important;', 15435 'letter-spacing:.3px!important;', 15436 'white-space:normal!important;', 15437 'overflow-wrap:break-word!important;', 15438 'border-radius:3px!important;', 15439 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 15440 'pointer-events:none!important;', 15441 '}', 15442 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 15443 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 15444 'background:#d70008!important;', 15445 '}', 15446 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 15447 'background:#000!important;', 15448 '}', 15449 '@media (max-width:767px){', 15450 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 15451 'top:42px!important;', 15452 'left:6px!important;', 15453 'max-width:calc(100% - 12px)!important;', 15454 'padding:6px 8px!important;', 15455 'font-size:10px!important;', 15456 '}', 15457 '}' 15458 ].join(''); 15459 15460 (document.head || document.documentElement).appendChild(style); 15461 } 15462 15463 function normalizeProductId(value) { 15464 var id = String(value == null ? '' : value).trim(); 15465 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 15466 } 15467 15468 function classifyRelatedCategories(relatedCategories) { 15469 var found = { 15470 '292': false, 15471 '294': false, 15472 '296': false, 15473 '298': false 15474 }; 15475 15476 function inspect(value, depth) { 15477 var index; 15478 var normalized; 15479 15480 if (value == null || depth > 8) { 15481 return; 15482 } 15483 15484 if (Array.isArray(value)) { 15485 for (index = 0; index < value.length; index += 1) { 15486 inspect(value[index], depth + 1); 15487 } 15488 return; 15489 } 15490 15491 if (typeof value === 'object') { 15492 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 15493 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 15494 inspect(value.id, depth + 1); 15495 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 15496 inspect(value.category_id, depth + 1); 15497 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 15498 inspect(value.Category, depth + 1); 15499 } 15500 return; 15501 } 15502 15503 if (typeof value !== 'string' && typeof value !== 'number') { 15504 return; 15505 } 15506 normalized = normalizeProductId(value); 15507 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 15508 found[normalized] = true; 15509 } 15510 } 15511 15512 inspect(relatedCategories, 0); 15513 15514 if (found['298']) { 15515 return rules['298']; 15516 } 15517 if (found['296']) { 15518 return rules['296']; 15519 } 15520 if (found['294']) { 15521 return rules['294']; 15522 } 15523 15524 // 292 e qualquer classificacao desconhecida ficam sem tarja. 15525 return null; 15526 } 15527 15528 function ruleFromPayload(payload, productId) { 15529 var product = payload && payload.Product; 15530 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 15531 return null; 15532 } 15533 return classifyRelatedCategories(product && product.related_categories); 15534 } 15535 15536 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 15537 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 15538 function attachTrayAjaxCache() { 15539 var jq = window.jQuery; 15540 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 15541 return; 15542 } 15543
15544 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 15545 var url; 15546 var match; 15547 var productId; 15548 var payload; 15549 try { 15550 url = new URL(settings.url, window.location.href); 15551 if (url.origin !== window.location.origin) { 15552 return; 15553 } 15554 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 15555 if (!match) { 15556 return; 15557 } 15558 productId = normalizeProductId(match[1]); 15559 if (!cache.has(productId) && !pending.has(productId)) { 15560 payload = data || xhr.responseJSON; 15561 if (typeof payload === 'string') { 15562 payload = JSON.parse(payload); 15563 } 15564 if (!payload || !payload.Product || 15565 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 15566 return; 15567 } 15568 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 15569 return; 15570 } 15571 cache.set(productId, ruleFromPayload(payload, productId)); 15572 } 15573 } catch (error) { 15574 // Respostas de outras integracoes nao interferem nas tarjas. 15575 } 15576 }); 15577 15578 trayAjaxHooked = true; 15579 document.removeEventListener('load', onTrayScriptLoad, true); 15580 } 15581 15582 function onTrayScriptLoad(event) { 15583 if (event.target && event.target.tagName === 'SCRIPT') { 15584 attachTrayAjaxCache(); 15585 } 15586 } 15587 15588 function requestRule(productId) { 15589 var controller = null; 15590 var timeoutId = null; 15591 var options = { 15592 credentials: 'same-origin', 15593 headers: { 15594 'Accept': 'application/json' 15595 } 15596 }; 15597 var request; 15598 15599 if (typeof window.fetch !== 'function') { 15600 return Promise.resolve(null); 15601 } 15602 15603 if (typeof window.AbortController === 'function') { 15604 controller = new window.AbortController(); 15605 options.signal = controller.signal; 15606 timeoutId = window.setTimeout(function () { 15607 controller.abort(); 15608 }, REQUEST_TIMEOUT_MS); 15609 } 15610 15611 try { 15612 request = window.fetch( 15613 '/web_api/products/' + encodeURIComponent(productId), 15614 options 15615 ); 15616 } catch (error) { 15617 if (timeoutId !== null) { 15618 window.clearTimeout(timeoutId); 15619 } 15620 return Promise.resolve(null); 15621 } 15622 15623 return request.then(function (response) { 15624 if (!response.ok) { 15625 throw new Error('HTTP ' + response.status); 15626 } 15627 return response.json(); 15628 }).then(function (payload) { 15629 return ruleFromPayload(payload, productId); 15630 }).then(function (rule) { 15631 if (timeoutId !== null) { 15632 window.clearTimeout(timeoutId); 15633 } 15634 return rule; 15635 }, function () { 15636 if (timeoutId !== null) { 15637 window.clearTimeout(timeoutId); 15638 } 15639 15640 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 15641 return null; 15642 }); 15643 } 15644 15645 function finishJob(job, rule) { 15646 cache.set(job.productId, rule); 15647 pending.delete(job.productId); 15648 activeRequests -= 1; 15649 job.resolve(rule); 15650 pumpQueue(); 15651 } 15652 15653 function pumpQueue() { 15654 var job; 15655 15656 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 15657 job = queue.shift(); 15658 activeRequests += 1; 15659 15660 (function (currentJob) { 15661 requestRule(currentJob.productId).then(function (rule) { 15662 finishJob(currentJob, rule); 15663 }, function () { 15664 finishJob(currentJob, null); 15665 }); 15666 }(job)); 15667 } 15668 } 15669 15670 function getRule(productId) { 15671 var resolver; 15672 var promise; 15673 15674 if (cache.has(productId)) { 15675 return Promise.resolve(cache.get(productId)); 15676 } 15677 15678 if (pending.has(productId)) { 15679 return pending.get(productId); 15680 } 15681 15682 promise = new Promise(function (resolve) { 15683 resolver = resolve; 15684 }); 15685 15686 pending.set(productId, promise); 15687 queue.push({ 15688 productId: productId, 15689 resolve: resolver 15690 }); 15691 pumpQueue(); 15692 15693 return promise; 15694 } 15695 15696 function findBadge(card) { 15697 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 15698 } 15699 15700 function clearBadge(card) { 15701 var badge = findBadge(card); 15702 var image = card.querySelector('.product-header > .w-100 > .image'); 15703 15704 if (badge && badge.parentNode) { 15705 badge.parentNode.removeChild(badge); 15706 } 15707 15708 if (image) { 15709 image.classList.remove(HOST_CLASS); 15710 } 15711 15712 card.removeAttribute('data-farmacam-prescription-level'); 15713 } 15714 15715 function applyBadge(card, productId, rule) { 15716 var image; 15717 var badge; 15718 15719 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 15720 return false;
15721 } 15722 15723 clearBadge(card); 15724 15725 if (!rule) { 15726 return true; 15727 } 15728 15729 image = card.querySelector('.product-header > .w-100 > .image'); 15730 if (!image) { 15731 return false; 15732 } 15733 15734 badge = document.createElement('span'); 15735 badge.className = BADGE_CLASS; 15736 badge.setAttribute('data-farmacam-generated', 'true'); 15737 badge.setAttribute('data-farmacam-prescription-level', rule.level); 15738 badge.setAttribute('role', 'note'); 15739 badge.textContent = rule.text; 15740 15741 image.classList.add(HOST_CLASS); 15742 image.insertBefore(badge, image.firstChild); 15743 card.setAttribute('data-farmacam-prescription-level', rule.level); 15744 15745 return true; 15746 } 15747 15748 function processCard(card) { 15749 var productId; 15750 var previousState; 15751 var currentState; 15752 15753 if (!card || card.nodeType !== 1) { 15754 return; 15755 } 15756 15757 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 15758 return; 15759 } 15760 15761 productId = normalizeProductId(card.getAttribute('data-id')); 15762 previousState = cardStates.get(card); 15763 15764 if (!productId) { 15765 clearBadge(card); 15766 cardStates.delete(card); 15767 return; 15768 } 15769 15770 if ( 15771 previousState && 15772 previousState.productId === productId && 15773 previousState.status === 'loading' 15774 ) { 15775 return; 15776 } 15777 15778 if ( 15779 previousState && 15780 previousState.productId === productId && 15781 previousState.status === 'processed' 15782 ) { 15783 if (!previousState.rule || findBadge(card)) { 15784 return; 15785 } 15786 } 15787 15788 if (!previousState || previousState.productId !== productId) { 15789 clearBadge(card); 15790 } 15791 15792 currentState = { 15793 productId: productId, 15794 status: 'loading', 15795 rule: null 15796 }; 15797 cardStates.set(card, currentState); 15798 15799 getRule(productId).then(function (rule) { 15800 var applied; 15801 15802 if ( 15803 cardStates.get(card) !== currentState || 15804 normalizeProductId(card.getAttribute('data-id')) !== productId 15805 ) { 15806 return; 15807 } 15808 15809 applied = applyBadge(card, productId, rule); 15810 currentState.rule = rule; 15811 currentState.status = applied ? 'processed' : 'waiting-image'; 15812 }); 15813 } 15814 15815 function scan(root) { 15816 var cards; 15817 var index; 15818 15819 if (!root) { 15820 return; 15821 } 15822 15823 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 15824 processCard(root); 15825 } 15826 15827 if (!root.querySelectorAll) { 15828 return; 15829 } 15830 15831 cards = root.querySelectorAll(CARD_SELECTOR); 15832 for (index = 0; index < cards.length; index += 1) { 15833 processCard(cards[index]); 15834 } 15835 } 15836 15837 function startObserver() { 15838 var observer; 15839 15840 if (!window.MutationObserver || !document.documentElement) { 15841 return; 15842 } 15843 15844 observer = new MutationObserver(function (mutations) { 15845 var mutationIndex; 15846 var nodeIndex; 15847 var mutation; 15848 var node; 15849 var ownerCard; 15850 15851 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 15852 mutation = mutations[mutationIndex]; 15853 15854 if (mutation.type === 'attributes') { 15855 processCard(mutation.target); 15856 continue; 15857 } 15858 15859 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 15860 node = mutation.addedNodes[nodeIndex]; 15861 if (node.nodeType !== 1) { 15862 continue; 15863 } 15864 15865 scan(node); 15866 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 15867 if (ownerCard) { 15868 processCard(ownerCard); 15869 } 15870 } 15871 } 15872 }); 15873 15874 observer.observe(document.documentElement, { 15875 childList: true, 15876 subtree: true, 15877 attributes: true, 15878 attributeFilter: ['data-id'] 15879 }); 15880 15881 window[GLOBAL_KEY].observer = observer; 15882 } 15883 15884 window[GLOBAL_KEY] = { 15885 version: '1.1.0', 15886 cache: cache, 15887 pending: pending, 15888 cardStates: cardStates, 15889 scan: scan, 15890 processCard: processCard, 15891 observer: null 15892 }; 15893 15894 document.addEventListener('load', onTrayScriptLoad, true); 15895 attachTrayAjaxCache(); 15896 injectStyles(); 15897 scan(document); 15898 startObserver(); 15899 15900 if (document.readyState === 'loading') { 15901 document.addEventListener('DOMContentLoaded', function () { 15902 attachTrayAjaxCache(); 15903 scan(document); 15904 }); 15905 } 15906}(window, document)); 15907</script>
15907 15908 </li> 15909 <li class="item flex"> 15910 15911 15912 15913 15914<div class="product animate open_cart" 15915 data-id="125245438" 15916 data-farmacam-related-categories=",Array,Array," 15917 data-ga4-id="125245438" 15918 data-ga4-name="Escolare - Floral Thérapi" 15919 data-ga4-price="32.00" 15920 data-ga4-brand="Floral Thérapi" 15921 data-ga4-category="Tipo de Produto;Industrializados;" 15922 > 15923 15924 <div class="product-header"> 15925 15926 <div class="w-100"> 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 <div class="image "> 15938 15939 <a title="Escolare - Floral Thérapi" href="https://www.farmacam.com.br/escolare-floral-therapi" class="space-image"> 15940 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/escolare_floral_therapi_125245438_1_3ef35a74122695a085e58db52df3f0d8.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/escolare_floral_therapi_125245438_1_3ef35a74122695a085e58db52df3f0d8.png" alt="Escolare - Floral Thérapi"> 15941 </a> 15942 15943 </div> 15944 15945 15946 15947 15948 15949 </div> 15950 15951 </div> 15952 15953 <div class="product-body"> 15954 15955 <a title="Escolare - Floral Thérapi" class="product-info" href="https://www.farmacam.com.br/escolare-floral-therapi"> 15956 15957 <div class="product-info-dados"> 15958 15959 15960 15961 15962 15963 15964 <div class="product-name"> 15965 Escolare - Floral Thérapi 15966 </div> 15967 15968 15969 15970 <div class="product-price"> 15971 15972 15973 15974 15975 15976 15977<div class="price display-cash"> 15978 15979 15980 <span class="current-price "> 15981 R$ 32,00 15982 15983 </span> 15984 15985 <span class="product-installments"> 15986 15987 </span> 15988 15989</div> 15990 </div> 15991 15992 </div> 15993 15994 </a> 15995 15996 </div> 15997 15998 15999 <div class="product-footer"> 16000 16001 16002 <div class="w-100"> 16003 16004 16005 16006<div class="product-rating-catalog"> 16007 16008 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16009 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16010 </svg> 16011 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16012 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16013 </svg> 16014 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16015 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16016 </svg> 16017 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16018 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16019 </svg> 16020 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16021 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16022 </svg> 16023 16024 16025 <a title="Ver avaliações de Escolare - Floral Thérapi" href="https://www.farmacam.com.br/escolare-floral-therapi#comments" class="total"> 16026 Seja o primeiro 16027 </a> 16028 16029 </div> 16030 16031 <div class="compare-buttons"> 16032 16033 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245438" class="flex justify-center align-center compare-hidden" data-compare="remove">
16034 <span class="filter-checkbox checked"></span> 16035 Remover Comparação 16036 </a> 16037 16038 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125245438" class="flex justify-center align-center " data-compare="add"> 16039 <span class="filter-checkbox"></span> 16040 Comparar Produto 16041 </a> 16042 16043 </div> 16044 16045 16046 <div class="config-variacoes-compra"> 16047 16048 16049 16050 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245438"> 16051 <input type="hidden" name="product_id" value="125245438"> 16052 <input type="hidden" name="without_stock_sale" value=""> 16053 16054 <input type="hidden" name="estoque" value="1"> 16055 16056 16057 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 16058 <div class="alerta-estoque"></div> 16059 <div class="alerta-adicionado"></div> 16060 16061 <div class="acao-compra"> 16062 16063 <div class="quantidade-box"> 16064 <div class="quantidade-box-input"> 16065 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="1" /> 16066 </div> 16067 <div class="quantidade-box-controles"> 16068 <div class="quantidade-box-controles-itens" data-item="mais"> 16069 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 16070 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 16071 </svg> 16072 </div> 16073 <div class="quantidade-box-controles-itens" data-item="menus"> 16074 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 16075 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 16076 </svg> 16077 </div> 16078 </div> 16079 </div> 16080 16081 16082 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125245438"> 16083 16084 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 16085 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 16086 16087 16088 16089 16090 16091 16092 <!-- Cesta de Compras --> 16093 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 16094 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 16095 </svg> 16096 16097 16098 16099 Comprar 16100 16101 16102 </button> 16103 <!-- </form> --> 16104 16105 </div> 16106 16107</div> 16108 16109 16110 </div> 16111 16112 </div> 16113 16114 16115</div> 16116
16117<script> 16118(function (window, document) { 16119 'use strict'; 16120 16121 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 16122 16123 if (window[GLOBAL_KEY]) { 16124 return; 16125 } 16126 16127 if (!window.Map || !window.WeakMap || !window.Promise) { 16128 return; 16129 } 16130 16131 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 16132 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 16133 '#vitrine-personalizada .product[data-id]'; 16134 var BADGE_CLASS = 'farmacam-prescription-badge'; 16135 var HOST_CLASS = 'farmacam-prescription-badge-host'; 16136 var MAX_CONCURRENT_REQUESTS = 6; 16137 var REQUEST_TIMEOUT_MS = 12000; 16138 16139 var rules = { 16140 '294': { 16141 level: '294', 16142 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 16143 }, 16144 '296': { 16145 level: '296', 16146 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 16147 }, 16148 '298': { 16149 level: '298', 16150 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 16151 } 16152 }; 16153 16154 var cache = new Map(); 16155 var pending = new Map(); 16156 var cardStates = new WeakMap(); 16157 var queue = []; 16158 var activeRequests = 0; 16159 var trayAjaxHooked = false; 16160 16161 function injectStyles() { 16162 if (document.getElementById('farmacam-prescription-cards-style')) { 16163 return; 16164 } 16165 16166 var style = document.createElement('style'); 16167 style.id = 'farmacam-prescription-cards-style'; 16168 style.textContent = [ 16169 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 16170 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 16171 'position:absolute!important;', 16172 'top:52px!important;', 16173 'left:10px!important;', 16174 'z-index:999!important;', 16175 'display:block!important;', 16176 'max-width:calc(100% - 20px)!important;', 16177 'box-sizing:border-box!important;', 16178 'padding:8px 12px!important;', 16179 'color:#fff!important;', 16180 'font-family:inherit!important;', 16181 'font-size:13px!important;', 16182 'font-weight:900!important;', 16183 'line-height:1.15!important;', 16184 'text-align:center!important;', 16185 'text-transform:uppercase!important;', 16186 'letter-spacing:.3px!important;', 16187 'white-space:normal!important;', 16188 'overflow-wrap:break-word!important;', 16189 'border-radius:3px!important;', 16190 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 16191 'pointer-events:none!important;', 16192 '}', 16193 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 16194 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 16195 'background:#d70008!important;', 16196 '}', 16197 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 16198 'background:#000!important;', 16199 '}', 16200 '@media (max-width:767px){', 16201 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 16202 'top:42px!important;', 16203 'left:6px!important;', 16204 'max-width:calc(100% - 12px)!important;', 16205 'padding:6px 8px!important;', 16206 'font-size:10px!important;', 16207 '}', 16208 '}' 16209 ].join(''); 16210 16211 (document.head || document.documentElement).appendChild(style); 16212 } 16213 16214 function normalizeProductId(value) { 16215 var id = String(value == null ? '' : value).trim(); 16216 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 16217 } 16218 16219 function classifyRelatedCategories(relatedCategories) { 16220 var found = { 16221 '292': false, 16222 '294': false, 16223 '296': false, 16224 '298': false 16225 }; 16226 16227 function inspect(value, depth) { 16228 var index; 16229 var normalized; 16230 16231 if (value == null || depth > 8) { 16232 return; 16233 } 16234 16235 if (Array.isArray(value)) { 16236 for (index = 0; index < value.length; index += 1) { 16237 inspect(value[index], depth + 1); 16238 } 16239 return; 16240 } 16241 16242 if (typeof value === 'object') { 16243 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 16244 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 16245 inspect(value.id, depth + 1); 16246 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 16247 inspect(value.category_id, depth + 1); 16248 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 16249 inspect(value.Category, depth + 1); 16250 } 16251 return; 16252 } 16253 16254 if (typeof value !== 'string' && typeof value !== 'number') { 16255 return; 16256 } 16257 normalized = normalizeProductId(value); 16258 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 16259 found[normalized] = true; 16260 } 16261 } 16262 16263 inspect(relatedCategories, 0); 16264 16265 if (found['298']) { 16266 return rules['298']; 16267 } 16268 if (found['296']) { 16269 return rules['296']; 16270 } 16271 if (found['294']) { 16272 return rules['294']; 16273 } 16274 16275 // 292 e qualquer classificacao desconhecida ficam sem tarja. 16276 return null; 16277 } 16278 16279 function ruleFromPayload(payload, productId) { 16280 var product = payload && payload.Product; 16281 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 16282 return null; 16283 } 16284 return classifyRelatedCategories(product && product.related_categories); 16285 } 16286 16287 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 16288 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 16289 function attachTrayAjaxCache() { 16290 var jq = window.jQuery; 16291 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 16292 return; 16293 } 16294
16295 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 16296 var url; 16297 var match; 16298 var productId; 16299 var payload; 16300 try { 16301 url = new URL(settings.url, window.location.href); 16302 if (url.origin !== window.location.origin) { 16303 return; 16304 } 16305 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 16306 if (!match) { 16307 return; 16308 } 16309 productId = normalizeProductId(match[1]); 16310 if (!cache.has(productId) && !pending.has(productId)) { 16311 payload = data || xhr.responseJSON; 16312 if (typeof payload === 'string') { 16313 payload = JSON.parse(payload); 16314 } 16315 if (!payload || !payload.Product || 16316 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 16317 return; 16318 } 16319 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 16320 return; 16321 } 16322 cache.set(productId, ruleFromPayload(payload, productId)); 16323 } 16324 } catch (error) { 16325 // Respostas de outras integracoes nao interferem nas tarjas. 16326 } 16327 }); 16328 16329 trayAjaxHooked = true; 16330 document.removeEventListener('load', onTrayScriptLoad, true); 16331 } 16332 16333 function onTrayScriptLoad(event) { 16334 if (event.target && event.target.tagName === 'SCRIPT') { 16335 attachTrayAjaxCache(); 16336 } 16337 } 16338 16339 function requestRule(productId) { 16340 var controller = null; 16341 var timeoutId = null; 16342 var options = { 16343 credentials: 'same-origin', 16344 headers: { 16345 'Accept': 'application/json' 16346 } 16347 }; 16348 var request; 16349 16350 if (typeof window.fetch !== 'function') { 16351 return Promise.resolve(null); 16352 } 16353 16354 if (typeof window.AbortController === 'function') { 16355 controller = new window.AbortController(); 16356 options.signal = controller.signal; 16357 timeoutId = window.setTimeout(function () { 16358 controller.abort(); 16359 }, REQUEST_TIMEOUT_MS); 16360 } 16361 16362 try { 16363 request = window.fetch( 16364 '/web_api/products/' + encodeURIComponent(productId), 16365 options 16366 ); 16367 } catch (error) { 16368 if (timeoutId !== null) { 16369 window.clearTimeout(timeoutId); 16370 } 16371 return Promise.resolve(null); 16372 } 16373 16374 return request.then(function (response) { 16375 if (!response.ok) { 16376 throw new Error('HTTP ' + response.status); 16377 } 16378 return response.json(); 16379 }).then(function (payload) { 16380 return ruleFromPayload(payload, productId); 16381 }).then(function (rule) { 16382 if (timeoutId !== null) { 16383 window.clearTimeout(timeoutId); 16384 } 16385 return rule; 16386 }, function () { 16387 if (timeoutId !== null) { 16388 window.clearTimeout(timeoutId); 16389 } 16390 16391 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 16392 return null; 16393 }); 16394 } 16395 16396 function finishJob(job, rule) { 16397 cache.set(job.productId, rule); 16398 pending.delete(job.productId); 16399 activeRequests -= 1; 16400 job.resolve(rule); 16401 pumpQueue(); 16402 } 16403 16404 function pumpQueue() { 16405 var job; 16406 16407 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 16408 job = queue.shift(); 16409 activeRequests += 1; 16410 16411 (function (currentJob) { 16412 requestRule(currentJob.productId).then(function (rule) { 16413 finishJob(currentJob, rule); 16414 }, function () { 16415 finishJob(currentJob, null); 16416 }); 16417 }(job)); 16418 } 16419 } 16420 16421 function getRule(productId) { 16422 var resolver; 16423 var promise; 16424 16425 if (cache.has(productId)) { 16426 return Promise.resolve(cache.get(productId)); 16427 } 16428 16429 if (pending.has(productId)) { 16430 return pending.get(productId); 16431 } 16432 16433 promise = new Promise(function (resolve) { 16434 resolver = resolve; 16435 }); 16436 16437 pending.set(productId, promise); 16438 queue.push({ 16439 productId: productId, 16440 resolve: resolver 16441 }); 16442 pumpQueue(); 16443 16444 return promise; 16445 } 16446 16447 function findBadge(card) { 16448 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 16449 } 16450 16451 function clearBadge(card) { 16452 var badge = findBadge(card); 16453 var image = card.querySelector('.product-header > .w-100 > .image'); 16454 16455 if (badge && badge.parentNode) { 16456 badge.parentNode.removeChild(badge); 16457 } 16458 16459 if (image) { 16460 image.classList.remove(HOST_CLASS); 16461 } 16462 16463 card.removeAttribute('data-farmacam-prescription-level'); 16464 } 16465 16466 function applyBadge(card, productId, rule) { 16467 var image; 16468 var badge; 16469 16470 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 16471 return false;
16472 } 16473 16474 clearBadge(card); 16475 16476 if (!rule) { 16477 return true; 16478 } 16479 16480 image = card.querySelector('.product-header > .w-100 > .image'); 16481 if (!image) { 16482 return false; 16483 } 16484 16485 badge = document.createElement('span'); 16486 badge.className = BADGE_CLASS; 16487 badge.setAttribute('data-farmacam-generated', 'true'); 16488 badge.setAttribute('data-farmacam-prescription-level', rule.level); 16489 badge.setAttribute('role', 'note'); 16490 badge.textContent = rule.text; 16491 16492 image.classList.add(HOST_CLASS); 16493 image.insertBefore(badge, image.firstChild); 16494 card.setAttribute('data-farmacam-prescription-level', rule.level); 16495 16496 return true; 16497 } 16498 16499 function processCard(card) { 16500 var productId; 16501 var previousState; 16502 var currentState; 16503 16504 if (!card || card.nodeType !== 1) { 16505 return; 16506 } 16507 16508 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 16509 return; 16510 } 16511 16512 productId = normalizeProductId(card.getAttribute('data-id')); 16513 previousState = cardStates.get(card); 16514 16515 if (!productId) { 16516 clearBadge(card); 16517 cardStates.delete(card); 16518 return; 16519 } 16520 16521 if ( 16522 previousState && 16523 previousState.productId === productId && 16524 previousState.status === 'loading' 16525 ) { 16526 return; 16527 } 16528 16529 if ( 16530 previousState && 16531 previousState.productId === productId && 16532 previousState.status === 'processed' 16533 ) { 16534 if (!previousState.rule || findBadge(card)) { 16535 return; 16536 } 16537 } 16538 16539 if (!previousState || previousState.productId !== productId) { 16540 clearBadge(card); 16541 } 16542 16543 currentState = { 16544 productId: productId, 16545 status: 'loading', 16546 rule: null 16547 }; 16548 cardStates.set(card, currentState); 16549 16550 getRule(productId).then(function (rule) { 16551 var applied; 16552 16553 if ( 16554 cardStates.get(card) !== currentState || 16555 normalizeProductId(card.getAttribute('data-id')) !== productId 16556 ) { 16557 return; 16558 } 16559 16560 applied = applyBadge(card, productId, rule); 16561 currentState.rule = rule; 16562 currentState.status = applied ? 'processed' : 'waiting-image'; 16563 }); 16564 } 16565 16566 function scan(root) { 16567 var cards; 16568 var index; 16569 16570 if (!root) { 16571 return; 16572 } 16573 16574 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 16575 processCard(root); 16576 } 16577 16578 if (!root.querySelectorAll) { 16579 return; 16580 } 16581 16582 cards = root.querySelectorAll(CARD_SELECTOR); 16583 for (index = 0; index < cards.length; index += 1) { 16584 processCard(cards[index]); 16585 } 16586 } 16587 16588 function startObserver() { 16589 var observer; 16590 16591 if (!window.MutationObserver || !document.documentElement) { 16592 return; 16593 } 16594 16595 observer = new MutationObserver(function (mutations) { 16596 var mutationIndex; 16597 var nodeIndex; 16598 var mutation; 16599 var node; 16600 var ownerCard; 16601 16602 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 16603 mutation = mutations[mutationIndex]; 16604 16605 if (mutation.type === 'attributes') { 16606 processCard(mutation.target); 16607 continue; 16608 } 16609 16610 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 16611 node = mutation.addedNodes[nodeIndex]; 16612 if (node.nodeType !== 1) { 16613 continue; 16614 } 16615 16616 scan(node); 16617 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 16618 if (ownerCard) { 16619 processCard(ownerCard); 16620 } 16621 } 16622 } 16623 }); 16624 16625 observer.observe(document.documentElement, { 16626 childList: true, 16627 subtree: true, 16628 attributes: true, 16629 attributeFilter: ['data-id'] 16630 }); 16631 16632 window[GLOBAL_KEY].observer = observer; 16633 } 16634 16635 window[GLOBAL_KEY] = { 16636 version: '1.1.0', 16637 cache: cache, 16638 pending: pending, 16639 cardStates: cardStates, 16640 scan: scan, 16641 processCard: processCard, 16642 observer: null 16643 }; 16644 16645 document.addEventListener('load', onTrayScriptLoad, true); 16646 attachTrayAjaxCache(); 16647 injectStyles(); 16648 scan(document); 16649 startObserver(); 16650 16651 if (document.readyState === 'loading') { 16652 document.addEventListener('DOMContentLoaded', function () { 16653 attachTrayAjaxCache(); 16654 scan(document); 16655 }); 16656 } 16657}(window, document)); 16658</script>
16658 16659 </li> 16660 <li class="item flex"> 16661 16662 16663 16664 16665<div class="product animate open_cart" 16666 data-id="125240154" 16667 data-farmacam-related-categories=",Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array," 16668 data-ga4-id="125240154" 16669 data-ga4-name="Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL" 16670 data-ga4-price="137.00" 16671 data-ga4-brand="Extratos Alergênicos" 16672 data-ga4-category="Tipo de Produto;Industrializados;" 16673 > 16674 16675 <div class="product-header"> 16676 16677 <div class="w-100"> 16678 16679 16680 16681 16682 16683 16684 16685 16686 16687 16688 <div class="image "> 16689 16690 <a title="Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL" href="https://www.farmacam.com.br/plusvac-sc-ap-subcutanea-acao-prolongada-5ml" class="space-image"> 16691 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/plusvac_sc_ap_subcutanea_acao_prolongada_5ml_125240154_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/plusvac_sc_ap_subcutanea_acao_prolongada_5ml_125240154_1_3740e8e00ae905feed155648e56241fb.png" alt="Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL"> 16692 </a> 16693 16694 </div> 16695 16696 16697 16698 16699 16700 </div> 16701 16702 </div> 16703 16704 <div class="product-body"> 16705 16706 <a title="Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL" class="product-info" href="https://www.farmacam.com.br/plusvac-sc-ap-subcutanea-acao-prolongada-5ml"> 16707 16708 <div class="product-info-dados"> 16709 16710 16711 16712 16713 16714 16715 <div class="product-name"> 16716 Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL 16717 </div> 16718 16719 16720 16721 <div class="product-price"> 16722 16723 16724 16725 16726 16727 16728<div class="price display-cash"> 16729 16730 16731 <span class="current-price "> 16732 R$ 137,00 16733 16734 </span> 16735 16736 <span class="product-installments"> 16737 16738 </span> 16739 16740</div> 16741 </div> 16742 16743 </div> 16744 16745 </a> 16746 16747 </div> 16748 16749 16750 <div class="product-footer"> 16751 16752 16753 <div class="w-100"> 16754 16755 16756 16757<div class="product-rating-catalog"> 16758 16759 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16760 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16761 </svg> 16762 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16763 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16764 </svg> 16765 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16766 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16767 </svg> 16768 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16769 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16770 </svg> 16771 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 16772 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 16773 </svg> 16774 16775 16776 <a title="Ver avaliações de Plusvac SC AP - Subcutânea - Ação Prolongada - 5mL" href="https://www.farmacam.com.br/plusvac-sc-ap-subcutanea-acao-prolongada-5ml#comments" class="total"> 16777 Seja o primeiro 16778 </a> 16779 16780 </div> 16781 16782 <div class="compare-buttons"> 16783 16784 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240154" class="flex justify-center align-center compare-hidden" data-compare="remove">
16785 <span class="filter-checkbox checked"></span> 16786 Remover Comparação 16787 </a> 16788 16789 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240154" class="flex justify-center align-center " data-compare="add"> 16790 <span class="filter-checkbox"></span> 16791 Comparar Produto 16792 </a> 16793 16794 </div> 16795 16796 16797 <div class="config-variacoes-compra"> 16798 16799 16800 16801 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240154"> 16802 <input type="hidden" name="product_id" value="125240154"> 16803 <input type="hidden" name="without_stock_sale" value=""> 16804 16805 <input type="hidden" name="variacao" id="selectedVariant" value=""> 16806 <input type="hidden" name="estoque" value=""> 16807 16808 16809 16810 <ul class="paleta-cores"> 16811 16812 16813 16814 16815 16816 16817 16818 16819 16820 16821 16822 16823 16824 16825 16826 16827 16828 16829 16830 16831 16832 16833 16834 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16862 16863 16864 16865 16866 16867 16868 16869 16870 16871 16872 16873 16874 16875 16876 16877 16878 16879 16880 16881 16882 16883 16884 16885 16886 16887 16888 16889 16890 16891 16892 16893 16894 16895 16896 16897 16898 16899 16900 16901 16902 16903 16904 16905 16906 16907 16908 16909 16910 16911 16912 16913 16914 16915 16916 16917 16918 16919 16920 16921 16922 16923 16924 16925 16926 16927 16928 16929 16930 16931 16932 16933 16934 16935 16936 16937 16938 16939 16940 16941 16942 16943 16944 16945 16946 16947 16948 16949 16950 16951 16952 16953 16954 16955 16956 16957 16958 16959 16960 16961 16962 16963 16964 16965 16966 16967 16968 16969 16970 16971 16972 16973 16974 16975 16976 16977 16978 16979 16980 16981 16982 16983 16984 16985 16986 16987 16988 16989 16990 16991 16992 16993 16994 16995 16996 16997 16998 16999 17000 17001 17002 17003 17004 17005 17006 17007 17008 17009 17010 17011 17012 17013 17014 17015 17016 17017 17018 17019 17020 17021 17022 17023 17024 17025 17026 17027 17028 17029 17030 17031 17032 17033 17034 17035 17036 17037 17038 17039 17040 17041 17042 17043 17044 17045 17046 17047 17048 17049 17050 17051 17052 17053 17054 17055 17056 17057 17058 17059 17060 17061 17062 17063 17064 17065 17066 17067 17068 17069 17070 17071 17072 17073 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 17084 17085 17086 17087 17088 17089 17090 17091 17092 17093 17094 17095 17096 17097 17098 17099 17100 17101 17102 17103 17104 17105 17106 17107 17108 17109 17110 17111 17112 17113 17114 17115 17116 17117 17118 17119 17120 17121 17122 17123 17124 17125 17126 17127 17128 17129 17130 17131 17132 17133 17134 17135 17136 17137 17138 17139 17140 17141 17142 17143 17144 17145 17146 17147 17148 17149 17150 17151 17152 17153 17154 17155 17156 17157 17158 17159 17160 17161 17162 17163 17164 17165 17166 17167 17168 17169 17170 17171 17172 17173 17174 17175 17176 17177 17178 17179 17180 17181 17182 17183 17184 17185 17186 17187 17188 17189 17190 17191 17192 17193 17194 17195 17196 17197 17198 17199 17200 17201 17202 17203 17204 17205 17206 17207 17208 17209 17210 17211 17212 17213 17214 17215 17216 17217 17218 17219 17220 17221 17222 17223 17224 17225 17226 17227 17228 17229 17230 17231 17232 17233 17234 17235 17236 17237 17238 17239 17240 17241 17242 17243 17244 17245 17246 17247 17248 17249 17250 17251 17252 17253 17254 17255 17256 17257 17258 17259 17260 17261 17262 17263 17264 17265 17266 17267 17268 17269 17270 17271 17272 17273 17274 17275 17276 17277 17278 17279 17280 17281 17282 17283 17284 17285 17286 17287 17288 17289 17290 17291 17292 17293 17294 17295 17296 17297 17298 17299 17300 17301 17302 17303 17304 17305 17306 17307 17308 17309 17310 17311 17312 17313 17314 17315 17316 17317 17318 17319 17320 17321 17322 17323 17324 17325 17326 17327 17328 17329 17330 17331 17332 17333 17334 17335 17336 17337 17338 17339 17340 17341 17342 17343 17344 17345 17346 17347 17348 17349 17350 17351 17352 17353 17354 17355 17356 17357 17358 17359 17360 17361 17362 17363 17364 17365 17366 17367 17368
17368 17369 17370 17371 17372 17373 17374 17375 17376 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 17388 17389 </ul> 17390 <!-- Fim Paleta de Cores --> 17391 17392 17393 17394 17395 17396 17397 17398 17399 17400 17401 17402 17403 17404 17405 17406 <select class="select-tamanho" style="display: none;" title="Campo Tamanho"> 17407 <option disabled="disabled" value=""> 17408 Selecione 17409 </option> 17410 17411 17412 <option value="19396" produto="125240154" estoque="9999">1ª Série</option> 17413 17414 17415 17416 17417 <option value="19398" produto="125240154" estoque="9999">2ª Série</option> 17418 17419 17420 17421 17422 <option value="19400" produto="125240154" estoque="10000">3ª Série</option> 17423 17424 17425 </select> 17426 17427 17428 <select class="select-cor" style="display: none;" title="Campo Cor"> 17429
17429 </select> 17430 17431 17432 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 17433 <div class="alerta-estoque"></div> 17434 <div class="alerta-adicionado"></div> 17435 17436 <div class="acao-compra"> 17437 17438 <div class="quantidade-box"> 17439 <div class="quantidade-box-input"> 17440 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-e
17440stoque="29998" /> 17441 </div> 17442 <div class="quantidade-box-controles"> 17443 <div class="quantidade-box-controles-itens" data-item="mais"> 17444 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 17445 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 17446 </svg> 17447 </div> 17448 <div class="quantidade-box-controles-itens" data-item="menus"> 17449 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 17450 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 17451 </svg> 17452 </div> 17453 </div> 17454 </div> 17455 17456 17457 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240154"> 17458 17459 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=" style="width: 100%;"> --> 17460 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 17461 17462 17463 17464 17465 17466 17467 <!-- Cesta de Compras --> 17468 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 17469 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 17470 </svg> 17471 17472 17473 17474 Comprar 17475 17476 17477 </button> 17478 <!-- </form> --> 17479 17480 </div> 17481 17482</div> 17483 17484 17485 </div> 17486 17487 </div> 17488 17489 17490</div> 17491
17492<script> 17493(function (window, document) { 17494 'use strict'; 17495 17496 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 17497 17498 if (window[GLOBAL_KEY]) { 17499 return; 17500 } 17501 17502 if (!window.Map || !window.WeakMap || !window.Promise) { 17503 return; 17504 } 17505 17506 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 17507 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 17508 '#vitrine-personalizada .product[data-id]'; 17509 var BADGE_CLASS = 'farmacam-prescription-badge'; 17510 var HOST_CLASS = 'farmacam-prescription-badge-host'; 17511 var MAX_CONCURRENT_REQUESTS = 6; 17512 var REQUEST_TIMEOUT_MS = 12000; 17513 17514 var rules = { 17515 '294': { 17516 level: '294', 17517 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 17518 }, 17519 '296': { 17520 level: '296', 17521 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 17522 }, 17523 '298': { 17524 level: '298', 17525 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 17526 } 17527 }; 17528 17529 var cache = new Map(); 17530 var pending = new Map(); 17531 var cardStates = new WeakMap(); 17532 var queue = []; 17533 var activeRequests = 0; 17534 var trayAjaxHooked = false; 17535 17536 function injectStyles() { 17537 if (document.getElementById('farmacam-prescription-cards-style')) { 17538 return; 17539 } 17540 17541 var style = document.createElement('style'); 17542 style.id = 'farmacam-prescription-cards-style'; 17543 style.textContent = [ 17544 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 17545 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 17546 'position:absolute!important;', 17547 'top:52px!important;', 17548 'left:10px!important;', 17549 'z-index:999!important;', 17550 'display:block!important;', 17551 'max-width:calc(100% - 20px)!important;', 17552 'box-sizing:border-box!important;', 17553 'padding:8px 12px!important;', 17554 'color:#fff!important;', 17555 'font-family:inherit!important;', 17556 'font-size:13px!important;', 17557 'font-weight:900!important;', 17558 'line-height:1.15!important;', 17559 'text-align:center!important;', 17560 'text-transform:uppercase!important;', 17561 'letter-spacing:.3px!important;', 17562 'white-space:normal!important;', 17563 'overflow-wrap:break-word!important;', 17564 'border-radius:3px!important;', 17565 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 17566 'pointer-events:none!important;', 17567 '}', 17568 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 17569 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 17570 'background:#d70008!important;', 17571 '}', 17572 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 17573 'background:#000!important;', 17574 '}', 17575 '@media (max-width:767px){', 17576 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 17577 'top:42px!important;', 17578 'left:6px!important;', 17579 'max-width:calc(100% - 12px)!important;', 17580 'padding:6px 8px!important;', 17581 'font-size:10px!important;', 17582 '}', 17583 '}' 17584 ].join(''); 17585 17586 (document.head || document.documentElement).appendChild(style); 17587 } 17588 17589 function normalizeProductId(value) { 17590 var id = String(value == null ? '' : value).trim(); 17591 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 17592 } 17593 17594 function classifyRelatedCategories(relatedCategories) { 17595 var found = { 17596 '292': false, 17597 '294': false, 17598 '296': false, 17599 '298': false 17600 }; 17601 17602 function inspect(value, depth) { 17603 var index; 17604 var normalized; 17605 17606 if (value == null || depth > 8) { 17607 return; 17608 } 17609 17610 if (Array.isArray(value)) { 17611 for (index = 0; index < value.length; index += 1) { 17612 inspect(value[index], depth + 1); 17613 } 17614 return; 17615 } 17616 17617 if (typeof value === 'object') { 17618 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 17619 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 17620 inspect(value.id, depth + 1); 17621 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 17622 inspect(value.category_id, depth + 1); 17623 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 17624 inspect(value.Category, depth + 1); 17625 } 17626 return; 17627 } 17628 17629 if (typeof value !== 'string' && typeof value !== 'number') { 17630 return; 17631 } 17632 normalized = normalizeProductId(value); 17633 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 17634 found[normalized] = true; 17635 } 17636 } 17637 17638 inspect(relatedCategories, 0); 17639 17640 if (found['298']) { 17641 return rules['298']; 17642 } 17643 if (found['296']) { 17644 return rules['296']; 17645 } 17646 if (found['294']) { 17647 return rules['294']; 17648 } 17649 17650 // 292 e qualquer classificacao desconhecida ficam sem tarja. 17651 return null; 17652 } 17653 17654 function ruleFromPayload(payload, productId) { 17655 var product = payload && payload.Product; 17656 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 17657 return null; 17658 } 17659 return classifyRelatedCategories(product && product.related_categories); 17660 } 17661 17662 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 17663 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 17664 function attachTrayAjaxCache() { 17665 var jq = window.jQuery; 17666 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 17667 return; 17668 } 17669
17670 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 17671 var url; 17672 var match; 17673 var productId; 17674 var payload; 17675 try { 17676 url = new URL(settings.url, window.location.href); 17677 if (url.origin !== window.location.origin) { 17678 return; 17679 } 17680 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 17681 if (!match) { 17682 return; 17683 } 17684 productId = normalizeProductId(match[1]); 17685 if (!cache.has(productId) && !pending.has(productId)) { 17686 payload = data || xhr.responseJSON; 17687 if (typeof payload === 'string') { 17688 payload = JSON.parse(payload); 17689 } 17690 if (!payload || !payload.Product || 17691 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 17692 return; 17693 } 17694 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 17695 return; 17696 } 17697 cache.set(productId, ruleFromPayload(payload, productId)); 17698 } 17699 } catch (error) { 17700 // Respostas de outras integracoes nao interferem nas tarjas. 17701 } 17702 }); 17703 17704 trayAjaxHooked = true; 17705 document.removeEventListener('load', onTrayScriptLoad, true); 17706 } 17707 17708 function onTrayScriptLoad(event) { 17709 if (event.target && event.target.tagName === 'SCRIPT') { 17710 attachTrayAjaxCache(); 17711 } 17712 } 17713 17714 function requestRule(productId) { 17715 var controller = null; 17716 var timeoutId = null; 17717 var options = { 17718 credentials: 'same-origin', 17719 headers: { 17720 'Accept': 'application/json' 17721 } 17722 }; 17723 var request; 17724 17725 if (typeof window.fetch !== 'function') { 17726 return Promise.resolve(null); 17727 } 17728 17729 if (typeof window.AbortController === 'function') { 17730 controller = new window.AbortController(); 17731 options.signal = controller.signal; 17732 timeoutId = window.setTimeout(function () { 17733 controller.abort(); 17734 }, REQUEST_TIMEOUT_MS); 17735 } 17736 17737 try { 17738 request = window.fetch( 17739 '/web_api/products/' + encodeURIComponent(productId), 17740 options 17741 ); 17742 } catch (error) { 17743 if (timeoutId !== null) { 17744 window.clearTimeout(timeoutId); 17745 } 17746 return Promise.resolve(null); 17747 } 17748 17749 return request.then(function (response) { 17750 if (!response.ok) { 17751 throw new Error('HTTP ' + response.status); 17752 } 17753 return response.json(); 17754 }).then(function (payload) { 17755 return ruleFromPayload(payload, productId); 17756 }).then(function (rule) { 17757 if (timeoutId !== null) { 17758 window.clearTimeout(timeoutId); 17759 } 17760 return rule; 17761 }, function () { 17762 if (timeoutId !== null) { 17763 window.clearTimeout(timeoutId); 17764 } 17765 17766 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 17767 return null; 17768 }); 17769 } 17770 17771 function finishJob(job, rule) { 17772 cache.set(job.productId, rule); 17773 pending.delete(job.productId); 17774 activeRequests -= 1; 17775 job.resolve(rule); 17776 pumpQueue(); 17777 } 17778 17779 function pumpQueue() { 17780 var job; 17781 17782 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 17783 job = queue.shift(); 17784 activeRequests += 1; 17785 17786 (function (currentJob) { 17787 requestRule(currentJob.productId).then(function (rule) { 17788 finishJob(currentJob, rule); 17789 }, function () { 17790 finishJob(currentJob, null); 17791 }); 17792 }(job)); 17793 } 17794 } 17795 17796 function getRule(productId) { 17797 var resolver; 17798 var promise; 17799 17800 if (cache.has(productId)) { 17801 return Promise.resolve(cache.get(productId)); 17802 } 17803 17804 if (pending.has(productId)) { 17805 return pending.get(productId); 17806 } 17807 17808 promise = new Promise(function (resolve) { 17809 resolver = resolve; 17810 }); 17811 17812 pending.set(productId, promise); 17813 queue.push({ 17814 productId: productId, 17815 resolve: resolver 17816 }); 17817 pumpQueue(); 17818 17819 return promise; 17820 } 17821 17822 function findBadge(card) { 17823 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 17824 } 17825 17826 function clearBadge(card) { 17827 var badge = findBadge(card); 17828 var image = card.querySelector('.product-header > .w-100 > .image'); 17829 17830 if (badge && badge.parentNode) { 17831 badge.parentNode.removeChild(badge); 17832 } 17833 17834 if (image) { 17835 image.classList.remove(HOST_CLASS); 17836 } 17837 17838 card.removeAttribute('data-farmacam-prescription-level'); 17839 } 17840 17841 function applyBadge(card, productId, rule) { 17842 var image; 17843 var badge; 17844 17845 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 17846 return false;
17847 } 17848 17849 clearBadge(card); 17850 17851 if (!rule) { 17852 return true; 17853 } 17854 17855 image = card.querySelector('.product-header > .w-100 > .image'); 17856 if (!image) { 17857 return false; 17858 } 17859 17860 badge = document.createElement('span'); 17861 badge.className = BADGE_CLASS; 17862 badge.setAttribute('data-farmacam-generated', 'true'); 17863 badge.setAttribute('data-farmacam-prescription-level', rule.level); 17864 badge.setAttribute('role', 'note'); 17865 badge.textContent = rule.text; 17866 17867 image.classList.add(HOST_CLASS); 17868 image.insertBefore(badge, image.firstChild); 17869 card.setAttribute('data-farmacam-prescription-level', rule.level); 17870 17871 return true; 17872 } 17873 17874 function processCard(card) { 17875 var productId; 17876 var previousState; 17877 var currentState; 17878 17879 if (!card || card.nodeType !== 1) { 17880 return; 17881 } 17882 17883 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 17884 return; 17885 } 17886 17887 productId = normalizeProductId(card.getAttribute('data-id')); 17888 previousState = cardStates.get(card); 17889 17890 if (!productId) { 17891 clearBadge(card); 17892 cardStates.delete(card); 17893 return; 17894 } 17895 17896 if ( 17897 previousState && 17898 previousState.productId === productId && 17899 previousState.status === 'loading' 17900 ) { 17901 return; 17902 } 17903 17904 if ( 17905 previousState && 17906 previousState.productId === productId && 17907 previousState.status === 'processed' 17908 ) { 17909 if (!previousState.rule || findBadge(card)) { 17910 return; 17911 } 17912 } 17913 17914 if (!previousState || previousState.productId !== productId) { 17915 clearBadge(card); 17916 } 17917 17918 currentState = { 17919 productId: productId, 17920 status: 'loading', 17921 rule: null 17922 }; 17923 cardStates.set(card, currentState); 17924 17925 getRule(productId).then(function (rule) { 17926 var applied; 17927 17928 if ( 17929 cardStates.get(card) !== currentState || 17930 normalizeProductId(card.getAttribute('data-id')) !== productId 17931 ) { 17932 return; 17933 } 17934 17935 applied = applyBadge(card, productId, rule); 17936 currentState.rule = rule; 17937 currentState.status = applied ? 'processed' : 'waiting-image'; 17938 }); 17939 } 17940 17941 function scan(root) { 17942 var cards; 17943 var index; 17944 17945 if (!root) { 17946 return; 17947 } 17948 17949 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 17950 processCard(root); 17951 } 17952 17953 if (!root.querySelectorAll) { 17954 return; 17955 } 17956 17957 cards = root.querySelectorAll(CARD_SELECTOR); 17958 for (index = 0; index < cards.length; index += 1) { 17959 processCard(cards[index]); 17960 } 17961 } 17962 17963 function startObserver() { 17964 var observer; 17965 17966 if (!window.MutationObserver || !document.documentElement) { 17967 return; 17968 } 17969 17970 observer = new MutationObserver(function (mutations) { 17971 var mutationIndex; 17972 var nodeIndex; 17973 var mutation; 17974 var node; 17975 var ownerCard; 17976 17977 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 17978 mutation = mutations[mutationIndex]; 17979 17980 if (mutation.type === 'attributes') { 17981 processCard(mutation.target); 17982 continue; 17983 } 17984 17985 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 17986 node = mutation.addedNodes[nodeIndex]; 17987 if (node.nodeType !== 1) { 17988 continue; 17989 } 17990 17991 scan(node); 17992 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 17993 if (ownerCard) { 17994 processCard(ownerCard); 17995 } 17996 } 17997 } 17998 }); 17999 18000 observer.observe(document.documentElement, { 18001 childList: true, 18002 subtree: true, 18003 attributes: true, 18004 attributeFilter: ['data-id'] 18005 }); 18006 18007 window[GLOBAL_KEY].observer = observer; 18008 } 18009 18010 window[GLOBAL_KEY] = { 18011 version: '1.1.0', 18012 cache: cache, 18013 pending: pending, 18014 cardStates: cardStates, 18015 scan: scan, 18016 processCard: processCard, 18017 observer: null 18018 }; 18019 18020 document.addEventListener('load', onTrayScriptLoad, true); 18021 attachTrayAjaxCache(); 18022 injectStyles(); 18023 scan(document); 18024 startObserver(); 18025 18026 if (document.readyState === 'loading') { 18027 document.addEventListener('DOMContentLoaded', function () { 18028 attachTrayAjaxCache(); 18029 scan(document); 18030 }); 18031 } 18032}(window, document)); 18033</script>
18033 18034 </li> 18035 <li class="item flex"> 18036 18037 18038 18039 18040<div class="product animate open_cart" 18041 data-id="125240152" 18042 data-farmacam-related-categories=",Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array," 18043 data-ga4-id="125240152" 18044 data-ga4-name="Plusvac SC - Subcutânea - 5mL" 18045 data-ga4-price="137.00" 18046 data-ga4-brand="Extratos Alergênicos" 18047 data-ga4-category="Tipo de Produto;Industrializados;" 18048 > 18049 18050 <div class="product-header"> 18051 18052 <div class="w-100"> 18053 18054 18055 18056 18057 18058 18059 18060 18061 18062 18063 <div class="image "> 18064 18065 <a title="Plusvac SC - Subcutânea - 5mL" href="https://www.farmacam.com.br/plusvac-sc-subcutanea-5ml" class="space-image"> 18066 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/plusvac_sc_subcutanea_5ml_125240152_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/plusvac_sc_subcutanea_5ml_125240152_1_3740e8e00ae905feed155648e56241fb.png" alt="Plusvac SC - Subcutânea - 5mL"> 18067 </a> 18068 18069 </div> 18070 18071 18072 18073 18074 18075 </div> 18076 18077 </div> 18078 18079 <div class="product-body"> 18080 18081 <a title="Plusvac SC - Subcutânea - 5mL" class="product-info" href="https://www.farmacam.com.br/plusvac-sc-subcutanea-5ml"> 18082 18083 <div class="product-info-dados"> 18084 18085 18086 18087 18088 18089 18090 <div class="product-name"> 18091 Plusvac SC - Subcutânea - 5mL 18092 </div> 18093 18094 18095 18096 <div class="product-price"> 18097 18098 18099 18100 18101 18102 18103<div class="price display-cash"> 18104 18105 18106 <span class="current-price "> 18107 R$ 137,00 18108 18109 </span> 18110 18111 <span class="product-installments"> 18112 18113 </span> 18114 18115</div> 18116 </div> 18117 18118 </div> 18119 18120 </a> 18121 18122 </div> 18123 18124 18125 <div class="product-footer"> 18126 18127 18128 <div class="w-100"> 18129 18130 18131 18132<div class="product-rating-catalog"> 18133 18134 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 18135 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 18136 </svg> 18137 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 18138 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 18139 </svg> 18140 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 18141 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 18142 </svg> 18143 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 18144 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 18145 </svg> 18146 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 18147 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 18148 </svg> 18149 18150 18151 <a title="Ver avaliações de Plusvac SC - Subcutânea - 5mL" href="https://www.farmacam.com.br/plusvac-sc-subcutanea-5ml#comments" class="total"> 18152 Seja o primeiro 18153 </a> 18154 18155 </div> 18156 18157 <div class="compare-buttons"> 18158 18159 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240152" class="flex justify-center align-center compare-hidden" data-compare="remove">
18160 <span class="filter-checkbox checked"></span> 18161 Remover Comparação 18162 </a> 18163 18164 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240152" class="flex justify-center align-center " data-compare="add"> 18165 <span class="filter-checkbox"></span> 18166 Comparar Produto 18167 </a> 18168 18169 </div> 18170 18171 18172 <div class="config-variacoes-compra"> 18173 18174 18175 18176 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240152"> 18177 <input type="hidden" name="product_id" value="125240152"> 18178 <input type="hidden" name="without_stock_sale" value=""> 18179 18180 <input type="hidden" name="variacao" id="selectedVariant" value=""> 18181 <input type="hidden" name="estoque" value=""> 18182 18183 18184 18185 <ul class="paleta-cores"> 18186 18187 18188 18189 18190 18191 18192 18193 18194 18195 18196 18197 18198 18199 18200 18201 18202 18203 18204 18205 18206 18207 18208 18209 18210 18211 18212 18213 18214 18215 18216 18217 18218 18219 18220 18221 18222 18223 18224 18225 18226 18227 18228 18229 18230 18231 18232 18233 18234 18235 18236 18237 18238 18239 18240 18241 18242 18243 18244 18245 18246 18247 18248 18249 18250 18251 18252 18253 18254 18255 18256 18257 18258 18259 18260 18261 18262 18263 18264 18265 18266 18267 18268 18269 18270 18271 18272 18273 18274 18275 18276 18277 18278 18279 18280 18281 18282 18283 18284 18285 18286 18287 18288 18289 18290 18291 18292 18293 18294 18295 18296 18297 18298 18299 18300 18301 18302 18303 18304 18305 18306 18307 18308 18309 18310 18311 18312 18313 18314 18315 18316 18317 18318 18319 18320 18321 18322 18323 18324 18325 18326 18327 18328 18329 18330 18331 18332 18333 18334 18335 18336 18337 18338 18339 18340 18341 18342 18343 18344 18345 18346 18347 18348 18349 18350 18351 18352 18353 18354 18355 18356 18357 18358 18359 18360 18361 18362 18363 18364 18365 18366 18367 18368 18369 18370 18371 18372 18373 18374 18375 18376 18377 18378 18379 18380 18381 18382 18383 18384 18385 18386 18387 18388 18389 18390 18391 18392 18393 18394 18395 18396 18397 18398 18399 18400 18401 18402 18403 18404 18405 18406 18407 18408 18409 18410 18411 18412 18413 18414 18415 18416 18417 18418 18419 18420 18421 18422 18423 18424 18425 18426 18427 18428 18429 18430 18431 18432 18433 18434 18435 18436 18437 18438 18439 18440 18441 18442 18443 18444 18445 18446 18447 18448 18449 18450 18451 18452 18453 18454 18455 18456 18457 18458 18459 18460 18461 18462 18463 18464 18465 18466 18467 18468 18469 18470 18471 18472 18473 18474 18475 18476 18477 18478 18479 18480 18481 18482 18483 18484 18485 18486 18487 18488 18489 18490 18491 18492 18493 18494 18495 18496 18497 18498 18499 18500 18501 18502 18503 18504 18505 18506 18507 18508 18509 18510 18511 18512 18513 18514 18515 18516 18517 18518 18519 18520 18521 18522 18523 18524 18525 18526 18527 18528 18529 18530 18531 18532 18533 18534 18535 18536 18537 18538 18539 18540 18541 18542 18543 18544 18545 18546 18547 18548 18549 18550 18551 18552 18553 18554 18555 18556 18557 18558 18559 18560 18561 18562 18563 18564 18565 18566 18567 18568 18569 18570 18571 18572 18573 18574 18575 18576 18577 18578 18579 18580 18581 18582 18583 18584 18585 18586 18587 18588 18589 18590 18591 18592 18593 18594 18595 18596 18597 18598 18599 18600 18601 18602 18603 18604 18605 18606 18607 18608 18609 18610 18611 18612 18613 18614 18615 18616 18617 18618 18619 18620 18621 18622 18623 18624 18625 18626 18627 18628 18629 18630 18631 18632 18633 18634 18635 18636 18637 18638 18639 18640 18641 18642 18643 18644 18645 18646 18647 18648 18649 18650 18651 18652 18653 18654 18655 18656 18657 18658 18659 18660 18661 18662 18663 18664 18665 18666 18667 18668 18669 18670 18671 18672 18673 18674 18675 18676 18677 18678 18679 18680 18681 18682 18683 18684 18685 18686 18687 18688 18689 18690 18691 18692 18693 18694 18695 18696 18697 18698 18699 18700 18701 18702 18703 18704 18705 18706 18707 18708 18709 18710 18711 18712 18713 18714 18715 18716 18717 18718 18719 18720 18721 18722 18723 18724 18725 18726 18727 18728 18729 18730 18731 18732 18733 18734 18735 18736 18737 18738 18739 18740 18741 18742
18742 18743 18744 18745 18746 18747 18748 18749 18750 18751 18752 18753 18754 18755 18756 18757 18758 18759 18760 18761 18762 18763 18764 18765 18766 18767 18768 18769 18770 18771 18772 18773 18774 18775 18776 </ul> 18777 <!-- Fim Paleta de Cores --> 18778 18779 18780 18781 18782 18783 18784 18785 18786 18787 18788 18789 18790 18791 18792 18793 <select class="select-tamanho" style="display: none;" title="Campo Tamanho"> 18794 <option disabled="disabled" value=""> 18795 Selecione 18796 </option> 18797 18798 18799 <option value="19390" produto="125240152" estoque="9999">1ª Série</option> 18800 18801 18802 18803 18804 <option value="19392" produto="125240152" estoque="10000">2ª Série</option> 18805 18806 18807 18808 18809 <option value="19394" produto="125240152" estoque="10000">3ª Série</option> 18810 18811 18812 </select> 18813 18814 18815 <select class="select-cor" style="display: none;" title="Campo Cor"> 18816
18816 </select> 18817 18818 18819 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 18820 <div class="alerta-estoque"></div> 18821 <div class="alerta-adicionado"></div> 18822 18823 <div class="acao-compra"> 18824 18825 <div class="quantidade-box"> 18826 <div class="quantidade-box-input"> 18827 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-e
18827stoque="29999" /> 18828 </div> 18829 <div class="quantidade-box-controles"> 18830 <div class="quantidade-box-controles-itens" data-item="mais"> 18831 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 18832 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 18833 </svg> 18834 </div> 18835 <div class="quantidade-box-controles-itens" data-item="menus"> 18836 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 18837 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 18838 </svg> 18839 </div> 18840 </div> 18841 </div> 18842 18843 18844 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240152"> 18845 18846 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=" style="width: 100%;"> --> 18847 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 18848 18849 18850 18851 18852 18853 18854 <!-- Cesta de Compras --> 18855 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 18856 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 18857 </svg> 18858 18859 18860 18861 Comprar 18862 18863 18864 </button> 18865 <!-- </form> --> 18866 18867 </div> 18868 18869</div> 18870 18871 18872 </div> 18873 18874 </div> 18875 18876 18877</div> 18878
18879<script> 18880(function (window, document) { 18881 'use strict'; 18882 18883 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 18884 18885 if (window[GLOBAL_KEY]) { 18886 return; 18887 } 18888 18889 if (!window.Map || !window.WeakMap || !window.Promise) { 18890 return; 18891 } 18892 18893 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 18894 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 18895 '#vitrine-personalizada .product[data-id]'; 18896 var BADGE_CLASS = 'farmacam-prescription-badge'; 18897 var HOST_CLASS = 'farmacam-prescription-badge-host'; 18898 var MAX_CONCURRENT_REQUESTS = 6; 18899 var REQUEST_TIMEOUT_MS = 12000; 18900 18901 var rules = { 18902 '294': { 18903 level: '294', 18904 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 18905 }, 18906 '296': { 18907 level: '296', 18908 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 18909 }, 18910 '298': { 18911 level: '298', 18912 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 18913 } 18914 }; 18915 18916 var cache = new Map(); 18917 var pending = new Map(); 18918 var cardStates = new WeakMap(); 18919 var queue = []; 18920 var activeRequests = 0; 18921 var trayAjaxHooked = false; 18922 18923 function injectStyles() { 18924 if (document.getElementById('farmacam-prescription-cards-style')) { 18925 return; 18926 } 18927 18928 var style = document.createElement('style'); 18929 style.id = 'farmacam-prescription-cards-style'; 18930 style.textContent = [ 18931 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 18932 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 18933 'position:absolute!important;', 18934 'top:52px!important;', 18935 'left:10px!important;', 18936 'z-index:999!important;', 18937 'display:block!important;', 18938 'max-width:calc(100% - 20px)!important;', 18939 'box-sizing:border-box!important;', 18940 'padding:8px 12px!important;', 18941 'color:#fff!important;', 18942 'font-family:inherit!important;', 18943 'font-size:13px!important;', 18944 'font-weight:900!important;', 18945 'line-height:1.15!important;', 18946 'text-align:center!important;', 18947 'text-transform:uppercase!important;', 18948 'letter-spacing:.3px!important;', 18949 'white-space:normal!important;', 18950 'overflow-wrap:break-word!important;', 18951 'border-radius:3px!important;', 18952 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 18953 'pointer-events:none!important;', 18954 '}', 18955 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 18956 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 18957 'background:#d70008!important;', 18958 '}', 18959 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 18960 'background:#000!important;', 18961 '}', 18962 '@media (max-width:767px){', 18963 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 18964 'top:42px!important;', 18965 'left:6px!important;', 18966 'max-width:calc(100% - 12px)!important;', 18967 'padding:6px 8px!important;', 18968 'font-size:10px!important;', 18969 '}', 18970 '}' 18971 ].join(''); 18972 18973 (document.head || document.documentElement).appendChild(style); 18974 } 18975 18976 function normalizeProductId(value) { 18977 var id = String(value == null ? '' : value).trim(); 18978 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 18979 } 18980 18981 function classifyRelatedCategories(relatedCategories) { 18982 var found = { 18983 '292': false, 18984 '294': false, 18985 '296': false, 18986 '298': false 18987 }; 18988 18989 function inspect(value, depth) { 18990 var index; 18991 var normalized; 18992 18993 if (value == null || depth > 8) { 18994 return; 18995 } 18996 18997 if (Array.isArray(value)) { 18998 for (index = 0; index < value.length; index += 1) { 18999 inspect(value[index], depth + 1); 19000 } 19001 return; 19002 } 19003 19004 if (typeof value === 'object') { 19005 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 19006 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 19007 inspect(value.id, depth + 1); 19008 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 19009 inspect(value.category_id, depth + 1); 19010 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 19011 inspect(value.Category, depth + 1); 19012 } 19013 return; 19014 } 19015 19016 if (typeof value !== 'string' && typeof value !== 'number') { 19017 return; 19018 } 19019 normalized = normalizeProductId(value); 19020 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 19021 found[normalized] = true; 19022 } 19023 } 19024 19025 inspect(relatedCategories, 0); 19026 19027 if (found['298']) { 19028 return rules['298']; 19029 } 19030 if (found['296']) { 19031 return rules['296']; 19032 } 19033 if (found['294']) { 19034 return rules['294']; 19035 } 19036 19037 // 292 e qualquer classificacao desconhecida ficam sem tarja. 19038 return null; 19039 } 19040 19041 function ruleFromPayload(payload, productId) { 19042 var product = payload && payload.Product; 19043 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 19044 return null; 19045 } 19046 return classifyRelatedCategories(product && product.related_categories); 19047 } 19048 19049 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 19050 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 19051 function attachTrayAjaxCache() { 19052 var jq = window.jQuery; 19053 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 19054 return; 19055 } 19056
19057 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 19058 var url; 19059 var match; 19060 var productId; 19061 var payload; 19062 try { 19063 url = new URL(settings.url, window.location.href); 19064 if (url.origin !== window.location.origin) { 19065 return; 19066 } 19067 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 19068 if (!match) { 19069 return; 19070 } 19071 productId = normalizeProductId(match[1]); 19072 if (!cache.has(productId) && !pending.has(productId)) { 19073 payload = data || xhr.responseJSON; 19074 if (typeof payload === 'string') { 19075 payload = JSON.parse(payload); 19076 } 19077 if (!payload || !payload.Product || 19078 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 19079 return; 19080 } 19081 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 19082 return; 19083 } 19084 cache.set(productId, ruleFromPayload(payload, productId)); 19085 } 19086 } catch (error) { 19087 // Respostas de outras integracoes nao interferem nas tarjas. 19088 } 19089 }); 19090 19091 trayAjaxHooked = true; 19092 document.removeEventListener('load', onTrayScriptLoad, true); 19093 } 19094 19095 function onTrayScriptLoad(event) { 19096 if (event.target && event.target.tagName === 'SCRIPT') { 19097 attachTrayAjaxCache(); 19098 } 19099 } 19100 19101 function requestRule(productId) { 19102 var controller = null; 19103 var timeoutId = null; 19104 var options = { 19105 credentials: 'same-origin', 19106 headers: { 19107 'Accept': 'application/json' 19108 } 19109 }; 19110 var request; 19111 19112 if (typeof window.fetch !== 'function') { 19113 return Promise.resolve(null); 19114 } 19115 19116 if (typeof window.AbortController === 'function') { 19117 controller = new window.AbortController(); 19118 options.signal = controller.signal; 19119 timeoutId = window.setTimeout(function () { 19120 controller.abort(); 19121 }, REQUEST_TIMEOUT_MS); 19122 } 19123 19124 try { 19125 request = window.fetch( 19126 '/web_api/products/' + encodeURIComponent(productId), 19127 options 19128 ); 19129 } catch (error) { 19130 if (timeoutId !== null) { 19131 window.clearTimeout(timeoutId); 19132 } 19133 return Promise.resolve(null); 19134 } 19135 19136 return request.then(function (response) { 19137 if (!response.ok) { 19138 throw new Error('HTTP ' + response.status); 19139 } 19140 return response.json(); 19141 }).then(function (payload) { 19142 return ruleFromPayload(payload, productId); 19143 }).then(function (rule) { 19144 if (timeoutId !== null) { 19145 window.clearTimeout(timeoutId); 19146 } 19147 return rule; 19148 }, function () { 19149 if (timeoutId !== null) { 19150 window.clearTimeout(timeoutId); 19151 } 19152 19153 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 19154 return null; 19155 }); 19156 } 19157 19158 function finishJob(job, rule) { 19159 cache.set(job.productId, rule); 19160 pending.delete(job.productId); 19161 activeRequests -= 1; 19162 job.resolve(rule); 19163 pumpQueue(); 19164 } 19165 19166 function pumpQueue() { 19167 var job; 19168 19169 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 19170 job = queue.shift(); 19171 activeRequests += 1; 19172 19173 (function (currentJob) { 19174 requestRule(currentJob.productId).then(function (rule) { 19175 finishJob(currentJob, rule); 19176 }, function () { 19177 finishJob(currentJob, null); 19178 }); 19179 }(job)); 19180 } 19181 } 19182 19183 function getRule(productId) { 19184 var resolver; 19185 var promise; 19186 19187 if (cache.has(productId)) { 19188 return Promise.resolve(cache.get(productId)); 19189 } 19190 19191 if (pending.has(productId)) { 19192 return pending.get(productId); 19193 } 19194 19195 promise = new Promise(function (resolve) { 19196 resolver = resolve; 19197 }); 19198 19199 pending.set(productId, promise); 19200 queue.push({ 19201 productId: productId, 19202 resolve: resolver 19203 }); 19204 pumpQueue(); 19205 19206 return promise; 19207 } 19208 19209 function findBadge(card) { 19210 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 19211 } 19212 19213 function clearBadge(card) { 19214 var badge = findBadge(card); 19215 var image = card.querySelector('.product-header > .w-100 > .image'); 19216 19217 if (badge && badge.parentNode) { 19218 badge.parentNode.removeChild(badge); 19219 } 19220 19221 if (image) { 19222 image.classList.remove(HOST_CLASS); 19223 } 19224 19225 card.removeAttribute('data-farmacam-prescription-level'); 19226 } 19227 19228 function applyBadge(card, productId, rule) { 19229 var image; 19230 var badge; 19231 19232 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 19233 return false;
19234 } 19235 19236 clearBadge(card); 19237 19238 if (!rule) { 19239 return true; 19240 } 19241 19242 image = card.querySelector('.product-header > .w-100 > .image'); 19243 if (!image) { 19244 return false; 19245 } 19246 19247 badge = document.createElement('span'); 19248 badge.className = BADGE_CLASS; 19249 badge.setAttribute('data-farmacam-generated', 'true'); 19250 badge.setAttribute('data-farmacam-prescription-level', rule.level); 19251 badge.setAttribute('role', 'note'); 19252 badge.textContent = rule.text; 19253 19254 image.classList.add(HOST_CLASS); 19255 image.insertBefore(badge, image.firstChild); 19256 card.setAttribute('data-farmacam-prescription-level', rule.level); 19257 19258 return true; 19259 } 19260 19261 function processCard(card) { 19262 var productId; 19263 var previousState; 19264 var currentState; 19265 19266 if (!card || card.nodeType !== 1) { 19267 return; 19268 } 19269 19270 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 19271 return; 19272 } 19273 19274 productId = normalizeProductId(card.getAttribute('data-id')); 19275 previousState = cardStates.get(card); 19276 19277 if (!productId) { 19278 clearBadge(card); 19279 cardStates.delete(card); 19280 return; 19281 } 19282 19283 if ( 19284 previousState && 19285 previousState.productId === productId && 19286 previousState.status === 'loading' 19287 ) { 19288 return; 19289 } 19290 19291 if ( 19292 previousState && 19293 previousState.productId === productId && 19294 previousState.status === 'processed' 19295 ) { 19296 if (!previousState.rule || findBadge(card)) { 19297 return; 19298 } 19299 } 19300 19301 if (!previousState || previousState.productId !== productId) { 19302 clearBadge(card); 19303 } 19304 19305 currentState = { 19306 productId: productId, 19307 status: 'loading', 19308 rule: null 19309 }; 19310 cardStates.set(card, currentState); 19311 19312 getRule(productId).then(function (rule) { 19313 var applied; 19314 19315 if ( 19316 cardStates.get(card) !== currentState || 19317 normalizeProductId(card.getAttribute('data-id')) !== productId 19318 ) { 19319 return; 19320 } 19321 19322 applied = applyBadge(card, productId, rule); 19323 currentState.rule = rule; 19324 currentState.status = applied ? 'processed' : 'waiting-image'; 19325 }); 19326 } 19327 19328 function scan(root) { 19329 var cards; 19330 var index; 19331 19332 if (!root) { 19333 return; 19334 } 19335 19336 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 19337 processCard(root); 19338 } 19339 19340 if (!root.querySelectorAll) { 19341 return; 19342 } 19343 19344 cards = root.querySelectorAll(CARD_SELECTOR); 19345 for (index = 0; index < cards.length; index += 1) { 19346 processCard(cards[index]); 19347 } 19348 } 19349 19350 function startObserver() { 19351 var observer; 19352 19353 if (!window.MutationObserver || !document.documentElement) { 19354 return; 19355 } 19356 19357 observer = new MutationObserver(function (mutations) { 19358 var mutationIndex; 19359 var nodeIndex; 19360 var mutation; 19361 var node; 19362 var ownerCard; 19363 19364 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 19365 mutation = mutations[mutationIndex]; 19366 19367 if (mutation.type === 'attributes') { 19368 processCard(mutation.target); 19369 continue; 19370 } 19371 19372 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 19373 node = mutation.addedNodes[nodeIndex]; 19374 if (node.nodeType !== 1) { 19375 continue; 19376 } 19377 19378 scan(node); 19379 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 19380 if (ownerCard) { 19381 processCard(ownerCard); 19382 } 19383 } 19384 } 19385 }); 19386 19387 observer.observe(document.documentElement, { 19388 childList: true, 19389 subtree: true, 19390 attributes: true, 19391 attributeFilter: ['data-id'] 19392 }); 19393 19394 window[GLOBAL_KEY].observer = observer; 19395 } 19396 19397 window[GLOBAL_KEY] = { 19398 version: '1.1.0', 19399 cache: cache, 19400 pending: pending, 19401 cardStates: cardStates, 19402 scan: scan, 19403 processCard: processCard, 19404 observer: null 19405 }; 19406 19407 document.addEventListener('load', onTrayScriptLoad, true); 19408 attachTrayAjaxCache(); 19409 injectStyles(); 19410 scan(document); 19411 startObserver(); 19412 19413 if (document.readyState === 'loading') { 19414 document.addEventListener('DOMContentLoaded', function () { 19415 attachTrayAjaxCache(); 19416 scan(document); 19417 }); 19418 } 19419}(window, document)); 19420</script>
19420 19421 </li> 19422 <li class="item flex"> 19423 19424 19425 19426 19427<div class="product animate open_cart" 19428 data-id="125240150" 19429 data-farmacam-related-categories=",Array,Array," 19430 data-ga4-id="125240150" 19431 data-ga4-name="Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml" 19432 data-ga4-price="127.00" 19433 data-ga4-brand="Extratos Alergênicos" 19434 data-ga4-category="Tipo de Produto;Industrializados;" 19435 > 19436 19437 <div class="product-header"> 19438 19439 <div class="w-100"> 19440 19441 19442 19443 19444 19445 19446 19447 19448 19449 19450 <div class="image "> 19451 19452 <a title="Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml" href="https://www.farmacam.com.br/insetivac-sc-ap-subcutanea-acao-prolongada-5-ml" class="space-image"> 19453 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/insetivac_sc_ap_subcutanea_acao_prolongada_5_ml_125240150_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/insetivac_sc_ap_subcutanea_acao_prolongada_5_ml_125240150_1_3740e8e00ae905feed155648e56241fb.png" alt="Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml"> 19454 </a> 19455 19456 </div> 19457 19458 19459 19460 19461 19462 </div> 19463 19464 </div> 19465 19466 <div class="product-body"> 19467 19468 <a title="Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml" class="product-info" href="https://www.farmacam.com.br/insetivac-sc-ap-subcutanea-acao-prolongada-5-ml"> 19469 19470 <div class="product-info-dados"> 19471 19472 19473 19474 19475 19476 19477 <div class="product-name"> 19478 Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml 19479 </div> 19480 19481 19482 19483 <div class="product-price"> 19484 19485 19486 19487 19488 19489 19490<div class="price display-cash"> 19491 19492 19493 <span class="current-price "> 19494 R$ 127,00 19495 19496 </span> 19497 19498 <span class="product-installments"> 19499 19500 </span> 19501 19502</div> 19503 </div> 19504 19505 </div> 19506 19507 </a> 19508 19509 </div> 19510 19511 19512 <div class="product-footer"> 19513 19514 19515 <div class="w-100"> 19516 19517 19518 19519<div class="product-rating-catalog"> 19520 19521 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 19522 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 19523 </svg> 19524 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 19525 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 19526 </svg> 19527 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 19528 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 19529 </svg> 19530 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 19531 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 19532 </svg> 19533 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 19534 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 19535 </svg> 19536 19537 19538 <a title="Ver avaliações de Insetivac SC AP - Subcutânea - Ação Prolongada - 5 ml" href="https://www.farmacam.com.br/insetivac-sc-ap-subcutanea-acao-prolongada-5-ml#comments" class="total"> 19539 Seja o primeiro 19540 </a> 19541 19542 </div> 19543 19544 <div class="compare-buttons"> 19545 19546 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240150" class="flex justify-center align-center compare-hidden" data-compare="remove">
19547 <span class="filter-checkbox checked"></span> 19548 Remover Comparação 19549 </a> 19550 19551 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240150" class="flex justify-center align-center " data-compare="add"> 19552 <span class="filter-checkbox"></span> 19553 Comparar Produto 19554 </a> 19555 19556 </div> 19557 19558 19559 <div class="config-variacoes-compra"> 19560 19561 19562 19563 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240150"> 19564 <input type="hidden" name="product_id" value="125240150"> 19565 <input type="hidden" name="without_stock_sale" value=""> 19566 19567 <input type="hidden" name="variacao" id="selectedVariant" value=""> 19568 <input type="hidden" name="estoque" value=""> 19569 19570 19571 19572 <ul class="paleta-cores"> 19573 19574 19575 19576 19577 19578 19579 19580 19581 19582 19583 19584 19585 19586 19587 19588 19589 19590 19591 19592 19593 19594 19595 19596 19597 19598 19599 19600 19601 19602 19603 19604 19605 19606 19607 19608 19609 19610 19611 19612 19613 19614 19615 19616 19617 19618 19619 19620 19621 19622 19623 19624 19625 19626 19627 19628 19629 19630 19631 19632 19633 19634 19635 19636 19637 19638 19639 19640 19641 19642 19643 19644 19645 19646 19647 19648 19649 19650 19651 19652 19653 19654 19655 19656 19657 19658 19659 19660 19661 19662 19663 19664 19665 19666 19667 19668 19669 19670 19671 19672 19673 19674 19675 19676 19677 19678 19679 19680 19681 19682 19683 19684 19685 19686 19687 19688 19689 19690 19691 19692 19693 19694 19695 19696 19697 19698 19699 19700 19701 19702 19703 19704 19705 19706 19707 19708 19709 19710 19711 19712 19713 19714 19715 19716 19717 19718 19719 19720 19721 19722 19723 19724 19725 19726 19727 19728 19729 19730 19731 19732 19733 19734 19735 19736 19737 19738 19739 19740 19741 19742 19743 19744 19745 19746 19747 19748 19749 19750 19751 19752 19753 19754 19755 19756 19757 19758 19759 19760 19761 19762 19763 19764 19765 19766 19767 19768 19769 19770 19771 19772 19773 19774 19775 19776 19777 19778 19779 19780 19781 19782 19783 19784 19785 19786 19787 19788 19789 19790 19791 19792 19793 19794 19795 19796 19797 19798 19799 19800 19801 19802 19803 19804 19805 19806 19807 19808 19809 19810 19811 19812 19813 19814 19815 19816 19817 19818 19819 19820 19821 19822 19823 19824 19825 19826 19827 19828 19829 19830 19831 19832 19833 19834 19835 19836 19837 19838 19839 19840 19841 19842 19843 19844 19845 19846 19847 19848 19849 19850 19851 19852 19853 19854 19855 19856 19857 19858 19859 19860 19861 19862 19863 19864 19865 19866 19867 19868 19869 19870 19871 19872 19873 19874 19875 19876 19877 19878 19879 19880 19881 19882 19883 19884 19885 19886 19887 19888 19889 19890 19891 19892 19893 19894 19895 19896 19897 19898 19899 19900 19901 19902 19903 19904 19905 19906 19907 19908 19909 19910 19911 19912 19913 19914 19915 19916 19917 19918 19919 19920 19921 19922 19923 19924 19925 19926 19927 19928 19929 19930 19931 19932 19933 19934 19935 19936 19937 19938 19939 19940 19941 19942 19943 19944 19945 19946 19947 19948 19949 19950 19951 19952 19953 19954 19955 19956 19957 19958 19959 19960 19961 19962 19963 19964 19965 19966 19967 19968 19969 19970 19971 19972 19973 19974 19975 19976 19977 19978 19979 19980 19981 19982 19983 19984 19985 19986 19987 19988 19989 19990 19991 19992 19993 19994 19995 19996 19997 19998 19999 20000 20001 20002 20003 20004 20005 20006 20007 20008 20009 20010 20011 20012 20013 20014 20015 20016 20017 20018 20019 20020 20021 20022 20023 20024 20025 20026 20027 20028 20029 20030 20031 20032 20033 20034 20035 20036 20037 20038 20039 20040 20041 20042 20043 20044 20045 20046 20047 20048 20049 20050 20051 20052 20053 20054 20055 20056 20057 20058 20059 20060 20061 20062 20063 20064 20065 20066 20067 20068 20069 20070 20071 20072 20073 20074 20075 20076 20077 20078 20079 20080 20081 20082 20083 20084 20085 20086 20087 20088 20089 20090 20091 20092 20093 20094 20095 </ul> 20096 <!-- Fim Paleta de Cores --> 20097 20098 20099
20099 20100 20101 20102 20103 20104 20105 20106 20107 20108 20109 20110 20111 20112 <select class="select-tamanho" style="display: none;" title="Campo Tamanho"> 20113 <option disabled="disabled" value=""> 20114 Selecione 20115 </option> 20116 20117 20118 <option value="19384" produto="125240150" estoque="10000">1ª Série</option> 20119 20120 20121 20122 20123 <option value="19386" produto="125240150" estoque="10000">2ª Série</option> 20124 20125 20126 20127 20128 <option value="19388" produto="125240150" estoque="10000">3ª Série</option> 20129 20130 20131 </select> 20132 20133 20134 <select class="select-cor" style="display: none;" title="Campo Cor"> 20135
20135 </select> 20136 20137 20138 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 20139 <div class="alerta-estoque"></div> 20140 <div class="alerta-adicionado"></div> 20141 20142 <div class="acao-compra"> 20143 20144 <div class="quantidade-box"> 20145 <div class="quantidade-box-input"> 20146 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="30000" /> 20147 </div> 20148 <div class="quantidade-box-controles"> 20149 <div class="quantidade-box-controles-itens" data-item="mais"> 20150 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 20151 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 20152 </svg> 20153 </div> 20154 <div class="quantidade-box-controles-itens" data-item="menus"> 20155 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 20156 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 20157 </svg> 20158 </div> 20159 </div> 20160 </div> 20161 20162 20163 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240150"> 20164 20165 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=" style="width: 100%;"> --> 20166 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 20167 20168 20169 20170 20171 20172 20173 <!-- Cesta de Compras --> 20174 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 20175 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 20176 </svg> 20177 20178 20179 20180 Comprar 20181 20182 20183 </button> 20184 <!-- </form> --> 20185 20186 </div> 20187 20188</div> 20189 20190 20191 </div> 20192 20193 </div> 20194 20195 20196</div> 20197
20198<script> 20199(function (window, document) { 20200 'use strict'; 20201 20202 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 20203 20204 if (window[GLOBAL_KEY]) { 20205 return; 20206 } 20207 20208 if (!window.Map || !window.WeakMap || !window.Promise) { 20209 return; 20210 } 20211 20212 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 20213 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 20214 '#vitrine-personalizada .product[data-id]'; 20215 var BADGE_CLASS = 'farmacam-prescription-badge'; 20216 var HOST_CLASS = 'farmacam-prescription-badge-host'; 20217 var MAX_CONCURRENT_REQUESTS = 6; 20218 var REQUEST_TIMEOUT_MS = 12000; 20219 20220 var rules = { 20221 '294': { 20222 level: '294', 20223 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 20224 }, 20225 '296': { 20226 level: '296', 20227 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 20228 }, 20229 '298': { 20230 level: '298', 20231 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 20232 } 20233 }; 20234 20235 var cache = new Map(); 20236 var pending = new Map(); 20237 var cardStates = new WeakMap(); 20238 var queue = []; 20239 var activeRequests = 0; 20240 var trayAjaxHooked = false; 20241 20242 function injectStyles() { 20243 if (document.getElementById('farmacam-prescription-cards-style')) { 20244 return; 20245 } 20246 20247 var style = document.createElement('style'); 20248 style.id = 'farmacam-prescription-cards-style'; 20249 style.textContent = [ 20250 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 20251 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 20252 'position:absolute!important;', 20253 'top:52px!important;', 20254 'left:10px!important;', 20255 'z-index:999!important;', 20256 'display:block!important;', 20257 'max-width:calc(100% - 20px)!important;', 20258 'box-sizing:border-box!important;', 20259 'padding:8px 12px!important;', 20260 'color:#fff!important;', 20261 'font-family:inherit!important;', 20262 'font-size:13px!important;', 20263 'font-weight:900!important;', 20264 'line-height:1.15!important;', 20265 'text-align:center!important;', 20266 'text-transform:uppercase!important;', 20267 'letter-spacing:.3px!important;', 20268 'white-space:normal!important;', 20269 'overflow-wrap:break-word!important;', 20270 'border-radius:3px!important;', 20271 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 20272 'pointer-events:none!important;', 20273 '}', 20274 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 20275 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 20276 'background:#d70008!important;', 20277 '}', 20278 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 20279 'background:#000!important;', 20280 '}', 20281 '@media (max-width:767px){', 20282 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 20283 'top:42px!important;', 20284 'left:6px!important;', 20285 'max-width:calc(100% - 12px)!important;', 20286 'padding:6px 8px!important;', 20287 'font-size:10px!important;', 20288 '}', 20289 '}' 20290 ].join(''); 20291 20292 (document.head || document.documentElement).appendChild(style); 20293 } 20294 20295 function normalizeProductId(value) { 20296 var id = String(value == null ? '' : value).trim(); 20297 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 20298 } 20299 20300 function classifyRelatedCategories(relatedCategories) { 20301 var found = { 20302 '292': false, 20303 '294': false, 20304 '296': false, 20305 '298': false 20306 }; 20307 20308 function inspect(value, depth) { 20309 var index; 20310 var normalized; 20311 20312 if (value == null || depth > 8) { 20313 return; 20314 } 20315 20316 if (Array.isArray(value)) { 20317 for (index = 0; index < value.length; index += 1) { 20318 inspect(value[index], depth + 1); 20319 } 20320 return; 20321 } 20322 20323 if (typeof value === 'object') { 20324 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 20325 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 20326 inspect(value.id, depth + 1); 20327 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 20328 inspect(value.category_id, depth + 1); 20329 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 20330 inspect(value.Category, depth + 1); 20331 } 20332 return; 20333 } 20334 20335 if (typeof value !== 'string' && typeof value !== 'number') { 20336 return; 20337 } 20338 normalized = normalizeProductId(value); 20339 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 20340 found[normalized] = true; 20341 } 20342 } 20343 20344 inspect(relatedCategories, 0); 20345 20346 if (found['298']) { 20347 return rules['298']; 20348 } 20349 if (found['296']) { 20350 return rules['296']; 20351 } 20352 if (found['294']) { 20353 return rules['294']; 20354 } 20355 20356 // 292 e qualquer classificacao desconhecida ficam sem tarja. 20357 return null; 20358 } 20359 20360 function ruleFromPayload(payload, productId) { 20361 var product = payload && payload.Product; 20362 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 20363 return null; 20364 } 20365 return classifyRelatedCategories(product && product.related_categories); 20366 } 20367 20368 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 20369 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 20370 function attachTrayAjaxCache() { 20371 var jq = window.jQuery; 20372 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 20373 return; 20374 } 20375
20376 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 20377 var url; 20378 var match; 20379 var productId; 20380 var payload; 20381 try { 20382 url = new URL(settings.url, window.location.href); 20383 if (url.origin !== window.location.origin) { 20384 return; 20385 } 20386 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 20387 if (!match) { 20388 return; 20389 } 20390 productId = normalizeProductId(match[1]); 20391 if (!cache.has(productId) && !pending.has(productId)) { 20392 payload = data || xhr.responseJSON; 20393 if (typeof payload === 'string') { 20394 payload = JSON.parse(payload); 20395 } 20396 if (!payload || !payload.Product || 20397 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 20398 return; 20399 } 20400 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 20401 return; 20402 } 20403 cache.set(productId, ruleFromPayload(payload, productId)); 20404 } 20405 } catch (error) { 20406 // Respostas de outras integracoes nao interferem nas tarjas. 20407 } 20408 }); 20409 20410 trayAjaxHooked = true; 20411 document.removeEventListener('load', onTrayScriptLoad, true); 20412 } 20413 20414 function onTrayScriptLoad(event) { 20415 if (event.target && event.target.tagName === 'SCRIPT') { 20416 attachTrayAjaxCache(); 20417 } 20418 } 20419 20420 function requestRule(productId) { 20421 var controller = null; 20422 var timeoutId = null; 20423 var options = { 20424 credentials: 'same-origin', 20425 headers: { 20426 'Accept': 'application/json' 20427 } 20428 }; 20429 var request; 20430 20431 if (typeof window.fetch !== 'function') { 20432 return Promise.resolve(null); 20433 } 20434 20435 if (typeof window.AbortController === 'function') { 20436 controller = new window.AbortController(); 20437 options.signal = controller.signal; 20438 timeoutId = window.setTimeout(function () { 20439 controller.abort(); 20440 }, REQUEST_TIMEOUT_MS); 20441 } 20442 20443 try { 20444 request = window.fetch( 20445 '/web_api/products/' + encodeURIComponent(productId), 20446 options 20447 ); 20448 } catch (error) { 20449 if (timeoutId !== null) { 20450 window.clearTimeout(timeoutId); 20451 } 20452 return Promise.resolve(null); 20453 } 20454 20455 return request.then(function (response) { 20456 if (!response.ok) { 20457 throw new Error('HTTP ' + response.status); 20458 } 20459 return response.json(); 20460 }).then(function (payload) { 20461 return ruleFromPayload(payload, productId); 20462 }).then(function (rule) { 20463 if (timeoutId !== null) { 20464 window.clearTimeout(timeoutId); 20465 } 20466 return rule; 20467 }, function () { 20468 if (timeoutId !== null) { 20469 window.clearTimeout(timeoutId); 20470 } 20471 20472 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 20473 return null; 20474 }); 20475 } 20476 20477 function finishJob(job, rule) { 20478 cache.set(job.productId, rule); 20479 pending.delete(job.productId); 20480 activeRequests -= 1; 20481 job.resolve(rule); 20482 pumpQueue(); 20483 } 20484 20485 function pumpQueue() { 20486 var job; 20487 20488 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 20489 job = queue.shift(); 20490 activeRequests += 1; 20491 20492 (function (currentJob) { 20493 requestRule(currentJob.productId).then(function (rule) { 20494 finishJob(currentJob, rule); 20495 }, function () { 20496 finishJob(currentJob, null); 20497 }); 20498 }(job)); 20499 } 20500 } 20501 20502 function getRule(productId) { 20503 var resolver; 20504 var promise; 20505 20506 if (cache.has(productId)) { 20507 return Promise.resolve(cache.get(productId)); 20508 } 20509 20510 if (pending.has(productId)) { 20511 return pending.get(productId); 20512 } 20513 20514 promise = new Promise(function (resolve) { 20515 resolver = resolve; 20516 }); 20517 20518 pending.set(productId, promise); 20519 queue.push({ 20520 productId: productId, 20521 resolve: resolver 20522 }); 20523 pumpQueue(); 20524 20525 return promise; 20526 } 20527 20528 function findBadge(card) { 20529 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 20530 } 20531 20532 function clearBadge(card) { 20533 var badge = findBadge(card); 20534 var image = card.querySelector('.product-header > .w-100 > .image'); 20535 20536 if (badge && badge.parentNode) { 20537 badge.parentNode.removeChild(badge); 20538 } 20539 20540 if (image) { 20541 image.classList.remove(HOST_CLASS); 20542 } 20543 20544 card.removeAttribute('data-farmacam-prescription-level'); 20545 } 20546 20547 function applyBadge(card, productId, rule) { 20548 var image; 20549 var badge; 20550 20551 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 20552 return false;
20553 } 20554 20555 clearBadge(card); 20556 20557 if (!rule) { 20558 return true; 20559 } 20560 20561 image = card.querySelector('.product-header > .w-100 > .image'); 20562 if (!image) { 20563 return false; 20564 } 20565 20566 badge = document.createElement('span'); 20567 badge.className = BADGE_CLASS; 20568 badge.setAttribute('data-farmacam-generated', 'true'); 20569 badge.setAttribute('data-farmacam-prescription-level', rule.level); 20570 badge.setAttribute('role', 'note'); 20571 badge.textContent = rule.text; 20572 20573 image.classList.add(HOST_CLASS); 20574 image.insertBefore(badge, image.firstChild); 20575 card.setAttribute('data-farmacam-prescription-level', rule.level); 20576 20577 return true; 20578 } 20579 20580 function processCard(card) { 20581 var productId; 20582 var previousState; 20583 var currentState; 20584 20585 if (!card || card.nodeType !== 1) { 20586 return; 20587 } 20588 20589 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 20590 return; 20591 } 20592 20593 productId = normalizeProductId(card.getAttribute('data-id')); 20594 previousState = cardStates.get(card); 20595 20596 if (!productId) { 20597 clearBadge(card); 20598 cardStates.delete(card); 20599 return; 20600 } 20601 20602 if ( 20603 previousState && 20604 previousState.productId === productId && 20605 previousState.status === 'loading' 20606 ) { 20607 return; 20608 } 20609 20610 if ( 20611 previousState && 20612 previousState.productId === productId && 20613 previousState.status === 'processed' 20614 ) { 20615 if (!previousState.rule || findBadge(card)) { 20616 return; 20617 } 20618 } 20619 20620 if (!previousState || previousState.productId !== productId) { 20621 clearBadge(card); 20622 } 20623 20624 currentState = { 20625 productId: productId, 20626 status: 'loading', 20627 rule: null 20628 }; 20629 cardStates.set(card, currentState); 20630 20631 getRule(productId).then(function (rule) { 20632 var applied; 20633 20634 if ( 20635 cardStates.get(card) !== currentState || 20636 normalizeProductId(card.getAttribute('data-id')) !== productId 20637 ) { 20638 return; 20639 } 20640 20641 applied = applyBadge(card, productId, rule); 20642 currentState.rule = rule; 20643 currentState.status = applied ? 'processed' : 'waiting-image'; 20644 }); 20645 } 20646 20647 function scan(root) { 20648 var cards; 20649 var index; 20650 20651 if (!root) { 20652 return; 20653 } 20654 20655 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 20656 processCard(root); 20657 } 20658 20659 if (!root.querySelectorAll) { 20660 return; 20661 } 20662 20663 cards = root.querySelectorAll(CARD_SELECTOR); 20664 for (index = 0; index < cards.length; index += 1) { 20665 processCard(cards[index]); 20666 } 20667 } 20668 20669 function startObserver() { 20670 var observer; 20671 20672 if (!window.MutationObserver || !document.documentElement) { 20673 return; 20674 } 20675 20676 observer = new MutationObserver(function (mutations) { 20677 var mutationIndex; 20678 var nodeIndex; 20679 var mutation; 20680 var node; 20681 var ownerCard; 20682 20683 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 20684 mutation = mutations[mutationIndex]; 20685 20686 if (mutation.type === 'attributes') { 20687 processCard(mutation.target); 20688 continue; 20689 } 20690 20691 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 20692 node = mutation.addedNodes[nodeIndex]; 20693 if (node.nodeType !== 1) { 20694 continue; 20695 } 20696 20697 scan(node); 20698 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 20699 if (ownerCard) { 20700 processCard(ownerCard); 20701 } 20702 } 20703 } 20704 }); 20705 20706 observer.observe(document.documentElement, { 20707 childList: true, 20708 subtree: true, 20709 attributes: true, 20710 attributeFilter: ['data-id'] 20711 }); 20712 20713 window[GLOBAL_KEY].observer = observer; 20714 } 20715 20716 window[GLOBAL_KEY] = { 20717 version: '1.1.0', 20718 cache: cache, 20719 pending: pending, 20720 cardStates: cardStates, 20721 scan: scan, 20722 processCard: processCard, 20723 observer: null 20724 }; 20725 20726 document.addEventListener('load', onTrayScriptLoad, true); 20727 attachTrayAjaxCache(); 20728 injectStyles(); 20729 scan(document); 20730 startObserver(); 20731 20732 if (document.readyState === 'loading') { 20733 document.addEventListener('DOMContentLoaded', function () { 20734 attachTrayAjaxCache(); 20735 scan(document); 20736 }); 20737 } 20738}(window, document)); 20739</script>
20739 20740 </li> 20741 <li class="item flex"> 20742 20743 20744 20745 20746<div class="product animate open_cart" 20747 data-id="125240148" 20748 data-farmacam-related-categories=",Array,Array," 20749 data-ga4-id="125240148" 20750 data-ga4-name="Insetivac SC - Subcutânea - 5 ml" 20751 data-ga4-price="127.00" 20752 data-ga4-brand="Extratos Alergênicos" 20753 data-ga4-category="Tipo de Produto;Industrializados;" 20754 > 20755 20756 <div class="product-header"> 20757 20758 <div class="w-100"> 20759 20760 20761 20762 20763 20764 20765 20766 20767 20768 20769 <div class="image "> 20770 20771 <a title="Insetivac SC - Subcutânea - 5 ml" href="https://www.farmacam.com.br/insetivac-sc-solucao-oral-gotas-10-ml" class="space-image"> 20772 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/insetivac_sc_subcutanea_5_ml_125240148_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/insetivac_sc_subcutanea_5_ml_125240148_1_3740e8e00ae905feed155648e56241fb.png" alt="Insetivac SC - Subcutânea - 5 ml"> 20773 </a> 20774 20775 </div> 20776 20777 20778 20779 20780 20781 </div> 20782 20783 </div> 20784 20785 <div class="product-body"> 20786 20787 <a title="Insetivac SC - Subcutânea - 5 ml" class="product-info" href="https://www.farmacam.com.br/insetivac-sc-solucao-oral-gotas-10-ml"> 20788 20789 <div class="product-info-dados"> 20790 20791 20792 20793 20794 20795 20796 <div class="product-name"> 20797 Insetivac SC - Subcutânea - 5 ml 20798 </div> 20799 20800 20801 20802 <div class="product-price"> 20803 20804 20805 20806 20807 20808 20809<div class="price display-cash"> 20810 20811 20812 <span class="current-price "> 20813 R$ 127,00 20814 20815 </span> 20816 20817 <span class="product-installments"> 20818 20819 </span> 20820 20821</div> 20822 </div> 20823 20824 </div> 20825 20826 </a> 20827 20828 </div> 20829 20830 20831 <div class="product-footer"> 20832 20833 20834 <div class="w-100"> 20835 20836 20837 20838<div class="product-rating-catalog"> 20839 20840 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 20841 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 20842 </svg> 20843 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 20844 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 20845 </svg> 20846 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 20847 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 20848 </svg> 20849 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 20850 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 20851 </svg> 20852 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 20853 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 20854 </svg> 20855 20856 20857 <a title="Ver avaliações de Insetivac SC - Subcutânea - 5 ml" href="https://www.farmacam.com.br/insetivac-sc-solucao-oral-gotas-10-ml#comments" class="total"> 20858 Seja o primeiro 20859 </a> 20860 20861 </div> 20862 20863 <div class="compare-buttons"> 20864 20865 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240148" class="flex justify-center align-center compare-hidden" data-compare="remove">
20866 <span class="filter-checkbox checked"></span> 20867 Remover Comparação 20868 </a> 20869 20870 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240148" class="flex justify-center align-center " data-compare="add"> 20871 <span class="filter-checkbox"></span> 20872 Comparar Produto 20873 </a> 20874 20875 </div> 20876 20877 20878 <div class="config-variacoes-compra"> 20879 20880 20881 20882 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240148"> 20883 <input type="hidden" name="product_id" value="125240148"> 20884 <input type="hidden" name="without_stock_sale" value=""> 20885 20886 <input type="hidden" name="variacao" id="selectedVariant" value=""> 20887 <input type="hidden" name="estoque" value=""> 20888 20889 20890 20891 <ul class="paleta-cores"> 20892 20893 20894 20895 20896 20897 20898 20899 20900 20901 20902 20903 20904 20905 20906 20907 20908 20909 20910 20911 20912 20913 20914 20915 20916 20917 20918 20919 20920 20921 20922 20923 20924 20925 20926 20927 20928 20929 20930 20931 20932 20933 20934 20935 20936 20937 20938 20939 20940 20941 20942 20943 20944 20945 20946 20947 20948 20949 20950 20951 20952 20953 20954 20955 20956 20957 20958 20959 20960 20961 20962 20963 20964 20965 20966 20967 20968 20969 20970 20971 20972 20973 20974 20975 20976 20977 20978 20979 20980 20981 20982 20983 20984 20985 20986 20987 20988 20989 20990 20991 20992 20993 20994 20995 20996 20997 20998 20999 21000 21001 21002 21003 21004 21005 21006 21007 21008 21009 21010 21011 21012 21013 21014 21015 21016 21017 21018 21019 21020 21021 21022 21023 21024 21025 21026 21027 21028 21029 21030 21031 21032 21033 21034 21035 21036 21037 21038 21039 21040 21041 21042 21043 21044 21045 21046 21047 21048 21049 21050 21051 21052 21053 21054 21055 21056 21057 21058 21059 21060 21061 21062 21063 21064 21065 21066 21067 21068 21069 21070 21071 21072 21073 21074 21075 21076 21077 21078 21079 21080 21081 21082 21083 21084 21085 21086 21087 21088 21089 21090 21091 21092 21093 21094 21095 21096 21097 21098 21099 21100 21101 21102 21103 21104 21105 21106 21107 21108 21109 21110 21111 21112 21113 21114 21115 21116 21117 21118 21119 21120 21121 21122 21123 21124 21125 21126 21127 21128 21129 21130 21131 21132 21133 21134 21135 21136 21137 21138 21139 21140 21141 21142 21143 21144 21145 21146 21147 21148 21149 21150 21151 21152 21153 21154 21155 21156 21157 21158 21159 21160 21161 21162 21163 21164 21165 21166 21167 21168 21169 21170 21171 21172 21173 21174 21175 21176 21177 21178 21179 21180 21181 21182 21183 21184 21185 21186 21187 21188 21189 21190 21191 21192 21193 21194 21195 21196 21197 21198 21199 21200 21201 21202 21203 21204 21205 21206 21207 21208 21209 21210 21211 21212 21213 21214 21215 21216 21217 21218 21219 21220 21221 21222 21223 21224 21225 21226 21227 21228 21229 21230 21231 21232 21233 21234 21235 21236 21237 21238 21239 21240 21241 21242 21243 21244 21245 21246 21247 21248 21249 21250 21251 21252 21253 21254 21255 21256 21257 21258 21259 21260 21261 21262 21263 21264 21265 21266 21267 21268 21269 21270 21271 21272 21273 21274 21275 21276 21277 21278 21279 21280 21281 21282 21283 21284 21285 21286 21287 21288 21289 21290 21291 21292 21293 21294 21295 21296 21297 21298 21299 21300 21301 21302 21303 21304 21305 21306 21307 21308 21309 21310 21311 21312 21313 21314 21315 21316 21317 21318 21319 21320 21321 21322 21323 21324 21325 21326 21327 21328 21329 21330 21331 21332 21333 21334 21335 21336 21337 21338 21339 21340 21341 21342 21343 21344 21345 21346 21347 21348 21349 21350 21351 21352 21353 21354 21355 21356 21357 21358 21359 21360 21361 21362 21363 21364 21365 21366 21367 21368 21369 21370 21371 21372 21373 21374 21375 21376 21377 21378 21379 21380 21381 21382 21383 21384 21385 21386 21387 21388 21389 21390 21391 21392 21393 21394 21395 21396 21397 21398 21399 21400 21401 21402 21403 21404 21405 21406 21407 21408 21409 21410 21411 21412 21413 21414 </ul> 21415 <!-- Fim Paleta de Cores --> 21416 21417 21418
21418 21419 21420 21421 21422 21423 21424 21425 21426 21427 21428 21429 21430 21431 <select class="select-tamanho" style="display: none;" title="Campo Tamanho"> 21432 <option disabled="disabled" value=""> 21433 Selecione 21434 </option> 21435 21436 21437 <option value="19378" produto="125240148" estoque="10000">1ª Série</option> 21438 21439 21440 21441 21442 <option value="19380" produto="125240148" estoque="10000">2ª Série</option> 21443 21444 21445 21446 21447 <option value="19382" produto="125240148" estoque="10000">3ª Série</option> 21448 21449 21450 </select> 21451 21452 21453 <select class="select-cor" style="display: none;" title="Campo Cor"> 21454
21454 </select> 21455 21456 21457 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 21458 <div class="alerta-estoque"></div> 21459 <div class="alerta-adicionado"></div> 21460 21461 <div class="acao-compra"> 21462 21463 <div class="quantidade-box"> 21464 <div class="quantidade-box-input"> 21465 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="30000" /> 21466 </div> 21467 <div class="quantidade-box-controles"> 21468 <div class="quantidade-box-controles-itens" data-item="mais"> 21469 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 21470 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 21471 </svg> 21472 </div> 21473 <div class="quantidade-box-controles-itens" data-item="menus"> 21474 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 21475 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 21476 </svg> 21477 </div> 21478 </div> 21479 </div> 21480 21481 21482 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240148"> 21483 21484 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=" style="width: 100%;"> --> 21485 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 21486 21487 21488 21489 21490 21491 21492 <!-- Cesta de Compras --> 21493 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 21494 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 21495 </svg> 21496 21497 21498 21499 Comprar 21500 21501 21502 </button> 21503 <!-- </form> --> 21504 21505 </div> 21506 21507</div> 21508 21509 21510 </div> 21511 21512 </div> 21513 21514 21515</div> 21516
21517<script> 21518(function (window, document) { 21519 'use strict'; 21520 21521 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 21522 21523 if (window[GLOBAL_KEY]) { 21524 return; 21525 } 21526 21527 if (!window.Map || !window.WeakMap || !window.Promise) { 21528 return; 21529 } 21530 21531 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 21532 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 21533 '#vitrine-personalizada .product[data-id]'; 21534 var BADGE_CLASS = 'farmacam-prescription-badge'; 21535 var HOST_CLASS = 'farmacam-prescription-badge-host'; 21536 var MAX_CONCURRENT_REQUESTS = 6; 21537 var REQUEST_TIMEOUT_MS = 12000; 21538 21539 var rules = { 21540 '294': { 21541 level: '294', 21542 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 21543 }, 21544 '296': { 21545 level: '296', 21546 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 21547 }, 21548 '298': { 21549 level: '298', 21550 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 21551 } 21552 }; 21553 21554 var cache = new Map(); 21555 var pending = new Map(); 21556 var cardStates = new WeakMap(); 21557 var queue = []; 21558 var activeRequests = 0; 21559 var trayAjaxHooked = false; 21560 21561 function injectStyles() { 21562 if (document.getElementById('farmacam-prescription-cards-style')) { 21563 return; 21564 } 21565 21566 var style = document.createElement('style'); 21567 style.id = 'farmacam-prescription-cards-style'; 21568 style.textContent = [ 21569 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 21570 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 21571 'position:absolute!important;', 21572 'top:52px!important;', 21573 'left:10px!important;', 21574 'z-index:999!important;', 21575 'display:block!important;', 21576 'max-width:calc(100% - 20px)!important;', 21577 'box-sizing:border-box!important;', 21578 'padding:8px 12px!important;', 21579 'color:#fff!important;', 21580 'font-family:inherit!important;', 21581 'font-size:13px!important;', 21582 'font-weight:900!important;', 21583 'line-height:1.15!important;', 21584 'text-align:center!important;', 21585 'text-transform:uppercase!important;', 21586 'letter-spacing:.3px!important;', 21587 'white-space:normal!important;', 21588 'overflow-wrap:break-word!important;', 21589 'border-radius:3px!important;', 21590 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 21591 'pointer-events:none!important;', 21592 '}', 21593 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 21594 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 21595 'background:#d70008!important;', 21596 '}', 21597 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 21598 'background:#000!important;', 21599 '}', 21600 '@media (max-width:767px){', 21601 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 21602 'top:42px!important;', 21603 'left:6px!important;', 21604 'max-width:calc(100% - 12px)!important;', 21605 'padding:6px 8px!important;', 21606 'font-size:10px!important;', 21607 '}', 21608 '}' 21609 ].join(''); 21610 21611 (document.head || document.documentElement).appendChild(style); 21612 } 21613 21614 function normalizeProductId(value) { 21615 var id = String(value == null ? '' : value).trim(); 21616 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 21617 } 21618 21619 function classifyRelatedCategories(relatedCategories) { 21620 var found = { 21621 '292': false, 21622 '294': false, 21623 '296': false, 21624 '298': false 21625 }; 21626 21627 function inspect(value, depth) { 21628 var index; 21629 var normalized; 21630 21631 if (value == null || depth > 8) { 21632 return; 21633 } 21634 21635 if (Array.isArray(value)) { 21636 for (index = 0; index < value.length; index += 1) { 21637 inspect(value[index], depth + 1); 21638 } 21639 return; 21640 } 21641 21642 if (typeof value === 'object') { 21643 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 21644 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 21645 inspect(value.id, depth + 1); 21646 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 21647 inspect(value.category_id, depth + 1); 21648 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 21649 inspect(value.Category, depth + 1); 21650 } 21651 return; 21652 } 21653 21654 if (typeof value !== 'string' && typeof value !== 'number') { 21655 return; 21656 } 21657 normalized = normalizeProductId(value); 21658 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 21659 found[normalized] = true; 21660 } 21661 } 21662 21663 inspect(relatedCategories, 0); 21664 21665 if (found['298']) { 21666 return rules['298']; 21667 } 21668 if (found['296']) { 21669 return rules['296']; 21670 } 21671 if (found['294']) { 21672 return rules['294']; 21673 } 21674 21675 // 292 e qualquer classificacao desconhecida ficam sem tarja. 21676 return null; 21677 } 21678 21679 function ruleFromPayload(payload, productId) { 21680 var product = payload && payload.Product; 21681 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 21682 return null; 21683 } 21684 return classifyRelatedCategories(product && product.related_categories); 21685 } 21686 21687 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 21688 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 21689 function attachTrayAjaxCache() { 21690 var jq = window.jQuery; 21691 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 21692 return; 21693 } 21694
21695 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 21696 var url; 21697 var match; 21698 var productId; 21699 var payload; 21700 try { 21701 url = new URL(settings.url, window.location.href); 21702 if (url.origin !== window.location.origin) { 21703 return; 21704 } 21705 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 21706 if (!match) { 21707 return; 21708 } 21709 productId = normalizeProductId(match[1]); 21710 if (!cache.has(productId) && !pending.has(productId)) { 21711 payload = data || xhr.responseJSON; 21712 if (typeof payload === 'string') { 21713 payload = JSON.parse(payload); 21714 } 21715 if (!payload || !payload.Product || 21716 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 21717 return; 21718 } 21719 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 21720 return; 21721 } 21722 cache.set(productId, ruleFromPayload(payload, productId)); 21723 } 21724 } catch (error) { 21725 // Respostas de outras integracoes nao interferem nas tarjas. 21726 } 21727 }); 21728 21729 trayAjaxHooked = true; 21730 document.removeEventListener('load', onTrayScriptLoad, true); 21731 } 21732 21733 function onTrayScriptLoad(event) { 21734 if (event.target && event.target.tagName === 'SCRIPT') { 21735 attachTrayAjaxCache(); 21736 } 21737 } 21738 21739 function requestRule(productId) { 21740 var controller = null; 21741 var timeoutId = null; 21742 var options = { 21743 credentials: 'same-origin', 21744 headers: { 21745 'Accept': 'application/json' 21746 } 21747 }; 21748 var request; 21749 21750 if (typeof window.fetch !== 'function') { 21751 return Promise.resolve(null); 21752 } 21753 21754 if (typeof window.AbortController === 'function') { 21755 controller = new window.AbortController(); 21756 options.signal = controller.signal; 21757 timeoutId = window.setTimeout(function () { 21758 controller.abort(); 21759 }, REQUEST_TIMEOUT_MS); 21760 } 21761 21762 try { 21763 request = window.fetch( 21764 '/web_api/products/' + encodeURIComponent(productId), 21765 options 21766 ); 21767 } catch (error) { 21768 if (timeoutId !== null) { 21769 window.clearTimeout(timeoutId); 21770 } 21771 return Promise.resolve(null); 21772 } 21773 21774 return request.then(function (response) { 21775 if (!response.ok) { 21776 throw new Error('HTTP ' + response.status); 21777 } 21778 return response.json(); 21779 }).then(function (payload) { 21780 return ruleFromPayload(payload, productId); 21781 }).then(function (rule) { 21782 if (timeoutId !== null) { 21783 window.clearTimeout(timeoutId); 21784 } 21785 return rule; 21786 }, function () { 21787 if (timeoutId !== null) { 21788 window.clearTimeout(timeoutId); 21789 } 21790 21791 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 21792 return null; 21793 }); 21794 } 21795 21796 function finishJob(job, rule) { 21797 cache.set(job.productId, rule); 21798 pending.delete(job.productId); 21799 activeRequests -= 1; 21800 job.resolve(rule); 21801 pumpQueue(); 21802 } 21803 21804 function pumpQueue() { 21805 var job; 21806 21807 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 21808 job = queue.shift(); 21809 activeRequests += 1; 21810 21811 (function (currentJob) { 21812 requestRule(currentJob.productId).then(function (rule) { 21813 finishJob(currentJob, rule); 21814 }, function () { 21815 finishJob(currentJob, null); 21816 }); 21817 }(job)); 21818 } 21819 } 21820 21821 function getRule(productId) { 21822 var resolver; 21823 var promise; 21824 21825 if (cache.has(productId)) { 21826 return Promise.resolve(cache.get(productId)); 21827 } 21828 21829 if (pending.has(productId)) { 21830 return pending.get(productId); 21831 } 21832 21833 promise = new Promise(function (resolve) { 21834 resolver = resolve; 21835 }); 21836 21837 pending.set(productId, promise); 21838 queue.push({ 21839 productId: productId, 21840 resolve: resolver 21841 }); 21842 pumpQueue(); 21843 21844 return promise; 21845 } 21846 21847 function findBadge(card) { 21848 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 21849 } 21850 21851 function clearBadge(card) { 21852 var badge = findBadge(card); 21853 var image = card.querySelector('.product-header > .w-100 > .image'); 21854 21855 if (badge && badge.parentNode) { 21856 badge.parentNode.removeChild(badge); 21857 } 21858 21859 if (image) { 21860 image.classList.remove(HOST_CLASS); 21861 } 21862 21863 card.removeAttribute('data-farmacam-prescription-level'); 21864 } 21865 21866 function applyBadge(card, productId, rule) { 21867 var image; 21868 var badge; 21869 21870 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 21871 return false;
21872 } 21873 21874 clearBadge(card); 21875 21876 if (!rule) { 21877 return true; 21878 } 21879 21880 image = card.querySelector('.product-header > .w-100 > .image'); 21881 if (!image) { 21882 return false; 21883 } 21884 21885 badge = document.createElement('span'); 21886 badge.className = BADGE_CLASS; 21887 badge.setAttribute('data-farmacam-generated', 'true'); 21888 badge.setAttribute('data-farmacam-prescription-level', rule.level); 21889 badge.setAttribute('role', 'note'); 21890 badge.textContent = rule.text; 21891 21892 image.classList.add(HOST_CLASS); 21893 image.insertBefore(badge, image.firstChild); 21894 card.setAttribute('data-farmacam-prescription-level', rule.level); 21895 21896 return true; 21897 } 21898 21899 function processCard(card) { 21900 var productId; 21901 var previousState; 21902 var currentState; 21903 21904 if (!card || card.nodeType !== 1) { 21905 return; 21906 } 21907 21908 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 21909 return; 21910 } 21911 21912 productId = normalizeProductId(card.getAttribute('data-id')); 21913 previousState = cardStates.get(card); 21914 21915 if (!productId) { 21916 clearBadge(card); 21917 cardStates.delete(card); 21918 return; 21919 } 21920 21921 if ( 21922 previousState && 21923 previousState.productId === productId && 21924 previousState.status === 'loading' 21925 ) { 21926 return; 21927 } 21928 21929 if ( 21930 previousState && 21931 previousState.productId === productId && 21932 previousState.status === 'processed' 21933 ) { 21934 if (!previousState.rule || findBadge(card)) { 21935 return; 21936 } 21937 } 21938 21939 if (!previousState || previousState.productId !== productId) { 21940 clearBadge(card); 21941 } 21942 21943 currentState = { 21944 productId: productId, 21945 status: 'loading', 21946 rule: null 21947 }; 21948 cardStates.set(card, currentState); 21949 21950 getRule(productId).then(function (rule) { 21951 var applied; 21952 21953 if ( 21954 cardStates.get(card) !== currentState || 21955 normalizeProductId(card.getAttribute('data-id')) !== productId 21956 ) { 21957 return; 21958 } 21959 21960 applied = applyBadge(card, productId, rule); 21961 currentState.rule = rule; 21962 currentState.status = applied ? 'processed' : 'waiting-image'; 21963 }); 21964 } 21965 21966 function scan(root) { 21967 var cards; 21968 var index; 21969 21970 if (!root) { 21971 return; 21972 } 21973 21974 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 21975 processCard(root); 21976 } 21977 21978 if (!root.querySelectorAll) { 21979 return; 21980 } 21981 21982 cards = root.querySelectorAll(CARD_SELECTOR); 21983 for (index = 0; index < cards.length; index += 1) { 21984 processCard(cards[index]); 21985 } 21986 } 21987 21988 function startObserver() { 21989 var observer; 21990 21991 if (!window.MutationObserver || !document.documentElement) { 21992 return; 21993 } 21994 21995 observer = new MutationObserver(function (mutations) { 21996 var mutationIndex; 21997 var nodeIndex; 21998 var mutation; 21999 var node; 22000 var ownerCard; 22001 22002 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 22003 mutation = mutations[mutationIndex]; 22004 22005 if (mutation.type === 'attributes') { 22006 processCard(mutation.target); 22007 continue; 22008 } 22009 22010 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 22011 node = mutation.addedNodes[nodeIndex]; 22012 if (node.nodeType !== 1) { 22013 continue; 22014 } 22015 22016 scan(node); 22017 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 22018 if (ownerCard) { 22019 processCard(ownerCard); 22020 } 22021 } 22022 } 22023 }); 22024 22025 observer.observe(document.documentElement, { 22026 childList: true, 22027 subtree: true, 22028 attributes: true, 22029 attributeFilter: ['data-id'] 22030 }); 22031 22032 window[GLOBAL_KEY].observer = observer; 22033 } 22034 22035 window[GLOBAL_KEY] = { 22036 version: '1.1.0', 22037 cache: cache, 22038 pending: pending, 22039 cardStates: cardStates, 22040 scan: scan, 22041 processCard: processCard, 22042 observer: null 22043 }; 22044 22045 document.addEventListener('load', onTrayScriptLoad, true); 22046 attachTrayAjaxCache(); 22047 injectStyles(); 22048 scan(document); 22049 startObserver(); 22050 22051 if (document.readyState === 'loading') { 22052 document.addEventListener('DOMContentLoaded', function () { 22053 attachTrayAjaxCache(); 22054 scan(document); 22055 }); 22056 } 22057}(window, document)); 22058</script>
22058 22059 </li> 22060 <li class="item flex"> 22061 22062 22063 22064 22065<div class="product animate open_cart" 22066 data-id="125240146" 22067 data-farmacam-related-categories=",Array,Array,Array,Array,Array,Array,Array,Array," 22068 data-ga4-id="125240146" 22069 data-ga4-name="Parvulan SC - Subcutânea - 5mL" 22070 data-ga4-price="142.00" 22071 data-ga4-brand="Extratos Alergênicos" 22072 data-ga4-category="Tipo de Produto;Industrializados;" 22073 > 22074 22075 <div class="product-header"> 22076 22077 <div class="w-100"> 22078 22079 22080 22081 22082 22083 22084 22085 22086 22087 22088 <div class="image "> 22089 22090 <a title="Parvulan SC - Subcutânea - 5mL" href="https://www.farmacam.com.br/parvulan-sc-subcutanea-5ml" class="space-image"> 22091 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/parvulan_sc_subcutanea_5ml_125240146_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/parvulan_sc_subcutanea_5ml_125240146_1_3740e8e00ae905feed155648e56241fb.png" alt="Parvulan SC - Subcutânea - 5mL"> 22092 </a> 22093 22094 </div> 22095 22096 22097 22098 22099 22100 </div> 22101 22102 </div> 22103 22104 <div class="product-body"> 22105 22106 <a title="Parvulan SC - Subcutânea - 5mL" class="product-info" href="https://www.farmacam.com.br/parvulan-sc-subcutanea-5ml"> 22107 22108 <div class="product-info-dados"> 22109 22110 22111 22112 22113 22114 22115 <div class="product-name"> 22116 Parvulan SC - Subcutânea - 5mL 22117 </div> 22118 22119 22120 22121 <div class="product-price"> 22122 22123 22124 22125 22126 22127 22128<div class="price display-cash"> 22129 22130 22131 <span class="current-price "> 22132 R$ 142,00 22133 22134 </span> 22135 22136 <span class="product-installments"> 22137 22138 </span> 22139 22140</div> 22141 </div> 22142 22143 </div> 22144 22145 </a> 22146 22147 </div> 22148 22149 22150 <div class="product-footer"> 22151 22152 22153 <div class="w-100"> 22154 22155 22156 22157<div class="product-rating-catalog"> 22158 22159 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22160 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22161 </svg> 22162 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22163 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22164 </svg> 22165 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22166 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22167 </svg> 22168 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22169 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22170 </svg> 22171 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22172 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22173 </svg> 22174 22175 22176 <a title="Ver avaliações de Parvulan SC - Subcutânea - 5mL" href="https://www.farmacam.com.br/parvulan-sc-subcutanea-5ml#comments" class="total"> 22177 Seja o primeiro 22178 </a> 22179 22180 </div> 22181 22182 <div class="compare-buttons"> 22183 22184 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240146" class="flex justify-center align-center compare-hidden" data-compare="remove">
22185 <span class="filter-checkbox checked"></span> 22186 Remover Comparação 22187 </a> 22188 22189 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240146" class="flex justify-center align-center " data-compare="add"> 22190 <span class="filter-checkbox"></span> 22191 Comparar Produto 22192 </a> 22193 22194 </div> 22195 22196 22197 <div class="config-variacoes-compra"> 22198 22199 22200 22201 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240146"> 22202 <input type="hidden" name="product_id" value="125240146"> 22203 <input type="hidden" name="without_stock_sale" value=""> 22204 22205 <input type="hidden" name="estoque" value="9986"> 22206 22207 22208 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 22209 <div class="alerta-estoque"></div> 22210 <div class="alerta-adicionado"></div> 22211 22212 <div class="acao-compra"> 22213 22214 <div class="quantidade-box"> 22215 <div class="quantidade-box-input"> 22216 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="9986" /> 22217 </div> 22218 <div class="quantidade-box-controles"> 22219 <div class="quantidade-box-controles-itens" data-item="mais"> 22220 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 22221 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 22222 </svg> 22223 </div> 22224 <div class="quantidade-box-controles-itens" data-item="menus"> 22225 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 22226 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 22227 </svg> 22228 </div> 22229 </div> 22230 </div> 22231 22232 22233 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240146"> 22234 22235 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="" style="width: 100%;"> --> 22236 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 22237 22238 22239 22240 22241 22242 22243 <!-- Cesta de Compras --> 22244 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 22245 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 22246 </svg> 22247 22248 22249 22250 Comprar 22251 22252 22253 </button> 22254 <!-- </form> --> 22255 22256 </div> 22257 22258</div> 22259 22260 22261 </div> 22262 22263 </div> 22264 22265 22266</div> 22267
22268<script> 22269(function (window, document) { 22270 'use strict'; 22271 22272 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 22273 22274 if (window[GLOBAL_KEY]) { 22275 return; 22276 } 22277 22278 if (!window.Map || !window.WeakMap || !window.Promise) { 22279 return; 22280 } 22281 22282 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 22283 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 22284 '#vitrine-personalizada .product[data-id]'; 22285 var BADGE_CLASS = 'farmacam-prescription-badge'; 22286 var HOST_CLASS = 'farmacam-prescription-badge-host'; 22287 var MAX_CONCURRENT_REQUESTS = 6; 22288 var REQUEST_TIMEOUT_MS = 12000; 22289 22290 var rules = { 22291 '294': { 22292 level: '294', 22293 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 22294 }, 22295 '296': { 22296 level: '296', 22297 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 22298 }, 22299 '298': { 22300 level: '298', 22301 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 22302 } 22303 }; 22304 22305 var cache = new Map(); 22306 var pending = new Map(); 22307 var cardStates = new WeakMap(); 22308 var queue = []; 22309 var activeRequests = 0; 22310 var trayAjaxHooked = false; 22311 22312 function injectStyles() { 22313 if (document.getElementById('farmacam-prescription-cards-style')) { 22314 return; 22315 } 22316 22317 var style = document.createElement('style'); 22318 style.id = 'farmacam-prescription-cards-style'; 22319 style.textContent = [ 22320 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 22321 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 22322 'position:absolute!important;', 22323 'top:52px!important;', 22324 'left:10px!important;', 22325 'z-index:999!important;', 22326 'display:block!important;', 22327 'max-width:calc(100% - 20px)!important;', 22328 'box-sizing:border-box!important;', 22329 'padding:8px 12px!important;', 22330 'color:#fff!important;', 22331 'font-family:inherit!important;', 22332 'font-size:13px!important;', 22333 'font-weight:900!important;', 22334 'line-height:1.15!important;', 22335 'text-align:center!important;', 22336 'text-transform:uppercase!important;', 22337 'letter-spacing:.3px!important;', 22338 'white-space:normal!important;', 22339 'overflow-wrap:break-word!important;', 22340 'border-radius:3px!important;', 22341 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 22342 'pointer-events:none!important;', 22343 '}', 22344 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 22345 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 22346 'background:#d70008!important;', 22347 '}', 22348 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 22349 'background:#000!important;', 22350 '}', 22351 '@media (max-width:767px){', 22352 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 22353 'top:42px!important;', 22354 'left:6px!important;', 22355 'max-width:calc(100% - 12px)!important;', 22356 'padding:6px 8px!important;', 22357 'font-size:10px!important;', 22358 '}', 22359 '}' 22360 ].join(''); 22361 22362 (document.head || document.documentElement).appendChild(style); 22363 } 22364 22365 function normalizeProductId(value) { 22366 var id = String(value == null ? '' : value).trim(); 22367 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 22368 } 22369 22370 function classifyRelatedCategories(relatedCategories) { 22371 var found = { 22372 '292': false, 22373 '294': false, 22374 '296': false, 22375 '298': false 22376 }; 22377 22378 function inspect(value, depth) { 22379 var index; 22380 var normalized; 22381 22382 if (value == null || depth > 8) { 22383 return; 22384 } 22385 22386 if (Array.isArray(value)) { 22387 for (index = 0; index < value.length; index += 1) { 22388 inspect(value[index], depth + 1); 22389 } 22390 return; 22391 } 22392 22393 if (typeof value === 'object') { 22394 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 22395 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 22396 inspect(value.id, depth + 1); 22397 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 22398 inspect(value.category_id, depth + 1); 22399 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 22400 inspect(value.Category, depth + 1); 22401 } 22402 return; 22403 } 22404 22405 if (typeof value !== 'string' && typeof value !== 'number') { 22406 return; 22407 } 22408 normalized = normalizeProductId(value); 22409 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 22410 found[normalized] = true; 22411 } 22412 } 22413 22414 inspect(relatedCategories, 0); 22415 22416 if (found['298']) { 22417 return rules['298']; 22418 } 22419 if (found['296']) { 22420 return rules['296']; 22421 } 22422 if (found['294']) { 22423 return rules['294']; 22424 } 22425 22426 // 292 e qualquer classificacao desconhecida ficam sem tarja. 22427 return null; 22428 } 22429 22430 function ruleFromPayload(payload, productId) { 22431 var product = payload && payload.Product; 22432 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 22433 return null; 22434 } 22435 return classifyRelatedCategories(product && product.related_categories); 22436 } 22437 22438 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 22439 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 22440 function attachTrayAjaxCache() { 22441 var jq = window.jQuery; 22442 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 22443 return; 22444 } 22445
22446 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 22447 var url; 22448 var match; 22449 var productId; 22450 var payload; 22451 try { 22452 url = new URL(settings.url, window.location.href); 22453 if (url.origin !== window.location.origin) { 22454 return; 22455 } 22456 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 22457 if (!match) { 22458 return; 22459 } 22460 productId = normalizeProductId(match[1]); 22461 if (!cache.has(productId) && !pending.has(productId)) { 22462 payload = data || xhr.responseJSON; 22463 if (typeof payload === 'string') { 22464 payload = JSON.parse(payload); 22465 } 22466 if (!payload || !payload.Product || 22467 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 22468 return; 22469 } 22470 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 22471 return; 22472 } 22473 cache.set(productId, ruleFromPayload(payload, productId)); 22474 } 22475 } catch (error) { 22476 // Respostas de outras integracoes nao interferem nas tarjas. 22477 } 22478 }); 22479 22480 trayAjaxHooked = true; 22481 document.removeEventListener('load', onTrayScriptLoad, true); 22482 } 22483 22484 function onTrayScriptLoad(event) { 22485 if (event.target && event.target.tagName === 'SCRIPT') { 22486 attachTrayAjaxCache(); 22487 } 22488 } 22489 22490 function requestRule(productId) { 22491 var controller = null; 22492 var timeoutId = null; 22493 var options = { 22494 credentials: 'same-origin', 22495 headers: { 22496 'Accept': 'application/json' 22497 } 22498 }; 22499 var request; 22500 22501 if (typeof window.fetch !== 'function') { 22502 return Promise.resolve(null); 22503 } 22504 22505 if (typeof window.AbortController === 'function') { 22506 controller = new window.AbortController(); 22507 options.signal = controller.signal; 22508 timeoutId = window.setTimeout(function () { 22509 controller.abort(); 22510 }, REQUEST_TIMEOUT_MS); 22511 } 22512 22513 try { 22514 request = window.fetch( 22515 '/web_api/products/' + encodeURIComponent(productId), 22516 options 22517 ); 22518 } catch (error) { 22519 if (timeoutId !== null) { 22520 window.clearTimeout(timeoutId); 22521 } 22522 return Promise.resolve(null); 22523 } 22524 22525 return request.then(function (response) { 22526 if (!response.ok) { 22527 throw new Error('HTTP ' + response.status); 22528 } 22529 return response.json(); 22530 }).then(function (payload) { 22531 return ruleFromPayload(payload, productId); 22532 }).then(function (rule) { 22533 if (timeoutId !== null) { 22534 window.clearTimeout(timeoutId); 22535 } 22536 return rule; 22537 }, function () { 22538 if (timeoutId !== null) { 22539 window.clearTimeout(timeoutId); 22540 } 22541 22542 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 22543 return null; 22544 }); 22545 } 22546 22547 function finishJob(job, rule) { 22548 cache.set(job.productId, rule); 22549 pending.delete(job.productId); 22550 activeRequests -= 1; 22551 job.resolve(rule); 22552 pumpQueue(); 22553 } 22554 22555 function pumpQueue() { 22556 var job; 22557 22558 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 22559 job = queue.shift(); 22560 activeRequests += 1; 22561 22562 (function (currentJob) { 22563 requestRule(currentJob.productId).then(function (rule) { 22564 finishJob(currentJob, rule); 22565 }, function () { 22566 finishJob(currentJob, null); 22567 }); 22568 }(job)); 22569 } 22570 } 22571 22572 function getRule(productId) { 22573 var resolver; 22574 var promise; 22575 22576 if (cache.has(productId)) { 22577 return Promise.resolve(cache.get(productId)); 22578 } 22579 22580 if (pending.has(productId)) { 22581 return pending.get(productId); 22582 } 22583 22584 promise = new Promise(function (resolve) { 22585 resolver = resolve; 22586 }); 22587 22588 pending.set(productId, promise); 22589 queue.push({ 22590 productId: productId, 22591 resolve: resolver 22592 }); 22593 pumpQueue(); 22594 22595 return promise; 22596 } 22597 22598 function findBadge(card) { 22599 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 22600 } 22601 22602 function clearBadge(card) { 22603 var badge = findBadge(card); 22604 var image = card.querySelector('.product-header > .w-100 > .image'); 22605 22606 if (badge && badge.parentNode) { 22607 badge.parentNode.removeChild(badge); 22608 } 22609 22610 if (image) { 22611 image.classList.remove(HOST_CLASS); 22612 } 22613 22614 card.removeAttribute('data-farmacam-prescription-level'); 22615 } 22616 22617 function applyBadge(card, productId, rule) { 22618 var image; 22619 var badge; 22620 22621 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 22622 return false;
22623 } 22624 22625 clearBadge(card); 22626 22627 if (!rule) { 22628 return true; 22629 } 22630 22631 image = card.querySelector('.product-header > .w-100 > .image'); 22632 if (!image) { 22633 return false; 22634 } 22635 22636 badge = document.createElement('span'); 22637 badge.className = BADGE_CLASS; 22638 badge.setAttribute('data-farmacam-generated', 'true'); 22639 badge.setAttribute('data-farmacam-prescription-level', rule.level); 22640 badge.setAttribute('role', 'note'); 22641 badge.textContent = rule.text; 22642 22643 image.classList.add(HOST_CLASS); 22644 image.insertBefore(badge, image.firstChild); 22645 card.setAttribute('data-farmacam-prescription-level', rule.level); 22646 22647 return true; 22648 } 22649 22650 function processCard(card) { 22651 var productId; 22652 var previousState; 22653 var currentState; 22654 22655 if (!card || card.nodeType !== 1) { 22656 return; 22657 } 22658 22659 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 22660 return; 22661 } 22662 22663 productId = normalizeProductId(card.getAttribute('data-id')); 22664 previousState = cardStates.get(card); 22665 22666 if (!productId) { 22667 clearBadge(card); 22668 cardStates.delete(card); 22669 return; 22670 } 22671 22672 if ( 22673 previousState && 22674 previousState.productId === productId && 22675 previousState.status === 'loading' 22676 ) { 22677 return; 22678 } 22679 22680 if ( 22681 previousState && 22682 previousState.productId === productId && 22683 previousState.status === 'processed' 22684 ) { 22685 if (!previousState.rule || findBadge(card)) { 22686 return; 22687 } 22688 } 22689 22690 if (!previousState || previousState.productId !== productId) { 22691 clearBadge(card); 22692 } 22693 22694 currentState = { 22695 productId: productId, 22696 status: 'loading', 22697 rule: null 22698 }; 22699 cardStates.set(card, currentState); 22700 22701 getRule(productId).then(function (rule) { 22702 var applied; 22703 22704 if ( 22705 cardStates.get(card) !== currentState || 22706 normalizeProductId(card.getAttribute('data-id')) !== productId 22707 ) { 22708 return; 22709 } 22710 22711 applied = applyBadge(card, productId, rule); 22712 currentState.rule = rule; 22713 currentState.status = applied ? 'processed' : 'waiting-image'; 22714 }); 22715 } 22716 22717 function scan(root) { 22718 var cards; 22719 var index; 22720 22721 if (!root) { 22722 return; 22723 } 22724 22725 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 22726 processCard(root); 22727 } 22728 22729 if (!root.querySelectorAll) { 22730 return; 22731 } 22732 22733 cards = root.querySelectorAll(CARD_SELECTOR); 22734 for (index = 0; index < cards.length; index += 1) { 22735 processCard(cards[index]); 22736 } 22737 } 22738 22739 function startObserver() { 22740 var observer; 22741 22742 if (!window.MutationObserver || !document.documentElement) { 22743 return; 22744 } 22745 22746 observer = new MutationObserver(function (mutations) { 22747 var mutationIndex; 22748 var nodeIndex; 22749 var mutation; 22750 var node; 22751 var ownerCard; 22752 22753 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 22754 mutation = mutations[mutationIndex]; 22755 22756 if (mutation.type === 'attributes') { 22757 processCard(mutation.target); 22758 continue; 22759 } 22760 22761 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 22762 node = mutation.addedNodes[nodeIndex]; 22763 if (node.nodeType !== 1) { 22764 continue; 22765 } 22766 22767 scan(node); 22768 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 22769 if (ownerCard) { 22770 processCard(ownerCard); 22771 } 22772 } 22773 } 22774 }); 22775 22776 observer.observe(document.documentElement, { 22777 childList: true, 22778 subtree: true, 22779 attributes: true, 22780 attributeFilter: ['data-id'] 22781 }); 22782 22783 window[GLOBAL_KEY].observer = observer; 22784 } 22785 22786 window[GLOBAL_KEY] = { 22787 version: '1.1.0', 22788 cache: cache, 22789 pending: pending, 22790 cardStates: cardStates, 22791 scan: scan, 22792 processCard: processCard, 22793 observer: null 22794 }; 22795 22796 document.addEventListener('load', onTrayScriptLoad, true); 22797 attachTrayAjaxCache(); 22798 injectStyles(); 22799 scan(document); 22800 startObserver(); 22801 22802 if (document.readyState === 'loading') { 22803 document.addEventListener('DOMContentLoaded', function () { 22804 attachTrayAjaxCache(); 22805 scan(document); 22806 }); 22807 } 22808}(window, document)); 22809</script>
22809 22810 </li> 22811 <li class="item flex"> 22812 22813 22814 22815 22816<div class="product animate open_cart" 22817 data-id="125240144" 22818 data-farmacam-related-categories=",Array,Array," 22819 data-ga4-id="125240144" 22820 data-ga4-name="Extralerg SL - Solução Oral Gotas 15 ml" 22821 data-ga4-price="127.00" 22822 data-ga4-brand="Extratos Alergênicos" 22823 data-ga4-category="Tipo de Produto;Industrializados;" 22824 > 22825 22826 <div class="product-header"> 22827 22828 <div class="w-100"> 22829 22830 22831 22832 22833 22834 22835 22836 22837 22838 22839 <div class="image "> 22840 22841 <a title="Extralerg SL - Solução Oral Gotas 15 ml" href="https://www.farmacam.com.br/extralerg-sl-solucao-oral-gotas-15-ml" class="space-image"> 22842 <img class="hori-quad imagem-produto-1 imagem-unica" src="https://images.tcdn.com.br/img/img_prod/1063102/extralerg_sl_solucao_oral_gotas_15_ml_125240144_1_3740e8e00ae905feed155648e56241fb.png" data-src="https://images.tcdn.com.br/img/img_prod/1063102/extralerg_sl_solucao_oral_gotas_15_ml_125240144_1_3740e8e00ae905feed155648e56241fb.png" alt="Extralerg SL - Solução Oral Gotas 15 ml"> 22843 </a> 22844 22845 </div> 22846 22847 22848 22849 22850 22851 </div> 22852 22853 </div> 22854 22855 <div class="product-body"> 22856 22857 <a title="Extralerg SL - Solução Oral Gotas 15 ml" class="product-info" href="https://www.farmacam.com.br/extralerg-sl-solucao-oral-gotas-15-ml"> 22858 22859 <div class="product-info-dados"> 22860 22861 22862 22863 22864 22865 22866 <div class="product-name"> 22867 Extralerg SL - Solução Oral Gotas 15 ml 22868 </div> 22869 22870 22871 22872 <div class="product-price"> 22873 22874 22875 22876 22877 22878 22879<div class="price display-cash"> 22880 22881 22882 <span class="current-price "> 22883 R$ 127,00 22884 22885 </span> 22886 22887 <span class="product-installments"> 22888 22889 </span> 22890 22891</div> 22892 </div> 22893 22894 </div> 22895 22896 </a> 22897 22898 </div> 22899 22900 22901 <div class="product-footer"> 22902 22903 22904 <div class="w-100"> 22905 22906 22907 22908<div class="product-rating-catalog"> 22909 22910 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22911 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22912 </svg> 22913 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22914 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22915 </svg> 22916 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22917 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22918 </svg> 22919 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22920 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22921 </svg> 22922 <svg style="margin-top: -3px; margin-left: 1px;" xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-star" viewBox="0 0 16 16"> 22923 <path d="M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z"/> 22924 </svg> 22925 22926 22927 <a title="Ver avaliações de Extralerg SL - Solução Oral Gotas 15 ml" href="https://www.farmacam.com.br/extralerg-sl-solucao-oral-gotas-15-ml#comments" class="total"> 22928 Seja o primeiro 22929 </a> 22930 22931 </div> 22932 22933 <div class="compare-buttons"> 22934 22935 <a title="Remover comparação" href="/loja/funcoes/remover_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240144" class="flex justify-center align-center compare-hidden" data-compare="remove">
22936 <span class="filter-checkbox checked"></span> 22937 Remover Comparação 22938 </a> 22939 22940 <a title="Comparar produto" href="/loja/funcoes/incluir_comparacao.php?loja=1063102&id_cat_p=3&id_produto=125240144" class="flex justify-center align-center " data-compare="add"> 22941 <span class="filter-checkbox"></span> 22942 Comparar Produto 22943 </a> 22944 22945 </div> 22946 22947 22948 <div class="config-variacoes-compra"> 22949 22950 22951 22952 <input type="hidden" name="action" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240144"> 22953 <input type="hidden" name="product_id" value="125240144"> 22954 <input type="hidden" name="without_stock_sale" value=""> 22955 22956 <input type="hidden" name="variacao" id="selectedVariant" value=""> 22957 <input type="hidden" name="estoque" value=""> 22958 22959 22960 22961 <ul class="paleta-cores"> 22962 22963 22964 22965 22966 22967 22968 22969 22970 22971 22972 22973 22974 22975 22976 22977 22978 22979 22980 22981 22982 22983 22984 22985 22986 22987 22988 22989 22990 22991 22992 22993 22994 22995 22996 22997 22998 22999 23000 23001 23002 23003 23004 23005 23006 23007 23008 23009 23010 23011 23012 23013 23014 23015 23016 23017 23018 23019 23020 23021 23022 23023 23024 23025 23026 23027 23028 23029 23030 23031 23032 23033 23034 23035 23036 23037 23038 23039 23040 23041 23042 23043 23044 23045 23046 23047 23048 23049 23050 23051 23052 23053 23054 23055 23056 23057 23058 23059 23060 23061 23062 23063 23064 23065 23066 23067 23068 23069 23070 23071 23072 23073 23074 23075 23076 23077 23078 23079 23080 23081 23082 23083 23084 23085 23086 23087 23088 23089 23090 23091 23092 23093 23094 23095 23096 23097 23098 23099 23100 23101 23102 23103 23104 23105 23106 23107 23108 23109 23110 23111 23112 23113 23114 23115 23116 23117 23118 23119 23120 23121 23122 23123 23124 23125 23126 23127 23128 23129 23130 23131 23132 23133 23134 23135 23136 23137 23138 23139 23140 23141 23142 23143 23144 23145 23146 23147 23148 23149 23150 23151 23152 23153 23154 23155 23156 23157 23158 23159 23160 23161 23162 23163 23164 23165 23166 23167 23168 23169 23170 23171 23172 23173 23174 23175 23176 23177 23178 23179 23180 23181 23182 23183 23184 23185 23186 23187 23188 23189 23190 23191 23192 23193 23194 23195 23196 23197 23198 23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 23210 23211 23212 23213 23214 23215 23216 23217 23218 23219 23220 23221 23222 23223 23224 23225 23226 23227 23228 23229 23230 23231 23232 23233 23234 23235 23236 23237 23238 23239 23240 23241 23242 23243 23244 23245 23246 23247 23248 23249 23250 23251 23252 23253 23254 23255 23256 23257 23258 23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 23294 23295 23296 23297 23298 23299 23300 23301 23302 23303 23304 23305 23306 23307 23308 23309 23310 23311 23312 23313 23314 23315 23316 23317 23318 23319 23320 23321 23322 23323 23324 23325 23326 23327 23328 23329 23330 23331 23332 23333 23334 23335 23336 23337 23338 23339 23340 23341 23342 23343 23344 23345 23346 23347 23348 23349 23350 23351 23352 23353 23354 23355 23356 23357 23358 23359 23360 23361 23362 23363 23364 23365 23366 23367 23368 23369 23370 23371 23372 23373 23374 23375 23376 23377 23378 23379 23380 23381 23382 23383 23384 23385 23386 23387 23388 23389 23390 23391 23392 23393 23394 23395 23396 23397 23398 23399 23400 23401 23402 23403 23404 23405 23406 23407 23408 23409 23410 23411 23412 23413 23414 23415 23416 23417 23418 23419 23420 23421 23422 23423 23424 23425 23426 23427 23428 23429 23430 23431 23432 23433 23434 23435 23436 23437 23438 23439 23440 23441 23442 23443 23444 23445 23446 23447 23448 23449 23450 23451 23452 23453 23454 23455 23456 23457 23458 23459 23460 23461 23462 23463 23464 23465 23466 23467 23468 23469 23470 23471 23472 23473 23474 23475 23476 23477 23478 23479 23480 23481 23482 23483 23484 </ul> 23485 <!-- Fim Paleta de Cores --> 23486 23487 23488
23488 23489 23490 23491 23492 23493 23494 23495 23496 23497 23498 23499 23500 23501 <select class="select-tamanho" style="display: none;" title="Campo Tamanho"> 23502 <option disabled="disabled" value=""> 23503 Selecione 23504 </option> 23505 23506 23507 <option value="19372" produto="125240144" estoque="10000">1ª Série</option> 23508 23509 23510 23511 23512 <option value="19374" produto="125240144" estoque="10000">2ª Série</option> 23513 23514 23515 23516 23517 <option value="19376" produto="125240144" estoque="10000">3ª Série</option> 23518 23519 23520 </select> 23521 23522 23523 <select class="select-cor" style="display: none;" title="Campo Cor"> 23524
23524 </select> 23525 23526 23527 <div class="alerta-variacao">Por favor, selecione uma variação.</div> 23528 <div class="alerta-estoque"></div> 23529 <div class="alerta-adicionado"></div> 23530 23531 <div class="acao-compra"> 23532 23533 <div class="quantidade-box"> 23534 <div class="quantidade-box-input"> 23535 <input id="quantidade" name="quantidade" class="text numeric" value="1" maxlength="4" title="Campo Quantidade" data-estoque="30000" /> 23536 </div> 23537 <div class="quantidade-box-controles"> 23538 <div class="quantidade-box-controles-itens" data-item="mais"> 23539 <svg xmlns="http://www.w3.org/2000/svg" style="margin-bottom: -4px;" width="16" height="16" fill="currentColor" class="bi bi-plus" viewBox="0 0 16 16"> 23540 <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/> 23541 </svg> 23542 </div> 23543 <div class="quantidade-box-controles-itens" data-item="menus"> 23544 <svg xmlns="http://www.w3.org/2000/svg" style="margin-top: -4px;" width="16" height="16" fill="currentColor" class="bi bi-dash" viewBox="0 0 16 16"> 23545 <path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z"/> 23546 </svg> 23547 </div> 23548 </div> 23549 </div> 23550 23551 23552 <input type="hidden" name="url-add-card" value="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=125240144"> 23553 23554 <!-- <form id="form_comprar" method="post" data-app="product.buy-form" action="/loja/cartService.php?loja=1063102&acao=incluir&IdProd=" style="width: 100%;"> --> 23555 <button type="button" class="btn-comprar-listagem btn-comprar product-button" title="Botão Comprar"> 23556 23557 23558 23559 23560 23561 23562 <!-- Cesta de Compras --> 23563 <svg style="margin-top: -4px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-basket3" viewBox="0 0 16 16"> 23564 <path d="M5.757 1.071a.5.5 0 0 1 .172.686L3.383 6h9.234L10.07 1.757a.5.5 0 1 1 .858-.514L13.783 6H15.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H.5a.5.5 0 0 1-.5-.5v-1A.5.5 0 0 1 .5 6h1.717L5.07 1.243a.5.5 0 0 1 .686-.172zM3.394 15l-1.48-6h-.97l1.525 6.426a.75.75 0 0 0 .729.574h9.606a.75.75 0 0 0 .73-.574L15.056 9h-.972l-1.479 6h-9.21z"/> 23565 </svg> 23566 23567 23568 23569 Comprar 23570 23571 23572 </button> 23573 <!-- </form> --> 23574 23575 </div> 23576 23577</div> 23578 23579 23580 </div> 23581 23582 </div> 23583 23584 23585</div> 23586
23587<script> 23588(function (window, document) { 23589 'use strict'; 23590 23591 var GLOBAL_KEY = 'FarmacamPrescriptionCardsV1'; 23592 23593 if (window[GLOBAL_KEY]) { 23594 return; 23595 } 23596 23597 if (!window.Map || !window.WeakMap || !window.Promise) { 23598 return; 23599 } 23600 23601 // A vitrine personalizada recebe cards de #product-ajax, sem o atributo de relacionados. 23602 var CARD_SELECTOR = '.product[data-id][data-farmacam-related-categories], ' + 23603 '#vitrine-personalizada .product[data-id]'; 23604 var BADGE_CLASS = 'farmacam-prescription-badge'; 23605 var HOST_CLASS = 'farmacam-prescription-badge-host'; 23606 var MAX_CONCURRENT_REQUESTS = 6; 23607 var REQUEST_TIMEOUT_MS = 12000; 23608 23609 var rules = { 23610 '294': { 23611 level: '294', 23612 text: 'VENDA SOB PRESCRI\u00c7\u00c3O' 23613 }, 23614 '296': { 23615 level: '296', 23616 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE RECEITA' 23617 }, 23618 '298': { 23619 level: '298', 23620 text: 'VENDA SOB PRESCRI\u00c7\u00c3O COM RETEN\u00c7\u00c3O DE NOTIFICA\u00c7\u00c3O DE RECEITA' 23621 } 23622 }; 23623 23624 var cache = new Map(); 23625 var pending = new Map(); 23626 var cardStates = new WeakMap(); 23627 var queue = []; 23628 var activeRequests = 0; 23629 var trayAjaxHooked = false; 23630 23631 function injectStyles() { 23632 if (document.getElementById('farmacam-prescription-cards-style')) { 23633 return; 23634 } 23635 23636 var style = document.createElement('style'); 23637 style.id = 'farmacam-prescription-cards-style'; 23638 style.textContent = [ 23639 '.product .image.' + HOST_CLASS + '{position:relative!important;}', 23640 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 23641 'position:absolute!important;', 23642 'top:52px!important;', 23643 'left:10px!important;', 23644 'z-index:999!important;', 23645 'display:block!important;', 23646 'max-width:calc(100% - 20px)!important;', 23647 'box-sizing:border-box!important;', 23648 'padding:8px 12px!important;', 23649 'color:#fff!important;', 23650 'font-family:inherit!important;', 23651 'font-size:13px!important;', 23652 'font-weight:900!important;', 23653 'line-height:1.15!important;', 23654 'text-align:center!important;', 23655 'text-transform:uppercase!important;', 23656 'letter-spacing:.3px!important;', 23657 'white-space:normal!important;', 23658 'overflow-wrap:break-word!important;', 23659 'border-radius:3px!important;', 23660 'box-shadow:0 2px 6px rgba(0,0,0,.28)!important;', 23661 'pointer-events:none!important;', 23662 '}', 23663 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="294"],', 23664 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="296"]{', 23665 'background:#d70008!important;', 23666 '}', 23667 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '[data-farmacam-prescription-level="298"]{', 23668 'background:#000!important;', 23669 '}', 23670 '@media (max-width:767px){', 23671 '.product .image.' + HOST_CLASS + ' > .' + BADGE_CLASS + '{', 23672 'top:42px!important;', 23673 'left:6px!important;', 23674 'max-width:calc(100% - 12px)!important;', 23675 'padding:6px 8px!important;', 23676 'font-size:10px!important;', 23677 '}', 23678 '}' 23679 ].join(''); 23680 23681 (document.head || document.documentElement).appendChild(style); 23682 } 23683 23684 function normalizeProductId(value) { 23685 var id = String(value == null ? '' : value).trim(); 23686 return /^\d+$/.test(id) ? id.replace(/^0+(?=\d)/, '') : ''; 23687 } 23688 23689 function classifyRelatedCategories(relatedCategories) { 23690 var found = { 23691 '292': false, 23692 '294': false, 23693 '296': false, 23694 '298': false 23695 }; 23696 23697 function inspect(value, depth) { 23698 var index; 23699 var normalized; 23700 23701 if (value == null || depth > 8) { 23702 return; 23703 } 23704 23705 if (Array.isArray(value)) { 23706 for (index = 0; index < value.length; index += 1) { 23707 inspect(value[index], depth + 1); 23708 } 23709 return; 23710 } 23711 23712 if (typeof value === 'object') { 23713 // Somente campos de ID: nomes, descricoes e contagens nao sao categorias. 23714 if (Object.prototype.hasOwnProperty.call(value, 'id')) { 23715 inspect(value.id, depth + 1); 23716 } else if (Object.prototype.hasOwnProperty.call(value, 'category_id')) { 23717 inspect(value.category_id, depth + 1); 23718 } else if (Object.prototype.hasOwnProperty.call(value, 'Category')) { 23719 inspect(value.Category, depth + 1); 23720 } 23721 return; 23722 } 23723 23724 if (typeof value !== 'string' && typeof value !== 'number') { 23725 return; 23726 } 23727 normalized = normalizeProductId(value); 23728 if (Object.prototype.hasOwnProperty.call(found, normalized)) { 23729 found[normalized] = true; 23730 } 23731 } 23732 23733 inspect(relatedCategories, 0); 23734 23735 if (found['298']) { 23736 return rules['298']; 23737 } 23738 if (found['296']) { 23739 return rules['296']; 23740 } 23741 if (found['294']) { 23742 return rules['294']; 23743 } 23744 23745 // 292 e qualquer classificacao desconhecida ficam sem tarja. 23746 return null; 23747 } 23748 23749 function ruleFromPayload(payload, productId) { 23750 var product = payload && payload.Product; 23751 if (product && product.id != null && normalizeProductId(product.id) !== productId) { 23752 return null; 23753 } 23754 return classifyRelatedCategories(product && product.related_categories); 23755 } 23756 23757 // Aproveita respostas da API que a propria vitrine ja consulta antes de inserir o card. 23758 // Nao substitui fetch, $.ajax, callbacks do tema nem o atributo de relacionados. 23759 function attachTrayAjaxCache() { 23760 var jq = window.jQuery; 23761 if (trayAjaxHooked || !jq || !jq.fn || typeof jq.fn.on !== 'function') { 23762 return; 23763 } 23764
23765 jq(document).on('ajaxSuccess.farmacamPrescriptionCards', function (event, xhr, settings, data) { 23766 var url; 23767 var match; 23768 var productId; 23769 var payload; 23770 try { 23771 url = new URL(settings.url, window.location.href); 23772 if (url.origin !== window.location.origin) { 23773 return; 23774 } 23775 match = /^\/web_api\/products\/(\d+)\/?$/.exec(url.pathname); 23776 if (!match) { 23777 return; 23778 } 23779 productId = normalizeProductId(match[1]); 23780 if (!cache.has(productId) && !pending.has(productId)) { 23781 payload = data || xhr.responseJSON; 23782 if (typeof payload === 'string') { 23783 payload = JSON.parse(payload); 23784 } 23785 if (!payload || !payload.Product || 23786 !Object.prototype.hasOwnProperty.call(payload.Product, 'related_categories')) { 23787 return; 23788 } 23789 if (payload.Product.id != null && normalizeProductId(payload.Product.id) !== productId) { 23790 return; 23791 } 23792 cache.set(productId, ruleFromPayload(payload, productId)); 23793 } 23794 } catch (error) { 23795 // Respostas de outras integracoes nao interferem nas tarjas. 23796 } 23797 }); 23798 23799 trayAjaxHooked = true; 23800 document.removeEventListener('load', onTrayScriptLoad, true); 23801 } 23802 23803 function onTrayScriptLoad(event) { 23804 if (event.target && event.target.tagName === 'SCRIPT') { 23805 attachTrayAjaxCache(); 23806 } 23807 } 23808 23809 function requestRule(productId) { 23810 var controller = null; 23811 var timeoutId = null; 23812 var options = { 23813 credentials: 'same-origin', 23814 headers: { 23815 'Accept': 'application/json' 23816 } 23817 }; 23818 var request; 23819 23820 if (typeof window.fetch !== 'function') { 23821 return Promise.resolve(null); 23822 } 23823 23824 if (typeof window.AbortController === 'function') { 23825 controller = new window.AbortController(); 23826 options.signal = controller.signal; 23827 timeoutId = window.setTimeout(function () { 23828 controller.abort(); 23829 }, REQUEST_TIMEOUT_MS); 23830 } 23831 23832 try { 23833 request = window.fetch( 23834 '/web_api/products/' + encodeURIComponent(productId), 23835 options 23836 ); 23837 } catch (error) { 23838 if (timeoutId !== null) { 23839 window.clearTimeout(timeoutId); 23840 } 23841 return Promise.resolve(null); 23842 } 23843 23844 return request.then(function (response) { 23845 if (!response.ok) { 23846 throw new Error('HTTP ' + response.status); 23847 } 23848 return response.json(); 23849 }).then(function (payload) { 23850 return ruleFromPayload(payload, productId); 23851 }).then(function (rule) { 23852 if (timeoutId !== null) { 23853 window.clearTimeout(timeoutId); 23854 } 23855 return rule; 23856 }, function () { 23857 if (timeoutId !== null) { 23858 window.clearTimeout(timeoutId); 23859 } 23860 23861 // Falha de rede, timeout, HTTP ou JSON: comportamento seguro, sem tarja. 23862 return null; 23863 }); 23864 } 23865 23866 function finishJob(job, rule) { 23867 cache.set(job.productId, rule); 23868 pending.delete(job.productId); 23869 activeRequests -= 1; 23870 job.resolve(rule); 23871 pumpQueue(); 23872 } 23873 23874 function pumpQueue() { 23875 var job; 23876 23877 while (activeRequests < MAX_CONCURRENT_REQUESTS && queue.length) { 23878 job = queue.shift(); 23879 activeRequests += 1; 23880 23881 (function (currentJob) { 23882 requestRule(currentJob.productId).then(function (rule) { 23883 finishJob(currentJob, rule); 23884 }, function () { 23885 finishJob(currentJob, null); 23886 }); 23887 }(job)); 23888 } 23889 } 23890 23891 function getRule(productId) { 23892 var resolver; 23893 var promise; 23894 23895 if (cache.has(productId)) { 23896 return Promise.resolve(cache.get(productId)); 23897 } 23898 23899 if (pending.has(productId)) { 23900 return pending.get(productId); 23901 } 23902 23903 promise = new Promise(function (resolve) { 23904 resolver = resolve; 23905 }); 23906 23907 pending.set(productId, promise); 23908 queue.push({ 23909 productId: productId, 23910 resolve: resolver 23911 }); 23912 pumpQueue(); 23913 23914 return promise; 23915 } 23916 23917 function findBadge(card) { 23918 return card.querySelector('.' + BADGE_CLASS + '[data-farmacam-generated="true"]'); 23919 } 23920 23921 function clearBadge(card) { 23922 var badge = findBadge(card); 23923 var image = card.querySelector('.product-header > .w-100 > .image'); 23924 23925 if (badge && badge.parentNode) { 23926 badge.parentNode.removeChild(badge); 23927 } 23928 23929 if (image) { 23930 image.classList.remove(HOST_CLASS); 23931 } 23932 23933 card.removeAttribute('data-farmacam-prescription-level'); 23934 } 23935 23936 function applyBadge(card, productId, rule) { 23937 var image; 23938 var badge; 23939 23940 if (normalizeProductId(card.getAttribute('data-id')) !== productId) { 23941 return false;
23942 } 23943 23944 clearBadge(card); 23945 23946 if (!rule) { 23947 return true; 23948 } 23949 23950 image = card.querySelector('.product-header > .w-100 > .image'); 23951 if (!image) { 23952 return false; 23953 } 23954 23955 badge = document.createElement('span'); 23956 badge.className = BADGE_CLASS; 23957 badge.setAttribute('data-farmacam-generated', 'true'); 23958 badge.setAttribute('data-farmacam-prescription-level', rule.level); 23959 badge.setAttribute('role', 'note'); 23960 badge.textContent = rule.text; 23961 23962 image.classList.add(HOST_CLASS); 23963 image.insertBefore(badge, image.firstChild); 23964 card.setAttribute('data-farmacam-prescription-level', rule.level); 23965 23966 return true; 23967 } 23968 23969 function processCard(card) { 23970 var productId; 23971 var previousState; 23972 var currentState; 23973 23974 if (!card || card.nodeType !== 1) { 23975 return; 23976 } 23977 23978 if (!card.matches(CARD_SELECTOR) && !cardStates.has(card)) { 23979 return; 23980 } 23981 23982 productId = normalizeProductId(card.getAttribute('data-id')); 23983 previousState = cardStates.get(card); 23984 23985 if (!productId) { 23986 clearBadge(card); 23987 cardStates.delete(card); 23988 return; 23989 } 23990 23991 if ( 23992 previousState && 23993 previousState.productId === productId && 23994 previousState.status === 'loading' 23995 ) { 23996 return; 23997 } 23998 23999 if ( 24000 previousState && 24001 previousState.productId === productId && 24002 previousState.status === 'processed' 24003 ) { 24004 if (!previousState.rule || findBadge(card)) { 24005 return; 24006 } 24007 } 24008 24009 if (!previousState || previousState.productId !== productId) { 24010 clearBadge(card); 24011 } 24012 24013 currentState = { 24014 productId: productId, 24015 status: 'loading', 24016 rule: null 24017 }; 24018 cardStates.set(card, currentState); 24019 24020 getRule(productId).then(function (rule) { 24021 var applied; 24022 24023 if ( 24024 cardStates.get(card) !== currentState || 24025 normalizeProductId(card.getAttribute('data-id')) !== productId 24026 ) { 24027 return; 24028 } 24029 24030 applied = applyBadge(card, productId, rule); 24031 currentState.rule = rule; 24032 currentState.status = applied ? 'processed' : 'waiting-image'; 24033 }); 24034 } 24035 24036 function scan(root) { 24037 var cards; 24038 var index; 24039 24040 if (!root) { 24041 return; 24042 } 24043 24044 if (root.nodeType === 1 && root.matches && root.matches(CARD_SELECTOR)) { 24045 processCard(root); 24046 } 24047 24048 if (!root.querySelectorAll) { 24049 return; 24050 } 24051 24052 cards = root.querySelectorAll(CARD_SELECTOR); 24053 for (index = 0; index < cards.length; index += 1) { 24054 processCard(cards[index]); 24055 } 24056 } 24057 24058 function startObserver() { 24059 var observer; 24060 24061 if (!window.MutationObserver || !document.documentElement) { 24062 return; 24063 } 24064 24065 observer = new MutationObserver(function (mutations) { 24066 var mutationIndex; 24067 var nodeIndex; 24068 var mutation; 24069 var node; 24070 var ownerCard; 24071 24072 for (mutationIndex = 0; mutationIndex < mutations.length; mutationIndex += 1) { 24073 mutation = mutations[mutationIndex]; 24074 24075 if (mutation.type === 'attributes') { 24076 processCard(mutation.target); 24077 continue; 24078 } 24079 24080 for (nodeIndex = 0; nodeIndex < mutation.addedNodes.length; nodeIndex += 1) { 24081 node = mutation.addedNodes[nodeIndex]; 24082 if (node.nodeType !== 1) { 24083 continue; 24084 } 24085 24086 scan(node); 24087 ownerCard = node.closest ? node.closest(CARD_SELECTOR) : null; 24088 if (ownerCard) { 24089 processCard(ownerCard); 24090 } 24091 } 24092 } 24093 }); 24094 24095 observer.observe(document.documentElement, { 24096 childList: true, 24097 subtree: true, 24098 attributes: true, 24099 attributeFilter: ['data-id'] 24100 }); 24101 24102 window[GLOBAL_KEY].observer = observer; 24103 } 24104 24105 window[GLOBAL_KEY] = { 24106 version: '1.1.0', 24107 cache: cache, 24108 pending: pending, 24109 cardStates: cardStates, 24110 scan: scan, 24111 processCard: processCard, 24112 observer: null 24113 }; 24114 24115 document.addEventListener('load', onTrayScriptLoad, true); 24116 attachTrayAjaxCache(); 24117 injectStyles(); 24118 scan(document); 24119 startObserver(); 24120 24121 if (document.readyState === 'loading') { 24122 document.addEventListener('DOMContentLoaded', function () { 24123 attachTrayAjaxCache(); 24124 scan(document); 24125 }); 24126 } 24127}(window, document)); 24128</script>
24128 24129 </li> 24130 </ul> 24131</div> 24132 </div> 24133 24134 <div class="next-page"></div> 24135 24136 <div class="catalog-footer flex justify-between align-center"> 24137 <div class="results"> 24138 Resultado: 57 produto(s) em 3 página(s) 24139 </div> 24140 <ul class="pagination flex align-center"> 24141 24142 24143 24144 24145 <li class="current page">1</li><li class="page"><a href="https://www.farmacam.com.br/industrializados?pg=2">2</a></li><li class="page"><a href="https://www.farmacam.com.br/industrializados?pg=3">3</a></li> 24146 24147 <li class="page next"><a href="https://www.farmacam.com.br/industrializados?pg=2" rel="next" title="Próxima anterior"><i class="icon icon-arrow-right"></i></a></li> 24148 24149 24150 <li class="page last"><a href="https://www.farmacam.com.br/industrializados?pg=3" title="Última página" rel="last"><span class="icons"><i class="icon icon-arrow-right"></i><i class="icon icon-arrow-right"></i></span><span class="text">Última página</span></a></li> 24151 24152 </ul> 24153 </div> 24154 24155 24156 </div> 24157 24158 24159 <div class="products-history"> 24160 <div class="container"> 24161 24162 <div class="section-header"> 24163 <h2 class="title-section"> 24164 Produtos visualizados 24165 </h2> 24166 </div> 24167 24168 <div class="products-history-wrapper"> 24169 24170 <div class="history-loader loader"> 24171 <div class="spinner"> 24172 <div class="double-bounce-one"></div> 24173 <div class="double-bounce-two"></div> 24174 </div> 24175 Carregando ... 24176 </div> 24177 24178 24179 24180 24181 24182 24183 24184 24185 24186<div id="NavVisitados" data-page="catalog" data-param="3" data-history="local" 24187 data-path="https://images.tcdn.com.br/commerce/assets/store/js/dist/localHistory.js?361afbf9ab2035cfedf850d5be0955f4"> 24188
24188<script> 24189 dataNavigation = { 24190 storeId: "1063102", 24191 page: "catalog", 24192 id: "3", 24193 name: "Industrializados", 24194 slug: "industrializados", 24195 path: "https://images.tcdn.com.br/commerce/assets/store/img/", 24196 hash: "361afbf9ab2035cfedf850d5be0955f4", 24197 timestamp: new Date().getTime(), 24198 } 24199 </script>
24199 24200 24201 <h3 id="not_visited">Nenhum produto visitado</h3> 24202 24203 <div class="visitados" id="visitados_mestre" hidden> 24204 <div class="visitados_itens" id="visitados_itens" style="display:none;width: 0; 24205 height: 0; 24206 border: 0; 24207"></div> 24208 <div class="visitados_produtos" id="visitados_prod"> 24209 <!-- Seção de Paginação Ajax --> 24210 <div class="paginacao_ajax"> 24211 <span class="total_produtos"> 24212 Total de Produtos Visitados (<span id="total_visited">0</span>) 24213 </span> 24214 24215 <span class="paginacao_ajax_prod" id="paginacao_ajax_prod"> 24216 Páginas: 24217 <span class="linksPag" id="linksPag"> 24218 <a id="pag1" class="pageON" href="javascript:void(0)">0</a> 24219 </span> 24220 </span> 24221 </div> 24222 <!-- Botão para Limpar Histórico --> 24223 <a id="clearHistory" rel="nofollow" class="clearVisiteds" style="cursor: pointer;">Limpar</a> 24224 24225 <!-- Lista de Produtos --> 24226 <div id="produtos" class="productList"> 24227 <ul hidden></ul> 24228 </div> 24229 24230 <!-- Template para Exibição de Produto --> 24231 <template id="produtoTemplate"> 24232 <ul> 24233 <li> 24234 <a href="#" class="FotoLista"> 24235 <img src="" alt="" title="" /> 24236 </a> 24237 <h3><a href="#" class="NomeProdLista"></a></h3> 24238 <span class="ValoresLista"> 24239 <!-- Adicione o código para processar o preço e outras informações aqui --> 24240 </span> 24241 </li> 24242 </ul> 24243 </template> 24244 </div> 24245 </div> 24246 </div> 24247 24248 24249 24250 </div> 24251 24252 </div> 24253 </div> 24254 </div> 24255 24256<style> 24257 /* correcao da colunas Tray */ 24258 @media (min-width: 768px) { 24259 .catalog-cols .sidebar-category + 24260 .col-content .showcase-catalog .list-product:not(.produtos-lista) .item, 24261 .catalog-content .list-product:not(.produtos-lista) .item { 24262 width: 25% !important; 24263 } 24264 24265 } 24266 24267 24268 24269 24270 24271 24272</style> 24273 24274 24275 </div> 24276 24277 </main> 24278 24279 <div class="section newsletter-section"> 24280 <div class="footer-main footer-padding"> 24281 24282 <div class="container"> 24283 24284 24285 <div class="newsletter"> 24286 24287 <div class="newsletter-item"> 24288 24289 <form class="form" action="/mvc/store/newsletter/" method="post"> 24290 <div class="mb-1"> 24291 <h3>Cadastre-se em nossa Newsletter</h3> 24292 </div> 24293 <div class="newsletter-box-form"> 24294 <input type="hidden" name="loja" value="1063102"> 24295 <input class="field" name="name" type="text" placeholder="Digite seu nome" aria-label="Nome" required="" > 24296 <input type="email" class="field" name="email" placeholder="Digite seu e-mail" aria-label="Email" required spellcheck="false" autocomplete="off"> 24297 <button type="submit" class="button news-button" title="Cadastrar" aria-label="Cadastrar"> 24298 <span>Cadastre-se</span> 24299 </button> 24300 </div> 24301 </form> 24302 24303 </div> 24304 24305 24306 <div class="newsletter-item"> 24307 24308 <div class="box-instagram mb-2"> 24309 <h3> 24310 Siga nosso Instagram 24311 <a title="@farmacam" href="https://www.instagram.com/farmacam/" rel="noreferrer" target="_blank"> 24312 @farmacam 24313 </a> 24314 </h3> 24315 </div> 24316 24317 24318 </div> 24319 24320 </div> 24321 24322 24323 24324 </div> 24325 24326 </div> 24327</div> 24328 24329 24330<footer class="footer with-border "> 24331 24332 <div class="footer-formas-pagamento"> 24333 <div class="container text-center pt-2 pb-2"> 24334 <div class="title">Formas de pagamento </div> 24335 <div class="flex justify-center"> 24336 <ul class="payment-list flex f-wrap"> 24337 24338 <li class="payment-form"> 24339 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqcartavisatraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Cartão Visa - Vindi"> 24340 </li> 24341 <li class="payment-form"> 24342 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqmastercardtraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Cartão MasterCard - Vindi"> 24343 </li> 24344 <li class="payment-form"> 24345 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqdinerstraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Cartão Diners - Vindi"> 24346 </li> 24347 <li class="payment-form"> 24348 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqamextraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Cartão Amex - Vindi"> 24349 </li> 24350 <li class="payment-form"> 24351 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqelotraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Cartão Elo - Vindi"> 24352 </li> 24353 24354 <li class="payment-form"> 24355 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqboletotraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Boleto - Vindi"> 24356 </li> 24357 <li class="payment-form"> 24358 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqtransfbradescotraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Transf. Bradesco"> 24359 </li> 24360 <li class="payment-form"> 24361 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqtransfbbtraycheckout.png?361afbf9ab2035cfedf850d5be0955f4" alt="Transf. Banco do Brasil"> 24362 </li> 24363 <li class="payment-form"> 24364 <img class="lazyload" data-src="https://images.tcdn.com.br/commerce/assets/store/img/icons/formas_pagamento/pag_peqpix.png?361afbf9ab2035cfedf850d5be0955f4" alt="Pix - Vindi"> 24365 </li> 24366 24367</ul> </div> 24368 </div> 24369 </div> 24370 24371 <div class="cols"> 24372 24373 <div class="container flex justify-between f-wrap footer-content"> 24374 24375 <div class="box"> 24376 <div class="title">Institucional </div> 24377 <div class="overflow"> 24378 <ul class="list"> 24379 <li> 24380 <a href="/empresa" title="Sobre a Farmacam">Sobre a Farmacam</a> 24381 </li> 24382 <li> 24383 <a href="/como-comprar" title="Como comprar">Como comprar</a> 24384 </li> 24385 <li> 24386 <a href="/seguranca" title="Seguranca">Seguranca</a> 24387 </li> 24388 <li> 24389 <a href="/envio" title="Envio">Envio</a> 24390 </li> 24391 <li> 24392 <a href="/pagamento" title="Pagamento">Pagamento</a> 24393 </li> 24394 <li> 24395 <a href="/tempo-de-garantia" title="Tempo de Garantia">Tempo de Garantia</a> 24396 </li> 24397 <li> 24398 <a href="/depoimentos-de-clientes" title="Depoimentos de Clientes">Depoimentos de Clientes</a> 24399 </li> 24400 <li> 24401 <a href="/noticias" title="Notícias">Notícias</a> 24402 </li> 24403 <li> 24404 <a href="/privacidade" title="Política de Privacidade">Política de Privacidade</a> 24405 </li> 24406 <li> 24407 <a href="/termos-de-uso" title="Termos de uso">Termos de uso</a> 24408 </li> 24409 <li>
24410 <a href="/pedido-extraviado" title="Pedido Extraviado">Pedido Extraviado</a> 24411 </li> 24412 <li> 24413 <a href="/faq---perguntas-e-respostas-frequentes" title="FAQ - Perguntas e Respostas Frequentes">FAQ - Perguntas e Respostas Frequentes</a> 24414 </li> 24415 <li> 24416 <a href="/politica-de-troca-cancelamento-devolucao-e-reembolso" title="Política de Troca, Cancelamento, Devolução e Reembolso">Política de Troca, Cancelamento, Devolução e Reembolso</a> 24417 </li> 24418 <li> 24419 <a href="/cupons-de-desconto" title="Cupons de desconto">Cupons de desconto</a> 24420 </li> 24421 <li> 24422 <a href="/contato" title="Fale Conosco">Fale Conosco</a> 24423 </li> 24424 </ul> 24425 </div> 24426 </div> 24427 24428 <div class="box"> 24429 <div class="title">Categorias </div> 24430 <div class="overflow"> 24431 <ul class="list"> 24432 <li> 24433 <a href="https://www.farmacam.com.br/tipo-de-produto" title="Tipo de Produto">Tipo de Produto</a> 24434 </li> 24435 <li> 24436 <a href="https://www.farmacam.com.br/uso" title="Uso">Uso</a> 24437 </li> 24438 <li> 24439 <a href="https://www.farmacam.com.br/promocoes" title="Promoções">Promoções</a> 24440 </li> 24441 <li> 24442 <a href="https://www.farmacam.com.br/linha-de-produtos" title="Linha de Produtos">Linha de Produtos</a> 24443 </li> 24444 <li> 24445 <a href="https://www.farmacam.com.br/uso-e-objetivo" title="Objetivo">Objetivo</a> 24446 </li> 24447 <li> 24448 <a href="https://www.farmacam.com.br/tipo-venda" title="Tipo de Venda">Tipo de Venda</a> 24449 </li> 24450 </ul> 24451 </div> 24452 </div> 24453 24454 <div class="box"> 24455 24456 <div class="title">Atendimento </div> 24457 <div class="overflow"> 24458 24459 <div class="pb-1"> 24460 <svg style="margin-bottom: -2px;margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-telephone" viewBox="0 0 16 16"> 24461 <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/> 24462 </svg> 24463 <strong>Telefone </strong>: <a title="(21) 2604-7350" href="tel:2126047350"> (21) 2604-7350</a> 24464 </div> 24465 24466 <div class="pb-1"> 24467 24468 24469 <svg style="margin-bottom: -2px;margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-whatsapp" viewBox="0 0 16 16"> 24470 <path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058
244701.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z"/> 24471 </svg> 24472 <strong>WhatsApp</strong>: <a title="WhatsApp" aria-label="Falar no WhatsApp" href="https://api.whatsapp.com/send?phone=552126047350" rel="noreferrer" target="_blank">(21) 2604-7350</a> 24473 </div> 24474 24475 <div class="pb-1"> 24476 <svg style="margin-bottom: -3px;margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16"> 24477 <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/> 24478 </svg> 24479 24480 <strong>E-mail</strong>: <a title="[email protected]" href="mailto:[email protected]">[email protected]</a> 24481 </div> 24482 24483 <div class="pb-1"> 24484 <svg style="margin-bottom: -3px;margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clock" viewBox="0 0 16 16"> 24485 <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/> 24486 <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/> 24487 </svg> 24488 <strong>Horário de Atendimento</strong> <br /> 24489 Segunda a Sexta das 8hs as 17:30hs 24490 </div> 24491 24492 </div> 24493 24494 </div> 24495 24496 <div class="box"> 24497 24498 <div class="pb-2 footer-sobre"> 24499 Farmácia S J do Jabour LTDA EPP. CNPJ 02.648.081/0001-66. I.E. 86.243.911. I.M. 86.370. V.S.M. 62.03141/2024-9. Anvisa A.F.E. 1.403586. Anvisa A.E. 0.944.051. Mapa RJ 001585-7. Polícia Federal 2022-00617881. Farmacêutico Responsável Dr. Pedro Regufe CRF-RJ 30.669 || SJ do Jabour BR LTDA ME. CNPJ 24.111.813/0001-17. I.E. 14.358.668. 24500 </div> 24501 24502 <div class="title">Selos de Segurança </div> 24503 24504 <ul class="security-seals flex f-wrap"> 24505 24506 <li class="google-seal"> 24507 <a href="https://transparencyreport.google.com/safe-browsing/search?url=https://www.farmacam.com.br" target="_blank" rel="noreferrer noopener" title="Google Safe Browsing" aria-label="Verificar segurança do site"> 24508 <span class="icon icon-shield vertical-align"></span> 24509 <span class="icon icon-google vertical-align""></span> 24510 </a> 24511 </li> 24512 24513 <li class="ebit-seal"> 24514 24515 <center> 24516 <a id="seloEbit" href="https://www.ebit.com.br/114195" target="_blank" data-noop="redir(this.href);" rel="noopener"></a> 24517
24517<script type="text/javascript" id="getSelo" defer src="https://imgs.ebit.com.br/ebitBR/selo-ebit/js/getSelo.js?114195"></script>
24517 24518 </center> 24519 </li> 24520 24521 <li class="loja-protegida-seal"> 24522 <center> 24523 <a href='https://www.lojaprotegida.com.br/1063102' target='_blank' rel='noopener'> 24524 <img src="//images.tcdn.com.br/commerce/assets/store/img/selo_lojaprotegida.gif?361afbf9ab2035cfedf850d5be0955f4" alt="Loja Protegida" title="Loja Protegida" border="0" /> 24525 24526 </a> 24527 </center> 24528 </li> 24529 24530 </ul> 24531 24532 24533 24534 24535 24536 24537 <div class="title mt-1">Rastreio</div> 24538 24539 <div class="box-rastreio"> 24540 <form id="rastreamentoForm" 24541 data-url="https://www.linkcorreios.com.br" 24542 data-campo="path"> 24543 24544 <input type="text" 24545 id="codigoRastreio" 24546 maxlength="30" 24547 placeholder="Insira o código" 24548 required> 24549 24550 <button type="submit">Rastrear</button> 24551 </form> 24552 </div> 24553 24554 24555 </div> 24556 24557 </div> 24558 24559 <div class="footer-logo pt-2 mt-2 text-center"> 24560 24561 <a class="logo" href="https://www.farmacam.com.br" title="Farmacam" aria-label="Farmacam"> 24562 <img title="Farmacam" aria-label="Farmacam" src="https://images.tcdn.com.br/files/1063102/themes/216/img/settings/farmacam_logomarca.png?40911a9f4d7a99b6eef6b4ae366be082" class="lazyload" alt="Farmacam" /> 24563 </a> 24564 24565 </div> 24566 24567 </div> 24568 24569 <div class="copy"> 24570 <div class="container flex align-center justify-center"> 24571 24572 <div class="tray"> 24573 24574 <div class="box-creditos"> 24575 <div data-tray-tst="logo_tray" id="NavLogoTray"> 24576 <span class="logotray-message" >Tecnologia <a href=http://www.tray.com.br/?utm_source=rodape&utm_medium=lojas&utm_campaign=1063102&utm_term=Varejo target="_blank" rel="nofollow">Tray</a></span> 24577 <br/> 24578 <span data-tray-tst="page_load_info" class="timelogotray"> 24579 Load time: 1.126 secs - 24-09-2026 22:50:37 - node: commerce-web7-corp-tmk - store 24580 </span> 24581</div> 24582 | <a title="DevRocket" href="https://devrocket.com.br/" target="_blank"><strong>DevRocket</strong></a> 24583 </div> 24584 24585 </div> 24586 24587 </div> 24588 </div> 24589 24590</footer> 24591 24592 24593 <div class="box-opcoes-flutuantes"> 24594 24595 <div class="button-top"> 24596 <div class="box-opcao-item"> 24597 <div class="voltar-topo" role="button" aria-label="Voltar ao topo da página" tabindex="0"> 24598 <div class="voltar-topo-icone"> 24599 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" class="bi bi-chevron-up" viewBox="0 0 16 16"> 24600 <path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z"/> 24601 </svg> 24602 </div> 24603 </div> 24604 </div> 24605 </div> 24606 24607 <div class="options-social hamburger"> 24608 24609 <div class="options-social-button" role="button" aria-label="Abrir menu de redes sociais" tabindex="0"> 24610 <svg class="open-icone" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> 24611 <path d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"/> 24612 </svg> 24613 24614 24615 <svg class="close-icone bi bi-x-lg" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16"> 24616 <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708
24616L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/> 24617 </svg> 24618 24619 </div> 24620 24621 <div class="options-social-itens"> 24622 <div class="box-opcao-item"> 24623 <div class="instagram-flutuante"> 24624 <a title="instagram" aria-label="Seguir no Instagram" href="https://www.instagram.com/farmacam/" rel="noreferrer" target="_blank"> 24625 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" class="bi bi-instagram" viewBox="0 0 16 16"> 24626 <path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z"/> 24627 </svg> 24628 </a> 24629 </div> 24630 </div> 24631 <div class="box-opcao-item"> 24632 <div class="youtube-flutuante"> 24633 <a title="Assistir no YouTube" aria-label="Assistir no YouTube" href="https://www.youtube.com/@farmacam2239" rel="noreferrer" target="_blank"> 24634 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" class="bi bi-youtube" viewBox="0 0 16 16"> 24635 <path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"/> 24636 </svg> 24637 </a> 24638 </div> 24639 </div> 24640 <div class="box-opcao-item"> 24641 <div class="tiktok-flutuante"> 24642 <a title="Ver no TikTok" aria-label="Ver no TikTok" href="https://tiktok.com/@farmacam" rel="noreferrer" target="_blank"> 24643 <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" class="bi bi-tiktok" viewB
24643ox="0 0 16 16"> 24644 <path d="M9 0h1.98c.144.715.54 1.617 1.235 2.512C12.895 3.389 13.797 4 15 4v2c-1.753 0-3.07-.814-4-1.829V11a5 5 0 1 1-5-5v2a3 3 0 1 0 3 3V0Z"/> 24645 </svg> 24646 </a> 24647 </div> 24648 </div> 24649 <div class="box-opcao-item"> 24650 <div class="facebook-flutuante"> 24651 <a title="Ver no Facebook" aria-label="Ver no Facebook" href="https://www.facebook.com/Farmacam" rel="noreferrer" target="_blank"> 24652 <i class="icon icon-facebook v-align-middle"></i> 24653 </a> 24654 </div> 24655 </div> 24656 </div> 24657 </div> 24658 </div> 24659 24660 24661 24662 <div class="carrinho-lateral"> 24663 24664 <div class="carrinho-lateral-cabecalho"> 24665 <div class="carrinho-lateral-cabecalho-item"> 24666 <h3>Meu Carrinho</h3> 24667 </div> 24668 <div class="carrinho-lateral-cabecalho-item carrinho-lateral-fechar" role="button" aria-label="Fechar carrinho" tabindex="0"> 24669 <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16"> 24670 <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"/> 24671 </svg> 24672 </div> 24673 </div> 24674 24675 <div class="carrinho-lateral-corpo"></div> 24676 24677 24678 <div class="carrinho-lateral-rodape"> 24679 24680 <div class="carrinho-lateral-rodape-item carrinho-lateral-subtotal"> 24681 24682 </div> 24683 24684 <div class="carrinho-lateral-rodape-item carrinho-lateral-finalizar-compra"> 24685 <a title="Carrinho" href="/loja/redirect_cart_service.php?loja=1063102"> 24686 Finalizar Compra 24687 </a> 24688 </div> 24689 24690 <div class="carrinho-lateral-rodape-item carrinho-lateral-continuar-comprando" role="button" aria-label="Continuar comprando" tabindex="0"> 24691 <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" style="margin-bottom: -4px;" fill="currentColor" class="bi bi-arrow-left" viewBox="0 0 16 16"> 24692 <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z"/> 24693 </svg> 24694 Continuar Comprando 24695 </div> 24696 24697 </div> 24698 24699 </div> 24700 24701 <div class="carrinho-fundo-sombra carrinho-lateral-fechar menu-lateral-fechar"></div> 24702 24703 24704 24705<style> 24706#farmacam-social-proof { 24707 position: fixed !important; 24708 left: 50% !important; 24709 bottom: 20px !important; 24710 top: auto !important; 24711 right: auto !important; 24712 z-index: 2147483647 !important; 24713 24714 width: auto !important; 24715 max-width: min(520px, calc(100vw - 40px)) !important; 24716 padding: 14px 18px !important; 24717 24718 background: #fff !important; 24719 color: #333 !important; 24720 border: 1px solid rgba(0,0,0,.08) !important; 24721 border-radius: 10px !important; 24722 box-shadow: 0 8px 28px rgba(0,0,0,.16) !important; 24723 24724 font-size: 14px !important; 24725 line-height: 1.45 !important; 24726 font-weight: 500 !important; 24727 text-align: center !important; 24728 24729 opacity: 0 !important; 24730 visibility: hidden !important; 24731 pointer-events: none !important; 24732 transform: translate(-50%, 18px) !important; 24733 24734 transition: 24735 opacity .25s ease, 24736 transform .25s ease, 24737 visibility .25s ease !important; 24738} 24739 24740#farmacam-social-proof.is-visible { 24741 opacity: 1 !important; 24742 visibility: visible !important; 24743 transform: translate(-50%, 0) !important; 24744} 24745 24746@media (max-width: 767px) { 24747 #farmacam-social-proof { 24748 bottom: 12px !important; 24749 width: calc(100vw - 24px) !important; 24750 max-width: calc(100vw - 24px) !important; 24751 padding: 13px 15px !important; 24752 font-size: 13px !important; 24753 } 24754} 24755</style> 24756 24757<div 24758 id="farmacam-social-proof" 24759 role="status"
24760 aria-live="polite" 24761 aria-atomic="true"></div> 24762
24763<script> 24764(function () { 24765 'use strict'; 24766 24767 var VERSION = '2026-08-20-rotation-1'; 24768 var ENDPOINT = 'https://news-sales-category-app.farmacam.com.br/latest.php'; 24769 24770 /* 24771 * REGRA FINAL 24772 * 24773 * Primeira prova: 10 segundos 24774 * Tempo visível: 6 segundos 24775 * Intervalo entre provas: 45 segundos 24776 * Quantidade máxima: ilimitada 24777 * Repetição após terminar lista: NÃO 24778 * Ordem: aleatória 24779 * localStorage: NÃO 24780 * sessionStorage: NÃO 24781 * 24782 * "Não repetir" vale enquanto esta página estiver aberta. 24783 * Como solicitado, nenhum histórico é persistido no navegador. 24784 */ 24785 var FIRST_DELAY_MS = 10000; 24786 var VISIBLE_MS = 6000; 24787 var INTERVAL_MS = 45000; 24788 24789 var pollTimer = null; 24790 var hideTimer = null; 24791 var requestInFlight = false; 24792 var started = false; 24793 24794 /* 24795 * Memória apenas desta execução da página. 24796 * Não é localStorage nem sessionStorage. 24797 */ 24798 var shownIds = Object.create(null); 24799 var lastShownAt = 0; 24800 24801 function getPopup() { 24802 var el = document.getElementById('farmacam-social-proof'); 24803 24804 if (el && el.parentNode !== document.body) { 24805 document.body.appendChild(el); 24806 } 24807 24808 return el; 24809 } 24810 24811 function hidePopup() { 24812 var el = getPopup(); 24813 24814 if (el) { 24815 el.classList.remove('is-visible'); 24816 } 24817 } 24818 24819 function isValidItem(item) { 24820 return !!( 24821 item && 24822 item.id !== undefined && 24823 item.id !== null && 24824 String(item.id) !== '' && 24825 typeof item.message === 'string' && 24826 item.message.trim() !== '' 24827 ); 24828 } 24829 24830 function getUnseenItems(items) { 24831 return items.filter(function (item) { 24832 if (!isValidItem(item)) { 24833 return false; 24834 } 24835 24836 return !shownIds[String(item.id)]; 24837 }); 24838 } 24839 24840 function pickRandom(items) { 24841 if (!items.length) { 24842 return null; 24843 } 24844 24845 return items[ 24846 Math.floor(Math.random() * items.length) 24847 ]; 24848 } 24849 24850 function millisecondsUntilNextProof() { 24851 if (!lastShownAt) { 24852 return 0; 24853 } 24854 24855 return Math.max( 24856 0, 24857 INTERVAL_MS - (Date.now() - lastShownAt) 24858 ); 24859 } 24860 24861 function render(item) { 24862 var el = getPopup(); 24863 24864 if (!el || !isValidItem(item)) { 24865 return false; 24866 } 24867 24868 var id = String(item.id); 24869 24870 /* 24871 * Nunca mostra novamente um item já exibido 24872 * durante esta execução da página. 24873 */ 24874 if (shownIds[id]) { 24875 return false; 24876 } 24877 24878 /* 24879 * Proteção para chamadas extras causadas por foco/ 24880 * visibilitychange não furarem o intervalo de 45s. 24881 */ 24882 if (millisecondsUntilNextProof() > 0) { 24883 return false; 24884 } 24885 24886 document.body.appendChild(el); 24887 el.textContent = item.message; 24888 el.classList.add('is-visible'); 24889 24890 var now = Date.now(); 24891 24892 shownIds[id] = true; 24893 lastShownAt = now; 24894 24895 clearTimeout(hideTimer); 24896 hideTimer = setTimeout( 24897 hidePopup, 24898 VISIBLE_MS 24899 ); 24900 24901 window.FarmacamSocialProof.lastRendered = { 24902 id: id, 24903 message: item.message, 24904 at: now 24905 }; 24906 24907 window.FarmacamSocialProof.shownCount = 24908 Object.keys(shownIds).length; 24909 24910 return true; 24911 } 24912 24913 function scheduleNext(delay) { 24914 clearTimeout(pollTimer); 24915 24916 pollTimer = setTimeout( 24917 check, 24918 typeof delay === 'number' 24919 ? Math.max(0, delay) 24920 : INTERVAL_MS 24921 ); 24922 } 24923 24924 function check() { 24925 if (requestInFlight) { 24926 return; 24927 } 24928 24929 /* 24930 * Se uma chamada ocorrer por foco antes dos 45s, 24931 * simplesmente espera o tempo restante. 24932 */ 24933 var wait = millisecondsUntilNextProof(); 24934 24935 if (wait > 0) { 24936 scheduleNext(wait); 24937 return; 24938 } 24939 24940 requestInFlight = true; 24941 24942 fetch( 24943 ENDPOINT + '?_=' + Date.now(), 24944 { 24945 method: 'GET', 24946 cache: 'no-store' 24947 } 24948 ) 24949 .then(function (response) { 24950 if (!response.ok) { 24951 throw new Error( 24952 'HTTP ' + response.status 24953 ); 24954 } 24955 24956 return response.json(); 24957 }) 24958 .then(function (data) { 24959 window.FarmacamSocialProof.lastResponse = data; 24960 24961 if ( 24962 !data || 24963 data.ok !== true || 24964 !Array.isArray(data.items) || 24965 data.items.length === 0 24966 ) { 24967 return; 24968 } 24969 24970 /* 24971 * CORREÇÃO PRINCIPAL: 24972 * 24973 * O código antigo fazia: 24974 * render(data.items[0]) 24975 * 24976 * Agora procuramos TODOS os itens ainda nã
24976o exibidos 24977 * e sorteamos um deles. 24978 */ 24979 var unseen = getUnseenItems(data.items); 24980 24981 if (unseen.length === 0) { 24982 /* 24983 * Todas as provas atualmente disponíveis já foram 24984 * mostradas nesta página. 24985 * 24986 * Não repetimos nenhuma. 24987 * 24988 * Continuamos consultando silenciosamente para que 24989 * uma prova NOVA, criada enquanto o cliente ainda 24990 * estiver navegando, possa aparecer depois. 24991 */ 24992 window.FarmacamSocialProof.allCurrentItemsShown = true; 24993 return; 24994 } 24995 24996 window.FarmacamSocialProof.allCurrentItemsShown = false; 24997 24998 render( 24999 pickRandom(unseen) 25000 ); 25001 }) 25002 .catch(function (error) { 25003 window.FarmacamSocialProof.lastError = 25004 String(error); 25005 25006 console.error( 25007 '[Farmacam Social Proof]', 25008 error 25009 ); 25010 }) 25011 .then(function () { 25012 requestInFlight = false; 25013 25014 /* 25015 * Nova tentativa/prova somente após 45 segundos. 25016 */ 25017 scheduleNext(INTERVAL_MS); 25018 }); 25019 } 25020 25021 function start() { 25022 if (started) { 25023 return; 25024 } 25025 25026 var el = getPopup(); 25027 25028 if (!el) { 25029 setTimeout(start, 300); 25030 return; 25031 } 25032 25033 started = true; 25034 25035 /* 25036 * Primeira prova 10 segundos após carregar a página. 25037 */ 25038 scheduleNext(FIRST_DELAY_MS); 25039 25040 /* 25041 * Se o usuário voltar à aba, podemos consultar, 25042 * mas check() continua respeitando os 45 segundos. 25043 */ 25044 document.addEventListener( 25045 'visibilitychange', 25046 function () { 25047 if (!document.hidden) { 25048 check(); 25049 } 25050 } 25051 ); 25052 25053 window.addEventListener( 25054 'focus', 25055 check 25056 ); 25057 } 25058 25059 window.FarmacamSocialProof = { 25060 version: VERSION, 25061 start: start, 25062 check: check, 25063 hide: hidePopup, 25064 render: render, 25065 lastResponse: null, 25066 lastRendered: null, 25067 lastError: null, 25068 shownCount: 0, 25069 allCurrentItemsShown: false 25070 }; 25071 25072 if (document.readyState === 'loading') { 25073 document.addEventListener( 25074 'DOMContentLoaded', 25075 start 25076 ); 25077 } else { 25078 start(); 25079 } 25080})(); 25081</script>
25081 25082 25083 </div> 25084 <div> 25085 <!-- Loja Status: --> </div> 25086 25087 25088
25088<script type="text/javascript" src="https://images.tcdn.com.br/commerce/assets/store/js/dist/pageview.min.js?361afbf9ab2035cfedf850d5be0955f4" id="pageview-script" async defer="" data-store="1063102" data-category-id="3"></script>
25088 25089 <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true"> 25090 <div class="modal-dialog modal-dialog-center"> 25091 <div class="modal-content"> 25092 <div class="modal-header"> 25093 <button type="button" class="close" data-dismiss="modal" aria-label="Close" id="modal-close-button"><span aria-hidden="true">×</span></button> 25094 <h4 class="modal-title" id="myModalLabel1"></h4> 25095 </div> 25096 25097 <div class="modal-body"> 25098 <img class="loader" src="https://images.tcdn.com.br/commerce/assets/store/img/loading.svg" alt="load" style="display:none" loading="lazy" width="48" height="48" /> 25099 25100 <div id="modal-content"></div> 25101 </div> 25102 25103 <div class="modal-footer"> 25104 </div> 25105 </div> 25106 </div> 25107</div> 25108 25109<div data-module="render" data-render="snippets/cart_preview"></div> 25110 25111<div class="modal fade" id="modal-form" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true" > 25112 <div class="modal-dialog modal-dialog-center"> 25113 <div class="modal-content" data-tray-tst="modal"> 25114 <div class="modal-header"> 25115 <button type="button" class="close" data-dismiss="modal" aria-label="Close" id="modal-close-button"><span aria-hidden="true">×</span></button> 25116 <h4 class="modal-title" id="myModalLabel2"></h4> 25117 </div> 25118 25119 <div class="modal-body"> 25120 <img class="loader" src="https://images.tcdn.com.br/commerce/assets/store/img/loading.svg" alt="load" style="display:none" loading="lazy" width="48" height="48" /> 25121 25122 <div class="wrapper" id="wrapper" align="center"> 25123 <div id="Body" align="left" style="min-width: 0;"> 25124 <div id="div1bg" align="center" class=" background-no-color background-no-image background-pos-no background-no-repeat"> 25125 <div id="div2bg" class="center" align="left" style="width: auto;"> 25126 <div id="NavCentral" class=""> 25127 <div id="dive7rCenterTop"></div> 25128 <div id="Page" class="font-default"> 25129 25130 <div id="modal-form-content" style="padding-bottom:10px"></div> 25131 25132 </div> 25133 <div id="dive7rCenterBottom"></div> 25134 </div> 25135 </div> 25136 </div> 25137 </div> 25138 </div> 25139 25140 </div> 25141 25142 <div class="modal-footer"> 25143 </div> 25144 </div> 25145 25146 </div> 25147</div> 25148 25149<iframe id="modal-form-iframe" height="0" width="0" frameborder="0" marginwidth="0" marginheight="0" style="display:none"></iframe> 25150 25151 25152 25153 25154 <style> 25155:root{ 25156 --favorito-red: #f01d2c; 25157} 25158 25159/* Menu */ 25160.favoritos:hover{ 25161 cursor: pointer; 25162} 25163 25164.favoritos-qtde{ 25165 position: absolute; 25166 display: none; 25167 width: 20px; 25168 height: 20px; 25169 border-radius: 20px; 25170 justify-content: center; 25171 align-items: center; 25172 font-size: 10px; 25173 font-weight: 300; 25174 line-height: 1; 25175 color: #ffffff; 25176 background-color: var(--favorito-red); 25177 margin-top: -32px; 25178 margin-left: 20px; 25179} 25180.favoritos-qtde.active{ 25181 display: flex; 25182} 25183 25184.favoritos:has(.favoritos-qtde.active){ 25185 margin-right: 12px; 25186} 25187 25188@media (max-width: 575px){ 25189 .favoritos:has(.favoritos-qtde.active){ 25190 margin-right: 16px; 25191 } 25192} 25193</style> 25194 25195<div id="favoritos-modal" class="overlay-favoritos-modal"> 25196 <div class="favoritos-modal"> 25197 25198 <div> 25199 <h2>Favoritos</h2> 25200 <span class="favoritos-modal-close"> 25201 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-x-lg" viewBox="0 0 16 16"> 25202 <path d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/> 25203 </svg> 25204 </span> 25205 </div> 25206 25207 <p>Confira abaixo, todos os produtos que você adicionou como <strong>favorito</strong>.</p> 25208 25209 <div class="favoritos-modal-produtos swiper"> 25210 <div class="swiper-container"> 25211 <div class="swiper-wrapper"></div> 25212 <div class="dots"></div> 25213 </div> 25214 </div> 25215 25216 </div> 25217</div> 25218 25219<style> 25220 .overlay-favoritos-modal { 25221 position: fixed; 25222 top: 0; 25223 bottom: 0; 25224 left: 0; 25225 right: 0; 25226 background: rgba(0, 0, 0, 0.7); 25227 transition: opacity .4s; 25228 visibility: hidden; 25229 opacity: 0; 25230 z-index: 999999; 25231 } 25232 25233 .overlay-favoritos-modal.active { 25234 visibility: visible; 25235 opacity: 1; 25236 } 25237 25238 .favoritos-modal { 25239 margin: 70px auto; 25240 padding: 20px; 25241 background: #fff; 25242 border-radius: 5px; 25243 width: 100%; 25244 max-width: 900px; 25245 position: relative; 25246 transition: all .4s ease-in-out; 25247 z-index: 9999999; 25248 } 25249 25250 .favoritos-modal h2 { 25251 width: 88%; 25252 margin-top: 0; 25253 color: #000000; 25254 font-family: Tahoma, Arial, sans-serif; 25255 } 25256 25257 .favoritos-modal .favoritos-modal-close { 25258 position: absolute; 25259 top: 20px; 25260 right: 30px; 25261 transition: all .4ms; 25262 font-size: 30px; 25263 font-weight: bold; 25264 text-decoration: none; 25265 color: #000000; 25266 } 25267
25268 .favoritos-modal .favoritos-modal-close:hover { 25269 cursor: pointer; 25270 color: rgba(0, 0, 0, 0.5); 25271 } 25272 25273 .favoritos-modal .content { 25274 max-height: 30%; 25275 overflow: auto; 25276 } 25277 25278 .favoritos-modal-produtos{ 25279 margin-top: 2rem; 25280 margin-bottom: 2rem; 25281 } 25282 .favoritos-modal-produtos .vitrine-promocao-produtos-item{ 25283 display: block; 25284 min-height: 300px; 25285 padding: 40px 10px; 25286 } 25287 .favoritos-modal-produtos .vitrine-promocao-produtos-item-dados, 25288 .favoritos-modal-produtos .vitrine-promocao-produtos-item-imagem{ 25289 text-align: center; 25290 } 25291 25292 .favoritos-modal-produtos-item{ 25293 text-align: center; 25294 } 25295 .favoritos-modal-produtos-nome{ 25296 font-size: .925rem; 25297 margin-bottom: .8rem; 25298 } 25299 .favoritos-modal-produtos-imagem img{ 25300 max-width: 100%; 25301 } 25302 25303 @media screen and (max-width: 1080px) { 25304 .favoritos-modal { 25305 width: 80%; 25306 } 25307 } 25308</style> 25309 25310 25311 25312
25312<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/security/dom-clobbering-protection.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25312
25312
25313<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/jquery-3.6.0.min.js?361afbf9ab2035cfedf850d5be0955f4" rel="preload" ></script>
vendor: 1 bytes, line 25313
25313
25314<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/pag-lazy.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25314
25314
25315<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/ga4.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25315
25315
25316<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/autocomplete.min.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25316
25316
25317<script type="text/javascript" src="//images.tcdn.com.br/pmax/static/main.js?caid=TQ5VCLi29t8ZEMLy7dsC&ctid=729512258&pmax=2d9fabe17af36456f86af8950a4cb607&d372f39a8316dfc1d35b13d03718d8dd&361afbf9ab2035cfedf850d5be0955f4&361afbf9ab2035cfedf850d5be0955f4" async="true" ></script>
vendor: 1 bytes, line 25317
25317
25318<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/facebook-conversion.js?pixel=941902043408137&9b14d1cd8d677745bbab2aa17a346cb1=&361afbf9ab2035cfedf850d5be0955f4&361afbf9ab2035cfedf850d5be0955f4" async="true" ></script>
vendor: 1 bytes, line 25318
25318
25319<script type="text/javascript" src="//app.cartstack.com.br/activeAPI/load.js?2cb4810f015bdbe0b7b0001c4c8e86c3&361afbf9ab2035cfedf850d5be0955f4&361afbf9ab2035cfedf850d5be0955f4" async="true" ></script>
vendor: 1 bytes, line 25319
25319
25320<script type="text/javascript" src="//manyconvert.com/scripts/tray/?89228be10fdf0825aa39f4f5cdc8ac8c&361afbf9ab2035cfedf850d5be0955f4&361afbf9ab2035cfedf850d5be0955f4" async="true" ></script>
vendor: 1 bytes, line 25320
25320
25321<script type="text/javascript" src="//recurrence-app-cs-statics-prd.tray.com.br/Tray/recurrence-app.js?3fbc0a8f526c57594476e01bf98d019a&361afbf9ab2035cfedf850d5be0955f4&361afbf9ab2035cfedf850d5be0955f4" async="true" ></script>
vendor: 1 bytes, line 25321
25321
25322<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/jquery-migrate-3.3.2.min.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25322
25322
25323<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/bootstrap-3.4.1.min.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25323
25323
25324<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/profile.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25324
25324
25325<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/logoTrayMessageOverride.min.js?361afbf9ab2035cfedf850d5be0955f4" defer="true" ></script>
vendor: 1 bytes, line 25325
25325
25326<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/vendors/jquery.lazyload.min.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25326
25326
25327<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/LiveshopAlert.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
vendor: 1 bytes, line 25327
25327
25328<script type="text/javascript" src="//images.tcdn.com.br/commerce/assets/store/js/dist/funcoes-2.0.min.js?361afbf9ab2035cfedf850d5be0955f4" ></script>
25328 25329 25330
25331<script> 25332 var banner_vitrine_3_visualizacao = '0'; 25333</script>
25333 25334 25335 25336 25337
25338<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/lite-yt-embed.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25338
25338
25339<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/lazyload.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25339
25339
25340<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/jquery.mask.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25340
25340
25341<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/js.cookie.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25341
25341
25342<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/swiper.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25342
25342
25343<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/main.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25343
25343
25344<script src="https://images.tcdn.com.br/files/1063102/themes/216/js/cart.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
25344 25345 25346
25347<script type="text/javascript" src="https://images.tcdn.com.br/files/1063102/themes/216/elements/stories/zuck.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25347
25347
25348<script type="text/javascript" src="https://images.tcdn.com.br/files/1063102/themes/216/elements/stories/script.min.js?40911a9f4d7a99b6eef6b4ae366be082"></script>
vendor: 1 bytes, line 25348
25348
25349<script> 25350 setTimeout(() => { 25351 storiesFunction(); 25352 }, 2000); 25353</script>
25353 25354
25355<script src="https://images.tcdn.com.br/commerce/assets/store/js/dist/application.min.js?361afbf9ab2035cfedf850d5be0955f4"></script>
25355 25356 25357 25358 <!-- Inicio bloco bottom --><!-- Fim bloco bottom --> 25359 25360 25361 </body> 25362 25363 25364 25365 25366 25367
25368<script> 25369 (function($){ 25370 25371 const store_url = "https://www.farmacam.com.br"; 25372 const url_vitrine = (window.location.origin && window.location.origin !== 'null') 25373 ? window.location.origin 25374 : store_url; 25375 var index, html_product, html_product_promo; 25376 var NameCategory = "false" 25377 var ClientLog = "false" 25378 25379 render_menu(); 25380 render_destaque(); 25381 render_vitrine(); 25382 25383 window.addEventListener('resize', function(event){ 25384 sessionStorage.removeItem('promocaoDestaqueHTML'); 25385 sessionStorage.removeItem('promocaoDestaqueID'); 25386 sessionStorage.removeItem('menuCategoriaProductCID'); 25387 sessionStorage.removeItem('vitrinePersonalizadaHTML'); 25388 sessionStorage.removeItem('menuCategoriaProductBID'); 25389 sessionStorage.removeItem('vitrinePersonalizadaID'); 25390 sessionStorage.removeItem('menuCategoriaProductCHTML'); 25391 sessionStorage.removeItem('menuCategoriaProductBHTML'); 25392 }); 25393 25394 function construtorPreco(domconstrutor){ 25395 if(jQuery('.apresentacao-preco').length > 0){ 25396 if(jQuery('.operadora + .txt-forma-pagamento:visible').length == 0){ 25397 jQuery('.operadora + .txt-forma-pagamento').remove(); 25398 } 25399 25400 var tipoexibicao = jQuery('.apresentacao-preco').attr('opcao'); 25401 if(tipoexibicao == 'avista'){ 25402 var exibicaobusca = 'vista'; 25403 } else if(tipoexibicao == 'parcsemjuros'){ 25404 var exibicaobusca = 'sem juros'; 25405 } else if(tipoexibicao == 'parccomjuros'){ 25406 var exibicaobusca = 'com juros'; 25407 } else if(tipoexibicao == 'pix'){ 25408 var exibicaobusca = 'vista'; 25409 } else if(tipoexibicao == 'boleto'){ 25410 var exibicaobusca = 'vista'; 25411 } 25412 25413 jQuery('.product .product-installments').each(function(){ 25414 var contaux = 0; 25415 var dom; 25416 var lengthloop = jQuery(this).find('> *').length - 1; 25417 25418 jQuery(this).find('> *').each(function(k, item){ 25419 if(k > 0){ 25420 dom = jQuery(this).parents('.product'); 25421 25422 if(jQuery(this).is('br')){ 25423 jQuery(dom).find('.ph-'+contaux).wrapAll('<div/ class="pagamento-separado">'); 25424 contaux++; 25425 } else{ 25426 jQuery(this).addClass('pagamento-helper').addClass('ph-'+contaux); 25427 25428 if(k == lengthloop){ 25429 jQuery(dom).find('.ph-'+contaux).wrapAll('<div/ class="pagamento-separado">'); 25430 25431 if(jQuery(dom).find('.pagamento-separado:contains('+exibicaobusca+')').length > 0){ 25432 var domalteracao = jQuery(dom).find('.pagamento-separado:contains('+exibicaobusca+')'); 25433 var domprodutoprice = jQuery(domalteracao).parents('.product-price'); 25434 var precocheio = 'ou <strong>'+jQuery(domprodutoprice).find('.current-price').text()+'</strong>'; 25435 25436 if((exibicaobusca == 'vista' && tipoexibicao == 'avista') && jQuery('.product-installments').find('.preco-parc1').length == 0){ 25437 var textopreco = jQuery(domalteracao).find('.preco-avista').text() + '<strong>' + jQuery(domalteracao).find('.txt-avista,.txt-com-desconto').text() +'</strong>'; 25438 var precocheio = '<strong>'+jQuery(domprodutoprice).find('.current-price').text()+'</strong>'; 25439 jQuery(domalteracao).html('<span>'+precocheio+'</span>'); 25440 }else if((exibicaobusca == 'vista' && tipoexibicao == 'avista') && jQuery('.product-installments').find('.preco-parc1').length > 0 ){ 25441 var textopreco = jQuery(domalteracao).find('.preco-avista').text() + '<strong>' + jQuery(domalteracao).find('.txt-avista,.txt-com-desconto').text() +'</strong>'; 25442 var precocheio = '<strong>'+jQuery(domprodutoprice).find('.current-price').text()+'</strong>'; 25443 jQuery(domalteracao).html('<span>'+precocheio+'</span>'); 25444 }else if((exibicaobusca == 'vista' && tipoexibicao == 'pix') && jQuery('.product-installments').find('.preco-parc1').length == 0){ 25445 var textopreco = jQuery(domalteracao).find('.preco-avista').text() + '<strong>no Pix</strong>'; 25446 jQuery(domalteracao).remove(); 25447 jQuery(dom).find('.product-installments').find('.operadora.pagamento-helper').html(' no cartão') 25448 }else if((exibicaobusca == 'vista' && tipoexibicao == 'boleto') && jQuery('.product-installments').find('.preco-parc1').length == 0){ 25449 var textopreco = jQuery(domalteracao).find('.preco-avista').text() + '<strong>no Boleto</strong>'; 25450 jQuery(domalteracao).remove(); 25451 jQuery(dom).find('.product-installments').find('.operadora.pagamento-helper').html(' no cartão') 25452 }else{ 25453 var textopreco = '<span class="current-price-second">' + jQuery(domalteracao).text().replace('ou', '').replace('Cart\u00e3o', '') + '</span>'; 25454 var priceTotal = jQuery(domalteracao).html('<span>'+precocheio.replace('ou', '')+'</span>') 25455 } 25456 25457 jQuery(domprodutoprice).find('.price .product-installments').prepend(priceTotal) 25458 jQuery(domprodutoprice).find('.current-price').html(textopreco); 25459 } 25460 } 25461 } 25462 } 25463 }); 25464 }); 25465 jQuery('.pagamento-separado').contents().unwrap(); 25466 } 25467 } 25468 25469 function loadProdutosMenu(){ 25470 if($('.produtos-menu').length > 0 && $('.produtos-menu').is(':visible')){ 25471 25472 var altura = 0; 25473 25474 $('.produtos-menu .produto-perfil').each(function(k, item){ 25475 if($(item).height() > altura){ 25476 altura = $(item).height(); 25477 } 25478 }); 25479 25480 $('.produtos-menu .produto-perfil').css('min-height', altura); 25481 25482 new Swiper('.produtos-menu .swiper-container', { 25483 preloadImages : false, 25484 loop : true, 25485 autoHeight : false, 25486 effect : 'slide', 25487 lazy :{ 25488 loadPrevNext: true, 25489 }, 25490 pagination: { 25491 el : '.produtos-menu .dots', 25492 bulletClass : 'dot', 25493 bulletActiveClass : 'dot-active', 25494 clickable : true 25495 }, 25496 navigation: { 25497 nextEl: ".produtos-menu .next", 25498 prevEl: ".produtos-menu .prev", 25499 } 25500 }); 25501 } 25502 } 25503 25504 function getProducts(ids = [], box = '', session_storage){ 25505 if(ids.length > 0){ 25506 if(!sessionStorage.getItem(session_storage+'ID')){ 25507 sessionStorage.setItem(session_storage+'ID', JSON.stringify(ids)); 25508 return false;
25509 }else if(sessionStorage.getItem(session_storage+'ID') == JSON.stringify(ids)){ 25510 if(typeof sessionStorage.getItem(session_storage+'HTML') != undefined && sessionStorage.getItem(session_storage+'HTML') != null && sessionStorage.getItem(session_storage+'HTML').length > 0 && $(sessionStorage.getItem(session_storage+'HTML')).length == ids.length ){ 25511 return true; 25512 }else{ 25513 sessionStorage.setItem(session_storage+'ID', JSON.stringify(ids)); 25514 return false; 25515 } 25516 } 25517 } 25518 } 25519 25520 // ───────────────────────────────────────────────────────── 25521 // CORREÇÃO: autoHeight false + sem setTimeout de equalização 25522 // ───────────────────────────────────────────────────────── 25523 function render_product(box, arr_flexslide = {}, slide, slider_box){ 25524 if(box.length > 0){ 25525 25526 if(slide){ 25527 25528 var qtde_itens = $(box).attr('data-quantidade-produtos'); 25529 var space_between; 25530 25531 if(slider_box.length > 0 && slider_box == '.flexslider-produtos'){ 25532 if(window.innerWidth < 500){ 25533 space_between = 6; 25534 }else if(window.innerWidth < 1025){ 25535 space_between = 6; 25536 }else{ 25537 space_between = 10; 25538 } 25539 }else{ 25540 if(window.innerWidth < 500){ 25541 qtde_itens = 2; 25542 space_between = 6; 25543 }else if(window.innerWidth < 1100){ 25544 qtde_itens = 3; 25545 space_between = 6; 25546 }else{ 25547 space_between = 10; 25548 } 25549 } 25550 25551 setTimeout(function(){ 25552 25553 new Swiper(box+' .swiper-container', { 25554 preloadImages : false, 25555 loop : true, 25556 autoHeight : false, // CORREÇÃO: false — altura controlada pelo CSS 25557 effect : 'slide', 25558 slidesPerView : qtde_itens, 25559 spaceBetween : space_between, 25560 lazy :{ 25561 loadPrevNext: true, 25562 }, 25563 pagination: { 25564 el: ".swiper-pagination", 25565 clickable: true, 25566 }, 25567 navigation: { 25568 nextEl: '.swiper-button-next', 25569 prevEl: '.swiper-button-prev', 25570 }, 25571 on: { 25572 init: function(){ 25573 25574 theme.loadVitrinePersonalizadaTimer(); 25575 theme.loadProdutosTimer(); 25576 25577 $(box+' .select-cor').each(function(){ 25578 if($(this).find(' > option').length == 0){ 25579 $(this).parents('.config-variacoes-compra').find(' > .select-tamanho').show(); 25580 $(this).parents('.config-variacoes-compra').find(' > .select-tamanho option').show(); 25581 $(this).parents('.config-variacoes-compra').find(' > .select-tamanho option:first').attr('selected', true); 25582 } 25583 }); 25584 25585 // CORREÇÃO: removido setTimeout de equalização manual 25586 $(box +' .product').removeClass('show-down'); 25587 } 25588 } 25589 }); 25590 25591 }, 400); 25592 } 25593 25594 construtorPreco(box); 25595 $(box).show(); 25596 return true; 25597 } 25598 25599 return false;
25600 } 25601 25602 $(document).ready(() => { 25603 25604 $(document).on("change", '.select-tamanho', function(){ 25605 var variacao = $(this).val(); 25606 var estoque = $(this).find('option:selected').attr('estoque'); 25607 $(this).parents('.config-variacoes-compra').find(' > input[name=variacao]').val(variacao); 25608 $(this).parents('.config-variacoes-compra').find(' > input[name=estoque]').val(estoque); 25609 }); 25610 25611 setTimeout(() => { 25612 loadProdutosMenu(); 25613 }, 1000); 25614 25615 }); 25616 25617 /** Menu categoria Produto **/ 25618 function render_menu(){ 25619 25620 const menu_categoria = { 25621 1: "7", 25622 2: "", 25623 3: "", 25624 4: "", 25625 5: "", 25626 6: "", 25627 7: "", 25628 8: "", 25629 9: "", 25630 10: "", 25631 11: "", 25632 12: "", 25633 13: "", 25634 14: "", 25635 15: "" 25636 }; 25637 25638 const menu_session = ['A', 'B', 'C', 'D', 'E', 'F', 'G', "H", 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P']; 25639 var new_menu_product = []; 25640 25641 Object.keys(menu_categoria).map((k) => { 25642 if(menu_categoria[k].length > 0){ 25643 new_menu_product.push({ 'key': k, 'value': menu_categoria[k], 'session':menu_session[k] }); 25644 } 25645 }); 25646 25647 if(new_menu_product.length > 0){ 25648 $(new_menu_product).each((i, v) => { 25649 var box = ".menu-categoria-product-"+v.key; 25650 var session_storage = 'menuCategoriaProduct'+v.session; 25651 const session_status = getProducts([v.value], box, session_storage); 25652 25653 if(!session_status){ 25654 $.ajax({ 25655 url: url_vitrine + '/web_api/products/' + v.value, 25656 async: true 25657 }).done( (res) => { 25658 $.ajax({ 25659 url: url_vitrine + '/' + res.Product.slug.replace(/^https?:\/\/[^\/]+\//, ''), 25660 async: true 25661 }).done( (res) => { 25662 const produto = $(res).find('#product-menu-ajax'); 25663 const html = String(produto[0].innerHTML); 25664 if(html.length > 0 && $(box).length > 0){ 25665 $(box).append(html); 25666 sessionStorage.setItem(session_storage+'HTML', html); 25667 } 25668 }); 25669 }); 25670 }else{ 25671 $(box).append(sessionStorage.getItem(session_storage+'HTML')); 25672 render_product(box, [], false, true); 25673 } 25674 }); 25675 } 25676 } 25677 25678 /** Vitrine personalizada **/ 25679 function render_vitrine(){ 25680 25681 var vitrine_qtde = "5"; 25682 var vitrine = "125233725,125245406,125238099,125233811,125233451"; 25683 var box_vitrine = '#vitrine-personalizada'; 25684 var session_storage = 'vitrinePersonalizada'; 25685 var vitrine_status = "0"; 25686 var box_slider = '.vt-produtos'; 25687 25688 $(box_vitrine).hide(); 25689 25690 if(vitrine_status == '1'){ 25691 if(vitrine.length > 0){ 25692 var vitrine_arr = vitrine.split(','); 25693 html_product = ''; 25694 var index_product = 0; 25695 25696 const arr_flexslide = { 25697 min: vitrine_qtde, 25698 max: vitrine_qtde, 25699 total: vitrine_qtde 25700 } 25701 25702 if(vitrine_arr.length > 0){ 25703 const session_status = getProducts(vitrine_arr, box_vitrine, session_storage); 25704 25705 if(!session_status){ 25706 25707 // CORREÇÃO: slots na ordem certa antes do AJAX 25708 $(vitrine_arr).each((i, v) => { 25709 $(box_vitrine + ' .swiper-wrapper').append( 25710 `<div class='item swiper-slide' data-product-slot="${v}"></div>` 25711 ); 25712 }); 25713 25714 $(vitrine_arr).each((i, v) => { 25715 $.ajax({ 25716 url: url_vitrine + '/web_api/products/' + v, 25717 async: true 25718 }).done( (res) => { 25719 $.ajax({ 25720 url: url_vitrine + '/' + res.Product.slug.replace(/^https?:\/\/[^\/]+\//, ''), 25721 async: true 25722 }).done( (ress) => { 25723 const produto = $(ress).find('#product-ajax'); 25724 const html = String(produto[0].innerHTML); 25725 25726 if(html.length > 0 && $(box_vitrine).length > 0){ 25727 const slot = $(box_vitrine + ` .swiper-slide[data-
25727product-slot="${v}"]`); 25728 slot.append(html); 25729 25730 index_product++; 25731 html_product += `<div class='item swiper-slide'>${html}</div>`; 25732 25733 if(index_product == vitrine_arr.length){ 25734 render_product(box_vitrine, arr_flexslide, true, box_slider); 25735 sessionStorage.setItem(session_storage+'HTML', html_product); 25736 } 25737 } 25738 }); 25739 }); 25740 }); 25741 25742 }else{ 25743 $(box_vitrine + ' .swiper-wrapper').append(sessionStorage.getItem(session_storage+'HTML')); 25744 render_product(box_vitrine, arr_flexslide, true, box_slider); 25745 } 25746 } 25747 } 25748 } 25749 } 25750 25751 /** Promocao Destaque **/ 25752 function render_destaque(){ 25753 25754 var vitrine_qtde = "5"; 25755 var vitrine = ""; 25756 var box_vitrine = '#promocao-destaque'; 25757 var session_storage = 'promocaoDestaque'; 25758 var vitrine_status = "0"; 25759 var box_slider = '.flexslider-promocao-destaque'; 25760 25761 $(box_vitrine).hide(); 25762 25763 if(vitrine_status == '1'){ 25764 if(vitrine.length > 0){ 25765 var vitrine_arr = vitrine.split(','); 25766 html_product_promo = ''; 25767 var index_product = 0; 25768 25769 const arr_flexslide = { 25770 min: vitrine_qtde, 25771 max: vitrine_qtde, 25772 total: vitrine_qtde 25773 } 25774 25775 if(vitrine_arr.length > 0){ 25776 const session_status = getProducts(vitrine_arr, box_vitrine, session_storage); 25777 25778 if(!session_status){ 25779 25780 // CORREÇÃO: slots na ordem certa antes do AJAX 25781 $(vitrine_arr).each((i, v) => { 25782 $(box_vitrine + ' .swiper-wrapper').append( 25783 `<div class='item swiper-slide' data-product-slot="${v}"></div>` 25784 ); 25785 }); 25786 25787 $(vitrine_arr).each((i, v) => { 25788 $.ajax({ 25789 url: url_vitrine + '/web_api/products/' + v, 25790 async: true 25791 }).done( (res) => { 25792 $.ajax({ 25793 url: url_vitrine + '/' + res.Product.slug.replace(/^https?:\/\/[^\/]+\//, ''), 25794 async: true 25795 }).done( (ress) => { 25796 const produto = $(ress).find('#product-ajax'); 25797 const html = String(produto[0].innerHTML); 25798 25799 if(html.length > 0 && $(box_vitrine).length > 0){ 25800 const slot = $(box_vitrine + ` .swiper-slide[data-product-slot="${v}"]`); 25801 slot.append(html); 25802 25803 index_product++; 25804 html_product_promo += `<div class='item swiper-slide'>${html}</div>`; 25805 25806 if(index_product == vitrine_arr.length){ 25807 render_product(box_vitrine, arr_flexslide, true, box_slider); 25808 sessionStorage.setItem(session_storage+'HTML', html_product_promo); 25809 } 25810 } 25811 }); 25812 }); 25813 }); 25814 25815 }else{ 25816 $(box_vitrine + ' .swiper-wrapper').append(sessionStorage.getItem(session_storage+'HTML')); 25817 render_product(box_vitrine, arr_flexslide, true, box_slider); 25818 } 25819 } 25820 } 25821 } 25822 }; 25823 25824 function produto_perfil_ajax_menu(){ 25825 if($('.produto-menu-ajax').length > 0){ 25826 $('.produto-menu-ajax').each(function(k, item){ 25827 var produto_perfil_id = $(item).data('produto'); 25828 var produtos_id = []; 25829 var produto_perfil_div = $(item).data('div'); 25830 25831 if(produto_perfil_id.toString().indexOf(',') != -1){ 25832 produtos_id = produto_perfil_id.split(','); 25833 if(produtos_id.length > 0){ 25834 $(produtos_id).each(function(k, prod_id){ 25835 $.ajax({ 25836 url: '/web_api/products/' + prod_id, 25837 async: true 25838 }).done( (res) => { 25839 var produto_dados = res.Product; 25840 if(produto_dados.name){ 25841 var box_produto_perfil = produto_perfil_div+" .box-produto-perfil-menu-"+prod_id; 25842 produto_perfil(produto_dados, box_produto_perfil); 25843 } 25844 }); 25845 }); 25846 } 25847 }else{ 25848 if(produto_perfil_id != "" && produto_perfil_div != ""){ 25849 $.ajax({ 25850 url: '/web_api/products/' + produto_perfil_id, 25851 async: true 25852 }).done( (res) => { 25853 var produto_dados = res.Product; 25854 if(produto_dados.name){ 25855 produto_perfil(produto_dados, produto_perfil_div); 25856 } 25857 }); 25858 } 25859 } 25860 }); 25861 } 25862 } 25863 25864 function produto_perfil_ajax(){ 25865 if($('.produto-perfil-ajax').length > 0){ 25866 $('.produto-perfil-ajax').each(function(k, item){ 25867 var produto_perfil_id = $(item).data('produto'); 25868 var produtos_id = []; 25869 var produto_perfil_div = $(item).data('div'); 25870 25871 if(produto_perfil_id.toString().indexOf(',') != -1){ 25872 produtos_id = produto_perfil_id.split(','); 25873 if(produtos_id.length > 0){ 25874 $(produtos_id).each(function(k, prod_id){ 25875 $.ajax({ 25876 url: url_vitrine + '/web_api/products/' + prod_id, 25877 async: true 25878 }).done( (res) => { 25879 var produto_dados = res.Product; 25880 if(produto_dados.name){ 25881 var box_produto_perfil = ".box-produto-perfil-"+prod_id; 25882 produto_perfil(produto_dados, box_produto_perfil, "append", "v"); 25883 } 25884 }); 25885 }); 25886 } 25887 }else{ 25888 if(produto_perfil_id != "" && produto_perfil_div != ""){ 25889 $.ajax({ 25890 url: url_vitrine + '/web_api/products/' + produto_perfil_id, 25891 async: true 25892 }).done( (res) => { 25893 var produto_dados = res.Product; 25894 if(produto_dados.name){ 25895 produto_perfil(produto_dados, produto_perfil_div, "v"); 25896 } 25897 }); 25898 } 25899 } 25900 }); 25901 } 25902 } 25903 25904 function produto_perfil(produto_dados, div_nome, extra = "", layout_format = "h"){ 25905 25906 var produto_perfil_url = produto_dados.url.https; 25907 var produto_perfil_nome = produto_dados.name; 25908 var produto_perfil_preco = (produto_dados.price > 0) ? produto_perfil_price_format(produto_dados.price) : "" 25909 var produto_perfil_preco_promotional = (produto_dados.promotional_price > 0) ? produto_perfil_price_format(produto_dados.promotional_price) : "" 25910 var produto_perfil_preco_desc = (produto_dados.payment_option.length > 0) ? `<div class="produto-perfil-installments">${produto_dados.payment_option_html}</div>` : ""; 25911 var produto_perfil_url = produto_dados.url.https; 25912 var produto_perfil_category = produto_dados.category_name 25913 25914 var category_url = produto_perfil_url.slice(0, -1).split("/"); 25915 category_url.pop(); 25916 var produto_perfil_category_url = category_url.join("/"); 25917 var show_name_category = NameCategory 25918 show_name_category = (show_name_category == 'true') ? `<a class="produto-perfil-nome-category" href="`+produto_perfil_category_url+`" target="_blank">`+produto_perfil_category+`</a>` : ' ' 25919 25920 var produto_perfil_variation = (produto_dados.has_variation == 1) ? `<a href="${produto_perfil_url}" class="btn-comprar-variation">Comprar</a>` : `<div class="btn-comprar-listagem btn-comprar product-button">Comprar</div>` 25921 var produto_perfil_id = produto_dados.id 25922 var produto_perfil_logger = ClientLog 25923 25924 if(produto_dados.upon_request == '1'){ 25925 produto_perfil_preco = "Sob consulta"; 25926 } 25927 if (parseFloat(produto_dados.promotional_price) != 0 && parseFloat(produto_dados.promotional_price) < parseFloat(produto_dados.price)){ 25928 produto_perfil_preco = "<div class='old-price-perfil' style='text-decoration: line-through;font-size: 13px'>R$ "+produto_perfil_preco+"</div>"+"<div class='current-price-perfil'>R$ "+produto_perfil_preco_promotional+"</div>"; 25929 }else{ 25930 produto_perfil_preco = "<div class='current-price-perfil'>R$ "+produto_perfil_preco+"</div>"; 25931 } 25932 25933 if(layout_format == "h"){ 25934 var produto_perfil_img = (produto_dados.image == '1') ? "<img class='lazyload' src='"+produto_dados.ProductImage[0].https+"' alt='"+produto_dados.name+" '>" : ''; 25935 25936 var div_perfil = ` 25937 <div class="produto-perfil" data-id="${produto_perfil_id}"> 25938 <a href="`+produto_perfil_url+`"> 25939 <div class="produto-perfil-imagem"> 25940 <a href="`+produto_perfil_url+`"> 25941 `+produto_perfil_img+` 25942 </a> 25943 </div> 25944 <div class="produto-perfil-nome"> 25945 <a href="`+produto_perfil_url+`"> 25946 `+produto_perfil_nome+` 25947 </a> 25948 </div> 25949 ${show_name_category}
25950 `+(produto_perfil_logger == 'true'? 25951 `<div class="produto-perfil-preco tray-hide" data-logged-user="true"> 25952 `+produto_perfil_preco+` 25953 `+produto_perfil_preco_desc+` 25954 </div>`: 25955 `<div class="produto-perfil-preco"> 25956 `+produto_perfil_preco+` 25957 `+produto_perfil_preco_desc+` 25958 </div>`) 25959 +` 25960 `+(produto_perfil_logger == 'true'? 25961 `<div class="produto-perfil-footer tray-hide" data-logged-user="true"> 25962 ${produto_perfil_variation} 25963 </div> 25964 <div class="autenticacao-comprar-produto mt-2 tray-hide" data-logged-user="false"> 25965 <a href="/my-account/login"> 25966 <div class="w-100"> 25967 `+($('.product-box .autenticacao-comprar-produto a div').text())+`Para realizar a compra do produto, por favor realize o Login! 25968 </div> 25969 </a> 25970 </div>`: 25971 `<div class="produto-perfil-footer"> 25972 ${produto_perfil_variation} 25973 </div>`) 25974 +` 25975 </div> 25976 `; 25977 25978 }else{ 25979 25980 var produto_perfil_img = (produto_dados.image == '1') ? "<img class='lazyload' src='"+produto_dados.ProductImage[0].https+"' alt='"+produto_dados.name+"'>" : ''; 25981 25982 var div_perfil = ` 25983 <div class="produto-perfil" data-id="${produto_perfil_id}"> 25984 <div class="produto-perfil-v"> 25985 <div class="produto-perfil-imagem"> 25986 <a href="`+produto_perfil_url+`"> 25987 `+produto_perfil_img+` 25988 </a> 25989 </div> 25990 <div class="produto-perfil-desc"> 25991 <div class="produto-perfil-nome"> 25992 <a href="`+produto_perfil_url+`"> 25993 `+produto_perfil_nome+` 25994 </a> 25995 </div> 25996 ${show_name_category} 25997 `+(produto_perfil_logger == 'true'? 25998 `<div class="produto-perfil-preco tray-hide" data-logged-user="true"> 25999 `+produto_perfil_preco+` 26000 `+produto_perfil_preco_desc+` 26001 </div>`: 26002 `<div class="produto-perfil-preco"> 26003 `+produto_perfil_preco+` 26004 `+produto_perfil_preco_desc+` 26005 </div>`) 26006 +` 26007 `+(produto_perfil_logger == 'true'? 26008 `<div class="produto-perfil-footer tray-hide" data-logged-user="true"> 26009 ${produto_perfil_variation} 26010 </div> 26011 <div class="autenticacao-comprar-produto mt-2 tray-hide" data-logged-user="false"> 26012 <a href="/my-account/login"> 26013 <div class="w-100"> 26014 `+($('.product-box .autenticacao-comprar-produto a div').text())+`Para realizar a compra do produto, por favor realize o Login! 26015 </div> 26016 </a> 26017 </div>`: 26018 `<div class="produto-perfil-footer"> 26019 ${produto_perfil_variation} 26020 </div>`) 26021 +` 26022 </div> 26023 </div> 26024 </div> 26025 `; 26026 } 26027 26028 if(extra == "append"){ 26029 $(div_nome).append(div_perfil); 26030 }else{ 26031 $(div_nome).html(div_perfil); 26032 } 26033 } 26034 26035 function produto_perfil_price_format(preco = ""){ 26036 preco = parseFloat(preco).toFixed(2); 26037 return preco.toString().replace(".", ","); 26038 } 26039 26040 produto_perfil_ajax(); 26041 produto_perfil_ajax_menu(); 26042 26043 }(jQuery)); 26044 26045</script>
26045 26046 26047 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 <div class="stories-produtos-box" style="display: none;"> 26058 <div class="stories-produtos-conteudo"> 26059 <div id="stories-produtos" class="storiesWrapper"></div> 26060 </div> 26061 <div class="stories-produtos-acoes"> 26062 <div class="stories-produtos-acoes-icone"> 26063 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="currentColor" class="bi bi-lightning-charge" viewBox="0 0 16 16"> 26064 <path d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09zM4.157 8.5H7a.5.5 0 0 1 .478.647L6.11 13.59l5.732-6.09H9a.5.5 0 0 1-.478-.647L9.89 2.41 4.157 8.5z"/> 26065 </svg> 26066 </div> 26067 <span class="status"></span> 26068 </div> 26069</div> 26070 26071
26072<script> 26073 function storiesFunction() { 26074 var currentSkin = getCurrentSkin(); 26075 26076 var stories = window.Zuck(document.querySelector('#stories-produtos'), { 26077 backNative: true, 26078 previousTap: true, 26079 skin: currentSkin['name'], 26080 autoFullScreen: currentSkin['params']['autoFullScreen'], 26081 avatars: currentSkin['params']['avatars'], 26082 paginationArrows: currentSkin['params']['paginationArrows'], 26083 list: currentSkin['params']['list'], 26084 cubeEffect: currentSkin['params']['cubeEffect'], 26085 localStorage: true, 26086 26087 stories: [ 26088 { 26089 id: 'produto-1', 26090 photo: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Fitness.png?40911a9f4d7a99b6eef6b4ae366be082', 26091 name: 'Fitness', 26092 time: timestamp(), 26093 items: [ 26094 { 26095 id: 'produto-1-1', 26096 type: 'photo', 26097 length: 4, 26098 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Metabolic.png?40911a9f4d7a99b6eef6b4ae366be082', 26099 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Metabolic.png?40911a9f4d7a99b6eef6b4ae366be082', 26100 link: 'https://www.farmacam.com.br/metabolic-fit', 26101 linkText: 'Metabolic Fit', 26102 time: timestamp() 26103 }, 26104 ,{ 26105 id: 'produto-1-2', 26106 type: 'photo', 26107 length: 4, 26108 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/PeptiStrong.png?40911a9f4d7a99b6eef6b4ae366be082', 26109 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/PeptiStrong.png?40911a9f4d7a99b6eef6b4ae366be082', 26110 link: 'https://www.farmacam.com.br/peptistrong', 26111 linkText: 'PeptiStrong', 26112 time: timestamp() 26113 } 26114 ,{ 26115 id: 'produto-1-3', 26116 type: 'photo', 26117 length: 4, 26118 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Akkermat.png?40911a9f4d7a99b6eef6b4ae366be082', 26119 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Akkermat.png?40911a9f4d7a99b6eef6b4ae366be082', 26120 link: 'https://www.farmacam.com.br/akkermat', 26121 linkText: 'Akkermat - Cápsulas Entéricas', 26122 time: timestamp() 26123 } 26124 ] 26125 } 26126 26127 ,{ 26128 id: 'produto-2', 26129 photo: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Beleza.png?40911a9f4d7a99b6eef6b4ae366be082', 26130 name: 'Beleza', 26131 time: timestamp(), 26132 items: [ 26133 { 26134 id: 'produto-2-1', 26135 type: 'photo', 26136 length: 4, 26137 src: 'https://images.tcdn.com.br/files/1063102/themes/2
2613716/img/settings/Minoxidil.png?40911a9f4d7a99b6eef6b4ae366be082', 26138 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Minoxidil.png?40911a9f4d7a99b6eef6b4ae366be082', 26139 link: 'https://www.farmacam.com.br/minoxidil-oral', 26140 linkText: 'Minoxidil Oral', 26141 time: timestamp() 26142 }, 26143 ,{ 26144 id: 'produto-2-2', 26145 type: 'photo', 26146 length: 4, 26147 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Clascoterona.png?40911a9f4d7a99b6eef6b4ae366be082', 26148 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Clascoterona.png?40911a9f4d7a99b6eef6b4ae366be082', 26149 link: 'https://www.farmacam.com.br/clascoterona-serum', 26150 linkText: 'Clascoterona - Sérum', 26151 time: timestamp() 26152 } 26153 ,{ 26154 id: 'produto-2-3', 26155 type: 'photo', 26156 length: 4, 26157 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Solu.png?40911a9f4d7a99b6eef6b4ae366be082', 26158 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Solu.png?40911a9f4d7a99b6eef6b4ae366be082', 26159 link: 'https://www.farmacam.com.br/solucao-minoxidil-para-queda-capilar', 26160 linkText: 'Solução minoxidil para queda capilar', 26161 time: timestamp() 26162 } 26163 ] 26164 } 26165 26166 ,{ 26167 id: 'produto-3', 26168 photo: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Reducaoo-de-Peso.png?40911a9f4d7a99b6eef6b4ae366be082', 26169 name: 'Redução de Peso', 26170 time: timestamp(), 26171 items: [ 26172 { 26173 id: 'produto-3-1', 26174 type: 'photo', 26175 length: 4, 26176 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Morosil.png?40911a9f4d7a99b6eef6b4ae366be082', 26177 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Morosil.png?40911a9f4d7a99b6eef6b4ae366be082', 26178 link: 'https://www.farmacam.com.br/www-farmacam-com-br/morosil/', 26179 linkText: 'Morosil', 26180 time: timestamp() 26181 }, 26182 ,{ 26183 id: 'produto-3-2', 26184 type: 'photo', 26185 length: 4, 26186 src: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Spray.png?40911a9f4d7a99b6eef6b4ae366be082', 26187 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Spray.png?40911a9f4d7a99b6eef6b4ae366be082', 26188 link: 'https://www.farmacam.com.br/www-farmacam-com-br/spray-inibidor-de-doce-sabor-morango', 26189 linkText: 'Spray inibidor de doce - Sabor Morango', 26190 time: timestamp() 26191 } 26192 ,{ 26193 id: 'produto-3-3', 26194 type: 'photo', 26195 length: 4, 26196 src: 'https://images.tcdn.com.br/files/1063102/themes/2
2619616/img/settings/Espirulina.png?40911a9f4d7a99b6eef6b4ae366be082', 26197 preview: 'https://images.tcdn.com.br/files/1063102/themes/216/img/settings/Espirulina.png?40911a9f4d7a99b6eef6b4ae366be082', 26198 link: 'https://www.farmacam.com.br/www-farmacam-com-br/espirulina/', 26199 linkText: 'Espirulina', 26200 time: timestamp() 26201 } 26202 ] 26203 }, 26204 ] 26205 }); 26206 } 26207</script>
26207 26208 </html>
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.