PageSourceSearch

https://connect-logistics.com/shout/web/v6.51.1.R20260831/shout/modules/core/resources/js/captcha.js

js connect-logistics.com collected 2026-09-26 19:44:52 UTC 5,052 bytes, 152 lines download raw bytes

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.