/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.0
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* Add your custom styles here */

// ALTCHA Warte, bis das DOM vollständig geladen ist
document.addEventListener("DOMContentLoaded", function() {

    // Beobachter für DOM-Änderungen, um Popups zu erkennen
    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.addedNodes.length) {
                mutation.addedNodes.forEach(function(node) {
                    // Überprüfe, ob der hinzugefügte Knoten ein Elementor Popup ist
                    if (node.nodeType === 1 && node.classList.contains("elementor-popup-modal")) {
                        console.log("Elementor Popup erkannt.");
                        var popup = node;
                        var form = popup.querySelector("form.elementor-form");
                        // Wichtig: Wähle das sichtbare (funktionierende) ALTCHA-Widget aus
                        var altchaWidget = popup.querySelector(".altcha:not([style*=\"display: none\"]) altcha-widget");

                        if (form && altchaWidget) {
                            // Füge einen Event-Listener für das Formular-Submit hinzu
                            form.addEventListener("submit", function(event) {
                                event.preventDefault(); // Verhindere das Standard-Submit-Verhalten
                                console.log("Formular-Submit im Popup abgefangen.");

                                // Überprüfe, ob das ALTCHA-Widget bereits verifiziert ist
                                if (altchaWidget.dataset.state === "verified") {
                                    console.log("ALTCHA bereits verifiziert, Formular wird direkt gesendet.");
                                    form.submit(); // Sende das Formular ab
                                    return;
                                }

                                // Manuelle Verifizierung des ALTCHA-Widgets
                                altchaWidget.verify().then(function() {
                                    console.log("ALTCHA erfolgreich verifiziert, Formular wird gesendet.");
                                    // Nachdem ALTCHA verifiziert wurde, muss das versteckte Feld aktualisiert werden.
                                    // Das ALTCHA-Widget sollte dies intern tun, aber wir können es hier überprüfen.
                                    var hiddenInput = form.querySelector("input[name=\"form_fields[field_d39944d]\"]");
                                    if (hiddenInput && !hiddenInput.value) {
                                        // Fallback: Wenn das versteckte Feld immer noch leer ist, setze einen Dummy-Wert
                                        // Dies ist ein Workaround, falls das Widget das Feld nicht korrekt füllt.
                                        hiddenInput.value = "altcha_verified"; 
                                        console.log("Verstecktes ALTCHA-Feld manuell aktualisiert.");
                                    }
                                    form.submit(); // Sende das Formular ab
                                }).catch(function(error) {
                                    console.error("ALTCHA Verifizierung fehlgeschlagen:", error);
                                    alert("ALTCHA Verifizierung fehlgeschlagen. Bitte versuchen Sie es erneut.");
                                });
                            });
                            console.log("ALTCHA Submit-Handler für Popup-Formular hinzugefügt.");
                        }
                    }
                });
            }
        });
    });

    // Starte den Beobachter für den Body, um Änderungen zu erkennen
    observer.observe(document.body, {
        childList: true, // Beobachte direkte Kinder
        subtree: true    // Beobachte alle Nachkommen
    });
});