JezK
Edit File: avia_google_recaptcha_api.min.js
/* * AVIA GOOGLE reCAPTCHA API * ========================= * * This file holds javascript functions needed in frontend for the functionallity of the Google reCaptcha API and widget * Handles conditional loading of Google reCaptcha API script. * * As first step we limit this to contact forms (context av_contact_form) - but it can be extended in future. * * @author Günter for Christian "Kriesi" Budschedl * @copyright Copyright ( c ) Christian Budschedl * @link http://kriesi.at * @link http://aviathemes.com * @since Version 1.0 * @package AviaFramework * @since Enfold 4.5.7.2 */ !function(a){var e=null,t=function(){if("undefined"!=typeof AviaReCAPTCHA_front&&(this.body=a("body"),this.body.hasClass("av-recaptcha-enabled"))){this.self=this,this.errors=[],this.error_report=[],this.monitor_V3_request=!1,this.document=a(document),this.version=AviaReCAPTCHA_front.version,this.site_key2=AviaReCAPTCHA_front.site_key2,this.site_key3=AviaReCAPTCHA_front.site_key3,this.api=AviaReCAPTCHA_front.api,this.api_lang=AviaReCAPTCHA_front.api_lang,this.theme=AviaReCAPTCHA_front.theme,this.score=AviaReCAPTCHA_front.score,this.size="normal",this.cannot_use=AviaReCAPTCHA_front.cannot_use,this.init_error_msg=AviaReCAPTCHA_front.init_error_msg,this.v3_timeout_pageload=AviaReCAPTCHA_front.v3_timeout_pageload,this.v3_timeout_verify=AviaReCAPTCHA_front.v3_timeout_verify,this.v2_timeout_verify=AviaReCAPTCHA_front.v2_timeout_verify,this.invalid_version=AviaReCAPTCHA_front.invalid_version,this.validate_first=AviaReCAPTCHA_front.validate_first,this.validate_submit=AviaReCAPTCHA_front.validate_submit,this.verify_nonce=AviaReCAPTCHA_front.verify_nonce,this.verify_msg=AviaReCAPTCHA_front.verify_msg,this.connection_error=AviaReCAPTCHA_front.connection_error,this.no_token=AviaReCAPTCHA_front.no_token,this.api_load_error=AviaReCAPTCHA_front.api_load_error;var e=this.self;this.body.find(".av-recaptcha-area").each((function(a,t){e.prepare_recaptcha_area(a,t,e)})),this.recaptcha_areas=this.body.find(".av-recaptcha-area"),this.verifySettings()?this.loadMainAPI():this.showErrors("remove_buttons")}};t.prototype={verifySettings:function(){return-1==a.inArray(this.version,["avia_recaptcha_v2","avia_recaptcha_v3"])&&(this.version="avia_recaptcha_v2"),"avia_recaptcha_v3"==this.version&&""==this.site_key3&&(this.version="avia_recaptcha_v2"),""!=this.site_key2||(this.errors.push(this.cannot_use),this.error_report.push(this.init_error_msg),!1)},prepare_recaptcha_area:function(e,t,r){var i=a(t),s=void 0!==i.data("token_input")?i.data("token_input"):"avia_token_verify",o=s+"-version",c=void 0!==i.data("version")?i.data("version"):"",n=void 0!==i.data("context")?i.data("context"):"av_contact_form",v=i.find(".av-google-badge-message").first();if("av_contact_form"==n){-1==a.inArray(c,["avia_recaptcha_v2","avia_recaptcha_v3"])&&(c="avia_recaptcha_v2"),"avia_recaptcha_v3"==c&&"avia_recaptcha_v2"==r.version&&(c="avia_recaptcha_v2");var _=this.unique_id(e);i.data("token_input",s),i.data("version",c),i.data("context",n),i.data("unique_recaptcha_id",_),i.addClass(_),i.before('<input class="av-recaptcha-verify-token is_empty '+_+'" type="hidden" value="" name="'+s+'">'),i.before('<input class="av-recaptcha-verify-token-version '+_+'" type="hidden" value="" name="'+o+'">'),i.before('<div class="av-recaptcha-error"></div>');var h=i.closest("form");h.addClass(c);var p=h.find("input[type=submit]");v.length>0?"avia_recaptcha_v3"==c?(v.detach().insertAfter(p).removeClass("hidden"),r.body.addClass("av-google-badge-hide")):v.remove():"avia_recaptcha_v3"==c&&r.body.addClass("av-google-badge-visible");var d=p.clone();d.data("version",c),d.data("context",n),d.data("unique_recaptcha_id",_),d.addClass(_),d.attr("type","button").addClass("av-recaptcha-submit "+_),"avia_recaptcha_v2"==c?(d.attr("title",this.validate_first),d.addClass("avia_button_inactive")):d.attr("title",this.validate_submit);var l=d.attr("onclick");void 0!==l&&(l=l.toLowerCase()).indexOf("gtag(")>=0&&d.attr("onclick",null),p.before(d),p.addClass("avia_button_inactive av-recaptcha-submit-real"),p.hide(),h.find(".av-recaptcha-submit").on("click",r.reCaptchaSubmitButton.bind(r))}else i.removeClass("av-recaptcha-area").addClass("av-recaptcha-area-unsupported")},loadMainAPI:function(){if(0==this.recaptcha_areas.length&&"avia_recaptcha_v3"!=this.version)return!1;var e=this.api,t=this;switch(this.version){case"avia_recaptcha_v2":e+="?onload=av_recaptcha_main_api_loaded&render=explicit&hl="+this.api_lang;break;case"avia_recaptcha_v3":e+="?onload=av_recaptcha_main_api_loaded&render="+this.site_key3+"&hl="+this.api_lang}a('script[src*="recaptcha/api.js"]').remove(),a("#av-recaptcha-api-script").remove();var r=document.createElement("script");return r.id="av-recaptcha-api-script",r.type="text/javascript",r.src=e,r.onerror=function(){t.main_api_loading_error()},r.defer=!0,document.body.appendChild(r),!0},main_api_loading_error:function(){this.errors.push(this.cannot_use),this.error_report.push(this.api_load_error),this.showErrors("remove_buttons")},main_api_loaded:function(){if("avia_recaptcha_v3"==this.version){var a=this.self;grecaptcha.ready((function(){a.monitor_V3_request=setTimeout((function(){a.monitorV3("pageload")}),5e3),grecaptcha.execute(a.site_key3,{action:"contact_forms_pageload"}).then((function(e){a.verifyCallback(e,"avia_recaptcha_v3","page_load")}))}))}return this.show_reCaptchas(),!0},monitorV3:function(a){switch(this.monitor_V3_request=!1,this.errors.push(this.cannot_use),a){case"pageload":this.error_report.push(this.v3_timeout_pageload);break;case"verify_submit":this.error_report.push(this.v3_timeout_verify);break;default:this.error_report.push("v3_timeout - unknown location")}this.showErrors("remove_buttons")},verifyCallback:function(e,t,r){if("avia_recaptcha_v3"==t&&!1!==this.monitor_V3_request&&(clearTimeout(this.monitor_V3_request),this.monitor_V3_request=!1),"avia_recaptcha_v3"!=t||"page_load"!=r){var i=null,s=null,o=null;if("avia_recaptcha_v2"==t)i=this.locate_clicked_V2_recaptcha(e);else if("avia_recaptcha_v3"==t){var c=a("input.av-recaptcha-verify-v3");c.length>0&&(i=c.first().closest("form").find("div."+c.data("unique_recaptcha_id")).first()).length>0&&(s=i.data("score"),o=r),c.removeClass("av-recaptcha-verify-v3")}if(null==i)return this.errors.push(this.cannot_use),this.error_report.push("verifyCallback: No containeer found to clicked submit button"),void this.showErrors("remove_buttons");this.serverCallback(e,t,i,s,o)}},locate_clicked_V2_recaptcha:function(e){var t=null;return this.recaptcha_areas.each((function(r,i){var s=a(i);if("avia_recaptcha_v2"!=s.data("version"))return!0;var o=grecaptcha.getResponse(s.data("recaptcha_widet_id"));return e==o?(t=s,!1):void 0})),t},serverCallback:function(e,t,r,i,s){var o=this.self,c=r.data("unique_recaptcha_id"),n=a("input.av-recaptcha-submit."+c),v=n.val(),_="",h=n.closest("form").find(".av-recaptcha-error");a.ajax({type:"POST",url:avia_framework_globals.ajaxurl,dataType:"json",cache:!1,data:{action:"avia_recaptcha_verify_frontend",version:t,token:e,score:null!=i?i:-1,recaptcha_action:null!=s?s:"",_wpnonce:this.verify_nonce},beforeSend:function(){n.addClass("av-sending-button"),n.val(this.verify_msg)},error:function(){_=this.connection_error},success:function(e){if(!0!==e.success)return _=e.alert,void("avia_recaptcha_v3"==t&&!1!==e.score_failed&&(!0!==e.score_failed&&(_+="<br />"+e.score_failed),n.addClass("avia_recaptcha_v3_redirected_v2"),n.closest("form").removeClass("avia_recaptcha_v3").addClass("avia_recaptcha_v2 avia_recaptcha_v2_forced"),o.show_reCaptchas("force_v2")));""!=e.transient&&(a("input.av-recaptcha-verify-token."+c).val(e.transient),n.addClass("av-recaptcha-is-verified")),n.removeClass("avia_button_inactive")},complete:function(a){"avia_recaptcha_v2"==t?(grecaptcha.reset(r.data("recaptcha_widet_id")),""==_&&(r.hide(),n.attr("title","")),n.hasClass("av-recaptcha-is-verified")&&n.hasClass("avia_recaptcha_v3_redirected_v2")&&n.trigger("click")):"avia_recaptcha_v3"==t&&n.hasClass("av-recaptcha-is-verified")&&n.trigger("click"),n.removeClass("av-sending-button"),n.val(v),""!=_?(h.addClass("av-err-content").removeClass("av-recaptcha-severe-error"),h.html(_)):(h.removeClass("av-err-content av-recaptcha-severe-error"),h.html(""))}})},errorCallback:function(){this.errors.push(this.v2_timeout_verify),this.showErrors()},show_reCaptchas:function(a){var e=this.self;this.recaptcha_areas.each((function(t,r){e.show_reCaptcha(t,r,e,a)}))},show_reCaptcha:function(e,t,r,i){var s=a(t),o=s.closest("form"),c=s.data("version"),n=o.find(".av-recaptcha-verify-token-version");"force_v2"==i&&(c="avia_recaptcha_v2",s.data("version",c),o.find(".av-recaptcha-submit").attr("title",this.validate_first));if(n.val(c),"avia_recaptcha_v3"!=c){var v=s.data("recaptcha_widet_id");void 0===v&&(v=grecaptcha.render(s.get(0),{sitekey:r.site_key2,callback:av_recaptcha_verifyCallback_v2,"expired-callback":av_recaptcha_expiredCallback,"error-callback":av_recaptcha_errorCallback,theme:s.data("theme"),size:s.data("size")}),s.data("recaptcha_widet_id",v))}},reCaptchaSubmitButton:function(e){e.preventDefault();var t=this.self,r=a(e.target),i=r.closest("form"),s=i.find(".av-recaptcha-area"),o=i.find(".av-recaptcha-submit-real"),c=s.data("version"),n=s.find(".av-recaptcha-verify-token");return"avia_recaptcha_v2"==c?r.hasClass("avia_button_inactive")?(""!=r.attr("title")&&alert(r.attr("title")),!1):""==n.val()?(this.errors.push(this.cannot_use),this.error_report.push(this.no_token),this.showErrors("remove_buttons"),!1):(o.removeClass("avia_button_inactive"),r.hide(),o.show(),void o.trigger("click")):"avia_recaptcha_v3"!=c?(this.error_report.push(this.invalid_version),void this.showErrors()):r.hasClass("av-recaptcha-is-verified")?""==n.val()?(this.errors.push(this.cannot_use),this.error_report.push(this.no_token),this.showErrors("remove_buttons"),!1):(o.removeClass("avia_button_inactive"),r.hide(),o.show(),void o.trigger("click")):(r.addClass("av-recaptcha-verify-v3 avia_button_inactive av-sending-button"),void grecaptcha.ready((function(){!1===t.monitor_V3_request&&(t.monitor_V3_request=setTimeout((function(){t.monitorV3("verify_submit")}),3e3)),grecaptcha.execute(t.site_key3,{action:"verify_submit"}).then((function(a){t.verifyCallback(a,"avia_recaptcha_v3","verify_submit")}))})))},showErrors:function(e){var t=this.self;if(0==this.recaptcha_areas.length)return t.errors=[],void(t.error_report=[]);this.recaptcha_areas.each((function(r,i){var s=a(i).closest("form"),o=s.find(".av-recaptcha-error");o.addClass("av-recaptcha-severe-error").removeClass("av-err-content");var c=t.errors.join("<br />").trim(),n="";t.body.hasClass("av-recaptcha-extended-errors")&&""!=(n=t.error_report.join("<br />").trim())&&""!=c&&(n="<br />"+n),o.html(c+n),"remove_buttons"==e&&s.find(".av-recaptcha-submit, .av-recaptcha-submit-real").remove()})),t.errors=[],t.error_report=[]},unique_id:function(e){for(var t=a("body"),r="av-verify-recaptcha-",i=0,s=!0,o=r+e;;){if(s||(o=r+i),0==t.find('[data-unique_recaptcha_id="'+o+'"]').length)return o;s=!1,i++}}},av_recaptcha_main_api_loaded=function(){e.main_api_loaded()},av_recaptcha_verifyCallback_v2=function(a){setTimeout((function(){e.verifyCallback(a,"avia_recaptcha_v2","verify_token")}),50)},av_recaptcha_errorCallback=function(a){e.errorCallback(a)},av_recaptcha_expiredCallback=function(){},null==e&&(e=new t)}(jQuery);