https://connect-logistics.com/shout/web/v6.51.1.R20260831/shout/modules/core/resources/js/captcha.js
1"use strict"; 2 3(function($) 4{ 5 function ShoutcmsCaptcha() 6 { 7 this.grecaptchaV2 = null; 8 this.grecaptchaV3 = null; 9 }; 10 11 $.extend(ShoutcmsCaptcha.prototype, { 12 13 // this method should be used as: 14 // https://www.google.com/recaptcha/api.js?onload=ShoutcmsCaptcha.initializeShoutInvisibleReCaptcha&render=explicit 15 // make sure that the api.js is only loaded once on your page, or some funky things might happen 16 initializeShoutInvisibleReCaptcha: function(element) 17 { 18 if (typeof(element) !== 'undefined' && !window.ShoutcmsCaptcha.initializeShoutInvisibleReCaptcha.ready) 19 { 20 return; 21 } 22 23 $('.sui-invisible-recaptcha').each( 24 function(index, element) 25 { 26 var $element = $(element); 27 if (!$element.is(':empty')) 28 { 29 return; 30 } 31 32 // create recaptcha widget 33 var widgetId = grecaptcha.render(element); 34 element.recaptchaWidgetId = widgetId; 35 // console.log('init recaptcha for', element[0], 'widgetId =', widgetId); 36 } 37 ); 38 window.ShoutcmsCaptcha.initializeShoutInvisibleReCaptcha.ready = true; 39 }, 40 41 executeShoutInvisibleReCaptcha: function(element) 42 { 43 if ('undefined' === typeof element) 44 { 45 grecaptcha.execute(); 46 } 47 else if ('number' === typeof element) 48 { 49 grecaptcha.execute(element); 50 } 51 else if ('object' === typeof element) 52 { 53 grecaptcha.execute(element.recaptchaWidgetId); 54 } 55 56 throw 'invalid recaptcha identifier'; 57 }, 58 59 // return captcha parameters that should be included 60 // in an ajax request for verifying captcha results 61 extractCaptchaPostParameters: function() 62 { 63 var captchaResponse = jQuery('#g-recaptcha-response').val(); 64 return { 65 'g-recaptcha-response': captchaResponse 66 }; 67 }, 68 69 resetCaptcha: function(element) 70 { 71 if ('undefined' === typeof element) 72 { 73 grecaptcha.reset(); 74 } 75 else if ('number' === typeof element) 76 { 77 grecaptcha.reset(element); 78 } 79 else if ('object' === typeof element) 80 { 81 grecaptcha.reset(element.recaptchaWidgetId); 82 } 83 84 throw 'invalid recaptcha identifier'; 85 }, 86 87 initializeReCaptchaV2: function(element) 88 { 89 if (typeof(this) === 'undefined') 90 { 91 throw 'this is undefined'; 92 } 93 94 var self = this; 95 96 if (typeof(element) !== 'undefined' && !window.ShoutcmsCaptcha.initializeShoutReCaptchaV2.ready) 97 { 98 return; 99 } 100 101 window.grecaptchaV2 = this.grecaptchaV2 = Object.assign(Object.create(Object.getPrototypeOf(window.grecaptcha)), window.grecaptcha); 102 103 $('.sui-recaptcha').each( 104 function(index, element) 105 { 106 var $element = $(element); 107 if (!$element.is(':empty')) 108 { 109 return; 110 } 111 112 // create recaptcha widget 113 var widgetId = self.grecaptchaV2.render(element); 114 element.recaptchaWidgetId = widgetId; 115 116 //console.log('init recaptcha for', element, 'widgetId =', widgetId); 117 } 118 ); 119 120 window.ShoutcmsCaptcha.initializeReCaptchaV2.ready = true; 121 }, 122 123 initializeReCaptchaV3: function(element) 124 { 125 if (typeof(this) === 'undefined') 126 { 127 throw 'this is undefined'; 128 } 129 130 var self = this; 131 132 if (typeof(element) !== 'undefined' && !window.ShoutcmsCaptcha.initializeShoutReCaptchaV3.ready) 133 { 134 return; 135 } 136 137 window.grecaptchaV3 = self.grecaptchaV3 = Object.assign(Object.create(Object.getPrototypeOf(window.grecaptcha)), window.grecaptcha); 138 139 window.ShoutcmsCaptcha.initializeReCaptchaV3.ready = true; 140 }, 141 142 }); 143 144 window.ShoutcmsCaptcha = new ShoutcmsCaptcha(); 145 146 window.initializeShoutInvisibleReCaptcha = window.ShoutcmsCaptcha.initializeShoutInvisibleReCaptcha; 147 //window.initializeShoutReCaptchaV2 = window.ShoutcmsCaptcha.initializeReCaptchaV2; 148 //window.initializeShoutReCaptchaV3 = window.ShoutcmsCaptcha.initializeReCaptchaV3; 149 window.initializeShoutReCaptchaV2 = function(){return window.ShoutcmsCaptcha.initializeReCaptchaV2(
149)}; 150 window.initializeShoutReCaptchaV3 = function(){return window.ShoutcmsCaptcha.initializeReCaptchaV3()}; 151 152})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.