(function($){$(document).ready(function(){let currencySymbol="$";let decimalPlaces=2;function formatString(digits,pattern){let formatted="";let index=0;for(let char of pattern){if(char==="#"){if(indexformatString(digits,"##.###.###/####-##"),".mask-cpf":(digits)=>formatString(digits,"###.###.###-##"),".mask-cep":(digits)=>formatString(digits,"#####-###"),".mask-phus":(digits)=>formatString(digits,"(###) ###-####"),".mask-ph8":(digits)=>formatString(digits,"####-####"),".mask-ddd8":(digits)=>formatString(digits,"(##) ####-####"),".mask-ddd9":(digits)=>formatString(digits,"(##) #####-####"),".mask-dmy":(digits)=>formatString(digits,"##/##/####"),".mask-mdy":(digits)=>formatString(digits,"##/##/####"),".mask-hms":(digits)=>formatString(digits,"##:##:##"),".mask-hm":(digits)=>formatString(digits,"##:##"),".mask-dmyhm":(digits)=>formatString(digits,"##/##/#### ##:##"),".mask-mdyhm":(digits)=>formatString(digits,"##/##/#### ##:##"),".mask-my":(digits)=>formatString(digits,"##/####"),".mask-ccs":(digits)=>formatCreditCard(digits,"space"),".mask-cch":(digits)=>formatCreditCard(digits,"hyphen"),".mask-ccmy":(digits)=>formatString(digits,"##/##"),".mask-ccmyy":(digits)=>formatString(digits,"##/####"),".mask-moneyc":(digits)=>formatMoneyInput(digits,"C",'$',''),".mask-moneyd":(digits)=>formatMoneyInput(digits,"D",'$',''),".mask-ipv4":(digits)=>formatString(digits,"###.###.###.###")};Object.entries(formatFunctions).forEach(([selector,formatFunction])=>{$(document).on("input focus",selector,function(event){var input=this;var oldCaret=getCaretPosition(input);if($(input).hasClass("mask-moneyc")||$(input).hasClass("mask-moneyd")){let type=$(input).hasClass("mask-moneyc")?"C":"D";handleMoneyInput(event);return} var rawDigits=input.value.replace(/\D/g,"");var digitIndex=getDigitIndexFromCaret(input.value,oldCaret);var newVal=formatFunction(rawDigits);var newCaret=mapDigitIndexToCaret(newVal,digitIndex);input.value=newVal;setCaretPosition(input,newCaret||0);if($(input).hasClass("mask-ccs")||$(input).hasClass("mask-cch")){updateCardLogo(input)}})});function getCaretPosition(input){return input.selectionStart} function getDigitIndexFromCaret(formattedStr,caretPos){var count=0;for(var i=0;i$(input).hasClass(cls.substring(1)));if(matchedClass){var formatted=formatFunctions[matchedClass](newDigits);input.value=formatted;var newCaretPos=mapDigitIndexToCaret(formatted,digitIndex-1);setCaretPosition(input,newCaretPos)}}});function validateInput(selector,errorClass,validationFunction,errorMessage){$(document).on("blur",selector,function(){var input=$(this);var val=input.val();var errorElement=input.closest('.elementor-field-group').find("."+errorClass);if(val.length===1&&!/\d/.test(val)){input.val("");errorElement.hide().text("");return} if(val!==""&&!validationFunction(val)){errorElement.text(errorMessage).css("display","flex").hide().fadeIn(200)}else{errorElement.fadeOut(100,function(){$(this).css("display","none")})}});$(document).on("input",selector,function(){var input=$(this);var errorElement=input.closest('.elementor-field-group').find("."+errorClass);if(errorElement.is(":visible")){var val=input.val();if(validationFunction(val)){errorElement.fadeOut(100,function(){$(this).css("display","none")})}}})} const validations={".mask-cnpj":{errorClass:"error-cnpj",validate:isValidCNPJ,msg:fmeData.errorMessages["mask-cnpj"]},".mask-cpf":{errorClass:"error-cpf",validate:isValidCPF,msg:fmeData.errorMessages["mask-cpf"]},".mask-cep":{errorClass:"error-cep",validate:isValidCEP,msg:fmeData.errorMessages["mask-cep"]},".mask-phus":{errorClass:"error-phus",validate:isValidPhoneUSA,msg:fmeData.errorMessages["mask-phus"]},".mask-ph8":{errorClass:"error-ph8",validate:isValidPhone8,msg:fmeData.errorMessages["mask-ph8"]},".mask-ddd8":{errorClass:"error-ddd8",validate:isValidPhoneDDD8,msg:fmeData.errorMessages["mask-ddd8"]},".mask-ddd9":{errorClass:"error-ddd9",validate:isValidPhoneDDD9,msg:fmeData.errorMessages["mask-ddd9"]},".mask-dmy":{errorClass:"error-dmy",validate:isValidDateDMY,msg:fmeData.errorMessages["mask-dmy"]},".mask-mdy":{errorClass:"error-mdy",validate:isValidDateMDY,msg:fmeData.errorMessages["mask-mdy"]},".mask-hms":{errorClass:"error-hms",validate:isValidTimeHMS,msg:fmeData.errorMessages["mask-hms"]},".mask-hm":{errorClass:"error-hm",validate:isValidTimeHM,msg:fmeData.errorMessages["mask-hm"]},".mask-dmyhm":{errorClass:"error-dmyhm",validate:isValidDateDMYHM,msg:fmeData.errorMessages["mask-dmyhm"]},".mask-mdyhm":{errorClass:"error-mdyhm",validate:isValidDateMDYHM,msg:fmeData.errorMessages["mask-mdyhm"]},".mask-my":{errorClass:"error-my",validate:isValidDateMY,msg:fmeData.errorMessages["mask-my"]},".mask-ccs":{errorClass:"error-ccs",validate:isValidCreditCard,msg:fmeData.errorMessages["mask-ccs"]},".mask-cch":{errorClass:"error-cch",validate:isValidCreditCard,msg:fmeData.errorMessages["mask-cch"]},".mask-ccmy":{errorClass:"error-ccmy",validate:isValidExpiryMMYY,msg:fmeData.errorMessages["mask-ccmy"]},".mask-ccmyy":{errorClass:"error-ccmyy",validate:isValidExpiryMMYYYY,msg:fmeData.errorMessages["mask-ccmyy"]},".mask-ipv4":{errorClass:"error-ipv4",validate:isValidIPv4,msg:fmeData.errorMessages["mask-ipv4"]}};for(const[selector,{errorClass,validate,msg}]of Object.entries(validations)){validateInput(selector,errorClass,validate,msg)} function isValidPhoneUSA(phoneStr){return/^\(\d{3}\) \d{3}-\d{4}$/.test(phoneStr)} function isValidPhone8(phoneStr){return/^\d{4}-\d{4}$/.test(phoneStr)} function isValidPhoneDDD8(phoneStr){return/^\(\d{2}\) \d{4}-\d{4}$/.test(phoneStr)} function isValidPhoneDDD9(phoneStr){return/^\(\d{2}\) 9\d{4}-\d{4}$/.test(phoneStr)} function isValidDateTime(value,format){let regexPattern;let expectedParts;switch(format){case "DMY":regexPattern=/^(\d{2})\/(\d{2})\/(\d{4})$/;expectedParts=["day","month","year"];break;case "MDY":regexPattern=/^(\d{2})\/(\d{2})\/(\d{4})$/;expectedParts=["month","day","year"];break;case "HMS":regexPattern=/^(\d{2}):(\d{2}):(\d{2})$/;expectedParts=["hour","minute","second"];break;case "HM":regexPattern=/^(\d{2}):(\d{2})$/;expectedParts=["hour","minute"];break;case "DMY-HM":regexPattern=/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})$/;expectedParts=["day","month","year","hour","minute"];break;case "MDY-HM":regexPattern=/^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})$/;expectedParts=["month","day","year","hour","minute"];break;case "MY":regexPattern=/^(\d{2})\/(\d{4})$/;expectedParts=["month","year"];break;default:return!1} let match=value.match(regexPattern);if(!match)return!1;let parts={};expectedParts.forEach((part,index)=>{parts[part]=parseInt(match[index+1],10)});if(parts.year&&(parts.year<1500||parts.year>3000))return!1;if(parts.month&&(parts.month<1||parts.month>12))return!1;if(parts.day){let daysInMonth=new Date(parts.year,parts.month,0).getDate();if(parts.day<1||parts.day>daysInMonth)return!1} if(parts.hour&&(parts.hour<0||parts.hour>=24))return!1;if(parts.minute&&(parts.minute<0||parts.minute>=60))return!1;if(parts.second&&(parts.second<0||parts.second>=60))return!1;return!0} function isValidExpiryDate(value,format){let regexPattern=format==="MM/YY"?/^(\d{2})\/(\d{2})$/:/^(\d{2})\/(\d{4})$/;let match=value.match(regexPattern);if(!match)return!1;let month=parseInt(match[1],10);let year=parseInt(match[2],10);let currentYear=new Date().getFullYear();let currentMonth=new Date().getMonth()+1;if(format==="MM/YY"){year+=2000} if(month<1||month>12)return!1;if(year16)return!1;let sum=0;let shouldDouble=!1;for(let i=cleaned.length-1;i>=0;i--){let digit=parseInt(cleaned.charAt(i),10);if(shouldDouble){digit*=2;if(digit>9)digit-=9} sum+=digit;shouldDouble=!shouldDouble} return sum%10===0} function isValidCNPJ(cnpj){cnpj=cnpj.replace(/\D/g,'');if(cnpj.length!==14)return!1;if(/^(\d)\1+$/.test(cnpj))return!1;let calcCheckDigit=(cnpj,length)=>{let weights=length===12?[5,4,3,2,9,8,7,6,5,4,3,2]:[6,5,4,3,2,9,8,7,6,5,4,3,2];let sum=0;for(let i=0;i{let sum=0;for(let i=0;i{let num=parseInt(octet,10);return num>=0&&num<=255})} $(document).on("click",".elementor-field-type-submit",function(e){var $form=$(this).closest("form");$form.find("input").trigger("blur");var $errors=$form.find(".mask-error").filter(function(){return $(this).text().trim()!==""});if($errors.length>0){$errors.each(function(){if($(this)[0].style.display!=='none'){e.preventDefault();$('html, body').animate({scrollTop:$(this).offset().top-200},500)}})}})})})(jQuery) ;