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}}">●</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.