PageSourceSearch

https://gymstats.info/scripts/main.js?v=2

js gymstats.info collected 2026-10-06 06:58:16 UTC 5,562 bytes, 159 lines download raw bytes

1window.addEventListener('load', function (_) {
2    const themeLs = localStorage.getItem('theme');
3    const theme = document.documentElement.getAttribute('data-bs-theme');
4    if (theme !== themeLs)
5        toggleTheme();
6
7    setHtmlLanguage();
8    window.resizeHomeTop();
9}, true);
10window.addEventListener('resize', function (_) {
11    window.resizeHomeTop();
12}, true);
13
14window.resizeHomeTop = () => {
15    if (location.pathname !== '/') return;
16
17    const img = document.querySelector('.main-bg');
18    const title = document.querySelector('.hero-title');
19    const subtitle = document.querySelector('.hero-subtitle');
20    const width = img.clientWidth;
21    if (width > 730) {
22        title.style.fontSize = '';
23        subtitle.style.marginTop = '';
24        subtitle.style.marginBottom = '';
25        subtitle.style.fontSize = '';
26        return;
27    }
28
29    var size = (0.00000268 * width * width + 0.00182 * width + 0.143).toFixed(5);
30    title.style.fontSize = size + 'rem';
31
32    let marT;
33    let marB;
34    let fs;
35    if (width > 585) {
36        marT = (0.007692 * width - 2.165).toFixed(5);
37        marB = marT;
38        fs = 1.3;
39    } else {
40        marT = (0.0015 * width + 1.4225).toFixed(5);
41        marB = (0.0115 * width - 4.5).toFixed(5);
42        fs = (0.0015 * width + 0.4).toFixed(5);
43    }
44    subtitle.style.marginTop = marT + 'rem';
45    subtitle.style.marginBottom = marB + 'rem';
46    subtitle.style.fontSize = fs + 'rem';
47}
48
49window.selectPicker = (id, title, noResults) => $(`#${id}`).selectpicker({
50    title: title,
51    noneSelectedText: title,
52    noneResultsText: noResults,
53    container: 'body'
54});
55window.selectPickerValue = (id, value) => $(`#${id}`).selectpicker('val', value);
56window.selectPickerDestroy = (id) => $(`#${id}`).selectpicker('destroy');
57
58window.browserTime = () => new Date();
59window.timeZoneOffset = () => new Date().getTimezoneOffset();
60
61window.setLanguage = (lang) => document.cookie = `language=${lang}; path=/;`;
62window.getLanguage = () => {
63    const match = document.cookie.match(new RegExp('(^| )language=([^;]+)'));
64    return match ? match[2] : 'en';
65}
66
67var HideNavBar = () => $('.offcanvas').offcanvas('hide');
68
69var Focus = (id) => {
70    var interval = setInterval(() => {
71            let el = window.document.querySelector(`#${id}`);
72            if (!el) return;
73            if (el.tagName.toLowerCase() === 'select')
74                el = window.document.querySelector(`#${id} + button.dropdown-toggle`);
75            if (!el) return;
76            el.focus();
77            if (document.activeElement === el)
78                clearInterval(interval);
79        },
80        100);
81}
82
83var Scroll = (id) => {
84    const el = document.getElementById(id);
85    if (el)
86        el.scrollIntoView({ behavior: "smooth", block: "start" });
87}
88
89setInterval(() => {
90    for (let key in localStorage) {
91        if (key.startsWith('exp_')) {
92            const dtValue = localStorage.getItem(key);
93            const dt = Date.parse(dtValue);
94            if (dt < Date.now()) {
95                localStorage.removeItem(key);
96                localStorage.removeItem('data_' + key.substring(4));
97            }
98        }
99        else if (key.startsWith('data_')) {
100            const mainKey = key.substring(5);
101            if (!localStorage.getItem('exp_' + mainKey))
102                localStorage.removeItem(key);
103        }
104    }
105}, 30 * 1000);
106
107var toggleTheme = () => {
108    const currentTheme = document.documentElement.getAttribute('data-bs-theme');
109    const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
110    document.documentElement.setAttribute('data-bs-theme', newTheme);
111    localStorage.setItem('theme', newTheme);
112    document.cookie = `theme=${newTheme}; path=/;`;
113    const themeToggler = document.getElementById('page-theme-toggler');
114    if (themeToggler) {
115        themeToggler.innerText = newTheme === 'dark' ? '🌞' : '🌙';
116        themeToggler.classList.toggle('btn-dark', newTheme === 'dark');
117        themeToggler.classList.toggle('btn-light', newTheme === 'light');
118    }
119}
120
121var fixThemeButton = () => {
122    const theme = localStorage.getItem('theme');
123    const themeToggler = document.getElementById('page-theme-toggler');
124    if (themeToggler) {
125        themeToggler.innerText = theme === 'dark' ? '🌞' : '🌙';
126        themeToggler.classList.toggle('btn-dark', theme === 'dark');
127        themeToggler.classList.toggle('btn-light', theme === 'light');
128    }
129}
130
131var setHtmlLanguage = () => {
132    const language = localStorage.getItem('language') ?? 'en';
133    document.documentElement.setAttribute('lang', language);
134}
135
136var ShowCaptcha = (id, lang, dnHelper) => {
137    hcaptcha.render(id,
138        {
139            'hl': lang,
140            'callback': (args) =>
140 dnHelper.invokeMethodAsync('HCaptchaOnSuccess', args),
141            'expired-callback': (args) => dnHelper.invokeMethodAsync('HCaptchaOnExpired', args)
142        });
143};
144
145var UpdateSelects = (title, noResults) => {
146    const selects = document.querySelectorAll('select[id]');
147    selects.forEach((select) => {
148        window.selectPickerDestroy(select.id);
149        window.selectPicker(select.id, title, noResults);
150    });
151}
152
153var lockResolver;
154(function() {
155    if (navigator && navigator.locks && navigator.locks.request) {
156        const promise = new Promise((res) => lockResolver = res);
157        navigator.locks.request('unique_lock_name', { mode: "shared" }, () => promise);
158    }
159})();

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.