document.addEventListener("DOMContentLoaded",function(){const config={blockedStartRegex:/^(gamil|gmal|gmial|gmil|gmai[0-9]|gmaii|yhoo|yaho[0-9]|yahho|yahu|outlok|otlook|oulook|hotmal|hotmil|hotmial|hotnail)/,emailFormatRegex:/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}(\.[a-z]{2,})*$/i,nameRegex:/^[A-Za-z\s]+$/,standardDomainRegex:/^(gmail\.com|yahoo\.com|outlook\.com|hotmail\.com|icloud\.com|aol\.com|protonmail\.com|mail\.com|yandex\.com|zoho\.com|gmx\.com|gmail\.co\.uk|yahoo\.co\.uk|outlook\.co\.uk|hotmail\.co\.uk|icloud\.co\.uk|aol\.co\.uk|protonmail\.co\.uk|mail\.co\.uk|yandex\.co\.uk|zoho\.co\.uk|gmx\.co\.uk|gmail\.com\.au|yahoo\.com\.au|outlook\.com\.au|hotmail\.com\.au|gmail\.ca|yahoo\.ca|outlook\.ca|hotmail\.ca|gmail\.de|yahoo\.de|outlook\.de|hotmail\.de|gmail\.fr|yahoo\.fr|outlook\.fr|hotmail\.fr|gmail\.it|yahoo\.it|outlook\.it|hotmail\.it|gmail\.es|yahoo\.es|outlook\.es|hotmail\.es|gmail\.nl|yahoo\.nl|outlook\.nl|hotmail\.nl|gmail\.se|yahoo\.se|outlook\.se|hotmail\.se|gmail\.no|yahoo\.no|outlook\.no|hotmail\.no|gmail\.dk|yahoo\.dk|outlook\.dk|hotmail\.dk|gmail\.fi|yahoo\.fi|outlook\.fi|hotmail\.fi)$/,domainVariationRegex:/(gmail|yahoo|outlook|hotmail|icloud|aol|protonmail|mail|yandex|zoho|gmx)\d*/i,blockedDomains:new Set(["g.com","yaho.com","yhoo.com","yahoo.co","yahho.com","gm.com","gma.com","gmai.com","yahoo.con","yaho.co.uk","yahoomail.com","yahoomail.co.uk","yaho.co","yahooo.com","yaho.com.co","yaho.com.uk","yaho.co.uk","yahooo.co.uk","hotmail.con","hotmail.co.uk","hotmal.co.uk","hotmal.com","hotmail.con","hotmail.co","hotmial.co","hotmial.con","hotmail.co.uk","hotmail.com.co","hotmail.com.uk","outlook.con","outlook.co.uk","outlok.co.uk","outlok.com","outlok.co","outlook.con","outlook.co","outlok.co.uk","outlook.com.co","outlook.com.uk","outlok.co.uk","outlok.com.co","outlok.com.uk","outlook.co.uk","outlook.com","outlook.con","outlook.co","outlok.con","outlok.co.uk","outlok.com.co","outlok.com.uk","outlook.con","outlook.co","outlok.con","outlok.co.uk","outlok.com.co","outlok.com.uk","outlook.com.co","outlook.com.uk","outlok.con","outlok.co.uk","outlok.com.co","outlok.com.uk","outlook.com","outlook.co","outlok.con","outlok.co.uk","outlok.com.co","outlok.com.uk","outlok.com","oulook.com","outlook.co","otlook.com","hotmal.com","hotmil.com","hotmial.com","hotmail.co","aol.co","aol.con","ao1.com","iclud.com","icloud.co","icloud.con","msb.com","msn.co","msn.con","test.com","abc.com","user.com","demo.com","noreply.com","asdf.com","xyz.com","email.com","nothing.com","bar.com","yaho.com","hotnail.com","utlok.com","gmial.com","example.com","domain.com","fake.com","comcasy.net","gnail.com","unknown.com","null.com","na.com","0815.ru","0wnd.net","0wnd.org","10minutemail.co.za","10minutemail.com","123-m.com","1fsdfdsfsdf.tk","1pad.de","20minutemail.com","21cn.com","2fdgdfgdfgdf.tk","2prong.com","30minutemail.com","33mail.com","3trtretgfrfe.tk","4gfdsgfdgfd.tk","4warding.com","5ghgfhfghfgh.tk","6hjgjhgkilkj.tk","6paq.com","7tags.com","9ox.net","a-bc.net","agedmail.com","ama-trade.de","amilegit.com","amiri.net","amiriindustries.com","anonmails.de","anonymbox.com","antichef.com","antichef.net","antireg.ru","antispam.de","antispammail.de","armyspy.com","artman-conception.com","azmeil.tk","baxomale.ht.cx","beefmilk.com","bigstring.com","binkmail.com","bio-muesli.net","bobmail.info","bodhi.lawlita.com","bofthew.com","bootybay.de","boun.cr","bouncr.com","breakthru.com","brefmail.com","bsnow.net","bspamfree.org","bugmenot.com","bund.us","burstmail.info","buymoreplays.com","byom.de","c2.hu","card.zp.ua","casualdx.com","cek.pm","centermail.com","centermail.net","chammy.info","childsavetrust.org","chogmail.com","choicemail1.com","clixser.com","cmail.net","cmail.org","coldemail.info","cool.fr.nf","courriel.fr.nf","courrieltemporaire.com","crapmail.org","cust.in","cuvox.de","d3p.dk","dacoolest.com","dandikmail.com","dayrep.com","dcemail.com","deadaddress.com","deadspam.com","delikkt.de","despam.it","despammed.com","devnullmail.com","dfgh.net","digitalsanctuary.com","dingbone.com","disposableaddress.com","disposableemailaddresses.com","disposableinbox.com","dispose.it","dispostable.com","dodgeit.com","dodgit.com","donemail.ru","dontreg.com","dontsendmespam.de","drdrb.net","dump-email.info","dumpandjunk.com","dumpyemail.com","e-mail.com","e-mail.org","e4ward.com","easytrashmail.com","einmalmail.de","einrot.com","eintagsmail.de","emailgo.de","emailias.com","emaillime.com","emailsensei.com","emailtemporanea.com","emailtemporanea.net","emailtemporar.ro","emailtemporario.com.br","emailthe.net","emailtmp.com","emailwarden.com","emailx.at.hm","emailxfer.com","emeil.in","emeil.ir","emz.net","ero-tube.org","evopo.com","explodemail.com","express.net.ua","eyepaste.com","fakeinbox.com","fakeinformation.com","fansworldwide.de","fantasymail.de","fightallspam.com","filzmail.com","fivemail.de","fleckens.hu","frapmail.com","friendlymail.co.uk","fuckingduh.com","fudgerub.com","fyii.de","garliclife.com","gehensiemirnichtaufdensack.de","get2mail.fr","getairmail.com","getmails.eu","getonemail.com","giantmail.de","girlsundertheinfluence.com","gishpuppy.com","gmial.com","goemailgo.com","gotmail.net","gotmail.org","gotti.otherinbox.com","great-host.in","greensloth.com","grr.la","gsrv.co.uk","guerillamail.biz","guerillamail.com","guerrillamail.biz","guerrillamail.com","guerrillamail.de","guerrillamail.info","guerrillamail.net","guerrillamail.org","guerrillamailblock.com","gustr.com","harakirimail.com","hat-geld.de","hatespam.org","herp.in","hidemail.de","hidzz.com","hmamail.com","hopemail.biz","ieh-mail.de","ikbenspamvrij.nl","imails.info","inbax.tk","inbox.si","inboxalias.com","inboxclean.com","inboxclean.org","infocom.zp.ua","instant-mail.de","ip6.li","irish2me.com","iwi.net","jetable.com","jetable.fr.nf","jetable.net","jetable.org","jnxjn.com","jourrapide.com","jsrsolutions.com","kasmail.com","kaspop.com","killmail.com","killmail.net","klassmaster.com","klzlk.com","koszmail.pl","kurzepost.de","lawlita.com","letthemeatspam.com","lhsdv.com","lifebyfood.com","link2mail.net","litedrop.com","lol.ovpn.to","lolfreak.net","lookugly.com","lortemail.dk","lr78.com","lroid.com","lukop.dk","m21.cc","mail-filter.com","mail-temporaire.fr","mail.by","mail.mezimages.net","mail.zp.ua","mail1a.de","mail21.cc","mail2rss.org","mail333.com","mailbidon.com","mailbiz.biz","mailblocks.com","mailbucket.org","mailcat.biz","mailcatch.com","mailde.de","mailde.info","maildrop.cc","maileimer.de","mailexpire.com","mailfa.tk","mailforspam.com","mailfreeonline.com","mailguard.me","mailin8r.com","mailinater.com","mailinator.com","mailinator.net","mailinator.org","mailinator2.com","mailincubator.com","mailismagic.com","mailme.lv","mailme24.com","mailmetrash.com","mailmoat.com","mailms.com","mailnesia.com","mailnull.com","mailorg.org","mailpick.biz","mailrock.biz","mailscrap.com","mailshell.com","mailsiphon.com","mailtemp.info","mailtome.de","mailtothis.com","mailtrash.net","mailtv.net","mailtv.tv","mailzilla.com","makemetheking.com","manybrain.com","mbx.cc","mega.zik.dj","meinspamschutz.de","meltmail.com","messagebeamer.de","mezimages.net","ministry-of-silly-walks.de","mintemail.com","misterpinball.de","moncourrier.fr.nf","monemail.fr.nf","monmail.fr.nf","monumentmail.com","mt2009.com","mt2014.com","mycard.net.ua","mycleaninbox.net","mymail-in.net","mypacks.net","mypartyclip.de","myphantomemail.com","mysamp.de","mytempemail.com","mytempmail.com","mytrashmail.com","nabuma.com","neomailbox.com","nepwk.com","nervmich.net","nervtmich.net","netmails.com","netmails.net","neverbox.com","nice-4u.com","nincsmail.hu","nnh.com","no-spam.ws","noblepioneer.com","nomail.pw","nomail.xl.cx","nomail2me.com","nomorespamemails.com","nospam.ze.tc","nospam4.us","nospamfor.us","nospammail.net","notmailinator.com","nowhere.org","nowmymail.com","nurfuerspam.de","nus.edu.sg","objectmail.com","obobbo.com","odnorazovoe.ru","oneoffemail.com","onewaymail.com","onlatedotcom.info","online.ms","opayq.com","ordinaryamerican.net","otherinbox.com","ovpn.to","owlpic.com","pancakemail.com","pcusers.otherinbox.com","pjjkp.com","plexolan.de","poczta.onet.pl","politikerclub.de","poofy.org","pookmail.com","privacy.net","privatdemail.net","proxymail.eu","prtnx.com","putthisinyourspamdatabase.com","qq.com","quickinbox.com","rcpt.at","reallymymail.com","realtyalerts.ca","recode.me","recursor.net","reliable-mail.com","rhyta.com","rmqkr.net","royal.net","rtrtr.com","s0ny.net","safe-mail.net","safersignup.de","safetymail.info","safetypost.de","saynotospams.com","schafmail.de","schrott-email.de","secretemail.de","secure-mail.biz","senseless-entertainment.com","services391.com","sharklasers.com","shieldemail.com","shiftmail.com","shitmail.me","shitware.nl","shmeriously.com","shortmail.net","sibmail.com","sinnlos-mail.de","slapsfromlastnight.com","slaskpost.se","smashmail.de","smellfear.com","snakemail.com","sneakemail.com","sneakmail.de","snkmail.com","sofimail.com","solvemail.info","sogetthis.com","soodonims.com","spam4.me","spamail.de","spamarrest.com","spambob.net","spambog.ru","spambox.us","spamcannon.com","spamcannon.net","spamcon.org","spamcorptastic.com","spamcowboy.com","spamcowboy.net","spamcowboy.org","spamday.com","spamex.com","spamfree.eu","spamfree24.com","spamfree24.de","spamfree24.org","spamgoes.in","spamgourmet.com","spamgourmet.net","spamgourmet.org","spamherelots.com","spamhereplease.com","spamhole.com","spamify.com","spaml.de","spammotel.com","spamobox.com","spamslicer.com","spamspot.com","spamthis.co.uk","spamtroll.net","speed.1s.fr","spoofmail.de","stuffmail.de","super-auswahl.de","supergreatmail.com","supermailer.jp","superrito.com","superstachel.de","suremail.info","talkinator.com","teewars.org","teleworm.com","teleworm.us","temp-mail.org","temp-mail.ru","tempe-mail.com","tempemail.co.za","tempemail.com","tempemail.net","tempinbox.co.uk","tempinbox.com","tempmail.eu","tempmaildemo.com","tempmailer.com","tempmailer.de","tempomail.fr","temporaryemail.net","temporaryforwarding.com","temporaryinbox.com","temporarymailaddress.com","tempthe.net","thankyou2010.com","thc.st","thelimestones.com","thisisnotmyrealemail.com","thismail.net","throwawayemailaddress.com","tilien.com","tittbit.in","tizi.com","tmailinator.com","toomail.biz","topranklist.de","tradermail.info","trash-mail.at","trash-mail.com","trash-mail.de","trash2009.com","trashdevil.com","trashemail.de","trashmail.at","trashmail.com","trashmail.de","trashmail.me","trashmail.net","trashmail.org","trashymail.com","trialmail.de","trillianpro.com","twinmail.de","tyldd.com","uggsrock.com","umail.net","uroid.com","us.af","venompen.com","veryrealemail.com","viditag.com","viralplays.com","vpn.st","vsimcard.com","vubby.com","wasteland.rfc822.org","webemail.me","weg-werf-email.de","wegwerf-emails.de","wegwerfadresse.de","wegwerfemail.com","wegwerfemail.de","wegwerfmail.de","wegwerfmail.info","wegwerfmail.net","wegwerfmail.org","wh4f.org","whyspam.me","willhackforfood.biz","willselfdestruct.com","winemaven.info","wronghead.com","e4ward.com","mailinator.com","new.eu","x.ip6.li","xagloo.com","xemaps.com","xents.com","xmaily.com","xoxy.net","yep.it","yogamaven.com","yopmail.com","yopmail.fr","yopmail.net","yourdomain.com","yuurok.com","z1p.biz","za.com","zehnminuten.de","zehnminutenmail.de","zippymail.info","zoemail.net","zomg.info","drdrb.com"])},domCache={getEmailInputs:form=>Array.from(form.querySelectorAll('input[type="email"], input[name*="email" i]')),getNameInputs:form=>Array.from(form.querySelectorAll('input[name*="name" i], input[name*="first" i], input[name="first_name"], input[name="customer[first_name]"]')),getLastNameInputs:form=>Array.from(form.querySelectorAll('input[name*="last" i], input[name="last_name"], input[name="customer[last_name]"]')),getInsertPosition:(form,input)=>input.nextElementSibling||input.parentNode.insertBefore(document.createElement("div"),input.nextSibling),getSubmitButton:form=>{let button=form.querySelector('[type="button"].ltkpopup-subscribe');if(button)return button;const container=form.closest(".ltkpopup-contain-form");return container&&(button=container.querySelector('[type="button"].ltkpopup-subscribe'),button)?button:form.querySelector('[type="submit"]')}},validator={isInvalidDomain:domain=>{if(config.standardDomainRegex.test(domain))return!1;if(config.blockedDomains.has(domain))return!0;const domainBase=domain.split(".")[0],isVariation=config.domainVariationRegex.test(domainBase)||config.blockedStartRegex.test(domainBase);if(isVariation){const domainParts=domain.split(".");if(domainParts.length>=2){const lastPart=domainParts[domainParts.length-1],secondLastPart=domainParts[domainParts.length-2];if(lastPart.length===2&&/^[a-z]{2}$/i.test(lastPart)||secondLastPart&&lastPart.length===2&&/^[a-z]{2}$/i.test(lastPart)&&["co","com","org","net","edu","gov","mil"].includes(secondLastPart.toLowerCase())||lastPart.length===3&&["com","org","net","edu","gov","mil"].includes(lastPart.toLowerCase()))return!1}}return isVariation},validateEmail:email=>{if(email=email.trim().toLowerCase(),!email)return{valid:!1,message:"Please enter an email address."};if(!config.emailFormatRegex.test(email))return{valid:!1,message:"Please enter a valid email address (e.g. name@example.com)."};const domain=email.split("@")[1];return validator.isInvalidDomain(domain)?{valid:!1,message:"Please use a correctly spelled email from a standard provider."}:{valid:!0}},validateName:(name,fieldName="name",name_type)=>{if(name=name.trim(),name_type=="last_name"){if(!name)return{valid:!0}}else if(!name)return{valid:!1,message:"Please enter a valid Name."};return config.nameRegex.test(name)?{valid:!0}:{valid:!1,message:`Please enter a valid ${fieldName} (only letters, spaces allowed).`}}};function setupFormValidation(form){if(form.dataset._emailValidationAttached)return;form.dataset._emailValidationAttached=!0;const emailInputs=domCache.getEmailInputs(form),nameInputs=domCache.getNameInputs(form),lastNameInputs=domCache.getLastNameInputs(form);if(!emailInputs.length&&!nameInputs.length&&!lastNameInputs.length)return;const button=domCache.getSubmitButton(form);let hasInteracted=!1;const errorContainers=new Map,setupErrorContainer=input=>{if(!errorContainers.has(input)){const container=document.createElement("div");container.className="text-red custom-input-error",container.style.display="none",container.style.fontSize="0.8em",container.style.marginTop="0.5em",container.style.color="#ff0000",container.setAttribute("role","alert"),container.setAttribute("aria-live","assertive"),errorContainers.set(input,container)}return errorContainers.get(input)},showError=(input,message)=>{const errorContainer=setupErrorContainer(input);errorContainer.parentNode||domCache.getInsertPosition(form,input).after(errorContainer),errorContainer.textContent=message,errorContainer.style.display="block"},hideError=input=>{const errorContainer=errorContainers.get(input);errorContainer&&(errorContainer.style.display="none")},updateFormState=(userInteracted=!1,changedInput=null)=>{userInteracted&&(hasInteracted=!0);let formHasErrors=!1;errorContainers.forEach(container=>{container.style.display!=="none"&&(formHasErrors=!0)}),(!changedInput||emailInputs.includes(changedInput))&&emailInputs.forEach(input=>{const validation=validator.validateEmail(input.value);!validation.valid&&(hasInteracted||input.value)?(showError(input,validation.message),formHasErrors=!0):hideError(input)}),(!changedInput||nameInputs.includes(changedInput)&&!lastNameInputs.includes(changedInput))&&nameInputs.forEach(input=>{const validation=validator.validateName(input.value,"first name","first_name");!validation.valid&&(input.value||changedInput===input)?(showError(input,validation.message),formHasErrors=!0):hideError(input)}),(!changedInput||lastNameInputs.includes(changedInput))&&lastNameInputs.forEach(input=>{const validation=validator.validateName(input.value,"last name","last_name");!validation.valid&&changedInput===input?(showError(input,validation.message),formHasErrors=!0):hideError(input)});const closest_form=button?.closest("form"),closest_ltkpopup_form=button?.closest("#ltkpopup-form"),closest_cm_newsletter_form=button?.closest(".newsletter-content-wrapper");let error_count=0;closest_form!=null&&closest_form!=null&&(closest_form.querySelectorAll(".custom-input-error").forEach(container=>{container.style.display!=="none"&&(formHasErrors=!0,error_count=999)}),error_count==0&&(formHasErrors=!1)),closest_ltkpopup_form!=null&&closest_ltkpopup_form!=null&&(closest_ltkpopup_form.querySelectorAll(".custom-input-error").forEach(container=>{container.style.display!=="none"&&(formHasErrors=!0,error_count=999)}),error_count==0&&(formHasErrors=!1)),button&&(button.classList.toggle("ctm_disabled",formHasErrors),button.disabled=formHasErrors)},handleInput=e=>{const input=e.target;[...nameInputs,...lastNameInputs].includes(input)&&(input.value=input.value),updateFormState(!0,input)},handleBlur=e=>{updateFormState(!0,e.target)};emailInputs.forEach(input=>{input.addEventListener("input",handleInput),input.addEventListener("blur",handleBlur)}),[...nameInputs,...lastNameInputs].forEach(input=>{input.addEventListener("input",handleInput),input.addEventListener("blur",handleBlur)}),form.addEventListener("submit",e=>{updateFormState(!0);const invalidEmail=emailInputs.find(input=>!validator.validateEmail(input.value).valid);if(invalidEmail){e.preventDefault(),invalidEmail.focus();return}const invalidName=nameInputs.find(input=>input.value&&!validator.validateName(input.value,"first name").valid);if(invalidName){e.preventDefault(),invalidName.focus();return}const invalidLastName=lastNameInputs.find(input=>input.value&&!validator.validateName(input.value,"last name").valid);invalidLastName&&(e.preventDefault(),invalidLastName.focus())}),updateFormState()}document.querySelectorAll("form").forEach(setupFormValidation),new MutationObserver(mutations=>{mutations.forEach(({addedNodes})=>{addedNodes.forEach(node=>{node.nodeType===1&&(node.tagName==="FORM"||node.querySelectorAll(".simpleltkmodal-wrap").length!=0||node.querySelectorAll(".cm-newsletter-form form").length!=0)&&setupFormValidation(node)})})}).observe(document.body,{childList:!0,subtree:!0})}); //# sourceMappingURL=/cdn/shop/t/731/assets/email_validation.js.map?v=269644209944730611759899124