// Popver für die Variantenn
document.addEventListener("DOMContentLoaded", function () {
    [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).forEach(function (e) {
        e.hasAttribute("data-bs-popover-initialized") || (new bootstrap.Popover(e, {
            trigger: "hover"
        }), e.setAttribute("data-bs-popover-initialized", "true"))
    });
    let e = new MutationObserver(function () {
        [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]:not([data-bs-popover-initialized])')).forEach(function (e) {
            new bootstrap.Popover(e, {
                trigger: "hover"
            }), e.setAttribute("data-bs-popover-initialized", "true")
        })
    });
    e.observe(document.body, {
        childList: !0,
        subtree: !0
    })
});

// Beschreibungscollapse verkleinern
document.addEventListener("DOMContentLoaded", function () {
    // Zielknoten, den wir beobachten möchten
    const targetNode = document.body;

    // Optionen für den Observer (wir beobachten Attribut-Änderungen und den gesamten Subtree)
    const config = {attributes: true, subtree: true, attributeFilter: ['class']};

    // Callback-Funktion, die ausgeführt wird, wenn Mutationen auftreten
    const callback = function (mutationsList, observer) {
        for (let mutation of mutationsList) {
            if (mutation.type === 'attributes' && mutation.target.classList.contains('show')) {
                // Suche nach einem geöffneten Collapse-Element mit einer ID, die mit "description-tab-" beginnt
                const openPanel = mutation.target.matches('.collapse[id^="description-tab-"]') ? mutation.target : null;
                if (openPanel) {
                    // Hole die ID des geöffneten Elements
                    const id = openPanel.id;

                    // Finde das entsprechende Steuerungselement und simuliere einen Klick darauf
                    const controlElement = document.querySelector("[data-bs-target='#" + id + "']");
                    if (controlElement) {
                        controlElement.click();  // Klickt, um das Panel zu schließen

                        // Stoppt den Observer nach dem ersten erfolgreichen Schließen
                        observer.disconnect();
                        break;
                    }
                }
            }
        }
    };

    // Erstellen eines neuen MutationObservers und Starten der Überwachung
    const observer = new MutationObserver(callback);
    observer.observe(targetNode, config);

});

// Warenkorb Button
document.addEventListener("DOMContentLoaded", function () {
    const cartButton = document.querySelector('.btn-cart');
    const stickyCartButton = document.getElementById('sticky-cart-button');
    const footer = document.querySelector('footer');

    function toggleStickyCartButton() {
        const cartButtonRect = cartButton.getBoundingClientRect();
        const footerRect = footer.getBoundingClientRect();
        const isCartButtonAboveViewport = cartButtonRect.bottom < 0; // Prüfen, ob der Button aus dem oberen Sichtbereich raus ist
        const isFooterVisible = footerRect.top <= window.innerHeight; // Prüfen, ob der Footer sichtbar ist
        const isAtTop = window.scrollY === 0; // Prüfen, ob der Benutzer ganz oben ist

        if (isCartButtonAboveViewport && !isFooterVisible && !isAtTop) {
            stickyCartButton.classList.remove('hide');
            stickyCartButton.classList.add('show');
        } else {
            stickyCartButton.classList.remove('show');
            stickyCartButton.classList.add('hide');
        }
    }

    // Initiale Überprüfung
    toggleStickyCartButton();

    // Überwache das Scrollen
    window.addEventListener('scroll', toggleStickyCartButton);
});