PageSourceSearch

https://bii.by/js/interface.js

js bii.by collected 2026-10-02 04:03:15 UTC 11,357 bytes, 330 lines download raw bytes

1(function (document, history, location) {
2    let HISTORY_SUPPORT = !!(history && history.pushState);
3
4    let anchorScrolls = {
5        ANCHOR_REGEX: /^#[^ ]+$/,
6        OFFSET_HEIGHT_PX: 90,
7
8        init: function () {
9            this.scrollToCurrent();
10            window.addEventListener('hashchange', this.scrollToCurrent.bind(this));
11            document.body.addEventListener('click', this.delegateAnchors.bind(this));
12        },
13
14        getFixedOffset: function () {
15            return this.OFFSET_HEIGHT_PX;
16        },
17
18        scrollIfAnchor: function (href, pushToHistory) {
19            let match, rect, anchorOffset;
20
21            if (!this.ANCHOR_REGEX.test(href)) {
22                return false;
23            }
24
25            match = document.getElementById(href.slice(1));
26
27            if (match) {
28                rect = match.getBoundingClientRect();
29                anchorOffset = window.pageYOffset + rect.top;
30                setTimeout(function () {
31                    window.scrollTo(window.pageXOffset, anchorOffset);
32                }, 400);
33
34                if (HISTORY_SUPPORT && pushToHistory) {
35                    history.pushState({}, document.title, location.pathname + href);
36                }
37            }
38
39            return !!match;
40        },
41
42
43        scrollToCurrent: function () {
44            this.scrollIfAnchor(window.location.hash);
45        },
46
47        delegateAnchors: function (e) {
48            let elem = e.target;
49
50            if (
51                elem.nodeName === 'A' &&
52                this.scrollIfAnchor(elem.getAttribute('href'), true)
53            ) {
54                e.preventDefault();
55            }
56        }
57    };
58
59    window.addEventListener(
60        'DOMContentLoaded', anchorScrolls.init.bind(anchorScrolls)
61    );
62
63})(window.document, window.history, window.location);
64
65
66function classList() {
67
68    const rightBtn = document.querySelector('#right-btn');
69    const leftBtn = document.querySelector('#left-btn');
70    const blockScrollOverflow = document.querySelector('.document-scroll-overflow-wrap');
71    const wrapScrollOverflow = document.querySelector('.document');
72
73    if (rightBtn !== null) {
74        rightBtn.addEventListener("click", function (event) {
75            const conent = document.querySelector('.document');
76            conent.scrollLeft += 200;
77            event.preventDefault();
78        });
79    }
80
81    if (leftBtn !== null) {
82        leftBtn.addEventListener("click", function (event) {
83            const conent = document.querySelector('.document');
84            conent.scrollLeft -= 200;
85            event.preventDefault();
86        });
87    }
88
89    const blockScrollDocument = document.querySelector('.document');
90
91    if (blockScrollDocument !== null) {
92        if (blockScrollDocument.clientWidth === blockScrollDocument.scrollWidth) {
93        } else {
94            if (blockScrollOverflow) {
95                blockScrollOverflow.classList.add("dnoneclass");
96            }
97            if (wrapScrollOverflow) {
98                wrapScrollOverflow.classList.add("overflow-auto");
99            }
100        }
101    }
102
103    // SET FILTER-CONTENTS HEIGHT
104    let pageAsideDocument = document.querySelector('.page-aside--document');
105    if (typeof (pageAsideDocument) != 'undefined' && pageAsideDocument != null) {
106        let heightWindow = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
107        let filter = document.querySelector('.content-item--filter');
108        let filterContents = document.querySelector('.content-item--contents');
109        let filterHeight = 0;
110        if (filter) {
111            filterHeight = filter.clientHeight;
112        }
113        let differents = heightWindow - filterHeight - 140;
114        if (filterContents !== null) {
115            filterContents.style.height = differents + "px";
116        }
117    }
118
119    let menuBtn = document.querySelector('.menu-btn');
120    let menu = document.querySelector('.menu-mobile');
121    let menuBg = $('.menu-mobile__bg');
122    let body = document.body;
123
124    //MENU-MOBILE TOGGLE
125    menuBtn.addEventListener('click', function () {
126        toggleClass(menuBtn, 'active');
127        toggleClass(menu, 'active');
128        menuBg.toggleClass('active');
129        toggleClass(body, 'fixed');
130    });
131
132    $(menuBg).click(function () {
133        menuBtn.click();
134    });
135
136    //FILTER TOGGLE
137    let filterBtn = document.querySelector('.js-filters-toggle-link');
138    if (typeof (filterBtn) != 'undefined' && filterBtn != null) {
139        filterBtn.addEventListener("click", function () {
140            toggleClass(this, 'active');
141            toggleClass(this.parentNode, 'active');
142            if (contentsBtn) {
143                removeClass(contentsBtn.parentNode, "active");
144                removeClass(contentsBtn, "active");
145
146            }
147        });
148    }
149    //CONTENTS TOGGLE
150    let contentsBtn = document.querySelector('.js-contents-toggle-link');
151    if (typeof (contentsBtn) != 'undefined' && contentsBtn != null) {
152        contentsBtn.addEventListener("click", function () {
153            toggleClass(this, 'active');
154            toggleClass(this.parentNode, 'active');
155
156            removeClass(filterBtn.parentNode, "active");
157            removeClass(filterBtn, "active");
158        });
159    }
160
161    //CLICK OUTSIDE -- filter
162    let filtersOut = document.querySelector('.content-item--filter');
163    document.body.addEventListener("click", function (e) {
164        let target = e.target || e.srcElement;
165
166        if (target !== filtersOut && !isChildOf(target, filtersOut)) {
167            removeClass(filterBtn.parentNode, "active");
168            removeClass(filterBtn, "active");
169        }
170    }, false);
171
172    // CLICK BY CLOSE -- filter
173    const closeBtn = document.querySelector('.close-btn');
174    if (closeBtn) {
175        closeBtn.onclick = function () {
176            removeClass(filterBtn.parentNode, "active");
177            removeClass(filterBtn, "active");
178        }
179    }
180
181    //CLICK OUTSIDE -- contents
182    let contentsOut = document.querySelector('.content-item--contents');
183    document.body.addEventListener("click", function (e) {
184        let target = e.target || e.srcElement;
185
186        if (target !== contentsOut && !isChildOf(target, contentsOut)) {
187            if (contentsBtn) {
188                removeClass(contentsBtn, "active");
189                if (contentsBtn.parentNode) {
190                    removeClass(contentsBtn.parentNode, "active");
191                }
192            }
193        }
194    }, false);
195
196    //SEARCH-FORM TOGGLE
197    let searchformBtn = document.querySelector('.js-search-form-toggle');
198    let asideFilter = document.querySelector('.page-aside--filter');
199    if (typeof (searchformBtn) != 'undefined' && searchformBtn != null) {
200        searchformBtn.addEventListener("click", function () {
201            toggleClass(asideFilter, 'active');
202        });
203
204        document.body.addEventListener("click", function (e) {
205            let target = e.target || e.srcElement;
206
207            if (target !== asideFilter && target !== searchformBtn && !isChildOf(target, asideFilter)) {
208                removeClass(asideFilter, "active");
209            }
210        }, false);
211    }
212
213    //CHECK ALL
214    let checkAllBtn = document.querySelector('.checkAll');
215    if (typeof (checkAllBtn) != 'undefined' && checkAllBtn != null) {
216        checkAllBtn.addEventListener("click", function () {
217            let checkboxes = document.getElementsByName("notif");
218            for (let i = 0; i < checkboxes.length; i++) {
219                if (checkboxes[i].type === "checkbox") {
220                    checkboxes[i].checked = true;
221                }
222            }
223
224            let checkboxes_control = document.getElementsByName("block_control");
225            for (let i = 0; i < checkboxes_control.length; i++) {
226                if (checkboxes_control[i].type === "checkbox") {
227                    checkboxes_control[i].checked = true;
228                }
229            }
230
231            let remind = document.getElementsByName("block_remind");
232            for (let i = 0; i < remind.length; i++) {
233                if (remind[i].type === "checkbox") {
234                    remind[i].checked = true;
235                }
236            }
237        });
238    }
239    //UNCHECK ALL
240    let unCheckAllBtn = document.querySelector('.uncheckAll');
241    if (typeof (unCheckAllBtn) != 'undefined' && unCheckAllBtn != null) {
242        unCheckAllBtn.addEventListener("click", function () {
243            let checkboxes = document.getElementsByName("notif");
244            for (let i = 0; i < checkboxes.length; i++) {
245                if (checkboxes[i].type === "checkbox") {
246                    checkboxes[i].checked = false;
247                }
248            }
249
250            let checkboxes_control = document.getElementsByName("block_control");
251            for (let i = 0; i < checkboxes_control.length; i++) {
252                if (checkboxes_control[i].type === "checkbox") {
253                    checkboxes_control[i].checked = false;
254                }
255            }
256
257            let remind = document.getElementsByName("block_remind");
258            for (let i = 0; i < remind.length; i++) {
259                if (remind[i].type === "checkbox") {
260                    remind[i].checked = false;
261                }
262            }
263        });
264    }
265
266
267    //SHOW HIDDEN INPUT
268    let source = document.querySelector("#js-select-sphere");
269    let hiddenDiv = document.querySelector("#area-hidden");
270    if (typeof (source) != 'undefined' && source != null) {
271        source.addEventListener('change', function () {
272            if (this.options[this.selectedIndex].value == "������") {
273                hiddenDiv.style.display = 'block';
274            } else {
275                hiddenDiv.style.display = 'none';
276            }
277        })
278    }
279
280}
281
282function toggleClass(element, className) {
283    if (!element || !className) {
284        return;
285    }
286    let classString = element.className, nameIndex = classString.indexOf(className);
287    if (nameIndex == -1) {
288        classString += ' ' + className;
289    } else {
290        classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length);
291    }
292    element.className = classString;
293}
294
295function removeClass(element, className) {
296    let currentClassName = element.getAttribute("class");
297    if (typeof currentClassName !== "undefined" && currentClassName) {
298
299        let class2RemoveIndex = currentClassName.indexOf(className);
300        if (class2RemoveIndex != -1) {
301            let class2Remove = currentClassName.substr(class2RemoveIndex, className.length);
302            let updatedClassName = currentClassName.replace(class2Remove, "").trim();
303            element.setAttribute("class", updatedClassName);
304        }
305    } else {
306        element.removeAttribute("class");
307    }
308}
309
310function isChildOf(child, parent) {
311    if (child.parentNode === parent) {
312        return true;
313    } else if (child.parentNode === null) {
314        return false;
315    } else {
316        return isChildOf(child.parentNode, parent);
317    }
318}
319
320if (document.addEventListener) {
321    document.addEventListener("DOMContentLoaded", classList);
322} else if (document.attachEvent) {
323    document.attachEvent("DOMContentLoaded", classList);
324}
325$(document).ready(function () {
326    $('.close-content-item').on('click', function () {
327        $(this).closest('.content-item').removeClass('active');
328    });
329});
330

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.