// source --> https://experimenteausmeinerkueche.de/wp-content/plugins/qmnr/js/qmn.js?ver=1.19.9 
const pid = document.querySelector("#rqmnScript").dataset.pid;
const wmids = document.querySelector("#rqmnScript").dataset.wmids;

const parsedWmids = JSON.parse(wmids);

function handleClick(tcData, event) {
  const getWmid = () => {
    switch (event.target.closest(".track-click-container").id) {
      case "single_view":
        return parsedWmids[0];
      case "limited_view":
        return parsedWmids[1];
      case "all_view":
        return parsedWmids[2];
      default:
        break;
    }
  };

  const referrer = document.location.hostname + document.location.pathname;

  fetch(
    `https://ads.qualitymedianetwork.de/adclick.php?pid=${pid}&wmid=${getWmid()}&gdpr=${
      tcData.gdprApplies ? 1 : 0
    }&gdpr_consent=${tcData.tcString}&ref=${referrer}`,
    { keepalive: true }
  );
}

let observerRef = null;
let clickCallback = null;

const callback = (event, success) => {
  if (success) {
    if (
      event.eventStatus === "tcloaded" ||
      event.eventStatus === "useractioncomplete"
    ) {
      // Extract consent string and relevant flags
      window.__tcfapi("getTCData", 2, (tcData, success) => {
        if (success) {
          if (observerRef) {
            observerRef.disconnect();
          }

          if (clickCallback) {
            document.querySelectorAll(".track-click").forEach((element) => {
              element.removeEventListener("click", clickCallback);
            });
          }

          const consentGiven = tcData.purpose.consents[1]; // Purpose 1: Storage and Access
          if (consentGiven) {
            // Initialize Intersection Observer
            const observer = new IntersectionObserver(
              (entries, observer) => {
                entries.forEach((entry) => {
                  if (entry.isIntersecting) {
                    const getWmid = () => {
                      switch (entry.target.id) {
                        case "single_view":
                          return parsedWmids[0];
                        case "limited_view":
                          return parsedWmids[1];
                        case "all_view":
                          return parsedWmids[2];
                        default:
                          break;
                      }
                    };

                    const referrer =
                      document.location.hostname + document.location.pathname;

                    function createHiddenIframe(src, parentSelector = "body") {
                      // Erstelle das iframe-Element
                      const iframe = document.createElement("iframe");
                      iframe.src = src;
                      iframe.style.display = "none"; // Versteckt das iFrame zu Beginn
                      iframe.style.width = "1px"; // Optional: Breite setzen
                      iframe.style.height = "1px"; // Optional: Höhe setzen

                      // Füge das iframe in den angegebenen Container oder Body ein
                      const parent = document.querySelector(parentSelector);
                      if (parent) {
                        parent.appendChild(iframe);
                      } else {
                        document.body.appendChild(iframe);
                      }

                      return iframe; // Gibt das erstellte iFrame-Element zurück
                    }

                    createHiddenIframe(
                      `https://ads.qualitymedianetwork.de/adframe.php?pid=${pid}&wmid=${getWmid()}&gdpr=${
                        tcData.gdprApplies ? 1 : 0
                      }&gdpr_consent=${tcData.tcString}&ref=${referrer}`
                    );

                    // Optionally, unobserve the element if you only want to track the first view
                    observer.unobserve(entry.target);
                  }
                });
              },
              {
                root: null, // Observe relative to the viewport
                threshold: 0.1, // Trigger when 10% of the element is in view
              }
            );

            observerRef = observer;

            // Observe the target element
            document
              .querySelectorAll(".track-in-viewport")
              .forEach((element) => {
                observer.observe(element);
              });

            const boundClickHandler = handleClick.bind(null, tcData);

            document.querySelectorAll(".track-click").forEach((element) => {
              element.addEventListener("click", boundClickHandler);
            });

            clickCallback = boundClickHandler;
          }
        }
      });
    }
  }
};

if (typeof window.__tcfapi === "function") {
  window.__tcfapi("addEventListener", 2, callback);
} else {
  let tries = 0;
  let isRegistered = false;
  const interval = setInterval(() => {
    if (typeof window.__tcfapi === "function" && !isRegistered) {
      isRegistered = true;
      window.__tcfapi("addEventListener", 2, callback);
      clearInterval(interval);
    } else {
      tries++;

      if (tries >= 5) {
        clearInterval(interval);
      }
    }
  }, 3000);
};
// source --> https://experimenteausmeinerkueche.de/wp-content/plugins/qmnr/js/qmnr-title-style.js?ver=1.19.9 
const qmnr_script = window.document.currentScript;
const qmnr_selector = qmnr_script.dataset.selector || "h2";

const qmnr_computedStyle = window.getComputedStyle(
  document.querySelector(qmnr_selector)
);

const qmnr_titleStyle = {
  fontFamily: qmnr_computedStyle.fontFamily,
  fontSize: qmnr_computedStyle.fontSize,
  fontWeight: qmnr_computedStyle.fontWeight,
  lineHeight: qmnr_computedStyle.lineHeight,
  color: qmnr_computedStyle.color,
};

const qmnr_headings = document.querySelectorAll("#all_view .qmnr-heading");

qmnr_headings.forEach(
  (heading) =>
    (heading.style = `font-family: ${qmnr_titleStyle.fontFamily};
  font-size: ${qmnr_titleStyle.fontSize};
  font-weight: ${qmnr_titleStyle.fontWeight};
  line-height: ${qmnr_titleStyle.lineHeight};
  color: ${qmnr_titleStyle.color};`)
);