{
  "version": 3,
  "sources": ["/cdn/shop/t/21/assets/mhsys-anfrage.js?x=15868"],
  "sourcesContent": ["/* Individuelle Anfrage (Roadmap 3.48 Paket N-T, Format von Enna 25.09.2026). EIN Baustein fuer die Seite\n * /pages/anfrage und das Overlay auf der Produktseite: sections/mhsys-anfrage.liquid liefert die Ansicht, dieses\n * Skript startet je Wurzel [data-mhsys-anfrage].\n *   - Seite: geladen aus layout/theme.liquid (template.suffix \"anfrage\"), SKU aus ?sku=.\n *   - Overlay: snippets/mhsys-anfrage-oeffner.liquid laedt Skript, CSS und die Section (Section Rendering API)\n *     erst beim Klick und ruft window.mhsysAnfrage.oeffnen(sku, link) - die Produktseite bleibt darunter stehen.\n *\n * Proxy: POST /apps/kunde?bereich=anfrage&teil=\u2026\n *   produkt   {sku}                                  -> {ok, sku, name, bild, box, versandarten?, grenzen?}\n *   details   {vorgang, sku, art, anzahl, versand, karten, liefertermin, text, produkt, dateien}\n *   kontakt   {name, firma, email, telefon}          -> {ok} | {ok:false, fehler:\"felder\", meldungen:[\u2026]}\n *   datei     multipart vorgang, datei               -> {ok, kennung, name, groesse} | {ok:false, fehler, meldung?}\n *   datei_weg {vorgang, kennung}                     -> {ok}\n *   absenden  alles + website + _stempel             -> {ok, nummer, conversion?} | {ok:false, fehler, meldung?|meldungen?}\n *             conversion {send_to, transaction_id, value?, currency?} nur, wenn sie im Werbe-Check steht (conversionMelden)\n * Ein zweites Absenden mit demselben vorgang liefert dieselbe Nummer - Doppelklick und Wiederholen sind harmlos.\n *\n * Zwischenstand je Tab in sessionStorage \"mhsysAnfrage\" (vorgang, Eingaben, Dateien) - nie in der Adresse. Eine\n * andere SKU faengt neu an, nach dem Absenden wird er geloescht. Alle Werte per textContent/value (Konzept 3.7).\n */\n(function () {\n  \"use strict\";\n  if (window.mhsysAnfrage) return;\n\n  var ADRESSE = \"/apps/kunde?bereich=anfrage&teil=\";\n  var SPEICHER = \"mhsysAnfrage\";\n  var VERSAND = { SAMMEL: \"Sammelversand an eine Adresse\", EINZEL: \"Einzelversand an jeden Empf\u00E4nger\" };\n  var ARTEN = { GESCHENKBOX: \"Geschenkboxen\", PRODUKT: \"Produkt individuell\" };\n  var GRENZEN = { dateien: 10, datei_bytes: 10 * 1024 * 1024 };\n  var ENDUNGEN = /\\.(jpe?g|png|webp|gif|pdf|xlsx?|csv|docx?)$/i;\n\n  function text(v) { return v === null || v === undefined ? \"\" : String(v); }\n  function el(tag, klasse, inhalt) {\n    var e = document.createElement(tag);\n    if (klasse) e.className = klasse;\n    if (inhalt) e.textContent = inhalt;\n    return e;\n  }\n  function hex32() {\n    var b = new Uint8Array(16);\n    (window.crypto || window.msCrypto).getRandomValues(b);\n    return Array.prototype.map.call(b, function (x) { return (\"0\" + x.toString(16)).slice(-2); }).join(\"\");\n  }\n  function lesen() { try { return JSON.parse(sessionStorage.getItem(SPEICHER) || \"null\"); } catch (e) { return null; } }\n  function merken(v) { try { v ? sessionStorage.setItem(SPEICHER, JSON.stringify(v)) : sessionStorage.removeItem(SPEICHER); } catch (e) {} }\n  function groesse(b) { return b >= 1048576 ? (b / 1048576).toFixed(1).replace(\".\", \",\") + \" MB\" : Math.max(1, Math.round(b / 1024)) + \" KB\"; }\n  function heuteBerlin(tage) {\n    var d = new Date(Date.now() + (tage || 0) * 86400000);\n    try { return window.mhsysBerlin ? window.mhsysBerlin(d).ymd : new Intl.DateTimeFormat(\"sv-SE\", { timeZone: \"Europe/Berlin\" }).format(d); } catch (e) { return d.toISOString().slice(0, 10); }\n  }\n  function nurHttps(u) { u = text(u); return /^https:\\/\\/[^\\s\"'<>]+$/i.test(u) ? u : \"\"; }\n\n  // Mit Zeitlimit (layout/theme.liquid, Roadmap 7.44): antwortet mhsys nicht, kommt der Fehler-Zustand statt ewigem Laden\n  function holen(url, init) { return window.mhsysNetz ? window.mhsysNetz.holen(url, init) : fetch(url, init); }\n  function post(teil, rumpf) {\n    return holen(ADRESSE + teil, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n      body: JSON.stringify(rumpf),\n      credentials: \"same-origin\",\n      cache: \"no-store\",\n    })\n      .then(function (r) { return r.json().catch(function () { return { ok: false, fehler: \"antwort\" }; }); })\n      .then(function (a) { return a && typeof a === \"object\" ? a : { ok: false, fehler: \"antwort\" }; })\n      .catch(function () { return { ok: false, fehler: \"netz\" }; });\n  }\n\n  /* ================= Ein Formular je Wurzel ================= */\n  function starten(wurzel, opt) {\n    if (!wurzel || wurzel.getAttribute(\"data-an-bereit\")) return;\n    wurzel.setAttribute(\"data-an-bereit\", \"1\");\n    opt = opt || {};\n    var sku = text(opt.sku).trim().slice(0, 50);\n    /* Zeitstempel statt _dauer (Roadmap 7.59): window.mhsysStempel aus mhsys-kopf.js haengt _stempel an, warm geholt beim Oeffnen */\n    function stempeln(r) { return window.mhsysStempel ? window.mhsysStempel.mit(r) : Promise.resolve(r); }\n    if (window.mhsysStempel) window.mhsysStempel.vor();\n    var $ = function (s) { return wurzel.querySelector(s); };\n    var $$ = function (s) { return Array.prototype.slice.call(wurzel.querySelectorAll(s)); };\n    var fDetails = $(\"[data-an-details]\");\n    var fKontakt = $(\"[data-an-kontakt]\");\n    var laeuft = false;\n    var hochladen = 0;\n    // Bis zur Antwort: mit SKU gilt das Produkt als bekannt (das Freitextfeld bleibt zu), sonst wie zuletzt gemerkt\n    var produkt = { geladen: false, name: null, frei: !sku, box: false };\n    var versandarten = VERSAND;\n    var grenzen = GRENZEN;\n\n    // Zwischenstand: nur fuer dieselbe SKU weiter, sonst neu\n    var st = lesen();\n    if (!st || st.sku !== sku || !/^[0-9a-f]{32}$/.test(text(st.vorgang))) {\n      st = { sku: sku, vorgang: hex32(), schritt: \"1\", art: \"\", werte: {}, kontakt: {}, dateien: [] };\n    }\n    function sichern() { merken(st); }\n    if (typeof st.produktFrei === \"boolean\") produkt.frei = st.produktFrei;\n\n    // Rueckweg bei Fehlern ist das Postfach (sections/mhsys-anfrage.liquid) - der Link auf service.mhsys.de mit der SKU\n    // fuehrte seit 17.10.2026 im Kreis zurueck hierher (Befund L9, mhsys docs/auftraege/3.124.md)\n\n    // Im Overlay fuehrt der Abschluss zurueck zum Artikel\n    if (opt.schliessen) {\n      var zs = $('[data-an-schritt=\"fertig\"] a.mhsys-knopf');\n      if (zs) {\n        var k = el(\"button\", \"mhsys-knopf mhsys-knopf--rand\", \"Zur\u00FCck zum Artikel\");\n        k.type = \"button\";\n        k.addEventListener(\"click\", opt.schliessen);\n        zs.replaceWith(k);\n      }\n    }\n\n    /* ---- Anzeige ---- */\n    function meldungen(liste) {\n      var m = $(\"[data-an-meldungen]\");\n      m.textContent = \"\";\n      liste = (liste || []).filter(Boolean);\n      m.hidden = !liste.length;\n      if (!liste.length) return;\n      if (liste.length === 1) { m.textContent = text(liste[0]); }\n      else { var ul = el(\"ul\", \"mhsys-an__meldungsliste\"); liste.forEach(function (s) { ul.appendChild(el(\"li\", \"\", text(s))); }); m.appendChild(ul); }\n      m.focus({ preventScroll: true });\n      m.scrollIntoView({ block: \"nearest\" });\n    }\n    var erstesMal = true;\n    function zeigen(schritt) {\n      st.schritt = String(schritt);\n      // Den letzten echten Schritt merken: \"Noch einmal versuchen\" fuehrt dorthin zurueck\n      if (/^[1-4]$/.test(st.schritt)) { st.letzter = st.schritt; sichern(); }\n      $$(\"[data-an-schritt]\").forEach(function (s) { s.hidden = s.getAttribute(\"data-an-schritt\") !== st.schritt; });\n      $$(\"[data-an-punkt]\").forEach(function (p) {\n        var n = +p.getAttribute(\"data-an-punkt\");\n        p.classList.toggle(\"ist-fertig\", /^\\d$/.test(st.schritt) && n < +st.schritt);\n        if (p.getAttribute(\"data-an-punkt\") === st.schritt) p.setAttribute(\"aria-current\", \"step\"); else p.removeAttribute(\"aria-current\");\n      });\n      var leiste = $(\"[data-an-schritte]\");\n      if (leiste) leiste.hidden = !/^[1-4]$/.test(st.schritt);\n      meldungen([]);\n      if (st.schritt === \"2\") detailsZeichnen();\n      if (st.schritt === \"4\") pruefenZeichnen();\n      // Beim Aufbau nicht scrollen - erst beim Wechsel zwischen den Schritten\n      if (erstesMal) { erstesMal = false; return; }\n      var dlg = opt.schliessen ? wurzel.closest(\"dialog\") : null;\n      if (dlg) dlg.scrollTop = 0; else wurzel.scrollIntoView({ block: \"start\" });\n    }\n\n    /* ---- Produkt aus der SKU ---- */\n    function produktZeichnen() {\n      var p = $(\"[data-an-produkt]\");\n      p.removeAttribute(\"aria-busy\");\n      if (!sku) { p.hidden = true; return; }\n      p.hidden = false;\n      var bild = $(\"[data-an-produkt-bild]\");\n      bild.textContent = \"\";\n      if (produkt.name) {\n        var src = nurHttps(produkt.bild);\n        if (src) { var i = el(\"img\"); i.src = src; i.alt = \"\"; i.width = 56; i.height = 56; i.loading = \"lazy\"; bild.appendChild(i); }\n        $(\"[data-an-produkt-name]\").textContent = produkt.name;\n        $(\"[data-an-produkt-meta]\").textContent = \"Artikelnummer \" + sku;\n        p.classList.remove(\"ist-unbekannt\");\n      } else {\n        // Kurz halten, der Platz ist fest - was zu tun ist, sagt das Feld im naechsten Schritt\n        $(\"[data-an-produkt-name]\").textContent = \"Produkt nicht gefunden\";\n        $(\"[data-an-produkt-meta]\").textContent = \"Artikelnummer \" + sku;\n        p.classList.add(\"ist-unbekannt\");\n      }\n    }\n    function produktLaden() {\n      return post(\"produkt\", { sku: sku }).then(function (a) {\n        if (!a.ok) { fehler(); return false; }\n        produkt = { geladen: true, name: a.name ? text(a.name) : null, frei: !a.name, box: !!a.box, bild: a.bild };\n        st.produktFrei = produkt.frei;\n        if (a.versandarten && typeof a.versandarten === \"object\") versandarten = a.versandarten;\n        if (a.grenzen && typeof a.grenzen === \"object\") {\n          grenzen = { dateien: +a.grenzen.dateien || GRENZEN.dateien, datei_bytes: +a.grenzen.datei_bytes || GRENZEN.datei_bytes };\n          var h = $(\"[data-an-datei-grenzen]\");\n          if (h) h.textContent = \"Bis zu \" + grenzen.dateien + \" Dateien \u2013 Bilder (JPG, PNG), PDF, Excel, CSV oder Word, je h\u00F6chstens \" + Math.floor(grenzen.datei_bytes / 1048576) + \" MB. Logos am besten als PDF oder PNG.\";\n        }\n        produktZeichnen();\n        // Vorwahl der Art nur, solange noch nichts gewaehlt ist\n        if (!st.art && (produkt.box || produkt.name)) { st.art = produkt.box ? \"GESCHENKBOX\" : \"PRODUKT\"; artSetzen(); sichern(); }\n        if (st.schritt === \"2\") detailsZeichnen();\n        return true;\n      });\n    }\n\n    /* ---- Schritt 1 ---- */\n    function artSetzen() { $$(\"[data-an-art]\").forEach(function (r) { r.checked = r.value === st.art; }); }\n    $$(\"[data-an-art]\").forEach(function (r) {\n      r.addEventListener(\"change\", function () { if (r.checked) { st.art = r.value; sichern(); } });\n    });\n    $('[data-an-weiter=\"1\"]').addEventListener(\"click\", function () {\n      if (!st.art) { meldungen([\"Bitte w\u00E4hl aus, was du anfragen m\u00F6chtest.\"]); return; }\n      zeigen(2);\n    });\n\n    /* ---- Schritt 2 ---- */\n    var box = function () { return st.art === \"GESCHENKBOX\"; };\n    function detailsZeichnen() {\n      var b = box();\n      $(\"[data-an-details-titel]\").textContent = b ? \"Wie viele Boxen und bis wann?\" : \"Was brauchst du?\";\n      $(\"[data-an-details-text]\").textContent = b ? \"Eine ungef\u00E4hre Zahl reicht \u2013 genau wird es im Angebot.\" : \"Eine ungef\u00E4hre St\u00FCckzahl reicht \u2013 genau wird es im Angebot.\";\n      $(\"[data-an-produkt-frei]\").hidden = !produkt.frei;\n      $(\"[data-an-produkt-label]\").textContent = b ? \"Welche Geschenkbox? (freiwillig)\" : \"Um welches Produkt geht es? *\";\n      fDetails.elements.produkt.placeholder = b ? \"z. B. Geschenkbox \u201EOis Wurscht!\u201C \u2013 oder noch offen\" : \"z. B. Bierkrug mit Wunschname\";\n      $(\"[data-an-anzahl-label]\").textContent = b ? \"Anzahl Boxen *\" : \"St\u00FCckzahl *\";\n      $$(\"[data-an-nur-box]\").forEach(function (x) { x.hidden = !b; });\n      $$(\"[data-an-nur-produkt]\").forEach(function (x) { x.hidden = b; });\n      $(\"[data-an-text-label]\").textContent = b ? \"Weitere Hinweise (freiwillig)\" : \"Personalisierung (freiwillig)\";\n      fDetails.elements.text.placeholder = b ? \"z. B. Kartentext, Logo auf dem Aufkleber, Budget je Box\" : \"z. B. Firmenlogo vorne, darunter der Vorname jedes Mitarbeiters\";\n      $(\"[data-an-dateien-text]\").textContent = b ? \"Zum Beispiel die Empf\u00E4ngerliste mit Adressen und Kartentexten oder dein Logo.\" : \"Zum Beispiel dein Logo, ein Motiv oder eine Liste mit Namen.\";\n      fDetails.elements.liefertermin.min = heuteBerlin(1);\n      dateienZeichnen();\n    }\n    function werteLesen() {\n      var f = fDetails.elements;\n      var radio = function (n) { var r = fDetails.querySelector('input[name=\"' + n + '\"]:checked'); return r ? r.value : \"\"; };\n      st.werte = {\n        produkt: text(f.produkt.value).trim(),\n        anzahl: text(f.anzahl.value).trim(),\n        liefertermin: text(f.liefertermin.value).trim(),\n        versand: radio(\"versand\"),\n        karten: radio(\"karten\"),\n        text: text(f.text.value),\n      };\n    }\n    function werteSetzen() {\n      var w = st.werte || {}, f = fDetails.elements;\n      f.produkt.value = text(w.produkt);\n      f.anzahl.value = text(w.anzahl);\n      f.liefertermin.value = text(w.liefertermin);\n      f.text.value = text(w.text);\n      [\"versand\", \"karten\"].forEach(function (n) {\n        fDetails.querySelectorAll('input[name=\"' + n + '\"]').forEach(function (r) { r.checked = r.value === w[n]; });\n      });\n    }\n    fDetails.addEventListener(\"input\", function () { werteLesen(); sichern(); });\n    fDetails.addEventListener(\"change\", function () { werteLesen(); sichern(); });\n    function detailsRumpf() {\n      var w = st.werte || {};\n      return {\n        vorgang: st.vorgang, sku: sku, art: st.art,\n        anzahl: text(w.anzahl), versand: box() ? text(w.versand) : \"\", karten: box() ? text(w.karten) : \"\",\n        liefertermin: text(w.liefertermin), text: text(w.text), produkt: produkt.frei ? text(w.produkt) : \"\",\n        dateien: st.dateien.map(function (d) { return d.kennung; }),\n      };\n    }\n    fDetails.addEventListener(\"submit\", function (ev) {\n      ev.preventDefault();\n      if (laeuft) return;\n      werteLesen(); sichern();\n      if (hochladen > 0) { meldungen([\"Bitte warte, bis alle Dateien hochgeladen sind.\"]); return; }\n      schicken(\"details\", detailsRumpf(), $('[data-an-weiter=\"2\"]'), function () { zeigen(3); });\n    });\n\n    /* ---- Dateien ---- */\n    var dateiFeld = $(\"[data-an-datei-feld]\");\n    var dateiListe = $(\"[data-an-dateien]\");\n    function dateiMeldung(s) { var m = $(\"[data-an-datei-meldung]\"); m.textContent = s || \"\"; m.hidden = !s; }\n    function dateienZeichnen() {\n      dateiListe.textContent = \"\";\n      st.dateien.forEach(function (d) { dateiListe.appendChild(dateiZeile(d)); });\n      $(\"[data-an-datei-knopf]\").hidden = st.dateien.length >= grenzen.dateien;\n    }\n    function dateiZeile(d) {\n      var li = el(\"li\", \"mhsys-an__datei\");\n      var n = el(\"span\", \"mhsys-an__datei-name\", d.name);\n      var g = el(\"span\", \"mhsys-an__datei-groesse\", d.groesse ? groesse(d.groesse) : \"\");\n      li.appendChild(n); li.appendChild(g);\n      if (d.kennung) {\n        var weg = el(\"button\", \"mhsys-an__textknopf\", \"Entfernen\");\n        weg.type = \"button\";\n        weg.setAttribute(\"aria-label\", \"Datei \" + d.name + \" entfernen\");\n        weg.addEventListener(\"click\", function () {\n          weg.disabled = true;\n          post(\"datei_weg\", { vorgang: st.vorgang, kennung: d.kennung }).then(function (a) {\n            if (!a.ok) { weg.disabled = false; dateiMeldung(text(a.meldung) || \"Die Datei lie\u00DF sich gerade nicht entfernen \u2013 probier es noch einmal.\"); return; }\n            st.dateien = st.dateien.filter(function (x) { return x.kennung !== d.kennung; });\n            sichern(); dateienZeichnen();\n          });\n        });\n        li.appendChild(weg);\n      }\n      return li;\n    }\n    var DATEI_FEHLER = {\n      gross: \"ist zu gro\u00DF.\",\n      typ: \"hat ein Format, das wir nicht annehmen k\u00F6nnen.\",\n      anzahl: \"passt nicht mehr dazu \u2013 es sind h\u00F6chstens \" + GRENZEN.dateien + \" Dateien m\u00F6glich.\",\n      grenze: \"konnte gerade nicht hochgeladen werden \u2013 bitte versuch es sp\u00E4ter noch einmal.\",\n    };\n    function hochladenEine(datei) {\n      return new Promise(function (fertig) {\n        var zeile = el(\"li\", \"mhsys-an__datei ist-laedt\");\n        zeile.appendChild(el(\"span\", \"mhsys-an__datei-name\", datei.name));\n        var balken = el(\"progress\", \"mhsys-an__balken\");\n        balken.max = 100; balken.value = 0;\n        balken.setAttribute(\"aria-label\", \"Hochladen von \" + datei.name);\n        zeile.appendChild(balken);\n        dateiListe.appendChild(zeile);\n        var fd = new FormData();\n        fd.append(\"vorgang\", st.vorgang);\n        fd.append(\"datei\", datei, datei.name);\n        var x = new XMLHttpRequest();\n        x.open(\"POST\", ADRESSE + \"datei\");\n        x.setRequestHeader(\"Accept\", \"application/json\");\n        x.upload.onprogress = function (e) { if (e.lengthComputable) balken.value = Math.round(e.loaded / e.total * 100); };\n        x.onload = function () {\n          var a = null;\n          try { a = JSON.parse(x.responseText); } catch (e) {}\n          zeile.remove();\n          if (a && a.ok && a.kennung) {\n            st.dateien.push({ kennung: text(a.kennung), name: text(a.name) || datei.name, groesse: +a.groesse || datei.size });\n            sichern(); dateienZeichnen();\n          } else {\n            var f = a && a.fehler;\n            dateiMeldung(text(a && a.meldung) || (\"\u201E\" + datei.name + \"\u201C \" + (DATEI_FEHLER[f] || \"konnte nicht hochgeladen werden.\")));\n          }\n          fertig();\n        };\n        x.onerror = function () { zeile.remove(); dateiMeldung(\"\u201E\" + datei.name + \"\u201C konnte nicht hochgeladen werden \u2013 bitte pr\u00FCf deine Verbindung.\"); fertig(); };\n        // Zeitlimit (Roadmap 7.44): grosszuegig fuer 10 MB am Handy, aber nie ein ewiger Balken\n        x.timeout = 120000;\n        x.ontimeout = function () { zeile.remove(); dateiMeldung(\"\u201E\" + datei.name + \"\u201C konnte gerade nicht hochgeladen werden \u2013 bitte versuch es in ein paar Minuten noch einmal.\"); fertig(); };\n        x.send(fd);\n      });\n    }\n    dateiFeld.addEventListener(\"change\", function () {\n      dateiMeldung(\"\");\n      var liste = Array.prototype.slice.call(dateiFeld.files || []);\n      dateiFeld.value = \"\";\n      var frei = grenzen.dateien - st.dateien.length;\n      var hinweise = [];\n      if (liste.length > frei) { hinweise.push(\"Es sind h\u00F6chstens \" + grenzen.dateien + \" Dateien m\u00F6glich \u2013 \" + (liste.length - frei) + \" haben nicht mehr hineingepasst.\"); liste = liste.slice(0, Math.max(0, frei)); }\n      liste = liste.filter(function (d) {\n        if (!ENDUNGEN.test(d.name)) { hinweise.push(\"\u201E\" + d.name + \"\u201C hat ein Format, das wir nicht annehmen k\u00F6nnen.\"); return false; }\n        if (d.size > grenzen.datei_bytes) { hinweise.push(\"\u201E\" + d.name + \"\u201C ist gr\u00F6\u00DFer als \" + Math.floor(grenzen.datei_bytes / 1048576) + \" MB.\"); return false; }\n        return true;\n      });\n      if (hinweise.length) dateiMeldung(hinweise.join(\" \"));\n      // Nacheinander, nicht parallel: am Handy sonst mehrere grosse Uploads gleichzeitig ueber eine duenne Leitung\n      hochladen += liste.length;\n      liste.reduce(function (p, d) { return p.then(function () { return hochladenEine(d).then(function () { hochladen--; }); }); }, Promise.resolve());\n    });\n\n    /* ---- Schritt 3 ---- */\n    function kontaktSetzen() {\n      var k = st.kontakt || {}, f = fKontakt.elements;\n      f.name.value = text(k.name) || text(wurzel.getAttribute(\"data-an-kunde-name\"));\n      f.email.value = text(k.email) || text(wurzel.getAttribute(\"data-an-kunde-email\"));\n      f.firma.value = text(k.firma);\n      f.telefon.value = text(k.telefon);\n    }\n    function kontaktLesen() {\n      var f = fKontakt.elements;\n      st.kontakt = { name: text(f.name.value).trim(), firma: text(f.firma.value).trim(), email: text(f.email.value).trim(), telefon: text(f.telefon.value).trim() };\n    }\n    fKontakt.addEventListener(\"input\", function () { kontaktLesen(); sichern(); });\n    fKontakt.addEventListener(\"submit\", function (ev) {\n      ev.preventDefault();\n      if (laeuft) return;\n      kontaktLesen(); sichern();\n      schicken(\"kontakt\", st.kontakt, $('[data-an-weiter=\"3\"]'), function () { zeigen(4); });\n    });\n\n    /* ---- Schritt 4 ---- */\n    function zeilen(dl, liste) {\n      dl.textContent = \"\";\n      liste.forEach(function (z) { dl.appendChild(el(\"dt\", \"\", z[0])); dl.appendChild(el(\"dd\", \"\", z[1])); });\n    }\n    function pruefenZeichnen() {\n      var w = st.werte || {}, b = box(), z = [];\n      z.push([\"Anfrage\", ARTEN[st.art] || \"\"]);\n      var name = produkt.frei ? text(w.produkt) : text(produkt.name);\n      if (name || sku) z.push([\"Produkt\", name + (sku ? (name ? \" \" : \"\") + \"(\" + sku + \")\" : \"\")]);\n      var anzahl = parseInt(text(w.anzahl).replace(/[\\s.'\u2019]/g, \"\"), 10) || 0;\n      z.push([\"Anzahl\", anzahl.toLocaleString(\"de-DE\") + (b ? (anzahl === 1 ? \" Box\" : \" Boxen\") : \" St\u00FCck\")]);\n      if (b) {\n        z.push([\"Versand\", text(versandarten[w.versand] || VERSAND[w.versand])]);\n        z.push([\"Gl\u00FCckwunschkarten\", w.karten === \"JA\" ? \"ja, bitte beilegen\" : \"nein\"]);\n      }\n      var t = text(w.liefertermin).split(\"-\");\n      z.push([\"Wunsch-Liefertermin\", t.length === 3 ? t[2] + \".\" + t[1] + \".\" + t[0] : \"kein fester Termin\"]);\n      if (text(w.text).trim()) z.push([b ? \"Hinweise\" : \"Personalisierung\", text(w.text)]);\n      z.push([\"Dateien\", st.dateien.length ? st.dateien.map(function (d) { return d.name; }).join(\"\\n\") : \"keine\"]);\n      zeilen($('[data-an-angaben=\"anfrage\"]'), z);\n      var k = st.kontakt || {}, kz = [[\"Name\", text(k.name)]];\n      if (k.firma) kz.push([\"Firma\", text(k.firma)]);\n      kz.push([\"E-Mail\", text(k.email)]);\n      if (k.telefon) kz.push([\"Telefon\", text(k.telefon)]);\n      zeilen($('[data-an-angaben=\"kontakt\"]'), kz);\n      $(\"[data-an-einzel-hinweis]\").hidden = !(b && w.versand === \"EINZEL\" && !st.dateien.length);\n    }\n    var absendenKnopf = $(\"[data-an-absenden]\");\n    absendenKnopf.addEventListener(\"click\", function () {\n      if (laeuft) return;\n      var r = detailsRumpf(), k = st.kontakt || {};\n      r.name = text(k.name); r.firma = text(k.firma); r.email = text(k.email); r.telefon = text(k.telefon);\n      r.website = text(fKontakt.elements.website.value);\n      schicken(\"absenden\", r, absendenKnopf, function (a) {\n        var nr = text(a.nummer);\n        $(\"[data-an-nummer]\").textContent = nr;\n        $(\"[data-an-nummer-zeile]\").hidden = !nr;\n        $(\"[data-an-fertig-email]\").textContent = text(k.email);\n        merken(null);\n        // Fuer eine weitere Anfrage ein neuer Vorgang\n        st = { sku: sku, vorgang: hex32(), schritt: \"1\", art: st.art, werte: {}, kontakt: st.kontakt, dateien: [] };\n        zeigen(\"fertig\");\n        conversionMelden(a.conversion);\n      });\n    });\n\n    /* ---- Google-Ads-Conversion \"Anfrage abgeschickt\" (Roadmap 3.124, mhsys docs/auftraege/3.124.md Abschnitt 7.3) ----\n       Nur wenn mhsys sie in der Antwort mitschickt (im Werbe-Check eingetragen: send_to, transaction_id = Anfragenummer,\n       value/currency) und der Besucher im Cookie-Banner Marketing erlaubt hat - ohne Einwilligung geht gar kein Aufruf an\n       Google. gtag laedt der Kanal \"Google & YouTube\", kein eigenes Skript. Einmal je abgeschickter Anfrage; schickt\n       jemand denselben Vorgang zweimal, zaehlt Google ueber transaction_id nur einmal. */\n    function conversionMelden(c) {\n      var cp = window.Shopify && window.Shopify.customerPrivacy;\n      if (!c || typeof window.gtag !== \"function\") return;\n      if (!cp || typeof cp.marketingAllowed !== \"function\" || !cp.marketingAllowed()) return;\n      var ziel = text(c.send_to);\n      if (!/^AW-\\d+\\/[\\w-]+$/.test(ziel)) return;\n      var d = { send_to: ziel, transaction_id: text(c.transaction_id) };\n      var wert = Number(c.value);\n      if (wert > 0) { d.value = wert; d.currency = text(c.currency) || \"EUR\"; }\n      try { window.gtag(\"event\", \"conversion\", d); } catch (e) {}\n    }\n\n    /* ---- Senden mit gemeinsamer Fehlerbehandlung ---- */\n    function schicken(teil, rumpf, knopf, weiter) {\n      laeuft = true;\n      if (knopf) knopf.disabled = true;\n      meldungen([]);\n      (teil === \"absenden\" ? stempeln(rumpf) : Promise.resolve(rumpf)).then(function (r) { return post(teil, r); }).then(function (a) {\n        laeuft = false;\n        if (knopf) knopf.disabled = false;\n        if (a.ok) { weiter(a); return; }\n        if (a.fehler === \"felder\") { meldungen(Array.isArray(a.meldungen) ? a.meldungen.map(text) : [text(a.meldung) || \"Bitte pr\u00FCf deine Angaben.\"]); return; }\n        if (a.fehler === \"grenze\") { meldungen([text(a.meldung) || \"Du hast gerade schon einige Anfragen geschickt \u2013 bitte versuch es in einer Stunde noch einmal.\"]); return; }\n        if (a.fehler === \"schnell\") { meldungen([text(a.meldung) || \"Bitte warte einen Moment und schick die Anfrage dann noch einmal.\"]); return; }\n        fehler();\n      });\n    }\n    function fehler() { zeigen(\"fehler\"); }\n    $(\"[data-an-nochmal]\").addEventListener(\"click\", function () {\n      zeigen(/^[1-4]$/.test(text(st.letzter)) ? st.letzter : 1);\n      if (!produkt.geladen) produktLaden();\n    });\n\n    $$(\"[data-an-zurueck]\").forEach(function (k) {\n      k.addEventListener(\"click\", function () { zeigen(k.getAttribute(\"data-an-zurueck\")); });\n    });\n\n    /* ---- Start ---- */\n    artSetzen(); werteSetzen(); kontaktSetzen();\n    var start = /^[1-4]$/.test(text(st.schritt)) ? +st.schritt : 1;\n    // Ein spaeterer Schritt ohne gewaehlte Art faellt auf den ersten zurueck\n    if (!st.art) start = 1;\n    if (start === 4) start = 3; // Pruefen nie ohne frische Kontakt-Pruefung\n    zeigen(start);\n    produktLaden();\n    return { sku: sku };\n  }\n\n  /* ================= Overlay ================= */\n  var dialog = null, ausloeser = null, aktuelleSku = null;\n  function dialogBauen() {\n    dialog = document.createElement(\"dialog\");\n    dialog.className = \"mhsys-an-dialog\";\n    // Den ersten Fokus nimmt der Dialog selbst: showModal() fokussiert sonst den (sticky) Schliessknopf, und Chrome\n    // scrollte dafuer die Seite DAHINTER weich um fast 2.000 px weg (Messung 25.09.2026)\n    dialog.setAttribute(\"autofocus\", \"\");\n    dialog.tabIndex = -1;\n    dialog.setAttribute(\"aria-labelledby\", \"mhsys-an-dialog-titel\");\n    var zu = el(\"button\", \"mhsys-ueberlage__zu mhsys-an-dialog__zu\");\n    zu.type = \"button\";\n    zu.setAttribute(\"aria-label\", \"Schlie\u00DFen\");\n    zu.innerHTML = '<svg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"/></svg>';\n    zu.addEventListener(\"click\", schliessen);\n    dialog.appendChild(zu);\n    dialog.appendChild(el(\"div\", \"mhsys-an-dialog__inhalt\"));\n    dialog.addEventListener(\"close\", function () {\n      document.documentElement.classList.remove(\"mhsys-an-offen\");\n      if (ausloeser && ausloeser.focus) ausloeser.focus({ preventScroll: true });\n      halten();\n    });\n    // Klick auf den Schleier (ausserhalb des Kastens) schliesst\n    dialog.addEventListener(\"click\", function (e) { if (e.target === dialog) schliessen(); });\n    document.body.appendChild(dialog);\n    // Escape selbst abfangen: ein fremdes Popup (Klaviyo-Anmeldeformular) ruft bei Escape preventDefault() auf, dann\n    // kommt das native cancel des Dialogs nie an (live gemessen 25.09.2026 am Gewaehrleistungs-Overlay)\n    window.addEventListener(\"keydown\", function (e) { if (e.key === \"Escape\" && dialog.open) schliessen(); }, true);\n  }\n  function schliessen() { if (dialog && dialog.open) dialog.close(); }\n  // Die Seite unter dem Overlay bleibt, wo sie war - auch wenn ein Fokuswechsel sie anschieben will\n  var seitenY = 0;\n  function halten() { if (Math.abs(window.scrollY - seitenY) > 1) window.scrollTo({ top: seitenY, behavior: \"instant\" }); }\n  function ladeplatz(inhalt) {\n    inhalt.textContent = \"\";\n    var p = el(\"div\", \"mhsys-an-dialog__laden\");\n    p.setAttribute(\"role\", \"status\");\n    p.appendChild(el(\"span\", \"mhsys-vh\", \"Die Anfrage wird geladen \u2026\"));\n    inhalt.appendChild(p);\n  }\n  function oeffnen(sku, link) {\n    if (!dialog) dialogBauen();\n    ausloeser = link || document.activeElement;\n    sku = text(sku).trim();\n    var inhalt = dialog.querySelector(\".mhsys-an-dialog__inhalt\");\n    if (!dialog.open) {\n      seitenY = window.scrollY;\n      document.documentElement.classList.add(\"mhsys-an-offen\");\n      dialog.showModal();\n      halten();\n    }\n    if (aktuelleSku === sku && inhalt.querySelector(\"[data-mhsys-anfrage]\")) return Promise.resolve();\n    ladeplatz(inhalt);\n    aktuelleSku = sku;\n    // Dieselbe Section wie auf /pages/anfrage, gerendert von Shopify (Section Rendering API)\n    return fetch((window.Shopify && Shopify.routes && Shopify.routes.root || \"/\") + \"?section_id=mhsys-anfrage\", { credentials: \"same-origin\" })\n      .then(function (r) { if (!r.ok) throw new Error(r.status); return r.text(); })\n      .then(function (html) {\n        var tmp = document.createElement(\"div\");\n        tmp.innerHTML = html;\n        var w = tmp.querySelector(\"[data-mhsys-anfrage]\");\n        if (!w) throw new Error(\"keine Section\");\n        w.querySelectorAll(\"script\").forEach(function (s) { s.remove(); });\n        w.classList.add(\"mhsys-an--overlay\");\n        var h1 = w.querySelector(\"h1\");\n        if (h1) h1.id = \"mhsys-an-dialog-titel\";\n        if (sku) { var p = w.querySelector(\"[data-an-produkt]\"); if (p) { p.hidden = false; p.setAttribute(\"aria-busy\", \"true\"); } }\n        inhalt.textContent = \"\";\n        inhalt.appendChild(w);\n        starten(w, { sku: sku, schliessen: schliessen });\n        // Fokus auf die Ueberschrift: der Screenreader liest, wo man ist, Tab fuehrt ins Formular\n        if (h1) { h1.tabIndex = -1; h1.focus({ preventScroll: true }); }\n      })\n      .catch(function () {\n        // Ohne Section: auf die Seite (bzw. service.mhsys.de) wie ein normaler Link\n        aktuelleSku = null;\n        schliessen();\n        if (link && link.href) window.location.href = link.href;\n      });\n  }\n\n  window.mhsysAnfrage = { starten: starten, oeffnen: oeffnen, schliessen: schliessen };\n\n  /* ================= Seite /pages/anfrage ================= */\n  document.querySelectorAll(\"[data-mhsys-anfrage]\").forEach(function (w) {\n    if (w.closest(\"dialog\")) return;\n    var sku = \"\";\n    try { sku = new URLSearchParams(location.search).get(\"sku\") || \"\"; } catch (e) {}\n    starten(w, { sku: sku });\n  });\n  document.dispatchEvent(new CustomEvent(\"mhsys:anfrage-bereit\"));\n})();\n"],
  "mappings": "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",
  "names": ["k"]
}
