PageSourceSearch

https://nalog.gov.by/local/templates/main_template/script.js?177486392766870

js nalog.gov.by collected 2026-09-24 17:34:58 UTC 66,870 bytes, 1,406 lines download raw bytes

vendor: 6,674 bytes, lines 1-179
1
2// Global
3/*!
4 * JavaScript Cookie v2.2.1
5 * https://github.com/js-cookie/js-cookie
6 *
7 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
8 * Released under the MIT license
9 */
10(function (factory) {
11    var registeredInModuleLoader;
12    if (typeof define === 'function' && define.amd) {
13        define(['require', 'exports'], factory);
14        registeredInModuleLoader = true;
15    }
16    if (typeof exports === 'object') {
17        module.exports = factory();
18        registeredInModuleLoader = true;
19    }
20    if (!registeredInModuleLoader) {
21        var OldCookies = window.Cookies;
22        var api = window.Cookies = factory();
23        api.noConflict = function () {
24            window.Cookies = OldCookies;
25            return api;
26        };
27    }
28}(function () {
29    function extend () {
30        var i = 0;
31        var result = {};
32        for (; i < arguments.length; i++) {
33            var attributes = arguments[ i ];
34            for (var key in attributes) {
35                result[key] = attributes[key];
36            }
37        }
38        return result;
39    }
40
41    function decode (s) {
42        return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
43    }
44
45    function init (converter) {
46        function api() {}
47
48        function set (key, value, attributes) {
49            if (typeof document === 'undefined') {
50                return;
51            }
52
53            attributes = extend({
54                path: '/'
55            }, api.defaults, attributes);
56
57            if (typeof attributes.expires === 'number') {
58                attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
59            }
60
61            // Мы используем "expires" вместо "max-age", так как "max-age" не поддерживается в IE
62            attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
63
64            try {
65                var result = JSON.stringify(value);
66                if (/^[\{\[]/.test(result)) {
67                    value = result;
68                }
69            } catch (e) {}
70
71            value = converter.write ?
72                converter.write(value, key) :
73                encodeURIComponent(String(value))
74                    .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
75
76            key = encodeURIComponent(String(key))
77                .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
78                .replace(/[\(\)]/g, escape);
79
80            var stringifiedAttributes = '';
81            for (var attributeName in attributes) {
82                if (!attributes[attributeName]) {
83                    continue;
84                }
85                stringifiedAttributes += '; ' + attributeName;
86                if (attributes[attributeName] === true) {
87                    continue;
88                }
89
90                // Учитываем разделение по секциям RFC 6265, статья 5.2:
91                // ...
92                // 3. Если оставшиеся непарсированные атрибуты содержат символ %x3B (";"):
93                //     перехватывать символы непарсированных атрибутов до, но не включая первый символ %x3B (";").
94                // ...
95                stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
96            }
97
98            return (document.cookie = key + '=' + value + stringifiedAttributes);
99        }
100
101        function get (key, json) {
102            if (typeof document === 'undefined') {
103                return;
104            }
105
106            var jar = {};
107            // Чтобы предотвратить цикл в первом месте, присваиваем пустой массив
108            // в случае отсутствия куки вообще.
109            var cookies = document.cookie ? document.cookie.split('; ') : [];
110            var i = 0;
111
112            for (; i < cookies.length; i++) {
113                var parts = cookies[i].split('=');
114                var cookie = parts.slice(1).join('=');
115
116                if (!json && cookie.charAt(0) === '"') {
117                    cookie = cookie.slice(1, -1);
118                }
119
120                try {
121                    var name = decode(parts[0]);
122                    cookie = (converter.read || converter)(cookie, name) ||
123                        decode(cookie);
124
125                    if (json) {
126                        try {
127                            cookie = JSON.parse(cookie);
128                        } catch (e) {}
129                    }
130
131                    jar[name] = cookie;
132
133                    if (key === name) {
134                        break;
135                    }
136                } catch (e) {}
137            }
138
139            return key ? jar[key] : jar;
140        }
141
142        api.set = set;
143        api.get = function (key) {
144            return get(key, false /* читаем как сырые */);
145        };
146        api.getJSON = function (key) {
147            return get(key, true /* читаем как json */);
148        };
149        api.remove = function (key, attributes) {
150            set(key, '', extend(attributes, {
151                expires: -1
152            }));
153        };
154
155        api.defaults = {};
156
157        api.withConverter = init;
158
159        return api;
160    }
161
162    return init(function () {});
163}));
164
165jQuery(document).ready(function($){
166    $.bvi({
167        'bvi_target' : '.bvi-open', // Класс ссылки включения плагина
168        "bvi_theme" : "white", // Цвет сайта
169        "bvi_font" : "arial", // Шрифт
170        "bvi_font_size" : 16, // Размер шрифта
171        "bvi_letter_spacing" : "normal", // Межбуквенный интервал
172        "bvi_line_height" : "normal", // Междустрочный интервал
173        "bvi_images" : false, // Изображения
174        "bvi_reload" : false, // Перезагрузка страницы при выключении плагина
175        "bvi_fixed" : false, // Фиксирование панели для слабовидящих вверху страницы
176        "bvi_tts" : true, // Синтез речи
177        "bvi_flash_iframe" : true, // Встроенные элементы (видео, карты и тд.)
178        "bvi_hide" : false // Скрывает панель для слабовидящих и показывает иконку панели.
179    });
180});;
181/*!
182 * Button visually impaired v2.0
183 */
184(function ($) {
185    "use strict";
186    $.bvi = function (options) {
187        var default_setting = $.extend({
188            'bvi_target': '.bvi-open',
189            'bvi_theme': 'white',
190            'bvi_font': 'arial',
191            'bvi_font_size': 16,
192            'bvi_letter_spacing': 'normal',
193            'bvi_line_height': 'normal',
194            'bvi_images': true,
195            'bvi_reload': false,
196            'bvi_fixed': true,
197            'bvi_tts': true,
198            'bvi_flash_iframe': true,
199            'bvi_hide': false
200        }, options);
201
202        var versionIE = detectIE();
203        var selector = default_setting.bvi_target;
204        var check_bvi_theme;
205        var check_bvi_font;
206        var check_bvi_letter_spacing;
207        var check_bvi_line_height;
208        var check_bvi_font_size;
209        var check_bvi_images;
210        var check_bvi_fixed;
211        var check_bvi_tts;
212        var check_bvi_flash_iframe;
213        var check_bvi_hide;
214        var checkError;
215        var bvi_tts_synth = window.speechSynthesis;
216        var bvi_tts_support_browser = (bvi_tts_synth !== undefined) ? true : false;
217        var sm = '576';
218        var md = '768';
219        var lg = '992';
220        var xl = '1200';
221        var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
222
223        console.log('Bvi console: ready Button visually impaired v2.0');
224
225        if (bvi_tts_support_browser) {
226            setInterval(function () {
227                if (bvi_tts_synth.speaking == false) {
228                    $('.bvi-tts-play').removeClass('disabled');
229                    $('.bvi-tts-pause').addClass('disabled');
230                    $('.bvi-tts-resume').addClass('disabled');
231                    $('.bvi-tts-stop').addClass('disabled');
232                }
233            }, 1000);
234            console.log('Bvi console: Чтение речи поддерживается в данной браузере');
235        } else {
236            console.log('Bvi console: Чтение речи не поддерживается в данном браузере');
237        }
238
239        $(window).on('resize', function () {
240            var width_resize = (window.innerWidth > 0) ? window.innerWidth : screen.width;
241
242            if (width_resize >= lg) {
243                $('.bvi-panel-container').show();
244            }
245
246            if (width_resize <= lg) {
247                $('.bvi-panel-container').removeClass('bvi-container').addClass('bvi-container-fluid');
248            } else {
249                $('.bvi-panel-container').removeClass('bvi-container-fluid').addClass('bvi-container');
250            }
251        });
252
253        function detectIE() {
254            var ua = window.navigator.userAgent;
255            var msie = ua.indexOf('MSIE ');
256
257            if (msie > 0) {
258                return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
259            }
260
261            var trident = ua.indexOf('Trident/');
262            if (trident > 0) {
263                var rv = ua.indexOf('rv:');
264                return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
265            }
266
267            var edge = ua.indexOf('Edge/');
268            if (edge > 0) {
269                return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
270            }
271
272            return false;
273        }
274
275        function bvi_tts_speak(text) {
276            if (Cookies.get('bvi-tts') === 'true' && bvi_tts_support_browser) {
277                bvi_tts_synth.cancel();
278                var voices = bvi_tts_synth.getVoices();
279                var chunkLength = 120;
280                var pattRegex = new RegExp('^[\\s\\S]{' + Math.floor(chunkLength / 2) + ',' + chunkLength + '}[.!?,]{1}|^[\\s\\S]{1,' + chunkLength + '}$|^[\\s\\S]{1,' + chunkLength + '} ');
281                var $array = [];
282                var $text = text;
283
284                while ($text.length > 0) {
285                    $array.push($text.match(pattRegex)[0]);
286                    $text = $text.substring($array[$array.length - 1].length);
287                }
288
289                $.each($array, function () {
290                    var speechUtterance = new SpeechSynthesisUtterance(this.trim());
291                    speechUtterance.volume = 1;
292                    speechUtterance.rate = 1;
293                    speechUtterance.pitch = 1;
294                    speechUtterance.lang = 'ru-RU';
295
296                    speechUtterance.onstart = function (event) {
297                        console.log(speechUtterance);
298                        //console.log('Start called for: ' + event.utterance.text + '-' + event.charIndex);
299                    };
300
301                    speechUtterance.onend = function (event) {
302                        //console.log(event.name + ' end ' + event.elapsedTime + ' milliseconds.');
303                    };
304
305                    speechUtterance.onpause = function (event) {
306                        //console.log(event.name + ' pause ' + event.elapsedTime + ' milliseconds.');
307                    };
308
309                    speechUtterance.onresume = function (event) {
310                        //console.log(event.name + ' resume ' + event.elapsedTime + ' milliseconds.');
311                    };
312
313                    speechUtterance.onboundary = function (event) {
314                        /*
315                        var world = bvi_getWordAt(event.utterance.text, event.charIndex);
316                        var src_str = $(id).text();
317                        var term = world.replace(/(\s+)/, "(<[^>]+>)*$1(<[^>]+>)*");
318                        var pattern = new RegExp("(" + term + ")", "gi");
319                        src_str = src_str.replace(pattern, "<mark>$1</mark>");
320                        src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/, "$1</mark>$2<mark>$4");
321                        $(id).html(src_str);
322                        console.log(event.utterance.text);
323                        */
324                    };
325
326                    for (var i = 0; i < voices.length; i++) {
327                        if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'Google русский') {
328                            speechUtterance.voice = voices[i];
329                            speechUtterance.voiceURI = voices[i].voiceURI;
330                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'Microsoft Irina Desktop - Russian') {
331                            speechUtterance.voice = voices[i];
332                            speechUtterance.voiceURI = voices[i].voiceURI;
333                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'urn:moz-tts:sapi:Microsoft Irina Desktop - Russian?ru-RU') {
334                            speechUtterance.voice = voices[i];
335                            speechUtterance.voiceURI = voices[i].voiceURI;
336                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'com.apple.speech.synthesis.voice.yuri') {
337                            speechUtterance.voice = voices[i];
338                            speechUtterance.voiceURI = voices[i].voiceURI;
339                        }
340                    }
341
342                    bvi_tts_synth.speak(speechUtterance);
343                });
344            }
345        }
346
347        function bvi_getWordAt(str, pos) {
348            str = String(str);
349            pos = Number(pos) >>> 0;
350            var left = str.slice(0, pos + 1).search(/\S+$/),
351                right = str.slice(pos).search(/\s/);
352            if (right < 0) {
353                return str.slice(left);
354            }
355            return str.slice(left, right + pos);
356        }
357
358        function bvi_tts_player() {
359            var bvi_tts_text_id;
360            var bvi_tts_voice_target = $(".bvi-tts");
361
362            $('.bvi-tts-link').remove();
363            $('.bvi-tts-text').contents().unwrap();
364
365            if (Cookies.get('bvi-tts') === 'true' && bvi_tts_support_browser) {
366                bvi_tts_voice_target.each(function (index) {
367                    bvi_tts_text_id = 'bvi-tts-text-id-' + index;
368                    $(this).wrapInner('<div class="bvi-tts-text ' + bvi_tts_text_id + '"></div>');
369                    $(this).prepend('<div class="bvi-tts-link bvi-tts-link-id-' + index + '" data-bvi-tts-class-text=".' + bvi_tts_text_id + '" data-bvi-tts-link-id=".bvi-tts-link-id-' + index + '">\n' +
370                        '    <a href="#" class="bvi-tts-play bvi-link">Воспроизвести</a>\n' +
371                        '    <a href="#" class="bvi-tts-pause bvi-link disabled">Пауза</i></a>\n' +
372                        '    <a href="#" class="bvi-tts-resume bvi-link disabled">Продолжить</i></a>\n' +
373                        '    <a href="#" class="bvi-tts-stop bvi-link disabled">Стоп</i></a>\n' +
374                        '</div>');
375                });
376
377                $('.bvi-tts-link').show();
378
379                $('.bvi-tts-play').click(function () {
380                    bvi_tts_synth.cancel();
381                    var bvi_tts_class = $(this).parent().data('bvi-tts-class-text');
382                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
383                    var bvi_tts_class_text = $(bvi_tts_class).text();
384
385                    bvi_tts_speak(bvi_tts_class_text);
386
387                    $('.bvi-tts-play').removeClass('disabled');
388                    $('.bvi-tts-pause').addClass('disabled');
389                    $('.bvi-tts-resume').addClass('disabled');
390                    $('.bvi-tts-stop').addClass('disabled');
391                    $(bvi_tts_links_id + ' .bvi-tts-play').addClass('disabled');
392                    $(bvi_tts_links_id + ' .bvi-tts-pause').removeClass('disabled');
393                    $(bvi_tts_links_id + ' .bvi-tts-stop').removeClass('disabled');
394                    return false;
395                });
396
397                $('.bvi-tts-resume').click(function () {
398                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
399                    $(bvi_tts_links_id + ' .bvi-tts-pause').removeClass('disabled');
400                    $(this).addClass('disabled');
401                    bvi_tts_synth.resume();
402                    return false;
403                });
404
405                $('.bvi-tts-pause').click(function () {
406                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
407                    $(bvi_tts_links_id + ' .bvi-tts-resume').removeClass('disabled');
408                    $(this).addClass('disabled');
409                    bvi_tts_synth.pause();
410                    return false;
411                });
412
413                $('.bvi-tts-stop').click(function () {
414                    bvi_tts_synth.cancel();
415                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
416                    $(this).addClass('disabled');
417                    $(bvi_tts_links_id + ' .bvi-tts-play').removeClass('disabled');
418                    $(bvi_tts_links_id + ' .bvi-tts-pause').addClass('disabled');
419                    $(bvi_tts_links_id + ' .bvi-tts-resume').addClass('disabled');
420                    return false;
421                });
422            } else {
423                $('.bvi-tts-link').remove();
424                $('.bvi-tts-text').contents().unwrap();
425            }
426        }
427
428        function bvi_click() {
429            $("#bvi-panel-close, .bvi-panel-close, #bvi-toggler-close").click(function () {
430
431                bvi_tts_speak('Обычная версия сайта');
432
433                if (Cookies.get("bvi-reload") === 'true') {
434                    document.location.reload(true);
435                }
436
437                $(".bvi-body *").each(function () {
438                    var $this = $(this);
439                    var background_image = $this.css("background-image");
440                    var pattern = background_image.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '');
441                    if (pattern != 'none') {
442                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
443                            var data_bvi_img_original = $this.attr('data-bvi-background-image-original') || pattern;
444                            $this.css("background-image", "url(" + data_bvi_img_original + ")");
445                            $this.removeClass('bvi-background-image');
446                        }
447                    }
448                });
449
450                $("img").each(function () {
451                    $(this).show();
452                    $('div.bvi-img').remove();
453                    $(this).removeClass("bvi-background-image");
454                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
455                        var data_bvi_img_original = $(this).attr('data-bvi-img-original') || this.src;
456                        this.src = data_bvi_img_original;
457                    }
458                });
459
460                Cookies.remove("bvi-panel-active", {path: "/"});
461                Cookies.remove("bvi-font-size", {path: "/"});
462                Cookies.remove("bvi-theme", {path: "/"});
463                Cookies.remove("bvi-images", {path: "/"});
464                Cookies.remove("bvi-line-height", {path: "/"});
465                Cookies.remove("bvi-letter-spacing", {path: "/"});
466                Cookies.remove("bvi-tts", {path: "/"});
467                Cookies.remove("bvi-font-family", {path: "/"});
468                Cookies.remove("bvi-panel-hide", {path: "/"});
469                Cookies.remove("bvi-flash-iframe", {path: "/"});
470                Cookies.remove("bvi-reload", {path: "/"});
471
472                active();
473                return false;
474            });
475
476            $('#bvi-panel-hide, #bvi-toggler-menu-hide').click(function () {
477                $('.bvi-panel').toggle(0);
478                $('.bvi-link-top').toggle(0);
479                set('data-bvi-panel-hide', 'bvi-panel-hide', true);
480                bvi_tts_speak('Панель скрыта');
481                return false;
482            });
483
484            $('#bvi-panel-show').click(function () {
485                $('.bvi-panel').toggle(0);
486                $('.bvi-link-top').toggle(0);
487                set('data-bvi-panel-hide', 'bvi-panel-hide', false);
488                bvi_tts_speak('Панель открыта');
489                return false;
490            });
491
492            $('#bvi-setting').click(function () {
493                $('.bvi-setting-menu').toggle(0);
494                $(this).toggleClass("active");
495                bvi_tts_speak('Дополнительные настройки');
496                return false;
497            });
498
499            $('#bvi-toggler').click(function () {
500                $('.bvi-panel-container').toggle(0);
501                $(this).toggleClass("active");
502                bvi_tts_speak('Меню');
503                return false;
504            });
505
506            $('#bvi-setting-close').click(function () {
507                $('.bvi-setting-menu').toggle(0);
508                $('#bvi-setting').toggleClass("active");
509                bvi_tts_speak('Дополнительные настройки закрыты');
510                return false;
511            });
512
513            $('#bvi-font-size-less').click(function () {
514                var size = parseFloat(Cookies.get("bvi-font-size")) - 1;
515                $(this).addClass('active').siblings().removeClass('active');
516                $('#bvi-font-size').text(size);
517                if (size != 0) {
518                    set('data-bvi-size', 'bvi-font-size', size);
519                    bvi_tts_speak('Размер шрифта уменьшен');
520                }
521                return false;
522            });
523
524            $('#bvi-font-size-more').click(function () {
525                var size = parseFloat(Cookies.get("bvi-font-size")) + 1;
526                $(this).addClass('active').siblings().removeClass('active');
527                $('#bvi-font-size').text(size);
528                if (size != 40) {
529                    set('data-bvi-size', 'bvi-font-size', size);
530                    bvi_tts_speak('Размер шрифта увеличен');
531                }
532                return false;
533            });
534
535            $("#bvi-theme-white").click(function () {
536                $(this).addClass('active').siblings().removeClass('active');
537                set('data-bvi-theme', 'bvi-theme', 'white');
538                bvi_tts_speak('Цвет сайта черным по белому');
539                return false;
540            });
541
542            $("#bvi-theme-black").click(function () {
543                $(this).addClass('active').siblings().removeClass('active');
544                set('data-bvi-theme', 'bvi-theme', 'black');
545                bvi_tts_speak('Цвет сайта белым по черному');
546                return false;
547            });
548
549            $("#bvi-theme-blue").click(function () {
550                $(this).addClass('active').siblings().removeClass('active');
551                set('data-bvi-theme', 'bvi-theme', 'blue');
552                bvi_tts_speak('Цвет сайта тёмно-синим по голубому');
553                return false;
554            });
555
556            $("#bvi-theme-brown").click(function () {
557                $(this).addClass('active').siblings().removeClass('active');
558                set('data-bvi-theme', 'bvi-theme', 'brown');
559                bvi_tts_speak('Цвет сайта коричневым по бежевому');
560                return false;
561            });
562
563            $("#bvi-theme-green").click(function () {
564                $(this).addClass('active').siblings().removeClass('active');
565                set('data-bvi-theme', 'bvi-theme', 'green');
566                bvi_tts_speak('Цвет сайта зеленым по тёмно-коричневому');
567                return false;
568            });
569
570            $('#bvi-images-true').click(function () {
571                $(this).addClass('active').siblings().removeClass('active');
572                set('data-bvi-images', 'bvi-images', true);
573                bvi_tts_speak('Изображения включены');
574                return false;
575            });
576
577            $('#bvi-images-false').click(function () {
578                $(this).addClass('active').siblings().removeClass('active');
579                set('data-bvi-images', 'bvi-images', false);
580                bvi_tts_speak('Изображения выключены');
581                return false;
582            });
583
584            $('#bvi-images-grayscale').click(function () {
585                $(this).addClass('active').siblings().removeClass('active');
586                set('data-bvi-images', 'bvi-images', 'grayscale');
587                bvi_tts_speak('Изображения чёрно-белые');
588                return false;
589            });
590
591            $("#bvi-line-height-normal").click(function () {
592                $(this).addClass('active').siblings().removeClass('active');
593                set('data-bvi-line-height', 'bvi-line-height', 'normal');
594                bvi_tts_speak('Междустрочный интервал cтандартный');
595                return false;
596            });
597
598            $("#bvi-line-height-average").click(function () {
599                $(this).addClass('active').siblings().removeClass('active');
600                set('data-bvi-line-height', 'bvi-line-height', 'average');
601                bvi_tts_speak('Междустрочный интервал средний');
602                return false;
603            });
604
605            $("#bvi-line-height-big").click(function () {
606                $(this).addClass('active').siblings().removeClass('active');
607                set('data-bvi-line-height', 'bvi-line-height', 'big');
608                bvi_tts_speak('Междустрочный интервал большой');
609                return false;
610            });
611
612            $("#bvi-letter-spacing-normal").click(function () {
613                $(this).addClass('active').siblings().removeClass('active');
614                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'normal');
615                bvi_tts_speak('Межбуквенный интервал одинарный');
616                return false;
617            });
618
619            $("#bvi-letter-spacing-average").click(function () {
620                $(this).addClass('active').siblings().removeClass('active');
621                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'average');
622                bvi_tts_speak('Межбуквенный интервал полуторный');
623                return false;
624            });
625
626            $("#bvi-letter-spacing-big").click(function () {
627                $(this).addClass('active').siblings().removeClass('active');
628                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'big');
629                bvi_tts_speak('Межбуквенный интервал двойной');
630                return false;
631            });
632
633            $("#bvi-font-family-arial").click(function () {
634                $(this).addClass('active').siblings().removeClass('active');
635                set('data-bvi-font-family', 'bvi-font-family', 'arial');
636                bvi_tts_speak('Шрифт без засечек');
637                return false;
638            });
639
640            $("#bvi-font-family-times").click(function () {
641                $(this).addClass('active').siblings().removeClass('active');
642                set('data-bvi-font-family', 'bvi-font-family', 'times');
643                bvi_tts_speak('Шрифт с засечками');
644                return false;
645            });
646
647            $("#bvi-flash-iframe-true").click(function () {
648                $(this).addClass('active').siblings().removeClass('active');
649                set('data-bvi-flash-iframe', 'bvi-flash-iframe', true);
650                bvi_tts_speak('Включить встроенные элементы');
651                return false;
652            });
653
654            $("#bvi-flash-iframe-false").click(function () {
655                $(this).addClass('active').siblings().removeClass('active');
656                set('data-bvi-flash-iframe', 'bvi-flash-iframe', false);
657                bvi_tts_speak('Выключить встроенные элементы');
658                return false;
659            });
660
661            $("#bvi-tts-true").click(function () {
662                $(this).addClass('active').siblings().removeClass('active');
663                set('data-bvi-tts', 'bvi-tts', true);
664                bvi_tts_speak('Синтез речи включён');
665                bvi_tts_player();
666                return false;
667            });
668
669            $("#bvi-tts-false").click(function () {
670                $(this).addClass('active').siblings().removeClass('active');
671                set('data-bvi-tts', 'bvi-tts', false);
672                bvi_tts_speak('Синтез речи выключён');
673                bvi_tts_player();
674                return false;
675            });
676
677            $("#bvi-settings-default").click(function () {
678                $('#bvi-theme-' + Cookies.get("bvi-theme")).removeClass('active');
679                $('#bvi-images-' + Cookies.get("bvi-images")).removeClass('active');
680                $('#bvi-line-height-' + Cookies.get("bvi-line-height")).removeClass('active');
681                $('#bvi-letter-spacing-' + Cookies.get("bvi-letter-spacing")).removeClass('active');
682                $('#bvi-font-family-' + Cookies.get("bvi-font-family")).removeClass('active');
683                $('#bvi-flash-iframe-' + Cookies.get("bvi-flash-iframe")).removeClass('active');
684                $('#bvi-tts-' + Cookies.get("bvi-tts")).removeClass('active');
685
686                $('#bvi-theme-' + default_setting.bvi_theme).addClass('active');
687                $('#bvi-images-' + default_setting.bvi_images).addClass('active');
688                $('#bvi-line-height-' + default_setting.bvi_line_height).addClass('active');
689                $('#bvi-letter-spacing-' + default_setting.bvi_letter_spacing).addClass('active');
690                $('#bvi-font-family-' + default_setting.bvi_font).addClass('active');
691                $('#bvi-flash-iframe-' + default_setting.bvi_flash_iframe).addClass('active');
692                $('#bvi-tts-' + default_setting.bvi_tts).addClass('active');
693
694                $('#bvi-font-size').text(default_setting.bvi_font_size);
695
696                set('data-bvi-size', 'bvi-font-size', default_setting.bvi_font_size);
697                set('data-bvi-theme', 'bvi-theme', default_setting.bvi_theme);
698                set('data-bvi-images', 'bvi-images', default_setting.bvi_images);
699                set('data-bvi-line-height', 'bvi-line-height', default_setting.bvi_line_height);
700                set('data-bvi-letter-spacing', 'bvi-letter-spacing', default_setting.bvi_letter_spacing);
701                set('data-bvi-font-family', 'bvi-font-family', default_setting.bvi_font);
702                set('data-bvi-flash-iframe', 'bvi-flash-iframe', default_setting.bvi_flash_iframe);
703                set('data-bvi-tts', 'bvi-tts', default_setting.bvi_tts);
704                bvi_tts_speak('Настройки по умолчанию');
705                bvi_tts_player();
706                return false;
707            });
708        }
709
710        function set(data, set_cookies, set_cookies_data) {
711            Cookies.set(set_cookies, set_cookies_data, {path: "/", expires: 1});
712            $(".bvi-body").attr(data, Cookies.get(set_cookies));
713            get_image();
714        }
715
716        function set_active_link() {
717            $('#bvi-theme-' + Cookies.get("bvi-theme")).addClass('active');
718            $('#bvi-images-' + Cookies.get("bvi-images")).addClass('active');
719            $('#bvi-line-height-' + Cookies.get("bvi-line-height")).addClass('active');
720            $('#bvi-letter-spacing-' + Cookies.get("bvi-letter-spacing")).addClass('active');
721            $('#bvi-font-family-' + Cookies.get("bvi-font-family")).addClass('active');
722            $('#bvi-flash-iframe-' + Cookies.get("bvi-flash-iframe")).addClass('active');
723            $('#bvi-tts-' + Cookies.get("bvi-tts")).addClass('active');
724        }
725
726        function get() {
727            if (typeof Cookies.get("bvi-font-size") === 'undefined'
728                || typeof Cookies.get("bvi-theme") === 'undefined'
729                || typeof Cookies.get("bvi-images") === 'undefined'
730                || typeof Cookies.get("bvi-line-height") === 'undefined'
731                || typeof Cookies.get("bvi-letter-spacing") === 'undefined'
732                || typeof Cookies.get("bvi-tts") === 'undefined'
733                || typeof Cookies.get("bvi-font-family") === 'undefined'
734                || typeof Cookies.get("bvi-panel-hide") === 'undefined'
735                || typeof Cookies.get("bvi-flash-iframe") === 'undefined'
736                || typeof Cookies.get("bvi-reload") === 'undefined'
737                || typeof Cookies.get("bvi-fixed") === 'undefined'
738            ) {
739                Cookies.set("bvi-font-size", default_setting.bvi_font_size, {path: "/", expires: 1});
740                Cookies.set("bvi-theme", default_setting.bvi_theme, {path: "/", expires: 1});
741                Cookies.set("bvi-images", default_setting.bvi_images, {path: "/", expires: 1});
742                Cookies.set("bvi-line-height", default_setting.bvi_line_height, {path: "/", expires: 1});
743                Cookies.set("bvi-letter-spacing", default_setting.bvi_letter_spacing, {path: "/", expires: 1});
744                Cookies.set("bvi-tts", default_setting.bvi_tts, {path: "/", expires: 1});
745                Cookies.set("bvi-font-family", default_setting.bvi_font, {path: "/", expires: 1});
746                Cookies.set("bvi-panel-hide", default_setting.bvi_hide, {path: "/", expires: 1});
747                Cookies.set("bvi-flash-iframe", default_setting.bvi_flash_iframe, {path: "/", expires: 1});
748                Cookies.set("bvi-reload", default_setting.bvi_reload, {path: "/", expires: 1});
749                Cookies.set("bvi-fixed", default_setting.bvi_fixed, {path: "/", expires: 1});
750            }
751
752            $('.bvi-body').attr({
753                'data-bvi-panel-hide': Cookies.get("bvi-panel-hide"),
754                'data-bvi-size': Cookies.get("bvi-font-size"),
755                'data-bvi-theme': Cookies.get("bvi-theme"),
756                'data-bvi-images': Cookies.get("bvi-images"),
757                'data-bvi-line-height': Cookies.get("bvi-line-height"),
758                'data-bvi-letter-spacing': Cookies.get("bvi-letter-spacing"),
759                'data-bvi-font-family': Cookies.get("bvi-font-family"),
760                'data-bvi-flash-iframe': Cookies.get("bvi-flash-iframe"),
761                'data-bvi-reload': Cookies.get("bvi-reload"),
762                'data-bvi-tts': Cookies.get("bvi-tts"),
763                'data-bvi-fixed': Cookies.get("bvi-fixed")
764            });
765
766            $('#bvi-font-size').text(Cookies.get("bvi-font-size"));
767
768            var bvi_panel = Cookies.get("bvi-panel-hide");
769
770            if (bvi_panel === 'false' || typeof bvi_panel === 'undefined') {
771                $('.bvi-panel').show();
772                $('.bvi-link-top').hide();
773            } else {
774                $('.bvi-panel').hide();
775                $('.bvi-link-top').show("slow");
776            }
777        }
778
779        function get_image() {
780            var bvi_images = Cookies.get("bvi-images");
781
782            $(".bvi-body *").each(function () {
783                var $this = $(this);
784                var background_image = $this.css("background-image");
785                var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
786
787                if (pattern != 'none') {
788                    $(this).addClass('bvi-background-image');
789                }
790            });
791
792            $("img").each(function () {
793                $(this).addClass('bvi-img');
794            });
795
796            $(".img").each(function () {
797                $(this).addClass('bvi-img-wrapper');
798            });
799
800            if (bvi_images === 'true') {
801                $("img").each(function () {
802                    $(this).show();
803                    $('div.bvi-img').remove();
804                    //$(this).removeClass("bvi-background-image");
805                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
806                        var data_bvi_img_original = $(this).attr('data-bvi-img-original') || this.src;
807                        this.src = data_bvi_img_original;
808                    }
809                });
810
811                $(".bvi-body *").each(function () {
812                    var $this = $(this);
813                    var background_image = $this.css("background-image");
814                    var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
815                    if (pattern != 'none') {
816                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
817                            var r = '^(https?|http)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]';
818                            if(pattern.match(r)) {
819                                var data_bvi_img_original = $this.attr('data-bvi-background-image-original') || pattern;
820                                $this.css("background-image", "url(" + data_bvi_img_original + ")");
821                            }
822                        }
823                    }
824                });
825            }
826
827            if (bvi_images === 'false') {
828                $('div.bvi-img').remove();
829
830                $("img").each(function () {
831                    $(this).hide();
832                    //$(this).removeClass("bvi-background-image");
833                    var alt = this.alt || 'Изображение';
834                    var imgClass = $(this).attr("class") || 'bvi-class-none';
835                    var imgId = $(this).attr("id") || 'bvi-id-none';
836                    $(this).after($('<div class="' + imgClass + '" id="' + imgId + '" style="width: ' + $(this).get(0).naturalWidth + 'px; height: 100%;">').html(alt));
837                });
838            }
839
840            if (bvi_images === 'grayscale') {
841                $("img").each(function () {
842                    $(this).show();
843                    $('div.bvi-img').remove();
844                    //$(this).removeClass("bvi-background-image");
845                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
846                        $(this).attr('data-bvi-img-original', this.src
846);
847                        if (location.hostname === extractHostname(this.src)) {
848                            var src = grayscale(this.src);
849                            this.src = src;
850                        } else {
851                            return false;
852                        }
853                    }
854                });
855
856                $(".bvi-body *").each(function () {
857                    var $this = $(this);
858                    var background_image = $this.css("background-image");
859                    var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
860                    if (pattern != 'none') {
861                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
862                            var r = '^(https?|http)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]';
863                            if(pattern.match(r)) {
864                                var src_pattern = grayscale(pattern);
865                                $this.attr('data-bvi-background-image-original', pattern);
866                                $this.css("background-image", "url(" + src_pattern + ") !important");
867                            }
868                        }
869                    }
870                });
871            }
872        }
873
874        function extractHostname(url) {
875            var hostname;
876            if (url.indexOf("//") > -1) {
877                hostname = url.split('/')[2];
878            } else {
879                hostname = url.split('/')[0];
880            }
881            hostname = hostname.split(':')[0];
882            hostname = hostname.split('?')[0];
883
884            return hostname;
885        }
886
887        function grayscale(src) {
888            var canvas = document.createElement('canvas');
889            var ctx = canvas.getContext('2d');
890            var imgObj = new Image();
891            //imgObj.crossOrigin = "Anonymous";
892            imgObj.src = src;
893            canvas.width = imgObj.naturalWidth || imgObj.offsetWidth || imgObj.width;
894            canvas.height = imgObj.naturalHeight || imgObj.offsetHeight || imgObj.height;
895            ctx.drawImage(imgObj, 0, 0);
896            var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
897
898            for (var y = 0; y < imgPixels.height; y++) {
899                for (var x = 0; x < imgPixels.width; x++) {
900                    var i = (y * 4) * imgPixels.width + x * 4;
901                    var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
902                    imgPixels.data[i] = avg;
903                    imgPixels.data[i + 1] = avg;
904                    imgPixels.data[i + 2] = avg;
905                }
906            }
907
908            ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
909
910            return canvas.toDataURL();
911        }
912
913        function active() {
914            if (versionIE == 8 || versionIE == 7 || versionIE == 6 || versionIE == 5) {
915                console.log('Bvi console: Браузер не поддерживается.');
916                alert(confirm('Браузер не поддерживается.'));
917            } else {
918                if (Cookies.get('bvi-panel-active') === 'true') {
919                    $(selector).addClass('bvi-hide').after($('<a href="#" class="bvi-panel-close" title="Обычная версия сайта">Обычная версия сайта</a>'));
920                    panel();
921                    bvi_tts_player();
922                    bvi_click();
923                    set_active_link();
924                    if (bvi_tts_support_browser === false) {
925                        Cookies.set("bvi-tts", false, {path: "/", expires: 1});
926                        $('#bvi-tts-true').remove();
927                        $('#bvi-tts-false').remove();
928                    }
929                } else {
930                    bvi_tts_player();
931                    $(selector).removeClass('bvi-hide');
932                    $('.bvi-panel-close').remove();
933                    $(".bvi-panel").remove();
934                    $(".bvi-link-top").remove();
935                    $('body > .bvi-body').contents().unwrap();
936                    $('.bvi-tts-link').remove();
937                    $('.bvi-tts-text').contents().unwrap();
938                }
939            }
940        }
941
942        function panel() {
943            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">');
944            $('body').wrapInner('<div class="bvi-body"></div>');
945            $('body').prepend('<div class="bvi-panel">\n' +
946                '    <div class="bvi-container-fluid">\n' +
947                '        <div class="bvi-row bvi-no-gutters">\n' +
948                '            <div class="bvi-col-12">\n' +
949                '                <div class="bvi-panel-toggler">\n' +
950                '                    <a href="#" id="bvi-toggler" class="bvi-link" title="Меню">Меню</a>\n' +
951                '                    <a href="#" id="bvi-toggler-close" class="bvi-link" title="Обычная версия сайта">Обычная версия сайта</a>\n' +
952                '                    <a href="#" id="bvi-toggler-menu-hide" class="bvi-link" title="Скрыть панель"><i class="bvi-images bvi-images-minus-square-o "></i></a>\n' +
953                '                </div>\n' +
954                '            </div>\n' +
955                '        </div>\n' +
956                '    </div>\n' +
957                '    <div class="bvi-panel-container bvi-container">\n' +
958                '        <div class="bvi-row bvi-no-gutters">\n' +
959                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
960                '                <div class="bvi-title">Размер шрифта <span id="bvi-font-size"></span> px</div>\n' +
961                '                <a href="#" id="bvi-font-size-less" class="bvi-link" title="Уменьшить размер шрифта">A -</a>\n' +
962                '                <a href="#" id="bvi-font-size-more" class="bvi-link" title="Увеличить размер шрифта">A +</a>\n' +
963                '            </div>\n' +
964                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
965                '                <div class="bvi-title">Цвета сайта</div>\n' +
966                '                <a href="#" id="bvi-theme-white" class="bvi-link bvi-link-white " title="Черным по белому">Ц</a>\n' +
967                '                <a href="#" id="bvi-theme-black" class="bvi-link bvi-link-black" title="Белым по черному">Ц</a>\n' +
968                //  '                <a href="#" id="bvi-theme-blue" class="bvi-link bvi-link-blue" title="Темно-синим по голубому">Ц</a>\n' +
969                //  '                <a href="#" id="bvi-theme-brown" class="bvi-link bvi-link-brown" title="Коричневым по бежевому">Ц</a>\n' +
970                //  '                <a href="#" id="bvi-theme-green" class="bvi-link bvi-link-green" title="Зеленым по темно-коричневому">Ц</a>\n' +
971                '            </div>\n' +
972                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-2 bvi-text-center">\n' +
973                '                <div class="bvi-title">Изображения</div>\n' +
974                '                <a href="#" id="bvi-images-true" class="bvi-link" title="Изображения включены"><i class="bvi-images bvi-images-on"></i></a>\n' +
975                '                <a href="#" id="bvi-images-false" class="bvi-link" title="Изображения выключены"><i class="bvi-images bvi-images-off"></i></a>\n' +
976                '                <a href="#" id="bvi-images-grayscale" class="bvi-link" title="Изображения черно-белые"><i class="bvi-images bvi-images-adjust"></i></a>\n' +
977                '            </div>\n' +
978                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-4 bvi-text-center">\n' +
979                '                <div class="bvi-title">Дополнительно</div>\n' +
980                '                <a href="#" id="bvi-tts-true" class="bvi-link" title=""><i class="bvi-images bvi-images-volume-on"></i></a>\n' +
981                '                <a href="#" id="bvi-tts-false" class="bvi-link"><i class="bvi-images bvi-images-volume-off"></i></a>\n' +
982                '                <a href="#" id="bvi-setting" class="bvi-link" title="Настройки">Настройки</a>\n' +
983                '                <a href="#" id="bvi-panel-close" class="bvi-link" title="Обычная версия сайта"><i class="bvi-images bvi-images-eye-slash"></i></a>\n' +
984                '                <a href="#" id="bvi-panel-hide" class="bvi-link" title="Скрыть панель"><i class="bvi-images bvi-images-minus-square-o"></i></a>\n' +
985                '            </div>\n' +
986                '        </div>\n' +
987                '        <div class="bvi-setting-menu bvi-hide-lg">\n' +
988                '            <div class="bvi-row bvi-no-gutters">\n' +
989                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-4 bvi-col-xl-4 bvi-text-center">\n' +
990                '                    <div class="bvi-title">Междустрочный интервал</div>\n' +
991                '                    <a href="#" id="bvi-line-height-normal" class="bvi-link" title="Междустрочный интервал стандартный">Стандартный</a>\n' +
992                '                    <a href="#" id="bvi-line-height-average" class="bvi-link" title="Междустрочный интервал средний">Средний</a>\n' +
993                '                    <a href="#" id="bvi-line-height-big" class="bvi-link" title="Междустрочный интервал большой">Большой</a>\n' +
994                '                </div>\n' +
995                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-5 bvi-col-xl-5 bvi-text-center">\n' +
996                '                    <div class="bvi-title">Межбуквенный интервал</div>\n' +
997                '                    <a href="#" id="bvi-letter-spacing-normal" class="bvi-link" title="Межбуквенный интервал одинарный">Одинарный</a>\n' +
998                '                    <a href="#" id="bvi-letter-spacing-average" class="bvi-link"\n' +
999                '                       title="Межбуквенный интервал полуторный">Полуторный</a>\n' +
1000                '                    <a href="#" id="bvi-letter-spacing-big" class="bvi-link" title="Межбуквенный интервал двойной">Двойной</a>\n' +
1001                '                </div>\n' +
1002                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
1003                '                    <div class="bvi-title">Шрифт</div>\n' +
1004                '                    <a href="#" id="bvi-font-family-arial" class="bvi-link" title="Шрифт без засечек">Без засечек</a>\n' +
1005                '                    <a href="#" id="bvi-font-family-times" class="bvi-link" title="Шрифт с засечками">С засечками</a>\n' +
1006                '                </div>\n' +
1007                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-6 bvi-col-xl-6 bvi-text-center">\n' +
1008                '                    <div class="bvi-title">Встроенные элементы (Видео, карты и тд.)</div>\n' +
1009                '                    <a href="#" id="bvi-flash-iframe-true" class="bvi-link" title="Включить">Включить</a>\n' +
1010                '                    <a href="#" id="bvi-flash-iframe-false" class="bvi-link" title="Выключить">Выключить</a>\n' +
1011                '                </div>\n' +
1012                '                <div class="bvi-col-sm-12 bvi-col-md-12 bvi-col-lg-6 bvi-col-xl-6 bvi-text-right">\n' +
1013                '                    <div class="bvi-title">&nbsp;</div>\n' +
1014                '                    <a href="#" id="bvi-settings-default" class="bvi-link" title="Вернуть стандартные настройки">
1014Настройки\n' +
1015                '                        по умолчанию</a>\n' +
1016                '                    <a href="#" id="bvi-setting-close" class="bvi-link" title="Закрыть панель">Закрыть панель</a>\n' +
1017                '                </div>\n' +
1018                '            </div>\n' +
1019                '            <div class="bvi-row bvi-mt">\n' +
1020                '                <div class="bvi-col-12 bvi-text-center">\n' +
1021                '                    <a href="http://bvi.isvek.ru/" class="bvi-link-copy" target="_blank" title="bvi.isvek.ru v2.0">bvi.isvek.ru</a>\n' +
1022                '                </div>\n' +
1023                '            </div>\n' +
1024                '        </div>\n' +
1025                '    </div>\n' +
1026                '</div>\n' +
1027                '<a href="#" id="bvi-panel-show" class="bvi-link bvi-link-top"><i class="bvi-images bvi-images-eye"></i></a>');
1028
1029            if (width >= lg) {
1030                $('.bvi-panel-container').show();
1031            }
1032
1033            if (width <= lg) {
1034                $('.bvi-panel-container').removeClass('bvi-container').addClass('bvi-container-fluid');
1035            } else {
1036                $('.bvi-panel-container').removeClass('bvi-container-fluid').addClass('bvi-container');
1037            }
1038
1039            var scroll = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
1040
1041            if (scroll > 99) {
1042                if (Cookies.get("bvi-fixed") == 'true') {
1043                    $(".bvi-panel").addClass("bvi-fixed-top");
1044                }
1045            }
1046
1047            $(window).scroll(function () {
1048                if ($(this).scrollTop() >= 99) {
1049                    if (Cookies.get("bvi-fixed") == 'true') {
1050                        $(".bvi-panel").addClass('bvi-fixed-top');
1051                    }
1052                } else {
1053                    $(".bvi-panel").removeClass("bvi-fixed-top");
1054                }
1055            });
1056
1057            get();
1058            get_image();
1059        }
1060
1061        if (default_setting.bvi_theme == 'white' ||
1062            default_setting.bvi_theme == 'black' ||
1063            default_setting.bvi_theme == 'blue' ||
1064            default_setting.bvi_theme == 'brown' ||
1065            default_setting.bvi_theme == 'green') {
1066            check_bvi_theme = true;
1067        } else {
1068            check_bvi_theme = false;
1069            checkError = ['bvi_theme'];
1070        }
1071
1072        if (default_setting.bvi_font == 'times' || default_setting.bvi_font == 'arial') {
1073            check_bvi_font = true;
1074        } else {
1075            check_bvi_font = false;
1076            checkError = ['bvi_font'];
1077        }
1078
1079        if (default_setting.bvi_letter_spacing == 'normal' || default_setting.bvi_letter_spacing == 'average' || default_setting.bvi_letter_spacing == 'big') {
1080            check_bvi_letter_spacing = true;
1081        } else {
1082            check_bvi_letter_spacing = false;
1083            checkError = ['bvi_letter_spacing'];
1084        }
1085
1086        if (default_setting.bvi_line_height == 'normal' || default_setting.bvi_line_height == 'average' || default_setting.bvi_line_height == 'big') {
1087            check_bvi_line_height = true;
1088        } else {
1089            check_bvi_line_height = false;
1090            checkError = ['bvi_line_height'];
1091        }
1092
1093        if (default_setting.bvi_font_size == 0) {
1094            check_bvi_font_size = false;
1095            checkError = ['bvi_font_size'];
1096        } else if (default_setting.bvi_font_size <= 40) {
1097            check_bvi_font_size = true;
1098        } else {
1099            check_bvi_font_size = false;
1100            checkError = ['bvi_font_size'];
1101        }
1102
1103        if (default_setting.bvi_images === false || default_setting.bvi_images === true || default_setting.bvi_images === 'grayscale') {
1104            check_bvi_images = true;
1105        } else {
1106            check_bvi_images = false;
1107            checkError = ['bvi_images'];
1108        }
1109
1110        if (default_setting.bvi_fixed === false || default_setting.bvi_fixed === true) {
1111            check_bvi_fixed = true;
1112        } else {
1113            check_bvi_fixed = false;
1114            checkError = ['bvi_fixed'];
1115        }
1116
1117        if (default_setting.bvi_tts === false || default_setting.bvi_tts === true) {
1118            check_bvi_tts = true;
1119        } else {
1120            check_bvi_tts = false;
1121            checkError = ['bvi_tts'];
1122        }
1123
1124        if (default_setting.bvi_flash_iframe === false || default_setting.bvi_flash_iframe === true) {
1125            check_bvi_flash_iframe = true;
1126        } else {
1127            check_bvi_flash_iframe = false;
1128            checkError = ['bvi_flash_iframe'];
1129        }
1130
1131        if (default_setting.bvi_hide === false || default_setting.bvi_hide === true) {
1132            check_bvi_hide = true;
1133        } else {
1134            check_bvi_hide = false;
1135            checkError = ['bvi_hide'];
1136        }
1137
1138        if (check_bvi_theme === true &&
1139            check_bvi_font === true &&
1140            check_bvi_letter_spacing === true &&
1141            check_bvi_line_height === true &&
1142            check_bvi_font_size === true &&
1143            check_bvi_images === true &&
1144            check_bvi_fixed === true &&
1145            check_bvi_flash_iframe === true &&
1146            check_bvi_tts === true &&
1147            check_bvi_hide === true) {
1148            if ($(selector).length) {
1149                $(selector).click(function () {
1150                    Cookies.set('bvi-panel-active', true, {path: "/", expires: 1});
1151                    active();
1152                    bvi_tts_speak('Версия сайта для слабовидящих');
1153                    return false;
1154                });
1155            } else {
1156                console.log('Bvi console: Неправильный параметр - [bvi_target]');
1157            }
1158            active();
1159        } else {
1160            console.log('Bvi console: Неправильный параметр - [' + checkError + ']');
1161        }
1162    };
1163})(jQuery);
1164;
1165
1166
1167
1168
1169
1170$(function(){
1171// ===========  Toggle language ===========================
1172    $('.language-select').click(function(){
1173        $(this).toggleClass('open');
1174    })
1175
1176    $(document).click(function (e) {
1177        let s = $('.language-select');
1178        if (!s.is(e.target)) {
1179            s.removeClass('open');
1180        }
1181    });
1182
1183    $('.language-select__item').click(function(){
1184        var setLang = $('.language-select').data('location'),
1185            dataLangSelect = $(this).data('lang')
1186        $('.language-select').data('location', dataLangSelect);
1187        $('.language-select__item').removeClass('_active');
1188        $(this).toggleClass('_active');
1189    })
1190
1191});
1192
1193
1194// =============Function ibg  ====================================================
1195function ibg() {
1196    let ibg = document.querySelectorAll("._ibg");
1197    for (var i = 0; i < ibg.length; i++) {
1198        if (ibg[i].querySelector('img') && ibg[i].querySelector('img').getAttribute('src') != null) {
1199            ibg[i].style.backgroundImage = 'url(' + ibg[i].querySelector('img').getAttribute('src') + ')';
1200        }
1201    }
1202}
1203ibg();
1204
1205// ====================   scroll accordion to top   ==========================
1206$('#accordionMns').on('shown.bs.collapse', function (event) {
1207   $('html, body').animate(
1208      {
1209         //scrollTop: $(event.target).parent().offset().top,
1210      },
1211      400
1212   );
1213});
1214$('.item-block__title, .accordion-btn').click(function () {
1215   $('html, body').animate(
1216      {
1217         //scrollTop: $(this).offset().top,
1218      },
1219      300
1220   );
1221});
1222
1223// ==================  Select Tab   ===================================
1224$('.select-tab-content').hide();
1225$('#select-tab-1').show();
1226
1227$('#select-tab-box').change(function () {
1228   var dropdown = $('#select-tab-box').val();
1229   $('.select-tab-content').hide();
1230   $('#' + 'select-tab-' + dropdown).show();
1231});
1232
1233
1234$('#backBTN').on('click', function (e) {
1235    e.preventDefault();
1236    javascript:history.back();
1237})
1238
1239window.onload = () => {
1240    if(document.querySelectorAll('[data-toggle="collapse"]') && document.querySelector('.sidebar')){
1241        const sidebarBlock = document.querySelector('.sidebar');
1242        var sidebar = new StickySidebar(sidebarBlock, {
1243            topSpacing: 30,
1244        });
1245
1246        document.querySelectorAll('[data-toggle="collapse"]').forEach(el =>{
1247            el.addEventListener('click', ()=>{
1248                setTimeout(async function() {
1249                        //sidebar.updateSticky();
1250                });
1251            })
1252        })
1253    }
1254
1255    let btnShowBlock = document.querySelectorAll('._btn-toggle');
1256    let body = document.querySelector('body');
1257    let overlay = document.querySelector('.header__overlay');
1258
1259    Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1260        item.addEventListener('click', function () {
1261            if (item.classList.contains('_show-block')) {
1262                item.classList.remove('_show-block');
1263                overlay.classList.remove('_active');
1264            } else {
1265                addClass(item);
1266            }
1267        });
1268    });
1269
1270    function addClass(currentItem) {
1271        Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1272            item.classList.remove('_show-block');
1273            overlay.classList.remove('_active');
1274            item = currentItem;
1275            item.classList.add('_show-block');
1276            overlay.classList.add('_active');
1277        });
1278    }
1279
1280    document.addEventListener('click', function (e) {
1281        if (!e.target.closest('.hidden-block, ._btn-toggle')) {
1282            Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1283                if (item.classList.contains('_show-block')) {
1284                    item.classList.remove('_show-block');
1285                }
1286            });
1287            overlay.classList.remove('_active');
1288        }
1289    });
1290}
1291window.onload = () => {
1292    if (document.querySelectorAll('[data-toggle="collapse"]') && document.querySelector('.sidebar')) {
1293        const sidebarBlock = document.querySelector('.sidebar');
1294        var sidebar = new StickySidebar(sidebarBlock, {
1295            topSpacing: 30,
1296        });
1297
1298        document.querySelectorAll('[data-toggle="collapse"]').forEach((el) => {
1299            el.addEventListener('click', () => {
1300                setTimeout(async function () {
1301                    //sidebar.updateSticky();
1302                });
1303            });
1304        });
1305    }
1306
1307    let btnShowBlock = document.querySelectorAll('._btn-toggle');
1308    let body = document.querySelector('body');
1309    let overlay = document.querySelector('.header__overlay');
1310
1311    Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1312        item.addEventListener('click', function () {
1313            if (item.classList.contains('_show-block')) {
1314                item.classList.remove('_show-block');
1315                overlay.classList.remove('_active');
1316            } else {
1317                addClass(item);
1318            }
1319        });
1320    });
1321
1322    function addClass(currentItem) {
1323        Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1324            item.classList.remove('_show-block');
1325            overlay.classList.remove('_active');
1326            item = currentItem;
1327            item.classList.add('_show-block');
1328            overlay.classList.add('_active');
1329        });
1330    }
1331
1332    document.addEventListener('click', function (e) {
1333        if (!e.target.closest('.hidden-block, ._btn-toggle')) {
1334            Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1335                if (item.classList.contains('_show-block')) {
1336                    item.classList.remove('_show-block');
1337                }
1338            });
1339            overlay.classList.remove('_active');
1340        }
1341    });
1342};
1343
1344// document.addEventListener('DOMContentLoaded', () => {
1345//     const btnShowBlock = document.querySelectorAll('._btn-toggle');
1346//     const closeBlock = document.querySelector('.header-special__btn-close');
1347//     const body = document.querySelector('body');
1348//     const overlay = document.querySelector('.header__overlay');
1349//
1350//     Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1351//         item.addEventListener('click', function () {
1352//             if (item.classList.contains('_show-block')) {
1353//                 item.classList.remove('_show-block');
1354//                 overlay.classList.remove('_active');
1355//             } else {
1356//                 addClass(item);
1357//             }
1358//         });
1359//     });
1360//
1361//     function addClass(currentItem) {
1362//         Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1363//             item.classList.remove('_show-block');
1364//             overlay.classList.remove('_active');
1365//             item = currentItem;
1366//             item.classList.add('_show-block');
1367//             overlay.classList.add('_active');
1368//         });
1369//     }
1370//
1371//     document.addEventListener('click', function (e) {
1372//         if (!e.target.closest('.hidden-block, ._btn-toggle')) {
1373//             Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1374//                 if (item.classList.contains('_show-block')) {
1375//                     item.classList.remove('_show-block');
1376//                 }
1377//             });
1378//             overlay.classList.remove('_active');
1379//         }
1380//     });
1381//
1382//     if (closeBlock) {
1383//         closeBlock.addEventListener('click', function (e) {
1384//             Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1385//                 item.classList.remove('_show-block');
1386//             });
1387//             overlay.classList.remove('_active');
1388//         });
1389//     }
1390// });
1391//reduce char max length in options
1392const allSelects = document.querySelectorAll('select');
1393if (allSelects) {
1394    allSelects.forEach((select) => {
1395        select.addEventListener('focus', function () {
1396            const options = this.options;
1397            const maxLength = 30;
1398
1399            for (let i = 0; i < options.length; i++) {
1400                if (options[i].text.length > maxLength) {
1401                    options[i].text = options[i].text.substring(0, maxLength) + '...';
1402                }
1403            }
1404        });
1405    });
1406}

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.