!function(){"use strict";const e=function(){const e=new URLSearchParams(window.location.search).has("silentshield-debug");function t(e){return["[SilentShield]"].concat(Array.from(e))}return{log:(...r)=>e&&console.log(...t(r)),debug:(...r)=>e&&console.debug(...t(r)),warn:(...r)=>e&&console.warn(...t(r)),error:(...r)=>e&&console.error(...t(r))}}();class t{constructor(e,t={}){this.container=e,this.options=Object.assign({className:"f12-captcha-overlay",autoPosition:!0,debug:!1},t)}show(){const{className:t,autoPosition:r}=this.options,o=window.getComputedStyle(this.container);if(r&&"static"===o.position&&(this.container.style.position="relative"),!this.container.querySelector(`.${t}`)){const r=document.createElement("div");r.className=t,this.container.appendChild(r),e.log("Overlay hinzugefügt",this.container)}}hide(){const{className:t}=this.options,r=this.container.querySelector(`.${t}`);r&&r.remove(),e.log("Overlay entfernt",this.container)}}function r(t){if(e.debug("[ensureFormId] aufgerufen",t),window.jQuery&&t instanceof window.jQuery&&(e.debug("[ensureFormId] jQuery-Objekt erkannt → form[0] wird verwendet"),t=t[0]),!(t instanceof HTMLFormElement))return e.error("[ensureFormId] Ungültiges Formular-Element übergeben:",t),null;let r=t.id;return r&&""!==r.trim()||(r="f12-form-"+Math.random().toString(36).substring(2,10),t.id=r,e.debug("[ensureFormId] Formular ohne ID erkannt → generische ID vergeben:",r)),r}const o=new class{constructor(){this.events={}}on(t,r){this.events[t]||(this.events[t]=[]),this.events[t].push(r),e.debug(`[EventBus] Listener registriert für: ${t}`)}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter(e=>e!==t))}emit(t,r={}){e.debug(`[EventBus] Event ausgelöst: ${t}`,r),this.events[t]&&this.events[t].forEach(o=>{try{o(r)}catch(n){e.error(`[EventBus] Fehler im Listener für ${t}`,n)}})}};new class{constructor(){o.on("captcha:reloadRequested",({formId:t,captchaInputId:r})=>{e.debug("[EventBus] captcha:reloadRequested empfangen",{formId:t,captchaInputId:r}),r?this.reloadSingleCaptchaById(r,t):this.reloadCaptcha(t)}),o.on("captcha:reloadAllRequested",()=>{e.debug("[EventBus] captcha:reloadAllRequested empfangen"),this.reloadAllCaptchas()})}reloadAllCaptchas(){e.debug("Reload all Captchas"),document.querySelectorAll(".f12-captcha").forEach(t=>{const o=t.querySelector(".f12c");if(o&&o.id){var n=r(t.closest("form"));e.debug("Reload Captcha gestartet",n),this.reloadSingleCaptchaById(o.id,n)}})}reloadCaptcha(t){var r=document.getElementById(t);if(!r)return void e.error("Form not found",t);e.debug("Reload Captcha für Formular gestartet",t);const o=r.querySelectorAll(".f12-captcha");o.length?o.forEach(e=>{const r=e.querySelector(".f12c");r&&r.id&&this.reloadSingleCaptchaById(r.id,t)}):e.debug("No captcha container in form (JS-only protection):",t)}async reloadSingleCaptchaById(r,n){e.debug("Reload einzelnes Captcha gestartet",{captchaInputId:r,formId:n});const s=document.getElementById(r);if(!s)return void e.error("Captcha-Input nicht gefunden",r);const a=s.closest(".f12-captcha");if(!a)return void e.error("Captcha-Container nicht gefunden für Input",r);const i=new t(a);i.show();const c="hash_"+r,m=document.getElementById(c),d=a.querySelector(".c-data"),u=s.dataset.method;e.log("Captcha Reload AJAX",{method:u,captchaInputId:r});try{const t=await fetch(f12_cf7_captcha.resturl+"captcha/reload",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":f12_cf7_captcha.restnonce},body:JSON.stringify({captchamethod:u})});if(!t.ok)throw new Error(`HTTP ${t.status}`);const o=await t.json();if("image"===u){const t=d.querySelector(".captcha-image");t&&(e.debug("Ersetze Captcha-Bild",{captchaInputId:r,newLabel:o.label.substring(0,100)}),t.outerHTML=o.label)}if("math"===u){const e=d.querySelector(".captcha-calculation");e&&(e.outerHTML=o.label)}m&&(m.value=o.hash),e.log("Captcha neu gesetzt",{method:u,captchaInputId:r,hash:o.hash})}catch(l){e.error("Captcha reload Fehler",l)}finally{i.hide(),o.emit("captcha:reloaded",{formId:n,captchaInputId:r})}}};new class{constructor(){o.on("captcha:reloaded",({formId:t})=>{e.debug("[EventBus] captcha:reloaded empfangen",t),this.reloadTimer(t)})}reloadAllTimers(){document.querySelectorAll("form").forEach(e=>{const t=r(e);this.reloadTimer(t)})}reloadTimer(t){var r=document.getElementById(t);if(!r)return void e.error("Form not found");e.debug("Reload Timer started",t);const o=r.querySelectorAll(".f12t");o.length?o.forEach(async t=>{const r=t.querySelector(".f12_timer");if(r)try{const t=await fetch(f12_cf7_captcha.resturl+"timer/reload",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":f12_cf7_captcha.restnonce},body:JSON.stringify({})});if(!t.ok)throw new Error(`HTTP ${t.status}`);const o=await t.json();r.value=o.hash,e.log("Timer neu gesetzt",o.hash)}catch(o){e.error("Timer reload Fehler",o)}else e.warn("Kein Timer-Feld gefunden in",t)}):e.warn("Keine Timer-Container gefunden im Formular",t)}};new class{constructor(){o.on("captcha:initForm",({form:t,formId:r})=>{e.debug("[EventBus] captcha:initForm received",r),this.setStartTime(r)}),o.on("captcha:handleVerify",({form:t,formId:r,originalEvent:o})=>{e.debug("[EventBus] captcha:handleVerify received",r),this.setEndTime(r)}),o.on("captcha:JavaScriptProtection:setStartTimeRequested",({formId:t})=>{e.debug("[EventBus] captcha:JavaScriptProtection:setStartTimeRequested received",t),this.setStartTime(t)})}setStartTime(t){var r=document.getElementById(t);if(!r)return void e.error("Form not found");e.debug("js_start_time started");const o=Date.now()/1e3,n=r.querySelector(".js_start_time");n?(n.value=o,e.log("js_start_time set",o,r)):e.error("js_start_time field not found")}setEndTime(t){var r=document.getElementById(t);if(!r)return e.error("Form not found"),void o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"});e.debug("js_end_time started");const n=Date.now()/1e3,s=r.querySelector(".js_end_time");if(!s)return e.error("js_end_time field not found"),void o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"});s.value=n,e.log("js_end_time set",n,r),o.emit("submit:ready",{formId:t,module:"JavaScriptProtection"})}};new class{constructor(t=["JavaScriptProtection"]){this.requiredModules=t,this.pending=new Map,this.activeSubmits=new WeakSet,o.on("captcha:verifyRequested",async({form:t,formId:r,originalEvent:n,continue:s})=>{this.activeSubmits.has(t)?e.debug("[SubmitGuard] Submit already in progress",r):(e.debug("[SubmitGuard] verifyRequested",{form:t,formId:r,originalEvent:n}),this.startBarrier(t,r,n,s),o.emit("captcha:handleVerify",{form:t,formId:r,originalEvent:n}))}),o.on("submit:ready",({formId:e,module:t})=>{this.markReady(e,t)})}startBarrier(t,r,o,n){this.pending.set(r,{next:()=>{this.activeSubmits.add(t),e.debug("[SubmitGuard] Manual submit started",r),Promise.resolve().then(()=>n()),setTimeout(()=>this.activeSubmits.delete(t),500)},waiting:new Set(this.requiredModules)}),e.debug(`[SubmitGuard] Barrier started for ${r}:`,this.requiredModules)}markReady(t,r){const o=this.pending.get(t);o&&(o.waiting.delete(r),e.debug(`[SubmitGuard] Modul "${r}" ready → waiting for: ${[...o.waiting].join(", ")}`),0===o.waiting.size&&(e.debug(`[SubmitGuard] All modules ready → Submit for ${t}`),o.next(),this.pending.delete(t)))}};new class{constructor(){document.addEventListener("click",e=>{const t=e.target.closest(".captcha-audio-btn");t&&(e.preventDefault(),e.stopPropagation(),this.handleAudioClick(t))}),o.on("captcha:reloaded",()=>{window.speechSynthesis&&window.speechSynthesis.cancel()})}async handleAudioClick(t){if("true"===t.getAttribute("aria-busy"))return;const r=t.closest(".f12-captcha");if(!r)return void e.error("AudioCaptcha: No captcha container found");const o=r.querySelector(".f12c");if(!o)return void e.error("AudioCaptcha: No captcha input found");const n=o.dataset.method,s=r.querySelector('input[type="hidden"]');if("math"===n){const e=r.querySelector(".captcha-calculation");return void(e&&this.speak(this.mathToSpeechText(e.textContent.trim())))}if("image"===n){t.setAttribute("aria-busy","true");try{const t=await fetch(f12_cf7_captcha.resturl+"captcha/audio",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":f12_cf7_captcha.restnonce},body:JSON.stringify({hash:s.value,captchamethod:n})});if(!t.ok)return void e.error("AudioCaptcha: HTTP error",t.status);const r=await t.json();r.text&&this.speak(r.text)}catch(a){e.error("AudioCaptcha: Fetch error",a)}finally{t.setAttribute("aria-busy","false")}}}mathToSpeechText(e){return e.replace(/\+/g," plus ").replace(/-/g," minus ").replace(/\*/g," times ").replace(/×/g," times ").replace(/=/g," equals ")}speak(t){if(!window.speechSynthesis)return void e.error("AudioCaptcha: Web Speech API not supported");window.speechSynthesis.cancel();const r=new SpeechSynthesisUtterance(t);r.rate=.8,r.lang=document.documentElement.lang||"en",window.speechSynthesis.speak(r)}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"default"!==t&&"ControllerComments"!==t&&"ControllerJetForm"!==t&&"ControllerUltimateMember"!==t||this.enabled||(this.enabled=!0,e.debug("[DefaultForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][DefaultForms] captcha:init received"),this.init())})}isKnownFrameworkForm(e){var t,r;return e.closest(".wpcf7")||e.closest(".fusion-form")||(null==(t=e.id)?void 0:t.startsWith("avada-form-"))||e.closest(".frm-fluent-form")||e.closest(".gform_wrapper")||(null==(r=e.id)?void 0:r.startsWith("gform_"))||e.hasAttribute("data-formid")||e.closest(".elementor-form")||e.hasAttribute("data-elementor-id")||e.classList.contains("woocommerce-form")||e.classList.contains("woocommerce-form-login")||e.classList.contains("woocommerce-form-register")||e.classList.contains("woocommerce-ResetPassword")||e.classList.contains("woocommerce-checkout")||e.closest("form.checkout")||"loginform"===e.id||"registerform"===e.id||"lostpasswordform"===e.id||e.closest("#login")||e.closest(".login")||e.closest(".register")}init(){e.debug("[DefaultForms] init"),document.querySelectorAll("form").forEach(t=>{if(this.isKnownFrameworkForm(t))return void e.debug("[DefaultForms] Übersprungen (bekanntes Framework)",t);const n=r(t);e.debug(`[DefaultForms] Initialisiert für ${n}`);o.emit("captcha:verifyRequested",{form:t,formId:n,originalEvent:null,continue:()=>{t.dataset.ssManualSubmit="1",e.debug(`[DefaultForms] Continue submit for ${n}`)}})})}};new class{constructor(){this.enabled=!1,this.recentSubmits=new WeakSet,o.on("captcha:component:enable",t=>{"ControllerCF7"===t&&(this.enabled=!0,e.debug("[ContactForm7] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[ContactForm7] captcha:init received"),this.init())})}getFormFromCF7Event(t){var r,o,n;const s=null==(r=null==t?void 0:t.detail)?void 0:r.contactFormId,a=null==(n=null==(o=null==t?void 0:t.detail)?void 0:o.apiResponse)?void 0:n.into,i=a&&document.querySelector(a)||s&&document.querySelector(`div.wpcf7[id^="wpcf7-f${s}-"]`)||null;if(!i)return e.warn("[ContactForm7] Kein WPCF7-Container gefunden",{formId:s,intoSelector:a}),null;const c=i.querySelector("form");return c||(e.warn("[ContactForm7] Kein <form> im WPCF7-Container gefunden",i),null)}init(){const t=this;e.debug("[ContactForm7] init");const n=document.querySelectorAll(".wpcf7 form");n.length?(n.forEach(t=>{const n=r(t);"1"!==t.dataset.ssBound&&(t.dataset.ssBound="1",e.debug("[ContactForm7] native submit listener gebunden",n),t.addEventListener("submit",r=>{var s;if("1"===t.dataset.ssManualSubmit||(null==(s=this.recentSubmits)?void 0:s.has(t)))return e.debug("[ContactForm7] Ignoriere manuellen oder laufenden Submit",n),void delete t.dataset.ssManualSubmit;r.preventDefault(),r.stopImmediatePropagation(),e.debug("[ContactForm7] native submit intercepted (before CF7)",n);o.emit("captcha:verifyRequested",{form:t,formId:n,originalEvent:r,continue:()=>{var r;e.debug("[ContactForm7] Captcha validiert → starte CF7 Submit",n),t.dataset.ssManualSubmit="1",null==(r=this.recentSubmits)||r.add(t),setTimeout(()=>{var e;null==(e=this.recentSubmits)||e.delete(t),delete t.dataset.ssManualSubmit},2e3),window.wpcf7&&"function"==typeof window.wpcf7.submit?window.wpcf7.submit(t):(e.warn("[ContactForm7] Kein window.wpcf7.submit gefunden → Fallback form.submit()",n),t.submit())}})},!0))}),document.addEventListener("wpcf7mailsent",n=>{const s=t.getFormFromCF7Event(n);if(!s)return e.debug("[ContactForm7] wpcf7mailsent: Kein Formular gefunden → reloadAll"),void o.emit("captcha:reloadAllRequested");const a=r(s);o.emit("captcha:reloadRequested",{formId:a}),e.log("wpcf7mailsent → Captcha reloaded",a)},!1),document.addEventListener("wpcf7submit",n=>{const s=t.getFormFromCF7Event(n);if(!s)return e.debug("[ContactForm7] wpcf7submit: Kein Formular gefunden → reloadAll"),void o.emit("captcha:reloadAllRequested");const a=r(s);o.emit("captcha:reloadRequested",{formId:a}),e.log("wpcf7submit → Captcha reloaded",a)},!1),document.addEventListener("wpcf7spam",n=>{const s=t.getFormFromCF7Event(n);if(!s)return void o.emit("captcha:reloadAllRequested");s.querySelectorAll(".f12c").forEach(e=>{e.classList.add("wpcf7-not-valid","not-valid")});const a=r(s);e.warn("wpcf7spam → Captcha als not-valid markiert",a)},!1)):e.debug("[ContactForm7] keine wpcf7-Formulare gefunden")}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerElementor"===t&&(this.enabled=!0,e.debug("[ElementorForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][ElementorForms] captcha:init received"),this.waitForElementor())})}waitForElementor(t=0){if(!window.elementorFrontend)return t>=20?void e.warn("[ElementorForms] Elementor Frontend nach 20 Versuchen nicht gefunden – Abbruch"):(e.debug("[ElementorForms] Elementor Frontend nicht vorhanden – retry in 300ms"),void setTimeout(()=>this.waitForElementor(t+1),300));if(elementorFrontend.hooks)return e.debug("[ElementorForms] Elementor hooks vorhanden → sofort registrieren"),void this.registerHook();e.debug("[ElementorForms] Elementor hooks fehlen → warte aktiv auf Initialisierung"),document.addEventListener("elementor/frontend/init",()=>{e.debug("[ElementorForms] Elementor init Event empfangen → registriere Hook"),this.registerHook()});let r=0;const o=setInterval(()=>{elementorFrontend.hooks?(clearInterval(o),e.debug("[ElementorForms] Elementor hooks durch Polling gefunden → registriere Hook"),this.registerHook()):r++>20&&(clearInterval(o),e.warn("[ElementorForms] Elementor hooks nach 20 Versuchen nicht gefunden"))},300)}registerHook(){e.debug("[ElementorForms] Initializing Elementor form hooks"),"undefined"!=typeof elementorFrontend&&elementorFrontend.hooks&&"function"==typeof elementorFrontend.hooks.addAction?(elementorFrontend.hooks.addAction("frontend/element_ready/form.default",t=>{e.debug("[ElementorForms] Elementor form widget ready → bind forms");const r=t instanceof HTMLElement?t:(null==t?void 0:t[0])??document;e.debug(t),this.bindForms(r)}),this.bindForms(document),this.startFormObserver(document)):e.warn("[ElementorForms] Elementor frontend hooks not available")}startFormObserver(t=document){this._formObserver||(this._formObserver=new MutationObserver(t=>{var r,o;let n=!1;for(const e of t){if(null==(o=(r=e.target).closest)?void 0:o.call(r,".f12-captcha"))return;if("childList"===e.type&&(e.addedNodes.length||e.removedNodes.length)){n=!0;break}}n&&(e.debug("[ElementorForms] DOM changed → rebinding forms"),this.bindForms(document,!0))}),this._formObserver.observe(t,{childList:!0,subtree:!0}),e.debug("[ElementorForms] Form MutationObserver started"))}bindForms(t=document,n=!1){const s=t.querySelectorAll("form.elementor-form");s.length?(e.debug(s),s.forEach(t=>{if("1"===t.dataset.ssBound&&!1===n)return;t.dataset.ssBound="1";const s=r(t);e.debug("[ElementorForms] Formular gebunden",s),t.dataset.ssCaptchaInitialized||(t.dataset.ssCaptchaInitialized="1",o.emit("captcha:reloadRequested",{formId:s}),e.debug("[ElementorForms] Initial captcha load",s)),t.addEventListener("submit",n=>{if("1"===t.dataset.ssSubmitting)return;const s=r(t);e.debug("[ElementorForms] submit abgefangen",s),n.preventDefault(),n.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:t,formId:s,originalEvent:n,continue:()=>{var r,o,n,a;e.debug("[ElementorForms] Submit wieder freigegeben",s),t.dataset.ssSubmitting="1";const i=jQuery(t);if(!((null==(o=null==(r=window.elementorProFrontend)?void 0:r.modules)?void 0:o.forms)||(null==(a=null==(n=window.elementorProFrontend)?void 0:n.modules)?void 0:a.form)))return e.error("[ElementorForms] Kein Formularmodul gefunden → Fallback native submit"),void t.submit();e.debug("[ElementorForms] Aktives Elementor Modul erkannt"),e.debug("[ElementorForms] AJAX-Handler aktiv → trigger submit"),i.trigger("submit"),setTimeout(()=>delete t.dataset.ssSubmitting,500)}})},!0)}),e.debug("[ElementorForms] Elementor Formular gebunden")):e.debug("[ElementorForms] keine Formulare im Scope gefunden")}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerAvada"===t&&(this.enabled=!0,e.debug("[AvadaForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:init received"),this.patchAvadaSubmit(),this.registerJqueryEvents(),this.observeAjaxComplete())}),o.on("captcha:avada:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:avada:error received",t,o),this.showErrors(o,r))}),o.on("captcha:avada:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][AvadaForms] captcha:avada:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".fusion-form-error").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){var o=t.find('[name="'+e+'"]');o.length?(o.after('<span class="f12-captcha-error fusion-form-error-message">'+r+"</span>"),o.addClass("fusion-form-error")):t.prepend('<div class="f12-captcha-error fusion-form-error-message">'+r+"</div>")}))}observeAjaxComplete(t=0){if(!window.jQuery)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden – ajaxComplete deaktiviert"):setTimeout(()=>this.observeAjaxComplete(t+1),300);const r=window.jQuery;e.debug("[AvadaForms] Registriere globales ajaxComplete-Event"),r(document).ajaxComplete((t,n,s)=>{try{const t=JSON.parse(n.responseText);if(!t||!t.status)return;const a=r((null==s?void 0:s.context)||"form.fusion-form");"error"===t.status&&t.errors&&(e.debug("[AvadaForms] AJAX error → Captcha-Reload ausgelöst"),o.emit("captcha:avada:error",{formId:a.attr("id"),form:a,response:t}),o.emit("captcha:reloadRequested",{formId:a.attr("id")})),"success"===t.status&&(o.emit("captcha:avada:success",{formId:a.attr("id"),form:a,response:t}),e.debug("[AvadaForms] AJAX success → Fehler entfernt"))}catch(a){}})}registerJqueryEvents(t=0){if(!window.jQuery)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden – Events deaktiviert"):(e.debug(`[AvadaForms] jQuery noch nicht verfügbar – retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.registerJqueryEvents(t+1),300));const r=window.jQuery;e.debug("[AvadaForms] Registriere jQuery Events → fusion-form-ajax-submitted"),r(window).on("fusion-form-ajax-submitted",(t,n)=>{var s;const a=null==(s=null==n?void 0:n.formConfig)?void 0:s.form_id;if(!a)return void e.warn("[AvadaForms] Keine form_id in payload gefunden",n);const i=r(`#avada-form-${a},\n         #fusion-form-${a},\n         .fusion-form-${a},\n         form[data-form-id="${a}"]`);let c=i.filter("form").first();if(!c.length&&i.length&&i.each(function(){const e=r(this).find("form.fusion-form").first();e.length&&!c.length&&(c=e)}),!c.length){const t=`avada-form-${a}`;return e.warn("[AvadaForms] Kein Formular im DOM gefunden, Fallback-ID verwendet:",t),void o.emit("captcha:reloadRequested",{formId:t})}const m=c.attr("id")||`avada-form-${a}`;e.debug("[AvadaForms] fusion-form-ajax-submitted erkannt → Formular-ID:",m),o.emit("captcha:reloadRequested",{formId:m})})}patchAvadaSubmit(t=0){if(!window.fusionForms||"function"!=typeof window.fusionForms.submitForm)return t>=20?void e.warn("[AvadaForms] jQuery nicht gefunden – Events deaktiviert"):(e.debug("[AvadaForms] fusionForms noch nicht geladen – retry in 300ms"),setTimeout(()=>this.patchAvadaSubmit(t+1),300));e.debug("[AvadaForms] Patche fusionForms.submitForm");const n=window.fusionForms.submitForm;window.fusionForms.submitForm=(t,s)=>{const a=s instanceof jQuery?s[0]:s,i=r(a);e.debug("[AvadaForms] Intercepted submitForm()",i),t.preventDefault(),t.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:a,formId:i,originalEvent:t,continue:()=>{e.debug("[AvadaForms] Weiter mit original Avada submitForm()",i),n.call(window.fusionForms,t,s)}})}}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerFluentform"===t&&(this.enabled=!0,e.debug("[FluentForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:init received"),this.patchFluentForms(),this.registerFluentFormEvents())}),o.on("captcha:fluent:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:fluent:error received",t,o),this.showErrors(o,r))}),o.on("captcha:fluent:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][FluentForms] captcha:fluent:success received",t,o),this.removeErrors(r))})}getFormElementFromEventArg(t){const r=window.jQuery;if(!r)return null;if(t instanceof HTMLFormElement)return r(t);if(t&&t.jquery)return t;if(t&&t.form){if(t.form instanceof HTMLFormElement)return r(t.form);if(t.form&&t.form.jquery)return t.form}if("string"==typeof t){const e=r(`#${t}`);if(e.length)return e}return e.warn("[FluentForms] getFormElementFromEventArg(): Kein gültiges Formular erkannt",t),null}removeErrors(t){const r=window.jQuery;if(!r||!t||!t.length)return;const o=t.attr("id")||"(unknown)";e.debug("[FluentForms] removeErrors() gestartet",o);try{t.find(".f12-captcha-error").remove(),t.find(".ff-el-is-error").removeClass("ff-el-is-error"),t.find(".ff_has_error").removeClass("ff_has_error"),t.find(".error.text-danger").remove(),t.find("div.error").remove(),t.parent().find(".ff-errors-in-stack").hide().empty();const n=t.attr("id");n&&(r(`#${n}_success`).remove(),r(`#${n}_errors`).html("")),t.find('[aria-invalid="true"]').attr("aria-invalid","false"),t.removeClass("ff_submitting ff_force_hide"),e.debug("[FluentForms] removeErrors() abgeschlossen",o)}catch(n){e.error("[FluentForms] Fehler in removeErrors()",n)}}showErrors(e,t){const r=window.jQuery;r&&t&&e&&e.errors&&(t.find(".f12-captcha-error").remove(),r.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<span class="f12-captcha-error ff-el-is-error">${r}</span>`),o.addClass("ff-el-is-error")):t.prepend(`<div class="f12-captcha-error ff-el-is-error">${r}</div>`)}))}patchFluentForms(t=0){const n=window.jQuery;if(!n)return t>=20?void e.warn("[FluentForms] jQuery nicht gefunden – patch deaktiviert"):(e.debug(`[FluentForms] jQuery noch nicht verfügbar – retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.patchFluentForms(t+1),300));e.debug("[FluentForms] Registriere globalen submit-Interceptor"),n(document).on("submit","form.frm-fluent-form",t=>{const s=n(t.currentTarget),a=s[0],i=r(a);if(s.data("f12-captcha-in-progress"))return e.debug("[FluentForms] Submit bereits in Bearbeitung, blockiert",i),t.preventDefault(),t.stopImmediatePropagation(),!1;e.debug("[FluentForms] Intercepted native submit",i),t.preventDefault(),t.stopImmediatePropagation(),s.data("f12-captcha-in-progress",!0);o.emit("captcha:verifyRequested",{form:a,formId:i,originalEvent:t,continue:()=>{const t=(0,window.jQuery)(a),r=a.getAttribute("id");e.debug("[FluentForms] continueSubmit()",r),t.data("f12-captcha-in-progress",!1);try{const o=window.fluentFormApp(t);if(o&&"function"==typeof o.sendData){e.debug("[FluentForms] using fluentFormApp.sendData()",r);const n={data:t.serialize(),action:"fluentform_submit",form_id:t.data("form_id")};return o.sendData(t,n),void this.removeErrors(t)}e.warn("[FluentForms] Kein app.sendData() – fallback auf native Trigger",r),window.ff_sumitting_form=!1,t.trigger("submit")}catch(o){e.error("[FluentForms] Fehler beim continueSubmit()",o),a.submit()}}})}),n(document).on("fluentform_before_submit",t=>{if(n(null==t?void 0:t.target).closest("form.frm-fluent-form").data("f12-captcha-in-progress"))return e.debug("[FluentForms] fluentform_before_submit abgefangen (Captcha läuft)"),t.preventDefault(),t.stopImmediatePropagation(),!1})}registerFluentFormEvents(t=0){const n=window.jQuery;if(!n)return t>=20?void e.warn("[FluentForms] jQuery nicht gefunden – Events deaktiviert"):(e.debug(`[FluentForms] jQuery noch nicht verfügbar – retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.registerFluentFormEvents(t+1),300));e.debug("[FluentForms] Registriere Event-Handler für submission_success & submission_failed"),n(document).on("fluentform_submission_success",(t,n,s)=>{const a=this.getFormElementFromEventArg(n),i=(null==s?void 0:s.response)||s;if(!a||!a.length)return void e.warn("[FluentForms] submission_success → kein gültiges Formularobjekt erkannt",n);const c=r(a[0]);e.debug("[FluentForms] fluentform_submission_success erkannt",c),this.removeErrors(a),o.emit("captcha:reloadRequested",{formId:c}),o.emit("captcha:fluent:success",{formId:c,form:a,response:i})}),n(document).on("fluentform_submission_failed",(t,n,s)=>{const a=this.getFormElementFromEventArg(n),i=(null==s?void 0:s.response)||s;if(!a||!a.length)return void e.warn("[FluentForms] submission_failed → kein gültiges Formularobjekt erkannt",n);const c=r(a[0]);e.debug("[FluentForms] fluentform_submission_failed erkannt",c,i),this.showErrors(i,a),o.emit("captcha:reloadRequested",{formId:c}),o.emit("captcha:fluent:error",{formId:c,form:a,response:i})})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerGravityForms"===t&&(this.enabled=!0,e.debug("[GravityForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:init received"),this.registerGravityFormEvents(),this.initialScan(),this.patchGravityForms())}),o.on("captcha:gravity:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:gravity:error received",t,o),this.showErrors(o,r))}),o.on("captcha:gravity:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[EventBus][GravityForms] captcha:gravity:success received",t,o),this.removeErrors(r))})}removeErrors(t){if(!window.jQuery||!t||!t.length)return;const r=t.attr("id")||"(unknown)";e.debug("[GravityForms] removeErrors() gestartet",r);try{t.find(".f12-captcha-error").remove(),t.find(".gfield_error").removeClass("gfield_error"),t.find(".validation_message").remove(),t.find(".validation_error").remove(),t.find('[aria-invalid="true"]').attr("aria-invalid","false"),e.debug("[GravityForms] removeErrors() abgeschlossen",r)}catch(o){e.error("[GravityForms] Fehler in removeErrors()",o)}}showErrors(e,t){const r=window.jQuery;r&&t&&e&&e.errors&&(t.find(".f12-captcha-error").remove(),r.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<div class="f12-captcha-error validation_message">${r}</div>`),o.closest(".gfield").addClass("gfield_error")):t.prepend(`<div class="f12-captcha-error validation_message">${r}</div>`)}))}handleReload(t,r=0){const n=(0,window.jQuery)(`#${t=`gform_${t}`}`);if(!n.length)return e.warn("[GravityForms] handleReload(): kein Formular gefunden (vermutlich nach DOM-Replace)",t),void(r<10?(e.debug(`[GravityForms] handleReload(): #gform_${t} nicht gefunden (Versuch ${r+1})`),setTimeout(()=>this.handleReload(t,r+1),300)):e.debug(`[GravityForms] handleReload(): #gform_${t} nicht gefunden (Versuch ${r+1})`));e.debug("[GravityForms] handleReload()",t),this.removeErrors(n),setTimeout(()=>{o.emit("captcha:reloadRequested",{formId:t}),o.emit("captcha:JavaScriptProtection:setStartTimeRequested",{formId:t})},150)}initialScan(){const t=window.jQuery;if(!t)return e.warn("[GravityForms] jQuery nicht verfügbar – initialScan übersprungen");t(document).ready(()=>{t(".gform_wrapper form").each((_,e)=>{var r;const o=(null==(r=t(e).attr("id"))?void 0:r.replace("gform_",""))||"(unknown)";this.handleReload(o)})})}registerGravityFormEvents(t=0){const r=window.jQuery;if(!r)return t>=20?e.warn("[GravityForms] jQuery nicht verfügbar – Events deaktiviert"):(e.debug(`[GravityForms] retry in 300ms (${t+1}/20)`),setTimeout(()=>this.registerGravityFormEvents(t+1),300));e.debug("[GravityForms] Registriere GF-Events"),r(document).on("gform_pre_submission",(t,n)=>{const s=r(`#gform_${n}`)[0];return e.debug("[GravityForms] gform_pre_submission",n),o.emit("captcha:verifyRequested",{form:s,formId:n,originalEvent:t,continue:()=>{e.debug("[GravityForms] continueSubmit()",n),HTMLFormElement.prototype.submit.call(s)}}),t.preventDefault(),t.stopImmediatePropagation(),!1}),r(document).on("gform_post_render gform_confirmation_loaded",(e,t)=>{this.handleReload(t)})}patchGravityForms(t=0){const n=window.jQuery;if(!n)return t>=20?e.warn("[GravityForms] jQuery nicht gefunden – Submit-Intercept deaktiviert"):(e.debug(`[GravityForms] jQuery noch nicht verfügbar – retry in 300ms (Versuch ${t+1}/20)`),setTimeout(()=>this.patchGravityForms(t+1),300));e.debug("[GravityForms] Registriere globalen Submit-Interceptor"),n(document).on("submit",'form[id^="gform_"]',t=>{const s=n(t.currentTarget),a=s[0],i=r(a);if(s.data("f12-captcha-in-progress"))return e.debug("[GravityForms] Submit bereits in Bearbeitung – blockiert",i),t.preventDefault(),t.stopImmediatePropagation(),!1;e.debug("[GravityForms] Intercepted native submit",i),t.preventDefault(),t.stopImmediatePropagation(),s.data("f12-captcha-in-progress",!0);o.emit("captcha:verifyRequested",{form:a,formId:i,originalEvent:t,continue:()=>{e.debug("[GravityForms] continueSubmit()",i),s.data("f12-captcha-in-progress",!1);try{if(window.gform&&window.gform.submit)return e.debug("[GravityForms] using gform.submit()",i),void window.gform.submit(i);e.warn("[GravityForms] Kein gform.submit() – fallback auf native submit()",i),HTMLFormElement.prototype.submit.call(a)}catch(t){e.error("[GravityForms] Fehler beim continueSubmit()",t),HTMLFormElement.prototype.submit.call(a)}}})})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWPForms"===t&&(this.enabled=!0,e.debug("[WPForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WPForms] captcha:init received"),this.registerHooks(),this.observeAjax())})}registerHooks(t=0){const n=window.jQuery;if(!window.wpforms||!window.jQuery)return t>=20?void e.warn("[WPForms] wpforms nicht gefunden – Hooks deaktiviert"):(e.debug(`[WPForms] retry in 300ms (${t+1}/20)`),setTimeout(()=>this.registerHooks(t+1),300));e.debug("[WPForms] Registriere Event-Hooks"),n(document).on("wpformsBeforeFormSubmit",(t,s)=>{const a=n(s),i=r(s);if(e.debug("[WPForms] wpformsBeforeFormSubmit",i),1===a.data("ssManualSubmit"))return e.debug("[WPForms] Bypass aktiv → normaler Submit",i),void a.data("ssManualSubmit",0);t.preventDefault(),t.stopImmediatePropagation();o.emit("captcha:verifyRequested",{form:s,formId:i,originalEvent:t,continue:()=>{e.debug("[WPForms] Captcha OK → Weiter mit Original-Submit",i),a.data("ssManualSubmit",1),window.wpforms.formSubmit(s)}})}),n(document).on("wpformsAjaxSubmitSuccess",(t,s)=>{const a=n(t.target).closest("form.wpforms-form"),i=r(a[0]);e.debug("[WPForms] AJAX success",i,s),o.emit("captcha:wpforms:success",{formId:i,form:a,response:s}),o.emit("captcha:reloadRequested",{formId:i})}),n(document).on("wpformsAjaxSubmitFailed",(t,s)=>{const a=n(t.target).closest("form.wpforms-form"),i=r(a[0]);e.debug("[WPForms] AJAX failed",i,s),o.emit("captcha:wpforms:error",{formId:i,form:a,response:s}),o.emit("captcha:reloadRequested",{formId:i})})}observeAjax(t=0){const n=window.jQuery;if(!window.jQuery)return t>=20?void e.warn("[WPForms] jQuery nicht gefunden – ajaxComplete deaktiviert"):setTimeout(()=>this.observeAjax(t+1),300);n(document).ajaxComplete((t,s,a)=>{try{const t=JSON.parse(s.responseText);if(!t||void 0===t.success)return;const i=n((null==a?void 0:a.context)||"form.wpforms-form");if(!i||!i.length)return void e.debug("[WPForms] Kein Formular im Context gefunden → Event abgebrochen");const c=i[0];if(!(c&&c instanceof HTMLFormElement))return void e.debug("[WPForms] Ungültiges Form-Element → Event abgebrochen",c);const m=r(c);if(!m)return void e.debug("[WPForms] Konnte keine gültige formId ermitteln → Event abgebrochen");o.emit("captcha:reloadRequested",{formId:m})}catch(i){e.debug("[WPForms] AJAX Response konnte nicht geparst werden – ignoriert",i)}})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWoocommerceLogin"!==t&&"ControllerWoocommerceRegistration"!==t||this.enabled||(this.enabled=!0,e.debug("[WooCommerceForms] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][WooCommerceForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:woocommerce:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceForms] captcha:woocommerce:error received",t,o),this.showErrors(o,r))}),o.on("captcha:woocommerce:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceForms] captcha:woocommerce:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".woocommerce-error, .woocommerce-message").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after('<div class="f12-captcha-error woocommerce-error">'+r+"</div>"),o.addClass("fusion-form-error")):t.prepend('<div class="f12-captcha-error woocommerce-error">'+r+"</div>")}))}observeAjaxResponses(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceForms] jQuery nicht gefunden – observeAjaxResponses deaktiviert"):setTimeout(()=>this.observeAjaxResponses(t+1),300);const r=window.jQuery;e.debug("[WooCommerceForms] Registriere globales ajaxComplete-Event"),r(document).ajaxComplete((t,n,s)=>{try{const t=JSON.parse(n.responseText);if(!t||!t.status)return;const a=r((null==s?void 0:s.context)||"form.woocommerce-form, form.checkout");"error"===t.status&&t.errors&&(e.debug("[WooCommerceForms] AJAX error → Captcha-Reload ausgelöst"),o.emit("captcha:woocommerce:error",{formId:a.attr("id"),form:a,response:t}),o.emit("captcha:reloadRequested",{formId:a.attr("id")})),"success"===t.status&&(o.emit("captcha:woocommerce:success",{formId:a.attr("id"),form:a,response:t}),e.debug("[WooCommerceForms] AJAX success → Fehler entfernt"))}catch(a){}})}registerSubmitInterceptor(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceForms] jQuery nicht gefunden – Events deaktiviert"):setTimeout(()=>this.registerSubmitInterceptor(t+1),300);const n=window.jQuery;e.debug("[WooCommerceForms] Registriere Submit-Interceptor für WooCommerce"),n(document).on("submit","form.woocommerce-form",t=>{const s=t.currentTarget;n(s).data("f12-submit-finished",!0);const a=r(s);n(s).data("captcha-verified")?n(s).data("captcha-verified",!1):(e.debug("[WooCommerceForms] Intercepted WooCommerce submit",a),o.emit("captcha:verifyRequested",{form:s,formId:a,originalEvent:t,continue:()=>{e.debug("[WooCommerceForms] Captcha verified → continue native submit",a),n(s).data("captcha-verified",!0);const t=s.querySelector('[type="submit"]:not([disabled])')||s.querySelector("button:not([disabled])");t?(e.debug("[WooCommerceForms] Trigger submit button click()",a),t.click()):(e.debug("[WooCommerceForms] Kein sichtbarer Submit-Button → native submit()",a),HTMLFormElement.prototype.submit.call(s)),setTimeout(()=>{if(!n(s).data("f12-submit-finished")){e.debug("[WooCommerceForms] Fallback → erzwinge native submit()",a);try{HTMLFormElement.prototype.submit.call(s)}catch(t){e.error("[WooCommerceForms] Fehler bei fallback submit()",t)}}},500)}}))})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWoocommerceCheckout"===t&&(this.enabled=!0,e.debug("[WooCommerceCheckoutForm] Aktiviert durch component:enable"),this.register())})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[EventBus][WooCommerceCheckoutForm] captcha:init received"),this.registerCheckoutInterceptor(),this.observeAjaxResponses())}),o.on("captcha:woocommerce:error",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceCheckoutForm] captcha:woocommerce:error received",t,o),this.showErrors(o,r))}),o.on("captcha:woocommerce:success",({formId:t,form:r,response:o})=>{this.enabled&&(e.debug("[WooCommerceCheckoutForm] captcha:woocommerce:success received",t,o),this.removeErrors(r))})}removeErrors(e){e.find(".f12-captcha-error").remove(),e.find(".woocommerce-error, .woocommerce-message").removeClass("fusion-form-error")}showErrors(e,t){e&&e.errors&&(t.find(".f12-captcha-error").remove(),jQuery.each(e.errors,function(e,r){const o=t.find(`[name="${e}"]`);o.length?(o.after(`<div class="f12-captcha-error woocommerce-error">${r}</div>`),o.addClass("fusion-form-error")):t.prepend(`<div class="f12-captcha-error woocommerce-error">${r}</div>`)}))}injectJsTimestampsIntoBody(e){const t=String(Date.now()/1e3),r=document.querySelector("form.checkout"),o=null==r?void 0:r.querySelector('[name="js_start_time"]'),n=(null==o?void 0:o.value)||t;return e instanceof FormData?(e.get("js_end_time")||e.set("js_end_time",t),e.get("js_start_time")||e.set("js_start_time",n)):"string"==typeof e&&(/(?:^|&)js_end_time=(?=&|$)/.test(e)?e=e.replace(/((?:^|&)js_end_time)=(?=&|$)/,`$1=${encodeURIComponent(t)}`):e.includes("js_end_time=")||(e+=`&js_end_time=${encodeURIComponent(t)}`),/(?:^|&)js_start_time=(?=&|$)/.test(e)?e=e.replace(/((?:^|&)js_start_time)=(?=&|$)/,`$1=${encodeURIComponent(n)}`):e.includes("js_start_time=")||(e+=`&js_start_time=${encodeURIComponent(n)}`)),e}injectJsTimestamps(e){const t=e[1];return t&&t.body&&(t.body=this.injectJsTimestampsIntoBody(t.body)),e}observeAjaxResponses(t=0){var r;if(!document.querySelector("form.checkout"))return void e.debug("[WooCommerceCheckoutForm] Kein <form.checkout> gefunden → skip observeAjaxResponses");const n=this,s=e=>{try{const t=new URL(e,location.href);return"checkout"===t.searchParams.get("wc-ajax")||(!(!t.pathname.includes("/wp-json/wc/store/")&&!t.pathname.includes("/wp-json/wc/v3/"))||!(!t.pathname.endsWith("/admin-ajax.php")||!(t.searchParams.get("action")||"").includes("checkout")))}catch{return!1}},a=(t,r="unknown")=>{const n=window.jQuery?jQuery("form.checkout"):null,s=null==n?void 0:n.attr("id");if(t&&"object"==typeof t&&("result"in t||"redirect"in t||"messages"in t)){if("failure"===t.result||t.messages)return e.debug(`[WooCommerceCheckoutForm] ${r} classic → FAILURE`,t),o.emit("captcha:woocommerce:error",{formId:s,form:n,response:t}),void o.emit("captcha:reloadRequested",{formId:s});if("success"===t.result||t.redirect)return e.debug(`[WooCommerceCheckoutForm] ${r} classic → SUCCESS`,t),void o.emit("captcha:woocommerce:success",{formId:s,form:n,response:t})}if(t&&"object"==typeof t&&("status"in t||"code"in t||"message"in t)){return"error"===t.status||t.code||t.data&&t.data.status>=400?(e.debug(`[WooCommerceCheckoutForm] ${r} store-api → ERROR`,t),o.emit("captcha:woocommerce:error",{formId:s,form:n,response:t}),void o.emit("captcha:reloadRequested",{formId:s})):(e.debug(`[WooCommerceCheckoutForm] ${r} store-api → SUCCESS`,t),void o.emit("captcha:woocommerce:success",{formId:s,form:n,response:t}))}e.debug(`[WooCommerceCheckoutForm] ${r} unbekanntes Format – keine Aktion`,t)};if(!window._f12FetchPatched){const t=null==(r=window.fetch)?void 0:r.bind(window);t?(window.fetch=async(...r)=>{try{const o=r[0],i="string"==typeof o?o:(null==o?void 0:o.url)||"";s(i)&&(r=n.injectJsTimestamps(r));const c=await t(...r);if(s(i)){const t=c.clone();let r="";try{r=await t.text()}catch{}let o=null;try{o=r?JSON.parse(r):null}catch{}o?a(o,"fetch/json"):r&&r.includes("woocommerce-error")?a({result:"failure",messages:r},"fetch/html"):e.debug("[WooCommerceCheckoutForm] fetch response (kein JSON, kein WC-HTML)",{snippet:null==r?void 0:r.slice(0,200)})}return c}catch(o){return e.warn("[WooCommerceCheckoutForm] fetch interception error",o),await(window.fetch?window.fetch(...r):Promise.reject(o))}},window._f12FetchPatched=!0,e.debug("[WooCommerceCheckoutForm] fetch() interception aktiv")):e.debug("[WooCommerceCheckoutForm] fetch() nicht verfügbar – überspringe fetch patch")}if(!window._f12XhrPatched&&window.XMLHttpRequest){const t=window.XMLHttpRequest,r=t.prototype.open,o=t.prototype.send;t.prototype.open=function(e,t,...o){return this._f12url=t,r.apply(this,[e,t,...o])},t.prototype.send=function(t){return s(this._f12url)&&(t=n.injectJsTimestampsIntoBody(t),this.addEventListener("readystatechange",()=>{if(4===this.readyState)try{const r=this.getResponseHeader("Content-Type")||"",o=this.responseText||"";if(r.includes("application/json"))try{const e=JSON.parse(o);a(e,"xhr/json")}catch(t){e.debug("[WooCommerceCheckoutForm] xhr JSON parse fail",t)}else o.includes("woocommerce-error")?a({result:"failure",messages:o},"xhr/html"):e.debug("[WooCommerceCheckoutForm] xhr response (kein JSON, kein WC-HTML)",{snippet:o.slice(0,200)})}catch(t){e.warn("[WooCommerceCheckoutForm] xhr interception error",t)}})),o.apply(this,[t])},window._f12XhrPatched=!0,e.debug("[WooCommerceCheckoutForm] XMLHttpRequest interception aktiv")}}registerCheckoutInterceptor(t=0){if(!window.jQuery)return t>=20?void e.warn("[WooCommerceCheckoutForm] jQuery nicht gefunden – Events deaktiviert"):setTimeout(()=>this.registerCheckoutInterceptor(t+1),300);const n=window.jQuery;e.debug("[WooCommerceCheckoutForm] Registriere Click-Interceptor für #place_order"),n(document).off("click.f12Captcha","form.checkout #place_order"),n(document).on("click.f12Captcha","form.checkout #place_order",t=>{const s=t.currentTarget.closest("form.checkout"),a=n(s),i=r(s);if(a.data("captcha-verified"))return a.removeData("captcha-verified"),e.debug("[WooCommerceCheckoutForm] Captcha bereits validiert → WooCommerce darf fortfahren",i),!0;t.preventDefault(),t.stopImmediatePropagation(),e.debug("[WooCommerceCheckoutForm] Klick auf #place_order abgefangen → CAPTCHA prüfen",i),o.emit("captcha:verifyRequested",{form:s,formId:i,originalEvent:t,continue:()=>{a.data("captcha-verified",!0),e.debug("[WooCommerceCheckoutForm] Captcha OK → löse Button-Klick erneut aus",i);const r=new MouseEvent("click",t);s.querySelector("#place_order").dispatchEvent(r)}})})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWordpressLogin"===t&&(this.enabled||(this.enabled=!0,e.debug("[WordPressLoginForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WordPressLoginForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:wp-login:error",({formId:e,form:t,response:r})=>{this.enabled&&this.showErrors(r,t)}),o.on("captcha:wp-login:success",({formId:e,form:t,response:r})=>{this.enabled&&this.removeErrors(t)})}removeErrors(e){e.querySelectorAll(".f12-captcha-error").forEach(e=>e.remove())}showErrors(e,t){e&&e.errors&&(this.removeErrors(t),Object.entries(e.errors).forEach(([e,r])=>{const o=t.querySelector(`[name="${e}"]`);if(o){const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginTop="5px",e.innerHTML=r,o.insertAdjacentElement("afterend",e)}else{const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginBottom="10px",e.innerHTML=r,t.prepend(e)}}))}observeAjaxResponses(){}registerSubmitInterceptor(){e.debug("[WordPressLoginForms] Registriere Submit-Interceptor"),document.addEventListener("submit",t=>{const n=t.target.closest("form#loginform");if(!n)return;const s=r(n);n.dataset.captchaVerified?delete n.dataset.captchaVerified:(e.debug("[WordPressLoginForms] Intercepted WP login submit",s),t.preventDefault(),t.stopImmediatePropagation(),o.emit("captcha:verifyRequested",{form:n,formId:s,originalEvent:t,continue:()=>{e.debug("[WordPressLoginForms] Captcha verified → continue submit",s),n.dataset.captchaVerified="1";const t=n.querySelector('[type="submit"]');t?t.click():n.submit(),setTimeout(()=>{if(!n.dataset.submitFinished){e.debug("[WordPressLoginForms] Fallback → native submit()",s);try{n.submit()}catch(t){e.error("[WordPressLoginForms] fallback submit error",t)}}},300)}}))})}};new class{constructor(){this.enabled=!1,o.on("captcha:component:enable",t=>{"ControllerWordpressRegistration"===t&&(this.enabled||(this.enabled=!0,e.debug("[WordPressRegistrationForms] Aktiviert durch component:enable"),this.register()))})}register(){o.on("captcha:init",()=>{this.enabled&&(e.debug("[WordPressRegistrationForms] captcha:init received"),this.registerSubmitInterceptor(),this.observeAjaxResponses())}),o.on("captcha:wp-registration:error",({formId:e,form:t,response:r})=>{this.enabled&&this.showErrors(r,t)}),o.on("captcha:wp-registration:success",({formId:e,form:t,response:r})=>{this.enabled&&this.removeErrors(t)})}removeErrors(e){e.querySelectorAll(".f12-captcha-error").forEach(e=>e.remove())}showErrors(e,t){e&&e.errors&&(this.removeErrors(t),Object.entries(e.errors).forEach(([e,r])=>{const o=t.querySelector(`[name="${e}"]`);if(o){const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginTop="5px",e.innerHTML=r,o.insertAdjacentElement("afterend",e)}else{const e=document.createElement("div");e.className="f12-captcha-error",e.style.color="#d63638",e.style.marginBottom="10px",e.innerHTML=r,t.prepend(e)}}))}observeAjaxResponses(){}registerSubmitInterceptor(){e.debug("[WordPressRegistrationForms] Registriere Submit-Interceptor"),document.addEventListener("submit",t=>{const n=t.target.closest("form#registerform");if(!n)return;const s=r(n);n.dataset.captchaVerified?delete n.dataset.captchaVerified:(e.debug("[WordPressRegistrationForms] Intercepted WP login submit",s),t.preventDefault(),t.stopImmediatePropagation(),o.emit("captcha:verifyRequested",{form:n,formId:s,originalEvent:t,continue:()=>{e.debug("[WordPressRegistrationForms] Captcha verified → continue submit",s),n.dataset.captchaVerified="1";const t=n.querySelector('[type="submit"]');t?t.click():n.submit(),setTimeout(()=>{if(!n.dataset.submitFinished){e.debug("[WordPressRegistrationForms] Fallback → native submit()",s);try{n.submit()}catch(t){e.error("[WordPressRegistrationForms] fallback submit error",t)}}},300)}}))})}},window.f12cf7captcha_cf7={logger:e,reloadAllCaptchas:function(){e.debug("Reload all Captchas"),o.emit("captcha:reloadAllRequested")},init:function(){this.logger.log("Init gestartet");(window.f12_cf7_captcha&&f12_cf7_captcha.components||[]).forEach(t=>{e.debug(`[Init] Aktiviere Komponente: ${t}`),o.emit("captcha:component:enable",t)}),document.addEventListener("DOMContentLoaded",()=>{e.debug("DOM ready -> init all forms"),document.querySelectorAll("form").forEach(t=>{const n=r(t);void 0!==o&&o.emit("captcha:initForm",{form:t,formId:n}),e.debug("Form initialized",n)}),o.emit("captcha:init")}),document.addEventListener("click",t=>{if(!(t.target.closest(".cf7.captcha-reload")||t.target.closest(".c-reload")))return;e.debug("Reload-Button geklickt",t.target),t.preventDefault(),t.stopPropagation();const n=t.target.closest(".f12-captcha");if(!n)return void e.error("Kein Captcha-Container gefunden");const s=n.querySelector(".f12c");if(!s||!s.id)return void e.error("Kein Captcha-Input mit ID gefunden");const a=s.id;e.debug("Captcha-Input-ID gefunden",a);const i=t.target.closest("form");if(!i)return void e.error("Kein Formular für Captcha gefunden");const c=r(i);e.debug("Formular-ID",c),o.emit("captcha:reloadRequested",{formId:c,captchaInputId:a})})}},window.f12cf7captcha_cf7.init()}();