Anfrage

Eventdetails

ODER DIREKT ANRUFEN?

Du möchtest deine Anfrage lieber persönlich mit uns besprechen? Ruf uns an, wir klären die wichtigsten Fragen direkt und schauen gemeinsam, was zu deinem Anlass passt.

- Ende. "Lade immer jQuery" kann AUS bleiben. */ (function () { 'use strict';var FORM_ID = 'rs_event_booking_form'; var FORM_SELECTOR = 'form#' + FORM_ID;function cleanValue(v, max) { return String(v == null ? '' : v).trim().replace(/\s+/g, ' ').slice(0, max || 100); }function getFieldValue(form, fieldId) { var sel = '[name="form_fields[' + fieldId + ']"]'; var field = form.querySelector(sel); if (!field) return ''; if (field.tagName === 'SELECT') return cleanValue(field.value); if (field.type === 'radio') { var checked = form.querySelector(sel + ':checked'); return checked ? cleanValue(checked.value) : ''; } if (field.type === 'checkbox') { return Array.prototype.slice.call(form.querySelectorAll(sel + ':checked')) .map(function (el) { return cleanValue(el.value); }) .filter(Boolean) .join(' | '); } return cleanValue(field.value); }// Referrer = Seite vor /location-buchen/. Beim ersten Laden festhalten, // damit er auch nach Interaktionen unverändert bleibt. var PREVIOUS_PAGE = cleanValue(document.referrer, 200) || '(direct)';// 1) Werte erfassen, sobald der Nutzer absendet (bevor Elementor das Formular leert). document.addEventListener('submit', function (e) { var form = e.target && e.target.closest ? e.target.closest(FORM_SELECTOR) : null; if (!form) return; form.dataset.gaBookingLocation = getFieldValue(form, 'location'); form.dataset.gaBookingEventType = getFieldValue(form, 'eventtype'); form.dataset.gaLeadSent = ''; }, true);// 2) generate_lead senden, sobald Elementor den Erfolg bestätigt. function fireLead(form) { if (!form || form.dataset.gaLeadSent === '1') return; var loc = form.dataset.gaBookingLocation || ''; var type = form.dataset.gaBookingEventType || ''; if (!loc && !type) return; form.dataset.gaLeadSent = '1';var payload = { booking_location: loc, booking_event_type: type, previous_page: PREVIOUS_PAGE };if (typeof window.gtag === 'function') { window.gtag('event', 'generate_lead', payload); } else { window.dataLayer = window.dataLayer || []; payload.event = 'generate_lead'; window.dataLayer.push(payload); } }function checkNode(n) { if (!n || n.nodeType !== 1) return; var success = (n.classList && n.classList.contains('elementor-message-success')) ? n : (n.querySelector ? n.querySelector('.elementor-message-success') : null); if (!success) return; var form = (success.closest && success.closest('form')) || document.querySelector(FORM_SELECTOR); if (form && form.matches && form.matches(FORM_SELECTOR)) fireLead(form); }var observer = new MutationObserver(function (muts) { for (var i = 0; i < muts.length; i++) { var nodes = muts[i].addedNodes; for (var j = 0; j < nodes.length; j++) checkNode(nodes[j]); } }); observer.observe(document.body || document.documentElement, { childList: true, subtree: true }); })();