PageSourceSearch

https://guiterhakao.site/wp-content/plugins/google-captcha/js/script.js?ver=1.80&fver=20250225040902

js guiterhakao.site collected 2026-10-08 07:22:46 UTC 9,869 bytes, 314 lines download raw bytes

1( function( $, gglcptch ) {
2	gglcptch = gglcptch || {};
3
4	gglcptch.prepare = function() {
5		/*
6		 * display reCaptcha for plugin`s block
7		 */
8		$( '.gglcptch_v2, .gglcptch_invisible' ).each( function() {
9
10			var container = $( this ).find( '.gglcptch_recaptcha' );
11
12			if (
13				container.is( ':empty' ) &&
14				( gglcptch.vars.visibility || $( this ).is( ':visible' ) === $( this ).is( ':not(:hidden)' ) )
15			) {
16				var containerId = container.attr( 'id' );
17				gglcptch.display( containerId );
18			}
19		} );
20
21		if ( 'v3' == gglcptch.options.version ) {
22			grecaptcha.ready( function() {
23				grecaptcha.execute( gglcptch.options.sitekey, {action: 'BWS_reCaptcha'}).then(function( token ) {
24					document.querySelectorAll( "#g-recaptcha-response" ).forEach( function ( elem ) { elem.value = token } );
25					if ( ! $( 'body' ).hasClass( 'wp-admin' ) ) {
26						var gglcptchTimeout = setTimeout( function(){
27							$( '.gglcptch_error_text' ).each( function(){
28								$( this ).show();
29								clearTimeout( gglcptchTimeout );
30							});
31						}, 180000 );
32					}
33				});
34			});
35		}
36
37		/*
38		 * display reCaptcha for others blocks
39		 * this part is neccessary because
40		 * we have disabled the connection to Google reCaptcha API from other plugins
41		 * via plugin`s php-functionality
42		 */
43		if ( 'v2' == gglcptch.options.version || 'invisible' == gglcptch.options.version ) {
44			$( '.g-recaptcha' ).each( function() {
45				/* reCAPTCHA will be generated into the empty block only */
46				if ( $( this ).html() === '' && $( this ).text() === '' ) {
47
48					/* get element`s ID */
49					var container = $( this ).attr( 'id' );
50
51					if ( typeof container == 'undefined' ) {
52						container = get_id();
53						$( this ).attr( 'id', container );
54					}
55
56					/* get reCapatcha parameters */
57					var sitekey  = $( this ).attr( 'data-sitekey' ),
58						theme    = $( this ).attr( 'data-theme' ),
59						lang     = $( this ).attr( 'data-lang' ),
60						size     = $( this ).attr( 'data-size' ),
61						type     = $( this ).attr( 'data-type' ),
62						tabindex = $( this ).attr( 'data-tabindex' ),
63						callback = $( this ).attr( 'data-callback' ),
64						ex_call  = $( this ).attr( 'data-expired-callback' ),
65						stoken   = $( this ).attr( 'data-stoken' ),
66						params   = [];
67
68					params['sitekey'] = sitekey ? sitekey : gglcptch.options.sitekey;
69					if ( !! theme ) {
70						params['theme'] = theme;
71					}
72					if ( !! lang ) {
73						params['lang'] = lang;
74					}
75					if ( !! size ) {
76						params['size'] = size;
77					}
78					if ( !! type ) {
79						params['type'] = type;
80					}
81					if ( !! tabindex ) {
82						params['tabindex'] = tabindex;
83					}
84					if ( !! callback ) {
85						params['callback'] = callback;
86					}
87					if ( !! ex_call ) {
88						params['expired-callback'] = ex_call;
89					}
90					if ( !! stoken ) {
91						params['stoken'] = stoken;
92					}
93
94					gglcptch.display( container, params );
95				}
96			} );
97
98			/*
99			 * count the number of reCAPTCHA blocks in the form
100			 */
101			$( 'form' ).each( function() {
102				if ( $( this ).contents().find( 'iframe[title="recaptcha widget"]' ).length > 1 && ! $( this ).children( '.gglcptch_dublicate_error' ).length ) {
103					$( this ).prepend( '<div class="gglcptch_dublicate_error error" style="color: red;">' + gglcptch.options.error + '</div><br />\n' );
104				}
105			} );
106		}
107	};
108
109	gglcptch.display = function( container, params ) {
110		if ( typeof( container ) == 'undefined' || container == '' || typeof( gglcptch.options ) == 'undefined' ) {
111			return;
112		}
113
114		if ( 'v2' === gglcptch.options.version && $( '#' + container ).parents( '.gglcptch_custom' ).length > 0 ) {
115			if ( $( '#' + container ).find( 'textarea#g-recaptcha-response' ).length == 0 ) {
116				setTimeout(
117					function(){
118						$( '#' + container ).find( 'textarea#g-recaptcha-response' ).remove();
119					},
120					1000
121				);
122			} else {
123				$( '#' + container ).find( 'textarea#g-recaptcha-response' ).remove();
124			}
125			$( '.gglcptch.gglcptch_v2 noscript' ).remove();
126		}
127		
128		// add attribute disable to the submit
129		if ( 'v2' === gglcptch.options.version && gglcptch.options.disable ) {
130			$( '#' + container ).closest( 'form' ).find( 'input:submit, button' ).prop( 'disabled', true );
131			if ( 'setupform' === $( '#' + container ).closest( 'form' ).attr( 'id' ) ) {
132				setTimeout(
133					function(){
134						$( '#' + container ).closest( 'form' ).find( 'input:submit, button' ).prop( 'disabled', true );
135					},
136					200
137				);
138			}
139		}
140
141		function storeEvents( el ) {
142			var target = el,
143				events = $._data( el.get( 0 ), 'events' );
144			/* restoring events */
145			if ( typeof events != 'undefined' ) {
146				var storedEvents = {};
147				$.extend( true, storedEvents, events );
148				target.off();
149				target.data( 'storedEvents', storedEvents );
150			}
151			/* storing and removing onclick action */
152			if ( 'undefined' != typeof target.attr( 'onclick' ) ) {
153				target.attr( 'gglcptch-onclick', target.attr( 'onclick') );
154				target.removeAttr( 'onclick' );
155			}
156		}
157
158		function restoreEvents( el ) {
159			var target = el,
160				events = target.data( 'storedEvents' );
161			/* restoring events */
162			if ( typeof events != 'undefined' ) {
163				for ( var event in events ) {
164					for ( var i = 0; i < events[event].length; i++ ) {
165						target.on( event, events[event][i] );
166					}
167				}
168			}
169			/* reset stored events */
170			target.removeData( 'storedEvents' );
171			/* restoring onclick action */
172			if ( 'undefined' != typeof target.attr( 'gglcptch-onclick' ) ) {
173				target.attr( 'onclick', target.attr( 'gglcptch-onclick' ) );
174				target.removeAttr( 'gglcptch-onclick' );
175			}
176		}
177
178		function storeOnSubmit( form, gglcptch_index ) {
179			form.on( 'submit', function( e ) {
180				if ( '' == form.find( '.g-recaptcha-response' ).val() ) {
181					e.preventDefault();
182					e.stopImmediatePropagation();
183					targetObject = $( e.target || e.srcElement || e.targetObject );
184					targetEvent = e.type;
185					grecaptcha.execute( gglcptch_index );
186				}
187			} ).find( 'input:submit, button' ).on( 'click', function( e ) {
188				if ( '' == form.find( '.g-recaptcha-response' ).val() ) {
189					e.preventDefault();
190					e.stopImmediatePropagation();
191					targetObject = $( e.target || e.srcElement || e.targetObject );
192					targetEvent = e.type;
193					grecaptcha.execute( gglcptch_index );
194				}
195			} );
196		}
197
198		var gglcptch_version = gglcptch.options.version;
199		
200		if ( 'v2' == gglcptch_version ) {
201			if ( $( '#' + container ).parent().width() <= 300 && $( '#' + container ).parent().width() != 0 || $( window ).width() < 400 ) {
202				var size = 'compact';
203			} else {
204				var size = 'normal';
205			}
206			var parameters = params ? params : { 'sitekey' : gglcptch.options.sitekey, 'theme' : gglcptch.options.theme, 'size' : size },
207				block = $( '#' + container ),
208				form = block.closest( 'form' );
209
210				/* Callback function works only in frontend */
211				if ( ! $( 'body' ).hasClass( 'wp-admin' ) ) {
212					parameters['callback'] = function() {
213						form.find( 'button, input:submit' ).prop( 'disabled', false );
214					};
215				}
216
217			var gglcptch_index = grecaptcha.render( container, parameters );
218			$( '#' + container ).data( 'gglcptch_index', gglcptch_index );
219		} else if ( 'invisible' == gglcptch_version ) {
220			var block = $( '#' + container ),
221				form = block.closest( 'form' ),
222				parameters = params ? params : { 'sitekey' : gglcptch.options.sitekey, 'size' : 'invisible', 'tabindex' : 9999 },
223				targetObject = false,
224				targetEvent = false;
225
226			if ( form.length ) {
227				storeEvents( form );
228				form.find( 'button, input:submit' ).each( function() {
229					storeEvents( $( this ) );
230				} );
231
232				/* Callback function works only in frontend */
233				if ( ! $( 'body' ).hasClass( 'wp-admin' ) ) {
234					parameters['callback'] = function( token ) {
235						form.off();
236						restoreEvents( form );
237						form.find( 'button, input:submit' ).off().each( function() {
238							restoreEvents( $( this ) );
239						} );
240						if ( targetObject && targetEvent ) {
241							targetObject.trigger( targetEvent );
242						}
243						form.find( 'button, input:submit' ).each( function() {
244							storeEvents( $( this ) );
245						} );
246						storeEvents( form );
247						storeOnSubmit( form, gglcptch_index );
248						grecaptcha.reset( gglcptch_index );
249					};
250				}
251
252				var gglcptch_index = grecaptcha.render( container, parameters );
253				block.data( { 'gglcptch_index' : gglcptch_index } );
254
255				if ( ! $( 'body' ).hasClass( 'wp-admin' ) ) {
256					storeOnSubmit( form, gglcptch_index );
257				}
258			}
259		}
260	};
261
262	$( document ).ready( function() {
263		var tryCounter = 0,
264			/* launching timer so that the function keeps trying to display the reCAPTCHA again and again until google js api is loaded */
265			gglcptch_timer = setInterval( function() {
266				if ( typeof Recaptcha != "undefined" || typeof grecaptcha != "undefined" ) {
267					try {
268						gglcptch.prepare();
269					} catch ( e ) {
270						console.log( 'Unexpected error occurred: ', e );
271					}
272					clearInterval( gglcptch_timer );
273				}
274				tryCounter++;
275				/* Stop trying after 10 times */
276				if ( tryCounter >= 10 ) {
277					clearInterval( gglcptch_timer );
278				}
279			}, 1000 );
280
281		function gglcptch_prepare() {
282			if ( typeof Recaptcha != "undefined" || typeof grecaptcha != "undefined" ) {
283				try {
284					gglcptch.prepare();
285				} catch ( err ) {
286					console.log( err );
287				}
288			}
289		}
290
291		$( window ).on( 'load', gglcptch_prepare );
292
293		$( '.woocommerce' ).on( 'click', '.woocommerce-tabs', gglcptch_prepare );
294
295		$( '#recaptcha_widget_div' ).on( 'input paste change', '#recaptcha_response_field', cleanError );
296	} );
297
298	function cleanError() {
299		$error = $( this ).parents( '#recaptcha_widget_div' ).next( '#gglcptch_error' );
300		if ( $error.length ) {
301			$error.remove();
302		}
303	}
304
305	function get_id() {
306		var id = 'gglcptch_recaptcha_' + Math.floor( Math.random() * 1000 );
307		if ( $( '#' + id ).length ) {
308			id = get_id();
309		} else {
310			return id;
311		}
312	}
313
314} )( jQuery, gglcptch );

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.