0%

ML. MASSAGE

document.addEventListener("DOMContentLoaded", function () {
    const startTime = Date.now(); // Record page script start time for preloader minimum display

    // =================================================================
    // SECTION: Preloader Setup & Logic
    // =================================================================
    const preloader = document.querySelector('.preloader-container');
    const preloaderCounter = document.querySelector('.preloader-counter');
    const vimeoDesktopIframe = document.getElementById('vimeo-desktop'); // Use your desktop ID
    const vimeoMobileIframe = document.getElementById('vimeo-mobile');   // Use your mobile ID
    const minimumDisplayTime = 1500; // Minimum preloader time in milliseconds (e.g., 1.5 seconds)

    let preloaderCount = 0;
    let pageLoadComplete = false;
    let videoReady = false;
    let preloaderHidden = false;
    let preloaderCounterInterval;
    let preloaderFailsafeTimeout;

    // --- Preloader Element Checks ---
    if (!preloader || !preloaderCounter) {
        console.warn('Preloader elements (.preloader-container or .preloader-counter) not found! Cannot initialize preloader.');
        // Attempt to hide preloader container if it exists but counter doesn't, to prevent blocking page
        if(preloader) {
            preloader.style.opacity = '0';
            preloader.style.visibility = 'hidden';
            preloader.style.display = 'none';
        }
        return; // Stop execution of preloader logic if elements are missing
    }

    // --- Determine visible Vimeo iframe ---
    let visibleVimeoIframe = null;
    if (vimeoDesktopIframe && vimeoDesktopIframe.offsetParent !== null) {
        // offsetParent is null if display:none (or parent is display:none)
        visibleVimeoIframe = vimeoDesktopIframe;
        console.log("Preloader: Detected visible video - Desktop");
    } else if (vimeoMobileIframe && vimeoMobileIframe.offsetParent !== null) {
        visibleVimeoIframe = vimeoMobileIframe;
        console.log("Preloader: Detected visible video - Mobile");
    } else {
        console.log("Preloader: No visible Vimeo background iframe detected on load.");
    }
    const shouldWaitForVideo = !!visibleVimeoIframe;
    // Initialize videoReady state: If no video visible, consider it 'ready'.
    videoReady = !shouldWaitForVideo;

    // --- Preloader Hide Function (with minimum display time) ---
    function checkAndHidePreloader() {
        // Prevent running if already hidden or elements missing
        if (preloaderHidden || !preloader || !preloaderCounter) return;

        // Check conditions: page loaded AND video ready (or not needed)
        if (pageLoadComplete && videoReady) {
            preloaderHidden = true; // Mark as hidden early to prevent race conditions
            console.log('Preloader: Conditions met. Calculating hide delay...');

            // Stop counter interval and failsafe timeout
            if (preloaderCounterInterval) clearInterval(preloaderCounterInterval);
            if (preloaderFailsafeTimeout) clearTimeout(preloaderFailsafeTimeout);

            // Ensure 100% is displayed
            preloaderCounter.textContent = '100%';

            // Calculate time needed to meet minimum display duration
            const elapsedTime = Date.now() - startTime;
            const delayNeeded = Math.max(0, minimumDisplayTime - elapsedTime);
            console.log(`Preloader: Elapsed: ${elapsedTime}ms, Delaying hide by: ${delayNeeded}ms to meet minimum of ${minimumDisplayTime}ms`);

            // Use calculated delay before starting fade-out animation
            setTimeout(() => {
                preloader.classList.add('preloader-hidden');
                preloader.setAttribute('aria-busy', 'false'); // Accessibility update

                // Remove from layout after animation (match CSS transition duration)
                setTimeout(() => {
                    preloader.style.display = 'none';
                    console.log('Preloader: Set display to none.');
                }, 500); // Should match your CSS transition duration for opacity/visibility
            }, delayNeeded);
        } else {
             // Optional log for debugging if called but conditions aren't met
             // console.log('checkAndHidePreloader called but conditions not met:', { pageLoadComplete, videoReady });
        }
    }

    // --- Preloader Failsafe Function ---
    function forceHidePreloader() {
        if (!preloaderHidden) {
            console.warn('Preloader failsafe triggered after timeout. Forcing hide.');
            pageLoadComplete = true; // Force completion states
            videoReady = true;
            checkAndHidePreloader(); // Attempt to hide gracefully
        }
    }

    // --- Preloader Event Listener: Window Load ---
    window.addEventListener('load', function() {
        console.log('Preloader: window.load event fired.');
        pageLoadComplete = true;
        checkAndHidePreloader();
    });

    // --- Preloader: Initialize Vimeo Player API (if needed) ---
    if (shouldWaitForVideo) {
        console.log("Preloader: Initializing Vimeo Player API for the visible iframe...");
        try {
            // Ensure the Vimeo Player API script is loaded before this runs
            if (typeof Vimeo === 'undefined' || !Vimeo.Player) {
                 console.error("Preloader: Vimeo Player API not loaded or available. Video readiness cannot be checked.");
                 videoReady = true; // Treat video as ready to not block indefinitely
                 checkAndHidePreloader(); // Check if page load is ready
            } else {
                const player = new Vimeo.Player(visibleVimeoIframe);

                player.on('playing', function() {
                    console.log('Preloader: Visible Vimeo player "playing" event fired.');
                    if (!videoReady) { // Ensure this runs only once
                        videoReady = true;
                        checkAndHidePreloader();
                    }
                });

                player.on('error', function(error) {
                    console.error('Preloader: Visible Vimeo player error:', error);
                    if (!videoReady) { // Prevent calling check multiple times
                        videoReady = true; // Don't block preloader on video error
                        checkAndHidePreloader();
                    }
                });

                 // Optional: Add loaded listener as a fallback in case playing never fires?
                 // player.on('loaded', function() { ... });
            }
        } catch (error) {
             console.error("Preloader: Error initializing or using Vimeo Player API:", error);
             if (!videoReady) { // Prevent calling check multiple times
                 videoReady = true; // Don't block preloader if API fails
                 checkAndHidePreloader();
             }
        }
    } else {
        console.log("Preloader: Skipping Vimeo Player API initialization (no visible video).");
    }

    // --- Preloader Counter Animation ---
    // Start only if conditions are not already met (preventing instant 100% jump if possible)
    if (!pageLoadComplete || !videoReady) {
        console.log("Preloader: Starting counter animation.");
        preloaderCounterInterval = setInterval(function() {
            if (preloaderHidden) { // Stop if hidden prematurely
                clearInterval(preloaderCounterInterval);
                return;
            }
            if (preloaderCount < 99) {
                preloaderCount++;
                preloaderCounter.textContent = preloaderCount + '%';
            } else {
                 // Stop incrementing counter at 99 if loading isn't finished.
                 // It will be forced to 100% in checkAndHidePreloader when ready.
                 // We can clear interval here if everything IS loaded, just waiting for min display time
                 if (pageLoadComplete && videoReady) {
                     clearInterval(preloaderCounterInterval);
                     console.log("Preloader: Counter reached 99%, conditions met, stopping interval.");
                 }
            }
        }, 30); // Adjust interval timing (e.g., 30-50ms)
    } else {
        // If conditions already met before interval logic runs (very fast load), attempt hide.
        console.log("Preloader: Conditions met before counter interval setup, attempting hide.");
        checkAndHidePreloader();
    }

    // --- Preloader Failsafe Timeout ---
    // Set a timeout to hide the preloader regardless after X seconds
    preloaderFailsafeTimeout = setTimeout(forceHidePreloader, 15000); // 15 seconds failsafe

}); // End DOMContentLoaded

Impressum

Angaben gemäß § 5 TMG:

Maryna Lysenko
St. Georgstraße 8
20099 Hamburg
Tel: 0175 83 96 987
E-Mail: m.lysenko.massage@gmail.com
Webseite: www.ml-massge.de

Kontakt:
Tel: 0175 83 96 987
E-Mail: m.lysenko.massage@gmail.com
Webseite: www.ml-massge.de

Umsatzsteuer-ID:
Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz: DE 4615004397

Berufsbezeichnung und berufsrechtliche Regelungen:
Berufsbezeichnung: Massagetherapeut (nicht geschützt, aber angeben, wenn vorhanden)

Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:
Maryna Lysenko
St. Georgstraße 8
20099 Hamburg

Datenschutz

Datenschutzerklärung
Personenbezogene Daten (nachfolgend zumeist nur „Daten“ genannt) werden von uns nur im Rahmen der Erforderlichkeit sowie zum Zwecke der Bereitstellung eines funktionsfähigen und nutzerfreundlichen Internetauftritts, inklusive seiner Inhalte und der dort angebotenen Leistungen, verarbeitet.
Gemäß Art. 4 Ziffer 1. der Verordnung (EU) 2016/679, also der Datenschutz-Grundverordnung (nachfolgend nur „DSGVO“ genannt), gilt als „Verarbeitung“ jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführter Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten, wie das Erheben, das Erfassen, die Organisation, das Ordnen, die Speicherung, die Anpassung oder Veränderung, das Auslesen, das Abfragen, die Verwendung, die Offenlegung durch Übermittlung, Verbreitung oder eine andere Form der Bereitstellung, den Abgleich oder die Verknüpfung, die Einschränkung, das Löschen oder die Vernichtung.
Mit der nachfolgenden Datenschutzerklärung informieren wir Sie insbesondere über Art, Umfang, Zweck, Dauer und Rechtsgrundlage der Verarbeitung personenbezogener Daten, soweit wir entweder allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung entscheiden. Zudem informieren wir Sie nachfolgend über die von uns zu Optimierungszwecken sowie zur Steigerung der Nutzungsqualität eingesetzten Fremdkomponenten, soweit hierdurch Dritte Daten in wiederum eigener Verantwortung verarbeiten.

Änderung und Aktualisierung der Datenschutzerklärung
Wir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) oder eine sonstige individuelle Benachrichtigung erforderlich wird.
Sofern wir in dieser Datenschutzerklärung Adressen und Kontaktinformationen von Unternehmen und Organisationen angeben, bitten wir zu beachten, dass die Adressen sich über die Zeit ändern können und bitten die Angaben vor Kontaktaufnahme zu prüfen.

Unsere Datenschutzerklärung ist wie folgt gegliedert:
I. Informationen über uns als Verantwortliche
II. Rechte der Nutzer und Betroffenen
III. Informationen zur Datenverarbeitung
I. Informationen über uns als Verantwortliche

Verantwortlicher Anbieter dieses Internetauftritts im datenschutzrechtlichen Sinne ist:

Maryna Lysenko
St. Georgstraße 8
20099 Hamburg
Tel: 0175 83 96 987
E-Mail: m.lysenko.massage@gmail.com

Datenschutzbeauftragter:
Wir sind gesetzlich nicht dazu verpflichtet, einen Datenschutzbeauftragten zu benennen.

II. Rechte der Nutzer und Betroffenen
Mit Blick auf die nachfolgend noch näher beschriebene Datenverarbeitung haben die Nutzer und Betroffenen das Recht
· auf Bestätigung, ob sie betreffende Daten verarbeitet werden, auf Auskunft über die verarbeiteten Daten, auf weitere Informationen über die Datenverarbeitung sowie auf Kopien der Daten (vgl. auch Art. 15 DSGVO);
· auf Berichtigung oder Vervollständigung unrichtiger bzw. unvollständiger Daten (vgl. auch Art. 16 DSGVO);
· auf unverzügliche Löschung der sie betreffenden Daten (vgl. auch Art. 17 DSGVO), oder, alternativ, soweit eine weitere Verarbeitung gemäß Art. 17 Abs. 3 DSGVO erforderlich ist, auf Einschränkung der Verarbeitung nach Maßgabe von Art. 18 DSGVO;
· auf Erhalt der sie betreffenden und von ihnen bereitgestellten Daten und auf Übermittlung dieser Daten an andere Anbieter/Verantwortliche (vgl. auch Art. 20 DSGVO);
· auf Beschwerde gegenüber der Aufsichtsbehörde, sofern sie der Ansicht sind, dass die sie betreffenden Daten durch den Anbieter unter Verstoß gegen datenschutzrechtliche Bestimmungen verarbeitet werden (vgl. auch Art. 77 DSGVO).
Darüber hinaus ist der Anbieter dazu verpflichtet, alle Empfänger, denen gegenüber Daten durch den Anbieter offengelegt worden sind, über jedwede Berichtigung oder Löschung von Daten oder die Einschränkung der Verarbeitung, die aufgrund der Artikel 16, 17 Abs. 1, 18 DSGVO erfolgt, zu unterrichten. Diese Verpflichtung besteht jedoch nicht, soweit diese Mitteilung unmöglich oder mit einem unverhältnismäßigen Aufwand verbunden ist. Unbeschadet dessen hat der Nutzer ein Recht auf Auskunft über diese Empfänger.
Ebenfalls haben die Nutzer und Betroffenen nach Art. 21 DSGVO das Recht auf Widerspruch gegen die künftige Verarbeitung der sie betreffenden Daten, sofern die Daten durch den Anbieter nach Maßgabe von Art. 6 Abs. 1 lit. f) DSGVO verarbeitet werden. Insbesondere ist ein Widerspruch gegen die Datenverarbeitung zum Zwecke der Direktwerbung statthaft.

III. Informationen zur Datenverarbeitung
Ihre bei Nutzung unseres Internetauftritts verarbeiteten Daten werden gelöscht oder gesperrt, sobald der Zweck der Speicherung entfällt, der Löschung der Daten keine gesetzlichen Aufbewahrungspflichten entgegenstehen und nachfolgend keine anderslautenden Angaben zu einzelnen Verarbeitungsverfahren gemacht werden.
Serverdaten
Aus technischen Gründen, insbesondere zur Gewährleistung eines sicheren und stabilen Internetauftritts, werden Daten durch Ihren Internet-Browser an uns bzw. an unseren Webspace-Provider übermittelt. Mit diesen sog. Server-Logfiles werden u.a. Typ und Version Ihres Internetbrowsers, das Betriebssystem, die Website, von der aus Sie auf unseren Internetauftritt gewechselt haben (Referrer URL), die Website(s) unseres Internetauftritts, die Sie besuchen, Datum und Uhrzeit des jeweiligen Zugriffs sowie die IP-Adresse des Internetanschlusses, von dem aus die Nutzung unseres Internetauftritts erfolgt, erhoben.
Diese so erhobenen Daten werden vorrübergehend gespeichert, dies jedoch nicht gemeinsam mit anderen Daten von Ihnen.
Diese Speicherung erfolgt auf der Rechtsgrundlage von Art. 6 Abs. 1 lit. f) DSGVO. Unser berechtigtes Interesse liegt in der Verbesserung, Stabilität, Funktionalität und Sicherheit unseres Internetauftritts.
Die Daten werden spätestens nach sieben Tage wieder gelöscht, soweit keine weitere Aufbewahrung zu Beweiszwecken erforderlich ist. Andernfalls sind die Daten bis zur endgültigen Klärung eines Vorfalls ganz oder teilweise von der Löschung ausgenommen.

Cookies

a) Sitzungs-Cookies/Session-Cookies
Wir verwenden mit unserem Internetauftritt sog. Cookies. Cookies sind kleine Textdateien oder andere Speichertechnologien, die durch den von Ihnen eingesetzten Internet-Browser auf Ihrem Endgerät ablegt und gespeichert werden. Durch diese Cookies werden im individuellen Umfang bestimmte Informationen von Ihnen, wie beispielsweise Ihre Browser- oder Standortdaten oder Ihre IP-Adresse, verarbeitet.
Durch diese Verarbeitung wird unser Internetauftritt benutzerfreundlicher, effektiver und sicherer, da die Verarbeitung bspw. die Wiedergabe unseres Internetauftritts in unterschiedlichen Sprachen oder das Angebot einer Warenkorbfunktion ermöglicht.
Rechtsgrundlage dieser Verarbeitung ist Art. 6 Abs. 1 lit b.) DSGVO, sofern diese Cookies Daten zur Vertragsanbahnung oder Vertragsabwicklung verarbeitet werden.
Falls die Verarbeitung nicht der Vertragsanbahnung oder Vertragsabwicklung dient, liegt unser berechtigtes Interesse in der Verbesserung der Funktionalität unseres Internetauftritts. Rechtsgrundlage ist in dann Art. 6 Abs. 1 lit. f) DSGVO.
Mit Schließen Ihres Internet-Browsers werden diese Session-Cookies gelöscht.

b) Drittanbieter-Cookies
Gegebenenfalls werden mit unserem Internetauftritt auch Cookies von Partnerunternehmen, mit denen wir zum Zwecke der Werbung, der Analyse oder der Funktionalitäten unseres Internetauftritts zusammenarbeiten, verwendet.
Die Einzelheiten hierzu, insbesondere zu den Zwecken und den Rechtsgrundlagen der Verarbeitung solcher Drittanbieter-Cookies, entnehmen Sie bitte den nachfolgenden Informationen.

c) Beseitigungsmöglichkeit
Sie können die Installation der Cookies durch eine Einstellung Ihres Internet-Browsers verhindern oder einschränken. Ebenfalls können Sie bereits gespeicherte Cookies jederzeit löschen. Die hierfür erforderlichen Schritte und Maßnahmen hängen jedoch von Ihrem konkret genutzten Internet-Browser ab. Bei Fragen benutzen Sie daher bitte die Hilfefunktion oder Dokumentation Ihres Internet-Browsers oder wenden sich an dessen Hersteller bzw. Support. Bei sog. Flash-Cookies kann die Verarbeitung allerdings nicht über die Einstellungen des Browsers unterbunden werden. Stattdessen müssen Sie insoweit die Einstellung Ihres Flash-Players ändern. Auch die hierfür erforderlichen Schritte und Maßnahmen hängen von Ihrem konkret genutzten Flash-Player ab. Bei Fragen benutzen Sie daher bitte ebenso die Hilfefunktion oder Dokumentation Ihres Flash-Players oder wenden sich an den Hersteller bzw. Benutzer-Support.
Sollten Sie die Installation der Cookies verhindern oder einschränken, kann dies allerdings dazu führen, dass nicht sämtliche Funktionen unseres Internetauftritts vollumfänglich nutzbar sind.
Kontaktanfragen / Kontaktmöglichkeit
Sofern Sie per Kontaktformular oder E-Mail mit uns in Kontakt treten, werden die dabei von Ihnen angegebenen Daten zur Bearbeitung Ihrer Anfrage genutzt. Die Angabe der Daten ist zur Bearbeitung und Beantwortung Ihre Anfrage erforderlich – ohne deren Bereitstellung können wir Ihre Anfrage nicht oder allenfalls eingeschränkt beantworten.
Rechtsgrundlage für diese Verarbeitung ist Art. 6 Abs. 1 lit. b) DSGVO.
Ihre Daten werden gelöscht, sofern Ihre Anfrage abschließend beantwortet worden ist und der Löschung keine gesetzlichen Aufbewahrungspflichten entgegenstehen, wie bspw. bei einer sich etwaig anschließenden Vertragsabwicklung.

Management, Organisation und Hilfswerkzeuge
Wir setzen Dienstleistungen, Plattformen und Software anderer Anbieter (nachfolgend bezeichnet als “Drittanbieter”) zu Zwecken der Organisation, Verwaltung, Planung sowie Erbringung unserer Leistungen ein. Bei der Auswahl der Drittanbieter und ihrer Leistungen beachten wir die gesetzlichen Vorgaben.
In diesem Rahmen können personenbezogenen Daten verarbeitet und auf den Servern der Drittanbieter gespeichert werden. Hiervon können diverse Daten betroffen sein, die wir entsprechend dieser Datenschutzerklärung verarbeiten. Zu diesen Daten können insbesondere Stammdaten und Kontaktdaten der Nutzer, Daten zu Vorgängen, Verträgen, sonstigen Prozessen und deren Inhalte gehören.
Sofern Nutzer im Rahmen der Kommunikation, von Geschäfts- oder anderen Beziehungen mit uns auf die Drittanbieter bzw. deren Software oder Plattformen verwiesen werden, können die Drittanbieter Nutzungsdaten und Metadaten zu Sicherheitszwecken, zur Serviceoptimierung oder zu Marketingzwecken verarbeiten. Wir bitten daher darum, die Datenschutzhinweise der jeweiligen Drittanbieter zu beachten.
Verarbeitete Datenarten: Inhaltsdaten (z.B. Eingaben in Onlineformularen); Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten). Meta-, Kommunikations- und Verfahrensdaten (z. B. IP-Adressen, Zeitangaben, Identifikationsnummern, Einwilligungsstatus).
Betroffene Personen: Kommunikationspartner. Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).
Zwecke der Verarbeitung: Erbringung vertraglicher Leistungen und erfüllung vertraglicher Pflichten. Büro- und Organisationsverfahren.

Buchung

Anfrageformular

Buchung

Salonregeln

  1. Bei einer Absage weniger als 24 Stunden vor dem Termin ist eine Zahlung von 50% des Dienstleistungspreises erforderlich.

     

  2. Verspätung: Wenn Sie mehr als 10 Minuten zu spät kommen, wird die Massagezeit entsprechend verkürzt.

     

  3. Abonement: Wenn Sie ein Abonement gekauft haben und die Buchung weniger als 24 Stunden vor dem Termin absagen, verfällt die Massageeinheit.