PageSourceSearch

https://infostart.ru/bitrix/templates/adaptive/js/app.min.js?v=0.2.17

js infostart.ru collected 2026-10-02 03:27:47 UTC 48,246 bytes, 1,038 lines download raw bytes

1function runAllForms() {
2    $(".delete-after-load").remove(), $.fn.slider && $(".slider").slider(), $.fn.select2 && $(".select2").each(function () {
3        var a = $(this), b = a.attr("data-select-width") || "100%", c = !!a.attr("data-select-search");
4        a.select2({allowClear: !0, width: b, showSearchInput: c}), a = null
5    }), $.fn.mask && $("[data-mask]").each(function () {
6        var a = $(this), b = a.attr("data-mask") || "error...", c = a.attr("data-mask-placeholder") || "X";
7        a.mask(b, {placeholder: c}), a = null
8    }), $.fn.autocomplete && $("[data-autocomplete]").each(function () {
9        var a = $(this),
10            b = a.data("autocomplete") || ["The", "Quick", "Brown", "Fox", "Jumps", "Over", "Three", "Lazy", "Dogs"];
11        a.autocomplete({source: b}), a = null
12    }), $.fn.datepicker && $(".datepicker").each(function () {
13        var a = $(this), b = a.attr("data-dateformat") || "dd.mm.yy";
14        a.datepicker({
15            dateFormat: b,
16            prevText: '<i class="fa fa-chevron-left"></i>',
17            nextText: '<i class="fa fa-chevron-right"></i>',
18            firstDay: 1
19        }), a = null
20    }), $("button[data-loading-text]").on("click", function () {
21        var a = $(this);
22        a.button("loading"), setTimeout(function () {
23            a.button("reset")
24        }, 3e3), a = null
25    })
26}
27
28function runAllCharts() {
29    if ($.fn.sparkline) {
30        var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J,
31            K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la, ma, na,
32            oa, pa, qa, ra, sa;
33        $(".sparkline").each(function () {
34            var ta = $(this), ua = ta.data("sparkline-type") || "bar";
35            if ("bar" == ua && (a = ta.data("sparkline-bar-color") || ta.css("color") || "#0000f0", b = ta.data("sparkline-height") || "26px", c = ta.data("sparkline-barwidth") || 5, d = ta.data("sparkline-barspacing") || 2, e = ta.data("sparkline-negbar-color") || "#A90329", f = ta.data("sparkline-barstacked-color") || ["#A90329", "#0099c6", "#98AA56", "#da532c", "#4490B1", "#6E9461", "#990099", "#B4CAD3"], ta.sparkline("html", {
36                barColor: a,
37                type: ua,
38                height: b,
39                barWidth: c,
40                barSpacing: d,
41                stackedBarColor: f,
42                negBarColor: e,
43                zeroAxis: "false"
44            }), ta = null), "line" == ua && (b = ta.data("sparkline-height") || "20px", aa = ta.data("sparkline-width") || "90px", g = ta.data("sparkline-line-color") || ta.css("color") || "#0000f0", h = ta.data("sparkline-line-width") || 1, i = ta.data("fill-color") || "#c0d0f0", j = ta.data("sparkline-spot-color") || "#f08000", k = ta.data("sparkline-minspot-color") || "#ed1c24", l = ta.data("sparkline-maxspot-color") || "#f08000", m = ta.data("sparkline-highlightspot-color") || "#50f050", n = ta.data("sparkline-highlightline-color") || "f02020", o = ta.data("sparkline-spotradius") || 1.5, thisChartMinYRange = ta.data("sparkline-min-y") || "undefined", thisChartMaxYRange = ta.data("sparkline-max-y") || "undefined", thisChartMinXRange = ta.data("sparkline-min-x") || "undefined", thisChartMaxXRange = ta.data("sparkline-max-x") || "undefined", thisMinNormValue = ta.data("min-val") || "undefined", thisMaxNormValue = ta.data("max-val") || "undefined", thisNormColor = ta.data("norm-color") || "#c0c0c0", thisDrawNormalOnTop = ta.data("draw-normal") || !1, ta.sparkline("html", {
45                type: "line",
46                width: aa,
47                height: b,
48                lineWidth: h,
49                lineColor: g,
50                fillColor: i,
51                spotColor: j,
52                minSpotColor: k,
53                maxSpotColor: l,
54                highlightSpotColor: m,
55                highlightLineColor: n,
56                spotRadius: o,
57                chartRangeMin: thisChartMinYRange,
58                chartRangeMax: thisChartMaxYRange,
59                chartRangeMinX: thisChartMinXRange,
60                chartRangeMaxX: thisChartMaxXRange,
61                normalRangeMin: thisMinNormValue,
62                normalRangeMax: thisMaxNormValue,
63                normalRangeColor: thisNormColor,
64                drawNormalOnTop: thisDrawNormalOnTop
65            }), ta = null), "pie" == ua && (p = ta.data("sparkline-piecolor") || ["#B4CAD3", "#4490B1", "#98AA56", "#da532c", "#6E9461", "#0099c6", "#990099", "#717D8A"], q = ta.data("sparkline-piesize") || 90, r = ta.data("border-color") || "#45494C", s = ta.data("sparkline-offset") || 0, ta.sparkline("html", {
66                type: "pie",
67                width: q,
68                height: q,
69                tooltipFormat: '<span style="color: {{color}}">&#9679;</span> ({{percent.1}}%)',
70                sliceColors: p,
71                borderWidth: 1,
72                offset: s,
73                borderColor: r
74            }), ta = null), "box" == ua && (t = ta.data("sparkline-width") || "auto", u = ta.data("sparkline-height") || "auto", v = ta.data("sparkline-boxraw") || !1, w = ta.data("sparkline-targetval") || "undefined", x = ta.data("sparkline-min") || "undefined", y = ta.data("sparkline-max") || "undefined", z = ta.data("sparkline-showoutlier") || !0, A = ta.data("sparkline-outlier-iqr") || 1.5, B = ta.data("sparkline-spotradius") || 1.5, C = ta.css("color") || "#000000", D = ta.data("fill-color") || "#c0d0f0", E = ta.data("sparkline-whis-color") || "#000000", F = ta.data("sparkline-outline-color") || "#303030", G = ta.data("sparkline-outlinefill-color") || "#f0f0f0", H = ta.data("sparkline-outlinemedian-color") || "#f00000", I = ta.data("sparkline-outlinetarget-color") || "#40a020", ta.sparkline("html", {
75                type: "box",
76                width: t,
77                height: u,
78                raw: v,
79                target: w,
80                minValue: x,
81                maxValue: y,
82                showOutliers: z,
83                outlierIQR: A,
84                spotRadius: B,
85                boxLineColor: C,
86                boxFillColor: D,
87                whiskerColor: E,
88                outlierLineColor: F,
89                outlierFillColor: G,
90                medianColor: H,
91                targetColor: I
92            }), ta = null), "bullet" == ua) {
93                var va = ta.data("sparkline-height") || "auto";
94                J = ta.data("sparkline-width") || 2, K = ta.data("sparkline-bullet-color") || "#ed1c24", L = ta.data("sparkline-performance-color") || "#3030f0", M = ta.data("sparkline-bulletrange-color") || ["#d3dafe", "#a8b6ff", "#7f94ff"], ta.sparkline("html", {
95                    type: "bullet",
96                    height: va,
97                    targetWidth: J,
98                    targetColor: K,
99                    performanceColor: L,
100                    rangeColors: M
101                }), ta = null
102            }
103            "discrete" == ua && (N = ta.data("sparkline-height") || 26, O = ta.data("sparkline-width") || 50, P = ta.css("color"), Q = ta.data("sparkline-line-height") || 5, R = ta.data("sparkline-threshold") || "undefined", S = ta.data("sparkline-threshold-color") || "#ed1c24", ta.sparkline("html", {
104                type: "discrete",
105                width: O,
106                height: N,
107                lineColor: P,
108                lineHeight: Q,
109                thresholdValue: R,
110                thresholdColor: S
111            }), ta = null), "tristate" == ua && (T = ta.data("sparkline-height") || 26, U = ta.data("sparkline-posbar-color") || "#60f060", V = ta.data("sparkline-negbar-color") || "#f04040", W = ta.data("sparkline-zerobar-color") || "#909090", X = ta.data("sparkline-barwidth") || 5, Y = ta.data("sparkline-barspacing") || 2, Z = ta.data("sparkline-zeroaxis") || !1, ta.sparkline("html", {
112                type: "tristate",
113                height: T,
114                posBarColor: _,
115                negBarColor: V,
116                zeroBarColor: W,
117                barWidth: X,
118                barSpacing: Y,
119                zeroAxis: Z
120            }), ta = null), "compositebar" == ua && (b = ta.data("sparkline-height") || "20px", aa = ta.data("sparkline-width") || "100%", c = ta.data("sparkline-barwidth") || 3, h = ta.data("sparkline-line-width") || 1, g = ta.data("sparkline-color-top") || "#ed1c24", _ = ta.data("sparkline-color-bottom") || "#333333", ta.sparkline(ta.data("sparkline-bar-val"), {
121                type: "bar",
122                width: aa,
123                height: b,
124                barColor: _,
125                barWidth: c
126            }), ta.sparkline(ta.data("sparkline-line-val"), {
127                width: aa,
128                height: b,
129                lineColor: g,
130                lineWidth: h,
131                composite: !0,
132                fillColor: !1
133            }), ta = null), "compositeline" == ua && (b = ta.data("sparkline-height") || "20px", aa = ta.data("sparkline-width") || "90px", ba = ta.data("sparkline-bar-val"), ca = ta.data("sparkline-bar-val-spots-top") || null, da = ta.data("sparkline-bar-val-spots-bottom") || null, ea = ta.data("sparkline-line-width-top") || 1, fa = ta.data("sparkline-line-width-bottom") || 1, ga = ta.data("sparkline-color-top") || "#333333", ha = ta.data("sparkline-color-bottom") || "#ed1c24", ia = ta.data("sparkline-spotradius-top") || 1.5, ja = ta.data("sparkline-spotradius-bottom") || ia, j = ta.data("sparkline-spot-color") || "#f08000", ka = ta.data("sparkline-minspot-color-top") || "#ed1c24", la = ta.data("sparkline-maxspot-color-top") || "#f08000", ma = ta.data("sparkline-minspot-color-bottom") || ka, na = ta.data("sparkline-maxspot-color-bottom") || la, oa = ta.data("sparkline-highlightspot-color-top") || "#50f050", pa = ta.data("sparkline-highlightline-color-top") || "#f02020", qa = ta.data("sparkline-highlightspot-color-bottom") || oa, thisHighlightLineColor2 = ta.data("sparkline-highlightline-color-bottom") || pa, ra = ta.data("sparkline-fillcolor-top") || "transparent", sa = ta.data("sparkline-fillcolor-bottom") || "transparent", ta.sparkline(ba, {
134                type: "line",
135                spotRadius: ia,
136                spotColor: j,
137                minSpotColor: ka,
138                maxSpotColor: la,
139                highlightSpotColor: oa,
140                highlightLineColor: pa,
141                valueSpots: ca,
142                lineWidth: ea,
143                width: aa,
144                height: b,
145                lineColor: ga,
146                fillColor: ra
147            }), ta.sparkline(ta.data("sparkline-line-val"), {
148                type: "line",
149                spotRadius: ja,
150                spotColor: j,
151                minSpotColor: ma,
152                maxSpotColor: na,
153                highlightSpotColor: qa,
154                highlightLineColor: thisHighlightLineColor2,
155                valueSpots: da,
156                lineWidth: fa,
157                width: aa,
158                height: b,
159                lineColor: ha,
160                composite: !0,
161                fillColor: sa
162            }), ta = null)
163        })
164    }
165    $.fn.easyPieChart && $(".easy-pie-chart").each(function () {
166        var a = $(this), b = a.css("color") || a.data("pie-color"), c = a.data("pie-track-color") || "#eeeeee",
167            d = parseInt(a.data("pie-size")) || 25;
168        a.easyPieChart({
169            barColor: b,
170            trackColor: c,
171            scaleColor: !1,
172            lineCap: "butt",
173            lineWidth: parseInt(d / 8.5),
174            animate: 1500,
175            rotate: -90,
176            size: d,
177            onStep: function (a) {
178                this.$el.find("span").text(~~a)
179            }
180        }), a = null
181    })
182}
183
184function setup_widgets_desktop() {
185    $.fn.jarvisWidgets && enableJarvisWidgets && $("#widget-grid").jarvisWidgets({
186        grid: "article",
187        widgets: ".jarviswidget",
188        localStorage: !0,
189        deleteSettingsKey: "#deletesettingskey-options",
190        settingsKeyLabel: "Reset settings?",
191        deletePositionKey: "#deletepositionkey-options",
192        positionKeyLabel: "Reset position?",
193        sortable: !0,
194        buttonsHidden: !1,
195        toggleButton: !0,
196        toggleClass: "fa fa-minus | fa fa-plus",
197        toggleSpeed: 200,
198        onToggle: function () {
199        },
200        deleteButton: !0,
201        deleteClass: "fa fa-times",
202        deleteSpeed: 200,
203        onDelete: function () {
204        },
205        editButton: !0,
206        editPlaceholder: ".jarviswidget-editbox",
207        editClass: "fa fa-cog | fa fa-save",
208        editSpeed: 200,
209        onEdit: function () {
210        },
211        colorButton: !0,
212        fullscreenButton: !0,
213        fullscreenClass: "fa fa-expand | fa fa-compress",
214        fullscreenDiff: 3,
215        onFullscreen: function () {
216        },
217        customButton: !1,
218        customClass: "folder-10 | next-10",
219        customStart: function () {
220            alert("Hello you, this is a custom button...")
221        },
222        customEnd: function () {
223            alert("bye, till next time...")
224        },
225        buttonOrder: "%refresh% %custom% %edit% %toggle% %fullscreen% %delete%",
226        opacity: 1,
227        dragHandle: "> header",
228        placeholderClass: "jarviswidget-placeholder",
229        indicator: !0,
230        indicatorTime: 600,
231        ajax: !0,
232        timestampPlaceholder: ".jarviswidget-timestamp",
233        timestampFormat: "Last update: %m%/%d%/%y% %h%:%i%:%s%",
234        refreshButton: !0,
235        refreshButtonClass: "fa fa-refresh",
236        labelError: "Sorry but there was a error:",
237        labelUpdated: "Last Update:",
238        labelRefresh: "Refresh",
239        labelDelete: "Delete widget:",
240        afterLoad: function () {
241        },
242        rtl: !1,
243        onChange: function () {
244        },
245        onSave: function () {
246        },
247        ajaxnav: $.navAsAjax
248    })
249}
250
251function setup_widgets_mobile() {
252    enableMobileWidgets && enableJarvisWidgets && setup_widgets_desktop()
253}
254
255function loadScript(a, b) {
256    if (jsArray[a]) b && b(); else {
257        jsArray[a] = !0;
258        var c = document.getElementsByTagName("body")[0], d = document.createElement("script");
259        d.type = "text/javascript", d.src = a, d.onload = b, c.appendChild(d)
260    }
261}
262
263function checkURL() {
264    var a = location.href.split("#").splice(1).join("#");
265    if (!a) try {
266        var b = window.document.URL;
267        b && b.indexOf("#", 0) > 0 && b.indexOf("#", 0) < b.length + 1 && (a = b.substring(b.indexOf("#", 0) + 1))
268    } catch (a) {
269    }
270    if (container = $("#content"), a) {
271        $("nav li.active").removeClass("active"), $('nav li:has(a[href="' + a + '"])').addClass("active");
272        var c = $('nav a[href="' + a + '"]').attr("title");
273        document.title = c || document.title, loadURL(a + location.search, container)
274    } else {
275        var d = $('nav > ul > li:first-child > a[href!="#"]');
276        window.location.hash = d.attr("href"), d = null
277    }
278}
279
280function loadURL(a, b) {
281    $.ajax({
282        type: "GET", url: a, dataType: "html", cache: !0, beforeSend: function () {
283            if ($.navAsAjax && $(".google_maps")[0] && b[0] == $("#content")[0]) {
284                var a = $(".google_maps"), c = 0;
285                a.each(function () {
286                    c++;
287                    var b = document.getElementById(this.id);
288                    c == a.length + 1 || b && b.parentNode.removeChild(b)
289                })
290            }
291            if ($.navAsAjax && $(".dataTables_wrapper")[0] && b[0] == $("#content")[0]) {
292                var d = $.fn.dataTable.fnTables(!0);
293                $(d).each(function () {
294                    $(this).dataTable().fnDestroy()
295                })
296            }
297            if ($.navAsAjax && $.intervalArr.length > 0 && b[0] == $("#content")[0] && enableJarvisWidgets) for (; $.intervalArr.length > 0;) clearInterval($.intervalArr.pop());
298            pagefunction = null, b.removeData().html(""), b.html('<h1 class="ajax-loading-animation"><i class="fa fa-cog fa-spin"></i> Loading...</h1>'), b[0] == $("#content")[0] && ($("body").find("> *").filter(":not(" + ignore_key_elms + ")").empty().remove(), drawBreadCrumb(), $("html").animate({scrollTop: 0}, "fast"))
299        }, success: function (a) {
300            b.css({opacity: "0.0"}).html(a).delay(50).animate({opacity: "1.0"}, 300), a = null, b = null
301        }, error: functi
301on () {
302            b.html('<h4 class="ajax-loading-error"><i class="fa fa-warning txt-color-orangeDark"></i> Error 404! Page not found.</h4>')
303        }, async: !0
304    })
305}
306
307function drawBreadCrumb() {
308    var a = $("nav li.active > a"), b = a.length;
309    bread_crumb.empty(), bread_crumb.append($("<li>Home</li>")), a.each(function () {
310        bread_crumb.append($("<li></li>").html($.trim($(this).clone().children(".badge").remove().end().text()))), --b || (document.title = bread_crumb.find("li:last-child").text())
311    }), a = null
312}
313
314function pageSetUp() {
315    "desktop" === thisDevice ? ($("[rel=tooltip]").tooltip(), $("[rel~=popover]").popover(), $("[rel~=popover-hover]").popover({trigger: "hover"}), setup_widgets_desktop(), runAllCharts(), runAllForms()) : ($("[rel~=popover]").popover(), $("[rel~=popover-hover]").popover({trigger: "hover"}), runAllCharts(), setup_widgets_mobile(), runAllForms())
316}
317
318function pageSetUpMin() {
319}
320
321$.root_ = $("body"), $.intervalArr = [];
322var calc_navbar_height = function () {
323        var a = null;
324        return $("#header").length && (a = $("#header").height()), null === a && (a = $('<div id="header"></div>').height()), null === a ? 49 : a
325    }, navbar_height = calc_navbar_height, shortcut_dropdown = $("#shortcut"), bread_crumb = $("#ribbon ol.breadcrumb"),
326    topmenu = !1, thisDevice = null,
327    ismobile = /iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()),
328    jsArray = {}, initApp = function (a) {
329        return a.addDeviceType = function () {
330            return ismobile ? ($.root_.addClass("mobile-detected"), thisDevice = "mobile", fastClick ? ($.root_.addClass("needsclick"), FastClick.attach(document.body), !1) : void 0) : ($.root_.addClass("desktop-detected"), thisDevice = "desktop", !1)
331        }, a.menuPos = function () {
332            ($.root_.hasClass("menu-on-top") || "top" == localStorage.getItem("sm-setmenu")) && (topmenu = !0, $.root_.addClass("menu-on-top"))
333        }, a.SmartActions = function () {
334            var a = {
335                userLogout: function (a) {
336                    function b() {
337                        window.location = a.attr("href")
338                    }
339
340                    $.SmartMessageBox({
341                        title: a.data("logout-title"),
342                        content: a.data("logout-msg"),
343                        buttons: "[Íåò][Äà]"
344                    }, function (a) {
345                        "Äà" == a && ($.root_.addClass("animated fadeOutUp"), setTimeout(b, 1e3))
346                    })
347                }, resetWidgets: function (a) {
348                    $.widresetMSG = a.data("reset-msg"), $.SmartMessageBox({
349                        title: "<i class='fa fa-refresh' style='color:green'></i> Clear Local Storage",
350                        content: $.widresetMSG || "Would you like to RESET all your saved widgets and clear LocalStorage?",
351                        buttons: "[Äà][Íåò]"
352                    }, function (a) {
353                        "Äà" == a && localStorage && (localStorage.clear(), location.reload())
354                    })
355                }, launchFullscreen: function (a) {
356                    $.root_.hasClass("full-screen") ? ($.root_.removeClass("full-screen"), document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen && document.webkitExitFullscreen()) : ($.root_.addClass("full-screen"), a.requestFullscreen ? a.requestFullscreen() : a.mozRequestFullScreen ? a.mozRequestFullScreen() : a.webkitRequestFullscreen ? a.webkitRequestFullscreen() : a.msRequestFullscreen && a.msRequestFullscreen())
357                }, minifyMenu: function (a) {
358                    $.root_.hasClass("minified") ?  $.removeCookie("minified", {path: "/"}) : $.cookie("minified", "y", {expires: 30, path: "/"}),
359                    $.root_.toggleClass("minified global-menu-minified"),
360                    $.root_.removeClass("hidden-menu"),
361                    $("html").removeClass("hidden-menu-mobile-lock")
362
363                }, toggleMenu: function () {
364                    $.root_.toggleClass("hidden-menu");
365                    if (window.innerWidth >= 1500) {
366                        if ($.root_.hasClass("hidden-menu")) {
367                            $.root_.addClass("global-menu-hidden");
368                            $.cookie("hidden-menu", "y", {expires: 30, path: "/"})
369                        } else {
370                            $.root_.removeClass("global-menu-hidden");
371                            $.removeCookie("hidden-menu", {path: "/"});
372                        }
373                    }
374
375                    $.root_.removeClass("minified");
376
377                }, toggleShortcut: function () {
378
379                    function a() {
380
381                        shortcut_dropdown.animate({height: "hide"}, 300, "easeOutCirc"), $.root_.removeClass("shortcut-on")
382                    }
383
384                    function b() {
385                        shortcut_dropdown.animate({height: "show"}, 200, "easeOutCirc"), $.root_.addClass("shortcut-on")
386                    }
387
388                    shortcut_dropdown.is(":visible") ? a() : b(), shortcut_dropdown.find("a").click(function (b) {
389                        b.preventDefault(), window.location = $(this).attr("href"), setTimeout(a, 300)
390                    }), $(document).mouseup(function (b) {
391                        shortcut_dropdown.is(b.target) || 0 !== shortcut_dropdown.has(b.target).length || a()
392                    })
393                }
394            };
395            $.root_.on("click", '[data-action="userLogout"]', function (b) {
396                var c = $(this);
397                a.userLogout(c), b.preventDefault(), c = null
398            }), $.root_.on("click", '[data-action="resetWidgets"]', function (b) {
399                var c = $(this);
400                a.resetWidgets(c), b.preventDefault(), c = null
401            }), $.root_.on("click", '[data-action="launchFullscreen"]', function (b) {
402                a.launchFullscreen(document.documentElement), b.preventDefault()
403            }), $.root_.on("click", '[data-action="minifyMenu"]', function (b) {
404                var c = $(this);
405                a.minifyMenu(c), b.preventDefault(), c = null
406            });
407            $('a[data-action="toggleMenu"]').off("click");
408            $('a[data-action="toggleMenu"]').on("click", function (b) {
409                a.toggleMenu();
410            });
411            $.root_.on("click", '[data-action="toggleShortcut"]', function (b) {
412                a.toggleShortcut(), b.preventDefault()
413            })
414        }, a.leftNav = function () {
415            var a = !!a && a;
416            topmenu || $("nav ul").jarvismenu({
417                accordion: !0,
418                speed: a,
419                closedSign: '<em class="fa fa-plus-square-o"></em>',
420                openedSign: '<em class="fa fa-minus-square-o"></em>'
421            })
422        }, a.domReadyMisc = function () {
423            $("[rel=tooltip]").length && $("[rel=tooltip]").tooltip(), $("#search-mobile").click(function () {
424                $.root_.addClass("search-mobile")
425            }), $("#cancel-search-js").click(function () {
426                $.root_.removeClass("search-mobile")
427            }), $("#activity").click(function (a) {
428                var b = $(this);
429                b.find(".badge").hasClass("bg-color-red") && (b.find(".badge").removeClassPrefix("bg-color-"), b.find(".badge").text("0")), b.next(".ajax-dropdown").is(":visible") ? (b.next(".ajax-dropdown").fadeOut(150), b.removeClass("active")) : (b.next(".ajax-dropdown").fadeIn(150), b.addClass("active"));
430                var c = b.next(".ajax-dropdown").find(".btn-group > .active > input").attr("id");
431                b = null, c = null, a.preventDefault()
432            }), $('input[name="activity"]').change(function () {
433                var a = $(this);
434                url = a.attr("id"), container = $(".ajax-notifications"), loadURL(url, container), a = null
435            }), $(document).mouseup(function (a) {
436                $(".ajax-dropdown").is(a.target) || 0 !== $(".ajax-dropdown").has(a.target).length || ($(".ajax-dropdown").fadeOut(150), $(".ajax-dropdown").prev().removeClass("active"))
437            }), $("button[data-btn-loading]").on("click", function () {
438                var a = $(this);
439                a.button("loading"), setTimeout(function () {
440                    a.button("reset")
441                }, 3e3), $this = null
442            }), $this = $("#activity > .badge"), parseInt($this.text()) > 0 && ($this.addClass("bg-color-red bounceIn animated"), $this = null)
443        }, a
444    }({});
445initApp.addDeviceType(), initApp.menuPos(), jQuery(document).ready(function () {
446    initApp.SmartActions(), initApp.leftNav(), initApp.domReadyMisc()
447}), function (a, b, c) {
448    function d() {
449        e = b[h](function () {
450            f.each(function () {
451                var b, c, d = a(this), e = a.data(this, j);
452                try {
453                    b = d.width()
454                } catch (a) {
455                    b = d.width
456                }
457                try {
458                    c = d.height()
459                } catch (a) {
460                    c = d.height
461                }
462                (b !== e.w || c !== e.h) && d.trigger(i, [e.w = b, e.h = c])
463            }), d()
464        }, g[k])
465    }
466
467    var e, f = a([]), g = a.resize = a.extend(a.resize, {}), h = "setTimeout", i = "resize", j = i + "-special-event",
468        k = "delay", l = "throttleWindow", m = !!m && m;
469    g[k] = m, g[l] = !0, a.event.special[i] = {
470        setup: function () {
471            if (!g[l] && this[h]) return !1;
472            var b = a(this);
473            f = f.add(b);
474            try {
475                a.data(this, j, {w: b.width(), h: b.height()})
476            } catch (c) {
477                a.data(this, j, {w: b.width, h: b.height})
478            }
479            1 === f.length && d()
480        }, teardown: function () {
481            if (!g[l] && this[h]) return !1;
482            var b = a(this);
483            f = f.not(b), b.removeData(j), f.length || clearTimeout(e)
484        }, add: function (b) {
485            function d(b, d, f) {
486                var g = a(this), h = a.data(this, j);
487                if (h == undefined) return;
488                h.w = d !== c ? d : g.width(), h.h = f !== c ? f : g.he
488ight(), e.apply(this, arguments)
489            }
490
491            if (!g[l] && this[h]) return !1;
492            var e;
493            return a.isFunction(b) ? (e = b, d) : (e = b.handler, void (b.handler = d))
494        }
495    }
496}(jQuery, this);
497var ie = function () {
498    for (var a, b = 3, c = document.createElement("div"), d = c.getElementsByTagName("i"); c.innerHTML = "<!--[if gt IE " + ++b + "]><i></i><![endif]-->", d[0];) ;
499    return b > 4 ? b : a
500}();
501if ($.fn.extend({
502    jarvismenu: function (a) {
503        var b = {accordion: "true", speed: 200, closedSign: "[+]", openedSign: "[-]"}, c = $.extend(b, a), d = $(this);
504        d.find("li").each(function () {
505            0 !== $(this).find("ul").length && ($(this).find("a:first").append("<b class='collapse-sign'>" + c.closedSign + "</b>"), "#" == $(this).find("a:first").attr("href") && $(this).find("a:first").click(function () {
506                return !1
507            }))
508        }), d.find("li.active").each(function () {
509            $(this).parents("ul").slideDown(c.speed), $(this).parents("ul").parent("li").find("b:first").html(c.openedSign), $(this).parents("ul").parent("li").addClass("open")
510        }), d.find("li a.root-item-open").click(function (event) {
511
512            if($.root_.hasClass("minified") && $(this).hasClass('root-head')){
513                /**
514                 *   Ïðåäîòâðàùåíèå ïîïûòêè ñâåðíóòü ìåíþ â ðåæèìå "Èêîíêè".
515                 */
516                event.preventDefault();
517                return 0;
518            }
519
520            return 0 !== $(this).parent().find("ul").length && (c.accordion && ($(this).parent().find("ul").is(":visible") || (parents = $(this).parent().parents("ul"), visible = d.find("ul:visible"), visible.each(function (a) {
521                var b = !0;
522                parents.each(function (c) {
523                    return parents[c] == visible[a] ? (b = !1, !1) : void 0
524                }), b && $(this).parent().find("ul") != visible[a] && $(visible[a]).slideUp(c.speed, function () {
525                    $(this).parent("li").find("b:first").html(c.closedSign), $(this).parent("li").removeClass("open")
526                })
527            }))), $(this).parent().find("ul:first").is(":visible") && !$(this).parent().find("ul:first").hasClass("active") ? $(this).parent().find("ul:first").slideUp(c.speed, function () {
528                $(this).parent("li").removeClass("open"), $(this).parent("li").find("b:first").delay(c.speed).html(c.closedSign)
529            }) : $(this).parent().find("ul:first").slideDown(c.speed, function () {
530                $(this).parent("li").addClass("open"), $(this).parent("li").find("b:first").delay(c.speed).html(c.openedSign)
531            })), !1
532        }), d.find("li.active").each(function () {
533            $(this).children("ul").slideDown(c.speed), $(this).children("ul").parent("li").find("b:first").html(c.openedSign), $(this).children("ul").parent("li").addClass("open")
534        })
535    }
536}), jQuery.fn.doesExist = function () {
537    return jQuery(this).length > 0
538}, $.navAsAjax || $(".google_maps")) {
539    var gMapsLoaded = !1;
540    window.gMapsCallback = function () {
541        gMapsLoaded = !0, $(window).trigger("gMapsLoaded")
542    }, window.loadGoogleMaps = function () {
543        if (gMapsLoaded) return window.gMapsCallback();
544        var a = document.createElement("script");
545        a.setAttribute("type", "text/javascript"), a.setAttribute("src", "http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback"), (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(a)
546    }
547}
548$.navAsAjax && ($("nav").length && checkURL(), $(document).on("click", 'nav a[href!="#"]', function (a) {
549    a.preventDefault();
550    var b = $(a.currentTarget);
551    b.parent().hasClass("active") || b.attr("target") || ($.root_.hasClass("mobile-view-activated") ? (window.setTimeout(function () {
552        window.location.search ? window.location.href = window.location.href.replace(window.location.search, "").replace(window.location.hash, "") + "#" + b.attr("href") : window.location.hash = b.attr("href")
553    }, 150)) : window.location.search ? window.location.href = window.location.href.replace(window.location.search, "").replace(window.location.hash, "") + "#" + b.attr("href") : window.location.hash = b.attr("href"))
554}), $(document).on("click", 'nav a[target="_blank"]', function (a) {
555    a.preventDefault();
556    var b = $(a.currentTarget);
557    window.open(b.attr("href"))
558}), $(document).on("click", 'nav a[target="_top"]', function (a) {
559    a.preventDefault();
560    var b = $(a.currentTarget);
561    window.location = b.attr("href")
562}), $(document).on("click", 'nav a[href="#"]', function (a) {
563    a.preventDefault()
564}), $(window).on("hashchange", function () {
565    checkURL()
566})), $("body").on("click", function (a) {
567    $('[rel~="popover"]').each(function () {
568        $(this).is(a.target) || 0 !== $(this).has(a.target).length || 0 !== $(".popover").has(a.target).length || $(this).popover("hide")
569    })
570}), $(document).ready(function () {
571    $("#doublescroll").length > 0 && $("#doublescroll").before($("<div></div>").append($("<div></div>").css({
572        "padding-top": "1px",
573        width: $("#doublescroll")[0].scrollWidth + "px"
574    }).text(" ")).css({overflow: "auto", overflowY: "hidden"}).bind("scroll", function () {
575        $("#doublescroll")[0].scrollLeft = $(this)[0].scrollLeft
576    })).bind("scroll", function () {
577        $(this).prev()[0].scrollLeft = $(this)[0].scrollLeft
578    })
579}), $(document).ready(function () {
580    $(".SetHiddenAlert").click(function () {
581        $.cookie($(this).attr("data-code"), "Y", {expires: 30, path: "/"})
582    });
583    var a = window.location.hash.replace("#", "");
584    "" != a && $("[name=" + a + "]").length > 0 && $("html,body").animate({scrollTop: $("[name=" + a + "]").offset().top - 60}, 300), $("a[data-scroll=true]").click(function () {
585        if ($(this).attr("href")) {
586            var a = $(this).attr("href").split("#");
587            a[1] && $("[name=" + a[1] + "]").length > 0 && $("html,body").animate({scrollTop: $("[name=" + a[1] + "]").offset().top - 60}, 300)
588        }
589    }), $(".fancy").fancybox({padding: 0})
590
591
592    var Option = $("#header-search select").find("option[value='"+$("#header-search select").val()+"']");
593    if (Option.attr("data-action")){
594        $("#header-search form").attr("action",Option.attr("data-action"));
595    }else{
596        $("#header-search form").attr("action",$("#header-search input[type=text]").attr("data-action-"+$("#header-search select").val()));
597    }
598    if (Option.attr("data-name")){
599        $("#header-search input[type=text]").attr("name",Option.attr("data-name"));
600    }else{
601        $("#header-search input[type=text]").attr("name",$("#header-search input[type=text]").attr("data-name-"+$("#header-search select").val()));
602    }
603    $("#header-search select").change(function () {
604        var Option = $(this).find("option[value='"+$(this).val()+"']");
605        if (Option.attr("data-action")){
606            $("#header-search form").attr("action",Option.attr("data-action"));
607        }else{
608            $("#header-search form").attr("action",$("#header-search input[type=text]").attr("data-action-"+$(this).val()));
609        }
610        if (Option.attr("data-name")){
611            $("#header-search input[type=text]").attr("name",Option.attr("data-name"));
612        }else{
613            $("#header-search input[type=text]").attr("name",$("#header-search input[type=text]").attr("data-name-"+$(this).val()));
614        }
615
616
617    });
618});
619
620function SetBubble($x, $y, $x2, $y2, $message, $bid) {
621    var matches = document.cookie.match(new RegExp("(?:^|; )" + 'hide_' + $bid.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));
622    if (matches) return false;
623    var Bubble = $("<div class='inf-bubble-overlay'><div class='inf-bubble-item'><div>" + $message + "</div></div></div>");
624    Bubble.children().css({"left": $x, "top": $y, "right": $x2, "bottom": $y2});
625    $(Bubble).click(function () {
626        var d = new Date();
627        d.setTime(d.getTime() + (366 * 24 * 60 * 60 * 1000));
628        var expires = "expires=" + d.toUTCString();
629        document.cookie = 'hide_' + $bid + "=" + 1 + ";path=/;domain=infostart.ru;" + expires;
630        $(Bubble).remove();
631    });
632    $("body").append(Bubble);
633}
634
635$(document).on("click", "[data-action=get-user-info]", function () {
636    $(".get-user-info").remove();
637    var UID = $(this).attr("data-uid");
638    var BTN = $(this);
639    var target = $(this).attr("data-target") ?? null;
640    var popupAnchor = BTN;
641
642    if (BTN.hasClass("avatar")) {
643        var found = BTN.closest(".show-hide-props")
644            .find('.message-author[data-action=get-user-info][data-uid="' + UID + '"]')
645            .first();
646
647        if (found.length) {
648            popupAnchor = found;
649        }
650    }
651
652    var url = '/bitrix/ajax/get_info_user.php?UID=' + UID;
653    if (target) { url = url + '&target=' + target; }
654    $.get(url, function (data) {
655        popupAnchor.after(data);
656        $(".get-user-info .close").click(function () {
657            $(this).parents(".get-user-info").remove();
658        });
659    });
660
661    return false;
662});
663
664$(document).on("click", "a[href]", function () {
665    if ($(this).attr("href").indexOf("action=buy") !== -1) {
666        var price = parseInt($(this).attr("data-price"), 10).toFixed(2);
667        var name = $(this).attr("data-name");
668        var id = $(this).attr("data-id");
669        if (price && name) {
670          try {
671            window.dataLayer?dataLayer.push({
672              "event": "addToCart",
673              "ecommerce": {
674                "currencyCode": "RUB",
675                "add": {
676                  "products": [{
677                    "id": id,
678                    "name": name,
679                    "price": '"' + price + '"',
680                    "quantity": 1
681                  }]
682                }
683              }
684            }):'';
685            window.dataLayer?dataLayer.push({
686              "event": "productaddtocart"
687            }):'';
688
689            //dataLayer.push({ ecommerce: null });
690            window.dataLayer?dataLayer.push({
691              "event": "add_to_cart",
692              "ecommerce": {
693                "items": [{
694                  "item_name": name,
695                  "item_id": id,
696                  "price": '"' + price + '"',
697                  "index": 1,
698                  "quantity": 1
699                }]
700              }
701            }):'';
702          } catch (error) {
703            console.error(error);
704          }
705        }
706    }
707});
708
709$(document).ready(function () {
710    $('#main-left-menu > li').on({
711        mouseenter: function () {
712            if (!document.body.classList.contains("minified")) {
713                return false;
714            }
715            let $ul = $(this).children('ul');
716            let top_window;
717            if ($ul.offset() != undefined) {
718                top_window = $ul.offset().top - $(document).scrollTop();
719            }
720            let margin = 70;
721            let height = $(window).height() - top_window - 5;
722            if (height != undefined && !isNaN(height)) {
723                if (height < margin) {
724                    let $aF = $(this).find('> a > span');
725                    $aF.css({'top': '-'+($aF.parent().outerHeight() + margin)+'px'});
726                    $ul.css({'max-height': (height + margin) + 'px', 'top': '-'+margin+'px'});
727                } else {
728                    $ul.css({'max-height': (height) + 'px'});
729                }
730            }
731        },
732        mouseleave: function () {
733            let $ul = $(this).children('ul');
734            $ul.css({'max-height': ''});
735        }
736    });
737
738
739    var ImpressionProducts = new Array();
740    $("a[data-price]").each(function () {
741        if ($(this).attr("href").indexOf("action=buy") !== -1) {
742            var price = parseInt($(this).attr("data-price"), 10).toFixed(2);
743            var name = $(this).attr("data-name");
744            var id = $(this).attr("data-id");
745            if (price && name) {
746                ImpressionProducts.push({
747                    "id": id,
748                    "name": name,
749                    "price": price,
750                    "list": "infostart"
751                });
752
753                try {
754                  window.dataLayer?dataLayer.push({
755                    'event': 'remarketingTriggered',
756                    'google_tag_params': {
757                      'ecomm_pagetype': 'product',
758                      'ecomm_prodid': id,
759                    }
760                  }):'';
761                } catch (error) {
762                  console.error(error);
763                }
764            }
765
766        }
767    });
768    if (ImpressionProducts.length > 0) {
769      try {
770        window.dataLayer?dataLayer.push({
771          "event": "impressions",
772          "ecommerce": {
773            "currencyCode": "RUB",
774            "impressions": ImpressionProducts
775          }
776        }):'';
777      } catch (error) {
778        console.error(error);
779      }
780    }
781
782});
783
784function GetArCharVersion() {
785    var arChars = [];
786    var arCharsEncode = [];
787    var arCharsDecode = [];
788    var START_CHAR_ID = 58;
789    arChars_loop:
790        for (var i = 10; i <= 600000000; i *= 10) {
791            for (var a = i; a < i * 10; a += i) {
792                if (arCharsEncode[a.toString().length - 1] === undefined) {
793                    arCharsEncode[a.toString().length - 1] = [];
794                }
795                if (arCharsDecode[a.toString().length - 1] === undefined) {
796                    arCharsDecode[a.toString().length - 1] = [];
797                }
798
799                arCharsEncode[a.toString().length - 1][a.toString().substr(0, 1)] = String.fromCharCode(START_CHAR_ID);
800                arCharsDecode[a.toString().length - 1][String.fromCharCode(START_CHAR_ID)] = a.toString().substr(0, 1);
801
802                if (START_CHAR_ID === 126) {
803                    break arChars_loop;
804                }
805                START_CHAR_ID++;
806            }
807        }
808    arChars["ENCODE"] = arCharsEncode;
809    arChars["DECODE"] = arCharsDecode;
810    return arChars;
811}
812
813function DecodeCharVersion(number) {
814    var arChars = GetArCharVersion()["DECODE"];
815    var arNumber = number.split("").reverse();
816    var resNumber = [];
817    for (var i = 0; i < arNumber.length; i++) {
818        if (i === 0 || arNumber[i] === "0") {
819            resNumber.push(arNumber[i]);
820            continue;
821        }
822        resNumber.push(arChars[i][arNumber[i]]);
823    }
824    return parseInt(resNumber.reverse().join(''));
825}
826
827function EncodeCharVersion(number) {
828    var arChars = GetArCharVersion()["ENCODE"];
829    var arNumber = number.toString().split("").reverse();
830    var resNumber = [];
831    for (var i = 0; i < arNumber.length; i++) {
832        if (i === 0 || arNumber[i] === "0") {
833            resNumber.push(arNumber[i]);
834            continue;
835        }
836        resNumber.push(arChars[i][arNumber[i]]);
837    }
838    return resNumber.reverse().join('');
839}
840
841function copyToClipboard(element) {
842    var $temp = $("<input>");
843    $("body").append($temp);
844    $temp.val($(element).text()).select();
845    document.execCommand("copy");
846    $temp.remove();
847}
848
849$(document).ready(function () {
850    $(document).on("click", ".copy-to-clipboard", function () {
851        copyToClipboard($(this));
852        $.smallBox({
853            title: 'Óñïåøíî!',
854            content: "Cêîïèðîâàíî â áóôåð îáìåíà",
855            color: "#666",
856            icon: "fa fa-check fadeInRight animated",
857            timeout: 2000
858        });
859    });
860
861    checkSectionSearch();
862    $('#select-section').change(function() {
863        checkSectionSearch();
864    });
865});
866
867function checkSectionSearch(){
868    let st = $('form[name="search_h"]').find('input[name="st"]');
869    let sort = $('form[name="search_h"]').find('input[name="sort"]');
870    let section = $('#select-section').val();
871    if(section === 'c'){
872        st.attr('disabled', true);
873        sort.attr('disabled', true);
874    }
875    else{
876        st.attr('disabled', false);
877        sort.attr('disabled', false);
878    }
879}
880
881let disableSubmit = false
882$(document).on("click", ".btn-feedback", function () {
883	let paramsBody = {
884		'ACTION': 'GET_FORM',
885		'ACTION_TYPE': 'FEEDBACK_GLOBAL',
886        'HIDE_FIELDS': this.getAttribute('data-hide-fields')
887	};
888
889	function showFeedbackModal(self, m) {
890        disableSubmit = self.data("disable_submit");
891        if(disableSubmit == 1){
892            $('#global-feedback-form .modal-footer button[type="submit"]').attr("disabled", 1);
893        }
894
895        const formValidator = {
896            requiredFields: [
897                {code: "NAME"},
898                {code: "PHONE"},
899                {code: "POST"},
900            ],
901            extraFields: [],
902            validation(fields, onSuccessCheck) {
903                if (!this.fieldExists(fields)) {
904                    return false;
905                }
906
907                fields = fields.split(',');
908
909                fields.forEach(code => {
910                    code = code.toUpperCase();
911
912                    if (!this.checkingRequiredFields(code)) {
913                        onSuccessCheck(code);
914                    }
915                });
916
917                this.clearExtraFields();
918            },
919            fieldExists(fields) {
920                return fields !== undefined && fields.length > 0;
921            },
922            checkingRequiredFields(code) {
923                let fields = this.requiredFields;
924
925                if (this.extraFields.length > 0) {
926                    fields = fields.concat(this.extraFields)
927                }
928
929                return fields.find(item => item.code === code)
930            },
931            clearExtraFields() {
932                this.extraFields = [];
933            },
934            addFields(fields) {
935                this.extraFields = fields;
936
937                return this;
938            },
939        }
940
941        let hideFields = self.data("hide-fields");
942        formValidator.validation(hideFields, code => {
943            m.find(`section:has([name="${code}"])`).remove();
944        });
945
946        let dopReqFields = self.data("dop_req");
947        formValidator.validation(dopReqFields, code => {
948            let fieldModif = m.find(`[name="${code}"]`);
949
950            fieldModif.prop('required', true);
951            fieldModif.parent().prev().append('<span class="text-danger">*</span>');
952        })
953
954        let displayHideFields = self.data("display-hide-fields");
955        formValidator.validation(displayHideFields, code => {
956            m.find("section:has([name='" + code + "'])").hide();
957        })
958
959        const new_sub_ticket = self.data("create_new_sub_ticket") ? self.data("create_new_sub_ticket").toUpperCase() : "N";
960        let delReqFields = self.data("del_req");
961        if (new_sub_ticket === 'Y') {
962            formValidator.addFields([{code: "MESSAGE"}]).validation(delReqFields, code => {
963                m.find("[name='" + code + "']").removeAttr("required");
964            })
965        }
966
967        m.find('input[name="UID"]').val(self.data("uid"));
968        m.find('input[name="DIRECTION"]').val(self.data("direction"));
969        m.find('input[name="BUSINESS"]').val(self.data("business"));
970        m.find('input[name="INFO"]').val(self.data("info"));
971
972        m.find('input[name="PUB_ID"]').val(self.data("pub_id"));
973        m.find('input[name="SPECIAL_CASE"]').val(self.data("special_case"));
974        m.find('input[name="TICKET_TITLE"]').val(self.data("ticket_title"));
975        m.find('input[name="TAGS"]').val(self.data("tags"));
976        m.find('input[name="DOPUID"]').val(self.data("dopuid"));
977        m.find('input[name="PARENT_TICKET_ID"]').val(self.data("parent_ticket_id"));
978        m.find('input[name="CREATE_NEW_SUB_TICKET"]').val(new_sub_ticket);
979        m.find('input[name="DISABLE_SUBMIT"]').val(self.data("disable_submit"));
980        m.find('input[name="ORDER_NUMBER"]').val(self.data("order_number"));
981        m.find('input[name="SYSTEM_TICKET"]').val(self.data("system_ticket"));
982		m.find('input[name="YM_ID"]').val(self.data("ymId"));
983
984        let title = self.data("title");
985        m.find('input[name="TITLE"]').val(title);
986        if (title !== undefined) {
987            m.find(".modal-title").html(title);
988        }
989        m.find('textarea[name="MESSAGE"]').html(self.data("message"));
990
991        let modal_chat = self.data("modal_chat") == "Y" ? "Y" : "N";
992        m.find('input[name="MODAL_CHAT"]').val(modal_chat);
993
994        m.modal("show");
995    }
996
997    let self = $(this);
998    $("#global-feedback-modal").remove();
999	const SPECIAL_CASE = self.data("special_case") ? self.data("special_case").toUpperCase().trim() : null;
1000	if (
1001		SPECIAL_CASE &&
1002		(
1003			(SPECIAL_CASE === "BTN_CALL") || (SPECIAL_CASE.indexOf('PUB_BTN_CALL') === 0)
1004		)
1005	) {
1006		$.extend(paramsBody, { 'CALL-TIME': 'SHOW' })
1007	}
1008
1009    if (paramsBody.HIDE_FIELDS) {
1010        paramsBody.HIDE_FIELDS = paramsBody.HIDE_FIELDS.split(',').filter(code => {
1011            if (!['NAME', 'PHONE', 'POST'].includes(code)) {
1012                return code
1013            }
1014        }).join(',');
1015    }
1016
1017    let freeFileId = $(this).data('freeFileId') || 0;
1018
1019    $.extend(paramsBody, { freeFileId })
1020
1021    $.get("/bitrix/ajax/feedback_form.php", paramsBody, function (data) {
1022        $("body").append(data);
1023        m = $("#global-feedback-modal");
1024        showFeedbackModal(self, m);
1025    });
1026    return false;
1027});
1028
1029function showFeedbackForm(params) {
1030    let a = document.createElement("a");
1031    a.classList.add("btn-feedback");
1032    for (let code in params) {
1033        a.setAttribute(code, params[code]);
1034    }
1035    document.body.appendChild(a);
1036    a.click();
1037    a.remove();
1038}

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.