https://www.mango-office.ru/local/components/mango/menu/templates/top_main/script.js?179062662912359
1'use strict'; 2 3(function ($) { 4 let MangoPageMenu = function (params = {}) { 5 const self = this; 6 for (let k in params) { 7 self[k]= params[k]; 8 } 9 self.tmpContainer = $('.js-menu-tmp-container'); 10 self.menuContainer = $('.js-menu-container'); 11 self.header = $('.header'); 12 self.pageContents = document.body; 13 self.searchWd = 40; 14 15 self.selMenuLCard = '.nvd__card'; 16 self.selMenuLink = '.nvd__title'; 17 self.selMenuInnerLink = '.nvd__inner a'; 18 19 self.replacedFinallyTriggerName = 'topMenuIsReplacedFinally'; 20 21 self.lastScrollTop = 0; 22 23 self.menuContainer.append(self.tmpContainer.html()); 24 self.tmpContainer.remove(); 25 $(document).trigger('topMenuIsReplaced'); 26 27 $(document).on(self.replacedFinallyTriggerName, function () { 28 self.buildMenu(); 29 self.menuContainer.find('.js-nav-wrapper').removeClass('oh'); 30 }); 31 if (self.ab_test !== false) { 32 self.navWrapper = $('.js-nav-wrapper'); 33 self.navWrapper.hide(); 34 35 $.ajax({ 36 url: '/ajax_new/abtest.php', 37 method: 'POST', 38 data: { 39 'xml_id': 'menu2024', 40 'current_page': window.location.pathname, 41 'menu_link': MangoVars.ACTIVE_MENU_LINK 42 ? MangoVars.ACTIVE_MENU_LINK 43 : '', 44 'product_section_menu': self.product_section_menu 45 }, 46 dataType: 'json', 47 success: function (response) { 48 if ( 49 response.status === 'success' 50 && response.hasOwnProperty('data') 51 ) { 52 self.navWrapper.remove(); 53 self.menuContainer.append($(response.data)); // Menu B 54 self.navWrapper.show(); 55 56 if (typeof mgoTriggerEvent === 'function') { 57 mgoTriggerEvent('menu2024'); 58 } 59 } else { 60 $('.js-nav-wrapper').show(); 61 62 if (typeof mgoTriggerEvent === 'function') { 63 mgoTriggerEvent('menu2022'); 64 } 65 } 66 67 self.triggerEvent(); 68 } 69 }); 70 } else { 71 if (typeof mgoTriggerEvent === 'function') { 72 mgoTriggerEvent('menu2022'); 73 } 74 75 self.triggerEvent(); 76 } 77 78 $(document).on('click', '[href="/numbers_and_tariffs/"]', function (e) { 79 e.stopPropagation(); 80 return false; 81 }); 82 83 self.eventTimeoutHover(); 84 self.eventUpdateBalance(); 85 self.watchScroll(); 86 }; 87 88 MangoPageMenu.prototype.watchScroll = function () { 89 const self = this; 90 document.addEventListener("scroll", function() { 91 let st = window.scrollY || document.documentElement.scrollTop; 92 let header = document.querySelector('.header'); 93 94 if (st > self.lastScrollTop && header) { 95 header.classList.add('scrolled'); 96 self.pageContents.classList.add('narrow-header'); 97 } else if (st < self.lastScrollTop && header) { 98 header.classList.remove('scrolled'); 99 self.pageContents.classList.remove('narrow-header'); 100 } 101 self.lastScrollTop = st <= 0 ? 0 : st; 102 }, false); 103 } 104 105 MangoPageMenu.prototype.processLinks = function ($menuWrapper, $lnks, wrapWd, $hamburgerLinks, cnt) { 106 const self = this; 107 let wd = 0; 108 109 $lnks.each(function () { 110 wd += $(this).width() + 24; 111 }); 112 113 if (wrapWd <= wd) { 114 $menuWrapper.addClass('has-hamburger'); 115 $lnks.first().addClass('invis'); 116 $hamburgerLinks.first().removeClass('invis'); 117 $lnks = $($lnks.get().slice(1)); 118 $hamburgerLinks = $($hamburgerLinks.get().slice(1)); 119 cnt += 1; 120 self.processLinks($menuWrapper, $lnks, wrapWd, $hamburgerLinks, cnt) 121 } else { 122 if (cnt === 0) { 123 $menuWrapper.removeClass('has-hamburger'); 124 } 125 } 126 }; 127 128 MangoPageMenu.prototype.resetLinks = function () { 129 const self = this; 130 131 let $menuWrapper = self.menuContainer.find('.js-nav-wrapper'); 132 let $hamburgerLinks = $($menuWrapper.find('.hamburger-link').get().reverse()); 133 134 $hamburgerLinks.addClass('invis'); 135 136 let wrapWd = $menuWrapper.width(); 137 138 if (wrapWd > 0) { 139 let $lnks = $($menuWrapper.find('.nav_item').get().reverse()); 140 141 $lnks.removeClass('invis'); 142 143 self.processLinks($menuWrapper, $lnks, wrapWd, $hamburgerLinks, 0); 144 } 145 }; 146 147 MangoPageMenu.prototype.buildMenu = function () { 148 const self = this; 149 150 let $menuWrapper = self.menuContainer.find('.js-nav-wrapper'); 151 $menuWrapper.append('<li class="nav_item_hamburger pos-a"><div class="nav_item-link"' + Mango.getDataElement('nav_item_hamburger') + '></div></li>'); 152 153 let $menuLink = $menuWrapper.find('.nav_item_hamburger .nav_item-link'); 154 $menuLink.append('<svg class="pos-a nav_hamburger"><use xlink:href="#icon--hamburger"></use></svg>
154' + 155 '<svg class="pos-a nav_hamburger-active"><use xlink:href="#icon--hamburger-active"></use></svg>') 156 $menuLink.append('<div class="nav_item_more pos-a"></div>'); 157 158 let $moreMenu = $menuLink.find('.nav_item_more'); 159 160 $menuWrapper.find('.nav_item').slice(3).each(function (i) { 161 let t = $(this); 162 163 if (!(t.hasClass('nav_parent'))) { 164 let $lnk = t.find('a').clone().addClass('hamburger-link'); 165 if (Mango.getDataElement('check')) { 166 $lnk.attr('data-element', 'hamburger-link-' + i); 167 } 168 $moreMenu.append($lnk); 169 } else { 170 let $linksWrap = $('<div class="hamburger-link"></div>'); 171 let $lnk = t.find('.nav_item-link > a').clone() 172 .addClass('block nav_item_more-toggle') 173 .append('<i class="ui ui-arr-down text-gray va-middle"></i>'); 174 let $more = $('<div class="nav_item_more-links"></div>'); 175 176 $linksWrap.append($lnk).append($more); 177 $moreMenu.append($linksWrap); 178 179 t.find('.nav-simple a').each(function () { 180 let a = $(this).clone().addClass('block'); 181 if (Mango.getDataElement('check')) { 182 a.attr('data-element', 'top-nav-block-' + i); 183 } 184 $more.append(a); 185 }) 186 } 187 }); 188 189 $menuWrapper.find('.nav_item_more-toggle').click(function () { 190 $(this).toggleClass('active'); 191 $(this).closest('.hamburger-link').find('.nav_item_more-links').toggleClass('active'); 192 return false; 193 }); 194 195 $menuWrapper.find('.nav-inner').each(function () { 196 if (!$(this).find('li').size()) { 197 $(this).remove(); 198 } 199 }); 200 201 self.resetLinks(); 202 self.setCityCode(); 203 204 $(window).resize(function () { 205 self.resetLinks(); 206 }); 207 208 209 document.addEventListener('click', function (event) { 210 211 let menuCard = event.target.closest(self.selMenuLCard); 212 let menuInnerLink = event.target.closest(self.selMenuInnerLink); 213 214 if (menuInnerLink) { 215 return; 216 } else if (menuCard) { 217 let menuLink = menuCard.querySelector(self.selMenuLink); 218 location.href = menuLink.href; 219 } 220 }); 221 222 if ($('[data-oscrollbar="init"]').length) { 223 $('[data-oscrollbar="init"]').overlayScrollbars({ 224 overflowBehavior : { 225 x: 'visible-hidden', 226 y: 'scroll' 227 } 228 }); 229 } 230 231 }; 232 233 MangoPageMenu.prototype.setCityCode = function () { 234 const self = this; 235 236 let counter = 1; 237 let tmpInterval = setInterval(function () { 238 counter++; 239 if (counter > 15) { 240 clearInterval(tmpInterval); 241 return; 242 } 243 if (MangoVars.REGION_PHONE_CODE) { 244 self.menuContainer.find('.js-city-code').text('(' + MangoVars.REGION_PHONE_CODE + ')'); 245 clearInterval(tmpInterval); 246 } 247 }, 100); 248 }; 249 250 MangoPageMenu.prototype.eventTimeoutHover = function () { 251 const self = this; 252 253 let timeoutHoverId; 254 255 self.menuContainer.hoverIntent({ 256 over: function () { 257 let $btn = $(this); 258 let ind = $btn.index(); 259 let $parent = $(this).closest('.nav_item'); 260 261 clearTimeout(timeoutHoverId); 262 263 $btn.on('click.menu', function () { 264 return false; 265 }); 266 timeoutHoverId = setTimeout(function () { 267 $parent.find('.js-nav-btn, .js-nav-tb').removeClass('active'); 268 $btn.addClass('active'); 269 $parent.find('.js-nav-tb').eq(ind).addClass('active'); 270 271 setTimeout(function () { 272 $btn.off('click.menu'); 273 }, 300); 274 }, 100); 275 }, 276 selector: '.js-nav-btn', 277 timeout: 200 278 }).hoverIntent({ 279 over: function () { 280 $(this).addClass('active'); 281 }, 282 out: function () { 283 $(this).removeClass('active'); 284 }, 285 selector: '.nav_item-link', 286 timeout: 200 287 }).hoverIntent({ 288 over: function () { 289 let $btn = $(this); 290 let $parent = $(this).closest('.nvd__wrap'); 291 let all = $parent.find('.nvd__item--parent'); 292 let ind = $btn.index(all); 293
294 $parent.find('.js-nvd-itm, .nvd__submenu').removeClass('active'); 295 296 if ($btn.hasClass('nvd__item--parent')) { 297 $btn.addClass('active'); 298 $parent.find('.nvd__submenu').eq(ind).addClass('active'); 299 } 300 }, 301 selector: '.js-nvd-itm', 302 timeout: 200 303 }).hoverIntent({ 304 out: function () { 305 $(this).find('.js-nvd-itm, .nvd__submenu').removeClass('active'); 306 }, 307 selector: '.nvd__wrap', 308 timeout: 200 309 }); 310 }; 311 312 MangoPageMenu.prototype.eventUpdateBalance = function () { 313 $('#updateBalance').click(function () { 314 const t = $(this); 315 316 if (t.hasClass('wait')) { 317 return false; 318 } 319 t.addClass('wait'); 320 321 AJAX.send( 322 '/ajax_new/user.php', 323 { 324 method: 'updateBalance' 325 }, 326 function (response) { 327 t.removeClass('wait'); 328 if (response.status === 'success') { 329 $('#userBalance').text(response.data.balanceFormatted); 330 } else { 331 if (window.ERROR_REPORTER !== undefined && BX.message('mangoPush_debug')) { 332 window.ERROR_REPORTER('ÐÑоизоÑла оÑибка пÑи обновлении баланÑа.', MESSAGE_TYPE_ERROR); 333 } else { 334 console.log('ÐÑоизоÑла оÑибка пÑи обновлении баланÑа.'); 335 } 336 } 337 }, 338 'json' 339 ); 340 return false; 341 }); 342 }; 343 344 MangoPageMenu.prototype.triggerEvent = function () { 345 const self = this; 346 347 $(document).trigger(self.replacedFinallyTriggerName); 348 let event = new Event(self.replacedFinallyTriggerName); 349 document.dispatchEvent(event); 350 } 351 352 window.MangoPageMenu = MangoPageMenu; 353})(jQuery);
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.