PageSourceSearch

https://topdentiq.com/public/assets/backend/libs/google-recaptcha/google-recaptcha-init.js

js topdentiq.com collected 2026-10-06 12:38:28 UTC 9,301 bytes, 191 lines download raw bytes

1"use strict";
2
3let recaptchaSiteKey = $('#get-google-recaptcha-key').data('value');
4let recaptchaGenerateStatus = $('#get-google-recaptcha-status').data('value')?.toString();
5recaptchaGenerateStatus = recaptchaGenerateStatus === 'true' || recaptchaGenerateStatus === '1' || recaptchaGenerateStatus === 1;
6
7function showDefaultCaptchaSection($element, defaultSectionElement) {
8    let $form = $element.closest('form');
9
10    if ($element.next('[name="set_default_captcha"]').length === 0) {
11        $element.after('<input type="hidden" name="set_default_captcha" class="set_default_captcha_value" value="1">');
12    } else {
13        $form.find('[name="set_default_captcha"]')?.val(1);
14    }
15
16    $form.find('.dynamic-default-and-recaptcha-section')?.addClass('active');
17
18    if($form.find('.default-captcha-container')?.length > 0){
19        let defaultCaptchaContainer = $form.find('.default-captcha-container');
20        getSessionRecaptchaCode(defaultCaptchaContainer.data("session"), defaultCaptchaContainer.find("input"));
21    }
22
23    let defaultDynamicElement = $(defaultSectionElement);
24    if (defaultDynamicElement?.length > 0) {
25        defaultDynamicElement.find('[name="default_captcha_value"]')?.attr('required', true);
26        defaultDynamicElement.removeClass('d-none');
27    }
28    setTimeout(function () {
29        $form.find('[type="submit"]').removeAttr('disabled');
30    }, 5000);
31}
32
33function generateRecaptcha($element, $input, action, defaultSectionElement) {
34    let defaultDynamicElement = $(defaultSectionElement);
35    if (defaultDynamicElement?.length > 0) {
36        defaultDynamicElement.find('[name="default_captcha_value"]')?.removeAttr('required');
37    }
38    let generatedToken = null;
39    if (typeof grecaptcha !== 'undefined') {
40        try {
41            grecaptcha.execute(recaptchaSiteKey, { action: action })
42                .then(function (token) {
43                    $element.val(token);
44                    generatedToken = token;
45                    defaultDynamicElement?.find('[name="default_captcha_value"]')?.val('');
46                    // Enable submit button after token is set
47                    let $form = $element.closest('form');
48                    $form.find('[name="set_default_captcha"]')?.val(0);
49                    $form.find('[type="submit"]').removeAttr('disabled');
50                })
51                .catch(function () {
52                    $element.val('');
53                    showDefaultCaptchaSection($element, defaultSectionElement);
54                });
55        } catch (err) {
56            showDefaultCaptchaSection($element, defaultSectionElement);
57        }
58    } else {
59        showDefaultCaptchaSection($element, defaultSectionElement);
60    }
61}
62
63$('.render-grecaptcha-response').each(function () {
64    let $element = $(this);
65    let action = $element.data('action');
66    let defaultSectionElement = $element.data('default-captcha');
67    let $input = $element.next('.set_default_captcha_value');
68
69    if ($input.length === 0) {
70        $element.after('<input type="hidden" name="set_default_captcha" class="set_default_captcha_value" value="">');
71        $input = $element.next('.set_default_captcha_value');
72    }
73
74    let formElement = $element.closest('form');
75    if (!formElement.length) {
76        console.warn('No form found for element:', $element);
77        return;
78    }
79
80    let submitButton = formElement.find('[type="submit"]');
81
82    submitButton.on('mouseover mousedown', function () {
83        if (!$input.val()) {
84            submitButton.attr('disabled', true);
85            generateRecaptcha($element, $input, action, defaultSectionElement);
86            setTimeout(function () {
87                submitButton.attr('disabled', false);
88            }, 2000);
89        }
90    });
91
92    formElement.on('mouseover mousedown', function () {
93        if (!$input.val()) {
94            submitButton.attr('disabled', true);
95            generateRecaptcha($element, $input, action, defaultSectionElement);
96            setTimeout(function () {
97                submitButton.attr('disabled', false);
98            }, 2000);
99        }
100    });
101
102    submitButton.on('click', function () {
103        setTimeout(function () {
104            generateRecaptcha($element, $input, action, defaultSectionElement);
105        }, 10000);
106    });
107
108    // Listen for any typing/select/file change inside the form
109    formElement.on('input change', 'input, textarea, select', function () {
110        if (!$input.val()) {
111            submitButton.attr('disabled', true);
112            generateRecaptcha($element, $input, action, defaultSectionElement);
113            submitButton.attr('disabled', false);
114        }
115    });
116});
117
118
119$('.default-captcha-container').each(function () {
120    let defaultCaptchaContainer = $(this);
121    let placeholderText = defaultCaptchaContainer?.data('placeholder') ?? 'Enter captcha value';
122    let baseUrl = defaultCaptchaContainer?.data('base-url');
123    let session = defaultCaptchaContainer?.data('session');
124
125    let html = `<input type="text" name="default_captcha_value" value="" required placeholder="${placeholderText}">`;
126
127    let htmlIcon = `<?xml version="1.0" encoding="utf-8"?>
128    <svg width="20px" height="20px" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
129    <path d="M5.05028 14.9497C4.65975 14.5592 4.65975 13.9261 5.05028 13.5355C5.4408 13.145 6.07397 13.145 6.46449 13.5355C7.39677 14.4678 8.655 15 10 15C12.7614 15 15 12.7614 15 10C15 9.44772 15.4477 9 16 9C16.5523 9 17 9.44772 17 10C17 13.866 13.866 17 10 17C8.11912 17 6.35391 16.2534 5.05028 14.9497Z" fill="#000000"/>
130    <path d="M13.5585 12.832C13.099 13.1384 12.4781 13.0141 12.1718 12.5546C11.8655 12.0951 11.9897 11.4742 12.4492 
13011.1679L15.4496 9.16787C15.9091 8.86154 16.53 8.98575 16.8363 9.4453C17.1426 9.90484 17.0184 10.5257 16.5589 10.832L13.5585 12.832Z" fill="#000000"/>
131    <path d="M18.8321 12.4452C19.1384 12.9048 19.0143 13.5256 18.5547 13.832C18.0952 14.1383 17.4743 14.0142 17.168 13.5546L15.168 10.5546C14.8616 10.0951 14.9858 9.47424 15.4453 9.16789C15.9049 8.86153 16.5257 8.98571 16.8321 9.44524L18.8321 12.4452Z" fill="#000000"/>
132    <path d="M14.8571 4.85116C15.2477 5.24168 15.2477 5.87485 14.8571 6.26537C14.4666 6.65589 13.8334 6.65589 13.4429 6.26537C12.5106 5.33309 11.2524 4.8009 9.90738 4.8009C7.14596 4.8009 4.90738 7.03948 4.90738 9.8009C4.90738 10.3532 4.45967 10.8009 3.90738 10.8009C3.3551 10.8009 2.90738 10.3532 2.90738 9.8009C2.90738 5.93491 6.04139 2.8009 9.90738 2.8009C11.7883 2.8009 13.5535 3.54752 14.8571 4.85116Z" fill="#000000"/>
133    <path d="M6.34889 6.96887C6.80844 6.66255 7.4293 6.78676 7.73563 7.2463C8.04195 7.70585 7.91775 8.32671 7.4582 8.63304L4.45782 10.633C3.99828 10.9394 3.37741 10.8152 3.07109 10.3556C2.76476 9.89606 2.88897 9.2752 3.34852 8.96887L6.34889 6.96887Z" fill="#000000"/>
134<path d="M1.07533 7.35567C0.768977 6.89614 0.893151 6.27527 1.35268 5.96892C1.81221 5.66256 2.43308 5.78674 2.73943 6.24627L4.73943 9.24627C5.04578 9.7058 4.92161 10.3267 4.46208 10.633C4.00255 10.9394 3.38168 10.8152 3.07533 10.3557L1.07533 7.35567Z" fill="#000000"/>
135</svg>`;
136
137    html += `<div class="captcha-image-container"><img alt="captcha" src="${baseUrl + '?sessionKey=' + session + '&token=' + Math.random()}">
138            <span class="refresh-icon">${htmlIcon}</span></div>`;
139    defaultCaptchaContainer.append(html);
140
141    defaultCaptchaContainer.find('.captcha-image-container').on('click', function () {
142        if (defaultCaptchaContainer?.find(".refresh-icon")?.hasClass('rotate-active')) {
143            defaultCaptchaContainer.find(".refresh-icon").removeClass('rotate-active');
144        } else {
145            defaultCaptchaContainer.find(".refresh-icon").addClass('rotate-active');
146        }
147        defaultCaptchaContainer.find("img").attr('src', baseUrl + '?sessionKey=' + session + '&token=' + Math.random());
148        getSessionRecaptchaCode(defaultCaptchaContainer.data("session"), defaultCaptchaContainer.find("input"));
149    });
150});
151
152function getSessionRecaptchaCode(sessionKey, inputSelector) {
153    try {
154        let routeGetSessionRecaptchaCode = $(
155            "#route-get-session-recaptcha-code"
156        );
157        let csrfToken = $('meta[name="_token"]').attr("content");
158        if (routeGetSessionRecaptchaCode.data("mode").toString() === "dev") {
159            let string = ".";
160            let intervalId = setInterval(() => {
161                if (string === "......") {
162                    string = ".";
163                }
164                string = string + ".";
165                $(inputSelector).val(string);
166            }, 100);
167
168            setTimeout(() => {
169                clearInterval(intervalId);
170                $.ajaxSetup({
171                    headers: {
172                        "X-CSRF-TOKEN": csrfToken,
173                    },
174                });
175                $.ajax({
176                    type: "POST",
177                    url: $("#route-get-session-recaptcha-code").data("route"),
178                    data: {
179                        _token: csrfToken,
180                        sessionKey: sessionKey,
181                    },
182                    success: function (response) {
183                        $(inputSelector).val(response?.code);
184                    },
185                });
186            }, 1000);
187        }
188    } catch (e) {
189        console.log(e);
190    }
191}

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.