uo-tashtagol.kemobl.ru

Форк
0
/
functions.js 
514 строк · 26.2 Кб
1
// Help functions 
2

3
function waiting_block(selector, callback, cont = document.querySelector('html')) {
4
    let node = document.querySelector(selector);
5
    if (node) {
6
        if (callback) { callback(node) } else { console.log(node) }
7
        return
8
    }
9
    const observer = new MutationObserver((mutationsList, observer) => {
10
        for (const mutation of mutationsList) {
11
            let node = document.querySelector(selector);
12
            if (node) {
13
                if (callback) { callback(node) } else { console.log(node) };
14
                observer.disconnect();
15
                break
16
            }
17
        }
18
    });
19
    observer.observe(cont, { childList: true, subtree: true });
20
}
21

22
async function goHeadRequest(url, timeout = 2000) {
23
    try {
24
        const response = await Promise.race([
25
            fetch(url, {
26
                method: 'HEAD'
27
            }),
28
            new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), timeout))
29
        ]);
30

31
        if (response.ok) {
32
            return response;
33
        } else {
34
            throw new Error('HTTP error ' + response.status);
35
        }
36
    } catch (error) {
37
        throw new Error('Error: ' + error.message);
38
    }
39
}
40

41
async function getDT() {
42
    let timeServers = [
43
        '/'
44
    ]
45
    let err;
46
    for (const url of timeServers) {
47
        try {
48
            // console.log('URL:' +url);
49
            const head_response = await goHeadRequest(url);
50
            const dt = new Date(head_response.headers.get('Date'));
51
            return dt;
52
        } catch (error) {
53
            console.warn(error);
54
            err = error;
55
        }
56
    }
57
    return new Date();
58
}
59

60
function run_events(events, currentDate = new Date()) {
61
    for (let event in events) {
62
        if (event === '-') continue;
63
        const [start, end] = event.split('|');
64
        let [startDay, startMonth] = start.split('-');
65
        let [endDay, endMonth] = end.split('-');
66

67
        startMonth = parseInt(startMonth, 10);
68
        endMonth = parseInt(endMonth, 10);
69

70
        let startYear = currentDate.getFullYear();
71
        let endYear = startYear;
72

73
        if (endMonth < startMonth) {
74
            startYear--; // Увеличиваем текущий год, если конечный месяц меньше начального
75
        }
76

77
        const startDate = new Date(startYear, startMonth - 1, startDay);
78
        const endDate = new Date(endYear, endMonth - 1, endDay);
79

80
        if (currentDate >= startDate && currentDate <= endDate) {
81
            events[event](event, currentDate);
82
        }
83
    }
84
}
85

86
/* Snow script */
87
async function snowInit(snowCollect = [], snowCont = 'body', snow_script_path = null, imgSrc = false) {
88
    if (typeof snowCollect === 'string') {
89
        document.querySelectorAll(snowCont).snowfall('clear');
90
        return
91
    }
92
    if (!snow_script_path) { console.error('Snow script path requred!'); return; }
93
    await loader.importJS(snow_script_path);
94
    if (getCookie('SnowScript') == 'OFF') return;
95
    snowCollect.forEach(e => {
96
        e = document.querySelector(e);
97
        e.style.position = 'relative';
98
        e.insertAdjacentHTML('beforeEnd', '<div class="snowLine" style="position:absolute;bottom:0;width:100%;height:20px"></div>');
99
    });
100
    document.querySelector(snowCont).snowfall({
101
        collection: '.snowLine',
102
        flakeIndex: 999,
103
        flakeCount: 10,
104
        minSize: 13,
105
        maxSize: 15,
106
        minSpeed: 1,
107
        maxSpeed: 2,
108
        collectionHeight: 20,
109
        flakeColor: '#ffffff00',
110
        round: false,
111
        image: imgSrc
112
        /*flakeCount: 50, // Количество снежинок
113
       flakeColor: '#e0e0ff', // Цвет снежинок
114
       flakeIndex: 999, // z-index снежинок
115
       minSize: 1, // Минимальный размер снежинки
116
       maxSize: 4, // Максимальный размер снежинки
117
       minSpeed: 1, // Минимальная скорость снежинки
118
       maxSpeed: 5, // Максимальная скорость снежинки
119
       round: true, // Закруглённые снежинки (true/false)
120
       shadow: true, // С тенью (true/false)
121
       collection: false, // Накапливаются ли снизу, образуя сугробы (false or selector)
122
       collectionHeight: 50, // Количество накапливаемого снега
123
       deviceorientation: true // Подстраиваться ли под устройство
124
       // Русификация от Apocalypse
125
       // apo-ucoz.com (c) 2013*/
126
    });
127
    console.log('Snow script init');
128
    // $('canvas[height=20]').css({ left: function (i, v) { return parseFloat(v) + 10 }, width: function (i, v) { return parseFloat(v) - 20 } });
129
}
130

131
async function cheats(staticURL) {
132
    function Random(min, max) {
133
        if (typeof (min) === 'number') { min = min } else { min = 1 };
134
        if (typeof (max) === 'number') { max = max } else { max = 10 };
135
        return Math.floor(Math.random() * (max - min + 1)) + min;
136
    }
137
    let combo = {}, pA, MusicPl, alerts = { music: [] };
138
    const
139
        l = "ArrowLeft",//стрелка влево
140
        r = "ArrowRight",//стрелка вправо
141
        vn = "ArrowDown",//стрелка вниз
142
        vv = "ArrowUp",//стрелка вверх,
143
        d = "KeyD",//буква d
144
        i = "KeyI",//буква i
145
        t = "KeyT"
146
    const Cheats = {
147
        'Music': [1, l, r, vn, vn, vv, vv],
148
        'Snow Script': [1, l, l, r, r,],
149
        'UpToBoth': [1, vn, vv],
150
        'DII': [1, l, l, d, i, i],
151
        'NY': [1, vv, vv, vv]
152
        //'Test':[1,t,t]
153
    };//Имя чита : Вводится комбинация клавиш в keyCod'ах или определенных выше константах, при последовательном вводе которой произойдет действие. Нулевой элемент массива - счетчик.
154
    document.body.addEventListener("keyup", async function (e) {
155
        for (let k in Cheats) {
156
            let c = k;
157
            k = Cheats[k];
158
            if (k[k[0]] == e.code) {
159
                if (!combo[c]) combo[c] = []
160
                combo[c].push(e.key);
161
                console.log(combo);
162
                if (k[0] == k.length - 1) {
163
                    //Далее выполнение действий для введенной комбинации
164
                    switch (c) {
165
                        case 'NY':
166
                            console.log('Cheat ' + c + ' activated!');
167
                            let dt = new Date();
168
                            let ny = await newYear(
169
                                staticURL,
170
                                `${dt.getFullYear()}/${dt.getMonth()}/01`,
171
                                `${dt.getFullYear()}/${dt.getMonth() + 1}/${dt.getDate()} ${dt.getHours()}:${dt.getMinutes() + 3 < 60 ? dt.getMinutes() + 3 : '03'}`,
172
                                dt
173
                            );
174
                            if (typeof msg == 'function') {
175
                                msg(`Вы активировали секретный код: ${c}`, 999999, "", {
176
                                    onClose: () => { ny.stop(); }
177
                                });
178
                            }
179
                            break;
180
                        case 'DII':
181
                            console.log('Cheat ' + c + ' activated!');
182
                            let cont = document.querySelector('#root');
183
                            cont.insertAdjacentHTML('beforeBegin', `<video id="DIIRes" src="${staticURL}/video/dII.mp4" autoplay loop mute></video>
184
                            <style>
185
                            #DIIRes { position: fixed; width:100%; transition: all 1.5s ease-in; }
186
                            body { transition: all 1.4s; }
187
                            body::after {
188
                                content: "";
189
                                position: fixed;
190
                                top:0; left:0; width: 100%; height: 100%;
191
                                background: red;
192
                                opacity: 0;
193
                                z-index: 3;
194
                                transition: inherit;
195
                            }
196
                            #DIIRes.DIIRes-hide {
197
                                transform-origin: top;
198
                                transform: scale(4) translateY(195px)
199
                            }
200
                            body.DIIRes-hide::after {
201
                                opacity: 1;
202
                            }
203
                            </style>`);
204
                            let DII = document.querySelector('#DIIRes');
205
                            let d2m;
206
                            if (playSound) d2m = playSound(`${staticURL}/music/d2ost.mp3`);
207
                            cont.style.opacity = '0.2';
208
                            if (typeof msg == 'function') {
209
                                msg(`Вы активировали секретный код: ${c}`, 10000, "", {
210
                                    onClose: () => {
211
                                        document.querySelector('#DIIRes').classList.add('DIIRes-hide');
212
                                        document.body.classList.add('DIIRes-hide');
213
                                        setTimeout(() => {
214
                                            document.querySelector('#DIIRes').remove();
215
                                            document.querySelector('#root').style.opacity = 1;
216
                                            document.body.style.transition = "all .3s";
217
                                            document.querySelector('body').classList.remove('DIIRes-hide');
218
                                            d2m.pause();
219
                                        }, 1300);
220
                                    }
221
                                });
222
                            }
223
                            break;
224
                        case 'Music':
225
                            alerts.music = alerts.music.filter(alert => alert.isOpen);
226
                            alerts.music.forEach(alert => alert.close());
227
                            if (!pA) { pA = new Audio(); } else { pA.pause(); }
228
                            if (!pA.canPlayType('audio/mp3')) return;
229
                            console.log('Cheat ' + c + ' activated!');
230
                            if (!MusicPl) {
231
                                MusicPl = {
232
                                    1: ['Бетховен - Ангелы и Демоны', `${staticURL}/music/lvb_angels_and_demons.mp3`, 134],
233
                                    2: ['Бетховен - Соната для ф-но №14, часть 3', `${staticURL}/music/blv_sonata_14_presto_agitato.mp3`, 432],
234
                                    3: ['Вивальди Времена года - Лето', `${staticURL}/music/va_vremena_goda_leto.mp3`, 172],
235
                                    4: ['Вагнер Рихард - Полет валькирий из оперы «Валькирия»', `${staticURL}/music/vr_polet_valkiriy.mp3`, 326],
236
                                    5: ['Вивальди Антонио - Времена года. Весна', `${staticURL}/music/va_vremena_goda_vesna.mp3`, 204],
237
                                    6: ['Бетховен - Соната для ф-но №14, часть 1', `${staticURL}/music/blv_sonata_14_adagio_sostenuto`, 335]
238
                                }
239
                            }
240
                            let Rnd = Random(1, 5);
241
                            pA.src = MusicPl[Rnd][1];
242
                            pA.play();
243
                            if (typeof msg == 'function') {
244
                                msg(`Вы активировали секретный код: ${c}<br><i>Комбинация:<i><br>${combo[c].toString()}`);
245
                                alerts.music.push(msg(`Играет композиция:<br>${MusicPl[Rnd][0]}`, MusicPl[Rnd][2]));
246
                            }
247
                            break;
248

249
                        case 'Test':
250
                            console.log('Cheat ' + c + ' activated!');
251
                            console.log('И понял Антоха, что поступил плохо!');
252
                            if (typeof msg == 'function') msg(`Вы активировали секретный код: ${c}<br>И понял Антоха, что поступил плохо!`);
253
                            break;
254

255
                        case 'Snow Script':
256
                            let SnowScript = getCookie('SnowScript');
257
                            let date = new Date(new Date().getTime() + 7776000 * 1000);
258
                            if ((!SnowScript) || (SnowScript == 'ON')) { SnowScript = 'OFF'; } else if (SnowScript == 'OFF') { SnowScript = 'ON'; }
259
                            document.cookie = "SnowScript=" + SnowScript + "; path=/; SameSite=Strict; expires=" + date.toUTCString();
260
                            switch (SnowScript) {
261
                                case 'OFF':
262
                                    try { await snowInit('clear', '.site_header'); } catch (err) { return }
263
                                    if (typeof msg == 'function') msg(`Вы активировали секретный код: ${c}<br><i>Комбинация:<i><br>${combo[c].toString()}<br>
264
                                    Скрипт снега выключен.<br>Для включения повторите код.`);
265
                                    break;
266
                                case 'ON':
267
                                    try { snowInit(['.site_header'], '.site_header', `${staticURL}/js/snowfall.js`) } catch (err) { console.log(err) }
268
                                    if (typeof msg == 'function') msg(`Вы активировали секретный код: ${c}<br><i>Комбинация:<i><br>${combo[c].toString()}<br>
269
                                    Скрипт снега включен.<br>Для выключения повторите код.`);
270
                                    break;
271
                            }
272
                            break;
273
                        case 'UpToBoth':
274
                            if (typeof msg == 'function') msg(`Вы активировали секретный код: ${c}<br><i>Комбинация:<i><br>${combo[c].toString()}`);
275
                            let cDeg = parseInt(document.body.dataset.rotateX);
276
                            cDeg = isNaN(cDeg) || cDeg == 180 ? 0 : 180;
277
                            document.body.dataset.rotateX = cDeg;
278
                            document.body.animate([{ transform: `rotate3d(1,0,0,${cDeg}deg)` }], { duration: 500, fill: "forwards" });
279
                            // console.log(cDeg);
280
                            break;
281
                    }
282
                    k[0] = 1;
283
                    combo[c] = [];
284
                    break;
285
                }
286
                k[0] = k[0] + 1;
287
            } else {
288
                k[0] = 1;
289
                combo[c] = [];
290
            }
291
        }
292
    }, combo, pA, MusicPl, alerts);
293
    console.log('CheatCodes is loaded');
294
}
295

296
function document_viewer(staticURL) {
297
    function view() {
298
        // console.time('View_doc');
299
        if (this.hasAttribute('download')) return;
300

301
        // document.querySelector('.fCont').click();
302

303
        let layer = document.createElement('div');
304
        layer.className = 'fCont';
305
        layer.innerHTML = `<style>
306
            .fCont {opacity: 0; position: fixed; background: rgba(0,0,0,.5); width: 100%; height: 100%; margin: auto; left: 0; right: 0; top: 0; bottom: 0; z-index: 9999}
307
            .fCont > div {margin: auto; transition: .3s; height: 100%; width: 80%; position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 0 1px 0 0; z-index: 1000; background: #FFF;margin-top: -100vh;}
308
            .frame-control-panel {position: absolute; background-color: rgba(147,147,147,0.7);}
309
            .frame-control-panel a {display: inline-block; width: 50px; height: 47px; line-height: 47px; text-align: center; font-size: 17px; font-weight: bold; text-decoration: none; color: rgba(255,255,255,.87); text-shadow: 0 1px 0 rgba(0,0,0,0.8);}
310
            .frame-control-panel a:hover {background: #838383; color: rgba(255,255,255,.87); cursor: default}
311
            .frame-control-panel a:nth-of-type(2) > div {background: url(${staticURL}/img/icons/doc_viewer/v-sprite19.svg) no-repeat 0 -2467px; background-origin: content-box; padding: 0px 0px 0 15px; margin-right: -15px;}
312
            </style>
313
            <div><div class='frame-control-panel'><a onclick="$('.fCont').trigger('click')">X</a><a href='${this.href}' download><div>&nbsp;</div></a></div>
314
            <iframe name='doc' src='' style='width:100%;height:100%;padding:0;margin:0'></iframe></div></div>`;
315

316
        let url = this.href;
317
        url = 'https://docs.google.com/viewerng/viewer?url=' + url + '&embedded=true';
318
        layer.querySelector('iframe').src = url;
319

320
        // document.body.scrollTo(0, 0);
321
        document.body.style.overflow = 'hidden';
322
        document.body.appendChild(layer);
323

324
        layer.querySelector('iframe').addEventListener('hover', function (event) { layer.querySelector('.frame-control-panel').animate([{ opacity: "1" }], { duration: 300, fill: "forwards" }) });
325
        layer.querySelector('iframe').addEventListener('mouseout', function (event) { layer.querySelector('.frame-control-panel').animate([{ opacity: "0" }], { duration: 1000, fill: "forwards" }) });
326
        setTimeout(() => document.querySelector('.frame-control-panel').animate([{ opacity: "0" }], { duration: 800, fill: "forwards" }), 3000);
327

328
        document.querySelector('.fCont iframe').addEventListener('load', () => console.log('frame loaded'));
329
        document.querySelector('.fCont').addEventListener('click', function (event) {
330
            if (event.target.closest('.frame-control-panel') || event.target.closest('iframe')) return
331
            document.querySelector('.fCont div').animate([{ marginTop: "100vh" }], { duration: 300, fill: "forwards" });
332
            setTimeout(() => {
333
                document.documentElement.style.overflow = 'auto';
334
                let layer = document.querySelector('.fCont');
335
                layer.style.display = 'none';
336
                layer.remove()
337
            }, 400);
338
        });
339

340
        layer.animate([{ opacity: "1" }], { duration: 500, fill: "forwards" });
341
        layer.querySelector('div').animate([{ marginTop: "15px" }], { delay: 500, duration: 500, fill: "forwards" });
342

343
        // console.timeEnd('View_doc');
344
        return false;
345
    }
346

347
    function isDocFileType(el) {
348
        const fileTypes = ['pdf', 'doc', 'docx', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'rtf'];
349
        if (el.href && fileTypes.includes(el.href.toLowerCase().split('.').pop())) return true;
350
        return false;
351
    }
352

353
    document.body.classList.add('doc-viewer');
354
    document.body.addEventListener('click', function (event) {
355
        event.preventDefault();
356
        let target = event.target.closest('a');
357
        if (target && target.tagName === 'A' && isDocFileType(target)) {
358
            view.call(target);
359
        }
360
    });
361
}
362

363
function salute(parent = "body", id = null, size = ['500px', '200px'], pos = [0, 0, 'auto', 'auto'], staticURL = '/') {
364
    document.querySelector(parent).insertAdjacentHTML('afterBegin', `
365
    <div id='${id}' class='event_salute' style='width:${size[0]};height:${size[1]};padding:0;margin:0;position:absolute;z-index:9999;left:;${pos[0]};top:${pos[1]};right:${pos[2]};bottom:${pos[3]};'>
366
        <img src='${staticURL}/img/saljut_prozrachnyj.gif' height='100%' width='100%'/>
367
    </div>`);
368
    return document.querySelector(`#${id}`);
369
}
370

371
async function newYear(staticURL = '/',
372
    startDate = `${(new Date()).getFullYear()}/11/01`,
373
    endDate = `${((new Date()).getFullYear() + 1)}/01/01`,
374
    currDate = new Date()) {
375
    let NewYearTimer = new DTimer({
376
        start: startDate,
377
        finish: endDate,
378
        relate: `${currDate.getFullYear()}/${currDate.getMonth() + 1}/${currDate.getDate()} ${currDate.getHours()}:${currDate.getMinutes()}:${currDate.getSeconds()}`//"2015/12/31 23:58:55"
379
    });
380
    let audio = null;
381
    let nye = {}
382
    let salutes = []
383

384
    nye.stop = function () {
385
        NewYearTimer.stop();
386
        if (audio) audio.stop();
387
        if (document.querySelector('.site_header__promo #timer-cont')) document.querySelector('.site_header__promo #timer-cont').remove();
388
        salutes.forEach(el => el.remove());
389
    }
390

391
    NewYearTimer.start(async function (date) {
392
        //update function
393
        let Y, M, d, h, m, s, postfix_d;
394
        //Y = this.fixTime(date.getYear());
395
        //M = this.fixTime(date.getMonth());
396
        d = this.fixTime(date.getDate());
397
        h = this.fixTime(date.getHours());
398
        m = this.fixTime(date.getMinutes());
399
        s = this.fixTime(date.getSeconds());
400
        d = d < 10 ? d.substr(1) : d;
401
        postfix_d = ['2', '3', '4'].includes(('' + d).slice(-1)) ? " дня " : d !== 11 && ('' + d).slice(-1) == 1 ? " день " : " дней ";
402
        document.querySelector('#timer-date').innerHTML = (d > 0 ? d + postfix_d : "") + h + ":" + m + ":" + s;
403
        if (date.getDate() == 0 && date.getHours() == 0 && date.getMinutes() < 1) {
404
            try {
405
                if (PlaySoundWebApi && !getCookie('ny_kuranty')) {
406
                    audio = await PlaySoundWebApi(`${staticURL}/music/kuranty.mp3`, 60 - date.getSeconds());
407
                    audio.play();
408
                }
409
            } catch (e) { };
410
            document.cookie = "ny_kuranty=play; path=/; SameSite=Strict; expires=" + date;
411
        }
412
    }, async function () {
413
        //end time function
414
        document.querySelector('#timer-date').animate({ 'opacity': '0' }, { duration: 3000, fill: "forwards" });
415
        msg(`<span style='text-align:center;font-size:25pt;font-family:Nautilus Pompilius'>Счастливого нового ${currDate.getFullYear() + 1} года</span>`, 999999, '', {
416
            onClose: () => { nye.stop() },
417
        });
418
        salutes.push(salute('body', 'sal1', ['45vw', 300], [0, 0, 'auto', 'auto'], staticURL));
419
        salutes.push(salute('body', 'sal2', ['45vw', 300], ['auto', 0, 0, 'auto'], staticURL));
420
        try {
421
            if (PlaySoundWebApi) {
422
                audio = await PlaySoundWebApi(`${staticURL}/music/gimn_rf.mp3`);
423
                audio.play();
424
            }
425
        } catch (e) { };
426
    });
427

428
    if (NewYearTimer.start !== 0) {
429
        if (document.querySelector('.site_header__promo #timer-cont')) document.querySelector('.site_header__promo #timer-cont').remove();
430
        document.querySelector('.site_header__promo').insertAdjacentHTML('afterBegin', `
431
        <style>
432
            .site_header__promo { display:flex;place-content:baseline;place-items:end; }
433
            #timer-cont { cursor:pointer;user-select:none;display:inline-block;position:relative;clear:right;color:#bb0000;font-size:1.1vw;font-weight:bold;font-family:LED;height:70px;marargin-top:-55px; }
434
            #timer-title { display:inline-block;position:relative;min-width:64px;bottom:-13%;left:-10px }
435
            #timer-date { font-size:calc(15px + .5vw);font-weight:normal;color:${localStorage.TimerColor || "rgb(127 2 137)"};transition:all 1s;background:#fff;padding:5px;margin-left:-30px; }
436
        </style>
437
            <div id='timer-cont' title='Нажмите для изменения цвета таймера'>
438
                <span id='timer-title'><img src='${staticURL}/img/new_year_tree.png'></span>
439
                <span id='timer-date'></span>
440
            </div>
441
        `);
442
        document.querySelector('#timer-cont').addEventListener('click', function () {
443
            localStorage.TimerColor = 'rgb(' + Random(0, 255) + ',' + Random(0, 255) + ',' + Random(0, 255) + ')';
444
            document.querySelector('#timer-date').style.color = localStorage.TimerColor;
445
        });
446
    }
447

448
    return nye;
449
}
450

451
function app_icon(exts, cl, style) {
452
    const iconsPath = 'https://ss.uooio.keenetic.pro:50005/static/uo-tashtagol.kemobl.ru/img/icons'
453
    const icons_ext = {
454
        'pdf': `${iconsPath}/pdf-icon.png`,
455
        'doc': `${iconsPath}/doc-icon.png`,
456
        'docx': `${iconsPath}/docx-icon.png`,
457
        'xls': `${iconsPath}/xls-icon.png`,
458
        'xlsx': `${iconsPath}/xlsx-icon.png`,
459
        'ppt': `${iconsPath}/ppt-icon.png`,
460
        'pptx': `${iconsPath}/ppt-icon.png`,
461
        'zip': `${iconsPath}/zip-icon.png`,
462
        'rar': `${iconsPath}/rar-icon.png`,
463
        'rtf': `${iconsPath}/rtf-icon.png`
464
    }
465
        , links = document.querySelectorAll('a[href]');
466
    if (typeof exts === 'string') {
467
        exts = [exts]
468
    } else if (!Array.isArray(exts)) {
469
        console.warn('Нужно передать массив или строку!');
470
        return
471
    }
472
    if (links) {
473
        for (let i = 0; i < links.length; i++) {
474
            for (let q = 0; q < exts.length; q++) {
475
                if (check_link(links[i], exts[q])) {
476
                    if (icons_ext.hasOwnProperty(exts[q])) {
477
                        add_icon(links[i], get_icon_path(exts[q]), style, cl);
478
                    } else {
479
                        console.warn('Не найдена иконка для: ' + exts[q])
480
                    }
481
                }
482
            }
483
        }
484
    }
485
    function add_icon(lnk, icon, style, cl = 'doc-icon') {
486
        if (lnk && icon && !lnk.getElementsByClassName(cl).length) {
487
            style = style !== '' && style !== undefined ? style : 'height:22px;width:22px;position:relative;top:4px;right:3px;vertical-align:middle';
488
            icon = '<img class="' + cl + '" src="' + icon + '" style="' + style + '">';
489

490
            lnk.insertAdjacentHTML('afterBegin', icon);
491
        }
492
    }
493
    function check_link(lnk, ext) {
494
        if (lnk.classList.contains('doc-icon-off')) return false;
495
        return (lnk.href.toLowerCase().lastIndexOf('.' + ext.toLowerCase()) >= 0)
496
    }
497
    function get_icon_path(ext) {
498
        for (let i_ext in icons_ext) {
499
            if (i_ext == ext)
500
                return icons_ext[i_ext];
501
        }
502
    }
503
}
504

505
async function get_pdf_sign_info() {
506
    let api_ver = 1.1,
507
        baseURL = "https://pdfgsiapi.uooio.keenetic.pro:50001",
508
        moduleURL = `${baseURL}/api/${api_ver}/PDF/sign-info/sign-info.js?ver=1.4`,
509
        { PDFGSI } = await import(moduleURL);
510
    PDFGSI("constructor-documents-list-item__icon");
511
}
512

513
console.log('functions module loaded');
514
export { waiting_block, goHeadRequest, getDT, run_events, snowInit, salute, cheats, document_viewer, app_icon, newYear, get_pdf_sign_info }

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.