PageSourceSearch

https://www.casagiralda.com/assets/analytics.js

js casagiralda.com collected 2026-09-26 09:47:07 UTC 5,650 bytes, 108 lines download raw bytes

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.