(function(){'use strict';if(window.grababotFrontendCaptchaInitialized)return;window.grababotFrontendCaptchaInitialized=true;var provider=(typeof grababotCaptcha!=='undefined')?grababotCaptcha.provider:'none';var siteKey=(typeof grababotCaptcha!=='undefined')?grababotCaptcha.siteKey:'';if(provider==='none'||!siteKey)return;var SKIP_ID_PATTERNS=[/reset/i,/registration/i,/register/i,/signup/i,/recover/i,/forgot/i,/popup_alert/i,/aprov_form/i];var LOGIN_ID_PATTERNS=[/^login-form/i,/^loginform/i];var USERNAME_SELECTORS=['input[name="log"]','input[name="username"]','input[name="user_login"]','input[name="user_name"]','input[name="login_username"]','input[name="email"]','input[name="user_email"]','input[name="login_email"]','input[name="pt_user_login"]'];function isLoginForm(form){if(form.dataset.grababotCaptcha==='injected')return false;if(form.classList.contains('woocommerce-form-login')||form.classList.contains('woocommerce-form-register')||form.querySelector('[name="woocommerce-login-nonce"]')||form.querySelector('[name="woocommerce-register-nonce"]')){return false;}
if(form.id){var isKnownLogin=false;for(var i=0;i<LOGIN_ID_PATTERNS.length;i++){if(LOGIN_ID_PATTERNS[i].test(form.id)){isKnownLogin=true;break;}}
if(!isKnownLogin){for(var j=0;j<SKIP_ID_PATTERNS.length;j++){if(SKIP_ID_PATTERNS[j].test(form.id))return false;}}}
if(form.querySelectorAll('input[type="password"]').length!==1)return false;if(!findUsernameField(form))return false;if(!form.querySelector('input[type="submit"], button[type="submit"], button:not([type])'))return false;return true;}
function findUsernameField(form){for(var i=0;i<USERNAME_SELECTORS.length;i++){var f=form.querySelector(USERNAME_SELECTORS[i]);if(f)return f;}
var passField=form.querySelector('input[type="password"]');if(!passField)return null;var inputs=form.querySelectorAll('input[type="text"], input[type="email"]');for(var j=0;j<inputs.length;j++){if(passField.compareDocumentPosition(inputs[j])&Node.DOCUMENT_POSITION_PRECEDING){return inputs[j];}}
return inputs.length>0?inputs[0]:null;}
var widgetCounter=0;var WRAPPER_SELECTORS='li, p, div.form-row, div.form-group, div.fieldset-row, div.input-field-submit';function injectCaptcha(form){var submitBtn=form.querySelector('input[type="submit"], button[type="submit"], button:not([type])');if(!submitBtn)return;if(form.querySelector('.g-recaptcha, .h-captcha, .cf-turnstile, .frc-captcha, .grababot-captcha-container-frontend'))return;form.dataset.grababotCaptcha='injected';widgetCounter++;var passField=form.querySelector('input[type="password"]');var passWrapper=passField?passField.closest(WRAPPER_SELECTORS):null;var container;if(passWrapper){container=document.createElement(passWrapper.tagName);if(passWrapper.className){container.className=passWrapper.className;}}else{container=document.createElement('div');}
container.className+=(container.className?' ':'')+'grababot-captcha-container-frontend';container.id='grababot-captcha-frontend-'+widgetCounter;var wrapper=submitBtn.closest(WRAPPER_SELECTORS)||submitBtn;if(wrapper.parentNode){wrapper.parentNode.insertBefore(document.createComment(' Bothammer CAPTCHA START '),wrapper);wrapper.parentNode.insertBefore(container,wrapper);wrapper.parentNode.insertBefore(document.createComment(' Bothammer CAPTCHA END '),wrapper);}
switch(provider){case'recaptcha_v2':renderRecaptchaV2(container,form);break;case'recaptcha_v3':renderRecaptchaV3(container,form);break;case'hcaptcha':renderHcaptcha(container,form);break;case'turnstile':renderTurnstile(container,form);break;case'friendly_captcha':renderFriendlyCaptcha(container,form);break;}}
function renderRecaptchaV2(container,form){var div=document.createElement('div');container.appendChild(div);(function tryRender(){if(typeof grecaptcha!=='undefined'&&grecaptcha.render){grecaptcha.render(div,{sitekey:siteKey});}else{setTimeout(tryRender,200);}})();}
function renderRecaptchaV3(container,form){var tokenField=document.createElement('input');tokenField.type='hidden';tokenField.name='grababot_recaptcha_token';tokenField.className='grababot-recaptcha-token';container.appendChild(tokenField);form.addEventListener('submit',function(e){if(tokenField.value)return;e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();(function tryExecute(){if(typeof grecaptcha!=='undefined'&&grecaptcha.execute){grecaptcha.execute(siteKey,{action:'login'}).then(function(token){tokenField.value=token;var btn=form.querySelector('input[type="submit"], button[type="submit"]');if(form.requestSubmit){form.requestSubmit(btn||undefined);}else{form.submit();}});}else{setTimeout(tryExecute,200);}})();return false;},true);}
function renderHcaptcha(container,form){var div=document.createElement('div');container.appendChild(div);(function tryRender(){if(typeof hcaptcha!=='undefined'&&hcaptcha.render){hcaptcha.render(div,{sitekey:siteKey});}else{setTimeout(tryRender,200);}})();}
function renderTurnstile(container,form){var div=document.createElement('div');container.appendChild(div);(function tryRender(){if(typeof turnstile!=='undefined'&&turnstile.render){turnstile.render(div,{sitekey:siteKey});}else{setTimeout(tryRender,200);}})();}
function renderFriendlyCaptcha(container,form){var div=document.createElement('div');div.className='frc-captcha';div.setAttribute('data-sitekey',siteKey);container.appendChild(div);(function tryRender(){if(typeof friendlyChallenge!=='undefined'){new friendlyChallenge.WidgetInstance(div,{sitekey:siteKey});}else{setTimeout(tryRender,200);}})();}
function scanAndInject(){var forms=document.querySelectorAll('form');for(var i=0;i<forms.length;i++){if(isLoginForm(forms[i]))injectCaptcha(forms[i]);}}
function init(){scanAndInject();var observer=new MutationObserver(function(mutations){for(var m=0;m<mutations.length;m++){var nodes=mutations[m].addedNodes;for(var n=0;n<nodes.length;n++){var node=nodes[n];if(node.nodeType!==1)continue;if(node.tagName==='FORM'&&isLoginForm(node)){injectCaptcha(node);}
if(node.querySelectorAll){var nested=node.querySelectorAll('form');for(var k=0;k<nested.length;k++){if(isLoginForm(nested[k]))injectCaptcha(nested[k]);}}}}});observer.observe(document.body,{childList:true,subtree:true});setTimeout(function(){observer.disconnect();},60000);}
if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}})();