1(function () { 2 window.dataLayer = window.dataLayer || []; 3 window.gtag = window.gtag || function () { window.dataLayer.push(arguments); }; 4 window.gtag('js', new Date()); 5 window.gtag('config', 'G-DMVQJFDSBJ'); 6 window.gtag('config', 'G-G0796K9D03'); 7 8 function label(element) { 9 return (element.textContent || element.getAttribute('aria-label') || '').trim().slice(0, 100); 10 } 11 12 function leadType(element) { 13 var section = element.closest('section'); 14 var context = (label(element) + ' ' + (section ? section.textContent : '')).toLowerCase(); 15 if (context.includes('evento') || context.includes('event') || context.includes('capacita') || context.includes('training') || context.includes('coaching') || context.includes('conference')) return 'evento'; 16 if (context.includes('piscina') || context.includes('pool')) return 'piscina'; 17 if (context.includes('grupo') || context.includes('group')) return 'grupo'; 18 return 'reserva'; 19 } 20 21 function send(name, parameters) { 22 if (typeof window.gtag === 'function') window.gtag('event', name, parameters); 23 } 24 25 function buildLanguageSelector() { 26 var routes = { 27 '/': {es: '/', en: '/en/'}, 28 '/eventos/': {es: '/eventos/', en: '/en/events/'}, 29 '/piscina/': {es: '/piscina/', en: '/en/pool/'}, 30 '/reservar/': {es: '/reservar/', en: '/en/book/'}, 31 '/venta-renta/': {es: '/venta-renta/', en: '/en/for-sale-or-lease/'}, 32 '/agencias-y-grupos/': {es: '/agencias-y-grupos/', en: '/en/travel-agencies/'}, 33 '/en/': {es: '/', en: '/en/'}, 34 '/en/events/': {es: '/eventos/', en: '/en/events/'}, 35 '/en/pool/': {es: '/piscina/', en: '/en/pool/'}, 36 '/en/book/': {es: '/reservar/', en: '/en/book/'}, 37 '/en/for-sale-or-lease/': {es: '/venta-renta/', en: '/en/for-sale-or-lease/'}, 38 '/en/travel-agencies/': {es: '/agencias-y-grupos/', en: '/en/travel-agencies/'} 39 }; 40 var path = location.pathname.replace(/\/index\.html$/, '/'); 41 var pair = routes[path]; 42 if (!pair) return; 43 var current = path.indexOf('/en/') === 0 ? 'en' : 'es'; 44 var candidates = document.querySelectorAll('.lang, [data-language]'); 45 var containers = []; 46 candidates.forEach(function (candidate) { 47 var container = candidate.closest('.lang') || candidate; 48 if (containers.indexOf(container) === -1) containers.push(container); 49 }); 50 containers.forEach(function (container) { 51 var selector = document.createElement('span'); 52 selector.className = 'lang'; 53 selector.setAttribute('aria-label', current === 'es' ? 'Selector de idioma' : 'Language selector'); 54 var label = document.createElement('span'); 55 label.className = 'lang-label'; 56 label.textContent = current === 'es' ? 'Idioma:' : 'Language:'; 57 selector.appendChild(label); 58 ['es', 'en'].forEach(function (language) { 59 if (language === current) { 60 var active = document.createElement('span'); 61 active.className = 'lang-option'; 62 active.setAttribute('aria-current', 'page'); 63 active.textContent = language.toUpperCase(); 64 selector.appendChild(active); 65 } else { 66 var link = document.createElement('a'); 67 link.className = 'lang-option'; 68 link.setAttribute('data-language', language); 69 link.href = pair[language]; 70 link.textContent = language.toUpperCase(); 71 selector.appendChild(link); 72 } 73 }); 74 container.replaceWith(selector); 75 }); 76 } 77 78 var languageStyles = document.createElement('style'); 79 languageStyles.textContent = '.lang{display:inline-flex;gap:6px;align-items:center;font-weight:900}.lang-label{padding:0!important;border:0!important;background:transparent!important;color:inherit!important;font-size:.76rem;font-weight:700;opacity:.8}.lang-option{display:inline-flex!important;padding:7px 9px!important;border:1px solid currentColor!important;border-radius:999px!important;text-decoration:none!important}.lang-option[aria-current="page"]{background:#351475!important;color:#fff!important;border-color:#351475!important;cursor:default}.nav-links .lang a{display:inline-flex!important}'; 80 document.head.appendChild(languageStyles); 81 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', buildLanguageSelector); 82 else buildLanguageSelector(); 83 84 document.addEventListener('click', function (event) { 85 var link = event.target.closest('a[href]'); 86 if (!link) return; 87 var href = link.href; 88 var common = {link_url: href, link_text: label(link), page_path: location.pathname, page_language: document.documentElement.lang || 'es'}; 89 if (link.matches('[data-language]')) { 90 send('language_select', Object.assign({}, common, {selected_language: link.getAttribute('data-language')}
90)); 91 } 92 if (href.includes('wa.me/') || href.includes('bit.ly/casagiralda')) { 93 common.lead_type = leadType(link); 94 send('whatsapp_click', common); 95 } else if (href.includes('forms.gle/wtNYRzdeo4fxESYR6')) { 96 send('event_form_start', common); 97 } else if (href.includes('/reservar/') || href.includes('/en/book/')) { 98 send('booking_start', common); 99 } else if (/instagram\.com|tiktok\.com|facebook\.com/.test(href)) { 100 common.social_network = href.includes('instagram.com') ? 'instagram' : href.includes('tiktok.com') ? 'tiktok' : 'facebook'; 101 send('social_click', common); 102 } 103 }, true); 104 105 if (/\/(reservar|en\/book)\/?$/.test(location.pathname)) { 106 send('booking_engine_view', {page_path: location.pathname, booking_provider: 'wubook', page_language: document.documentElement.lang || 'es'}); 107 } 108})();
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.