PageSourceSearch

https://belclass.ru/simai/asset/simai.framework/sf4.master/plugin/navigation/js/sf-nav.js?178229047432322

js belclass.ru collected 2026-10-08 01:02:07 UTC 32,322 bytes, 703 lines download raw bytes

1;(function($, window, document, undefined) {
2
3    //alert('Îñíîâíîé SCRIPT');
4    //alert('Îñíîâíîé SCRIPT');
5    //test
6// ========= DEFAULTS PARAMS ========= //
7
8    $.sfNavMulti = function(element, options) {
9// ========= DEFAULTS PARAMS ========= //
10        var defaults = {
11            mobileWidth: 768,
12            overlay: true,
13            overlayColor: "rgba(0, 0, 0, 0.7)",
14            hideScrollBar: true,
15            offCanvasSide: 'left',
16            onInit: function() {},
17            onShowOffCanvas: function() {},
18            onHideOffCanvas: function() {},
19    // ================ horisonatal navigation transformMenu ================ //
20            transformInit: false,
21            transformThreshold: 1,
22            transformCutoff: 0,
23            iconMenu: '<i class="far fa-ellipsis-h fa-lg" aria-hidden="true"></i>',
24    // ================ end flexMenu ================ //
25            fixedInit: false,
26            fixedId: '#sf-nav-id',
27            topSpace: 0,
28    // ================ end flexMenu ================ //            
29            leftFlag: false,
30//============== TOP ==============//
31            transformFlag: true,
32            transformPaddingOne: 'p-3',
33            transformPaddingLower: 'p-2',
34            transformTheme: 'theme-dark',
35            transformEffectHover: 'underline',
36            fullScreenFlag: true,
37            fullScreenTheme: 'theme-dark',
38            fixedFlag:true,
39            fixedClass: 'nav-fixed',
40            mobileFlag:true,
41            transferHeadingItem: false,
42            searchContainer: false,
43            horizontalSubmenu: false,
44			positionY:false,
45        };
46// ========= PLUGIN EVENTS ========= //
47        var plugin = this,
48            widthW = 0,
49            heightW = 0;           
50        plugin.settings = {};
51        var $element = $(element), element = element;
52        // PLUGIN INIT
53        plugin.init = function() {
54            //window.addEventListener('DOMContentLoaded', function() {
55                plugin.settings = $.extend({}, defaults, options);
56            if(plugin.settings.leftFlag)
57                leftCatalog();
58            else {
59                var section = $(element).find('.center-section');
60                if(!section.find('> ul.nav-items').hasClass('flex-wrap'))
61                    section.find('> ul.nav-items').addClass('flex-wrap');
62                if(section.hasClass('overflow-hidden'))
63                    section.removeClass('overflow-hidden');
64                section.attr('style', '');
65
66                $(element).find('.btn-mobile').on('click touchend', function(e) {
67                    e.stopPropagation();
68                    e.preventDefault();
69                    plugin.showOffcanvas();
70                    mobileMode();
71                    document.body.style.overflow = 'hidden';
72                });
73
74                $(element).find('.sf-close').on('click touchend', function() {
75                    plugin.hideOffcanvas();
76                    document.body.style.overflow = 'auto';
77                });
78
79                if(plugin.settings.fullScreenFlag) {
80                    $(element).find(".btn-full-screen").on('click touchend', function() {
81                        fullScreenMode();
82                        plugin.showNav();
83                    });
84                }
85
86                $(element).find(".btn-search, .sf-close").on("click touchend keyup", function(e) {
87                    e.stopPropagation(); 
88                    e.preventDefault();
89                    var code = e.keyCode || e.which;
90                    if(e.type === "click" || e.type === "touchend" || (e.type === "keyup" && code == 13))
91                        plugin.toggleSearch();
92                    else if(code == 9) $(e.target).blur();
93                    
94                });
95                
96                if(plugin.settings.transformFlag) {
97                    widthW = windowWidth();
98                    heightW = windowHeight();
99                    
100                    $(window).resize(function() {
101                        if(windowWidth() < widthW || windowHeight() < heightW) {
102                            transformMode(true);                                
103                            transformMode(false);                        
104                        } else if(windowWidth() > widthW || windowHeight() > heightW) {
105                            transformMode(true);
106                            transformMode(false);
107                        }                    
108                        widthW = windowWidth();
109                        heightW = windowHeight();
110
111                        if(plugin.settings.horizontalSubmenu) {
112                            //horizontalMode();
113                        }
114                    });
115                    transformMode(false);
116                }
117                if(plugin.settings.fixedFlag) fixedMode();
118                if(plugin.settings.overlay) $(element).append('<div class="nav-overlay"></div>');
119                if(plugin.settings.transferHeadingItem) transferItem();
120
121                if(plugin.settings.horizontalSubmenu) {
122                    //horizontalMode();
123                }
124                
125            }
126            //});
127            
128
129        };
130
131        var transferItem = function() {
132            $(element).find('.transfer-item').css('white-space', 'normal');
133        }
134
135        // show the overlay panel
136        var showOverlay = function(){
137            if(plugin.settings.hideScrollBar) $("body").addClass("no-scroll");
138            
139            if(plugin.settings.overlay){
140                $(element).find(".nav-overlay")
141                    .css("background-color", plugin.settings.overlayColor)
142                    .fadeIn(300)
143                    .on("click touchend", function(){
144                        plugin.hideOffcanvas();
145                         document.body.style.overflow = 'auto';                   
146                    });
147            }
148        };
149        
150        // hide the overlay panel
151        var hideOverlay = function(){
152            if(plugin.settings.hideScrollBar){
153                $("body").removeClass("no-scroll");
154            }
155            if(plugin.settings.overlay){
156                $(element).find(".nav-overlay").fadeOut(400);
157            }
158        };
159 
160        // show offcanvas
161        plugin.showOffcanvas = function(){
162            showOverlay();
163            if(plugin.settings.offCanvasSide == "left"){
164                $(element).find(".center-section").css("transition-property", "left").addClass("open-mobile");
165                
166                var mobileWidth = windowWidth();
167
168                var textMenu = $('ul.transform-submenu').html();
169                var navMenu = $('ul.transform-submenu > li');
170                var textMenu2 = $('ul.nav-menu').slice(0, (navMenu.length - 1)).html();
171                if(textMenu) {
172                    $('ul.transform-submenu').html('');
173                    $('ul.transform-submenu').html(textMenu2 + textMenu);
174                    $('.transform-submenu').detach() 
175                } 
176                else textMenu = $('ul.transform-submenu').html();
177            }
178            else $(element).find(".center-section").css("transition-property", "right").addClass("open-mobile");
179        };
180        
181        // hide offcanvas 
182        plugin.hideOffcanvas = function() {          
183            $(element).find(".center-section").removeClass("open-mobile")
184                .on("webkitTransitionEnd moztransitionend transitionend oTransitionEnd", function(){
185                    $(element).find(".center-section")
186                        .css("transition-property", "none")
187                        .off();
188            });
189
190            $(element).find(".mobile-level").removeClass("open-mobile")
191                .on("webkitTransitionEnd moztransitionend transitionend oTransitionEnd", function(){
192                    $(element).find(".mobile-level")
193                        .css("transition-property", "none")
194                        .off();
195            });
196            hideOverlay();
197        };
198        
199        // toggle offcanvas
200        plugin.toggleOffcanvas = function(){
201            if(windowWidth() <= plugin.settings.mobileBreakpoint){
202                if($(element).find(".center-section").hasClass("open-mobile")) plugin.hideOffcanvas();
203                else plugin.showOffcanvas();
204            }
205        };
206        
207        // show/hide the search form
208        plugin.toggleSearch = function(){
209            if($(element).find(".nav-search").find("form").css("display") == "none"){
210                $(element).find(".nav-search").find("form").css('display', 'flex');
211                $(element).find(".nav-search").find("input").focus();
212                if(plugin.settings.searchContainer) $(element).css('position', 'relative');
213            }
214            else{
215                $(element).find(".nav-search").find("form").css('display', 'none');
216                $(element).find(".nav-search").find("input").blur();
217                if(plugin.settings.searchContainer) $(element).css('position', 'static');
218            }
219        };
220// ========= FULL.SCREEN.MENU ========= //
221        var fullScreenMode = function() {
222            plugin.showNav = function() {
223                $('.sf-nav-full-screen').addClass(plugin.settings.animation).fadeIn(300, function(){
224                    $('html,body').css('overflow', 'hidden');
225                });
226                adjustMenuPadding();
227            }
228
229            var subElement = function(el) {
230                var strSubLevel = '';
231                $subElem = $(el).children('div.mobile-level').children('ul.submenu-items');
232
233                if($subElem.length > 0) {
234                    //console.log($subElem.children('li')[0]);
235                    var index = 0;
236                    $subElem.children('li').each(function() {
237                        if(index != 0) {
238                            $subLevelUp = $(this);
239                            if($(this).find('ul.submenu-items').length > 0) {
240
241                            }
242                            strSubLevel += '<li>' + $(this).html().substr(0, ($(this).html().indexOf('</span>', 0) + 7)) + '</span>';
243                            if($subLevelUp.children('div.mobile-level').children('ul.submenu-items').length > 0) {
244                                strSubLevel += '<span class="submenu-indicator item-icon"><i class="fal fa-angle-down" aria-hidden="true"></i></span></a>'
245                                            + '<ul class="sf-full-screen-sub-level">' + subElement($subLevelUp) + '</ul></li>'
246                            } else strSubLevel += '</a></li>';
247                        }
248                         index++;
249                    });
250
251                    strSubLevel += '</li>';
252
253                    return strSubLevel;
254                }
255                return strSubLevel;
256            }
257
258            plugin.initFullScreen = function() {
259                var fullScreenWindow = '<div class="sf-nav-full-screen ' + plugin.settings.fullScreenTheme + '">'
260                                    + '<div class="sf-nav-full-screen-header">';
261
262                $strE = $(element).find('.left-section').find('.nav-brand');
263                if($strE.length > 0) {
264                    fullScreenWindow += '<div class="sf-nav-full-screen-brand">' + $strE[0].outerHTML + '</div>';
265                }
266                fullScreenWindow += '<button class="sf-close t-1 sf-close-center"></button>';
267                fullScreenWindow += '</div><div class="sf-nav-full-screen-content">'
268                                + '<div class="sf-nav-full-screen-lists sf-scroll">';
269
270                $(element).children('section.center-section')
271                            .children('ul.nav-items')
272                            .find('> li').each(function() {
273                                var  trans = this.querySelector('a.btn-transform');
274                                if(trans != null) {
275                                    $(this).children('ul.transform-submenu').find('> li').each(function() {
276                                        var tagLi = '<ul class="sf-nav-full-screen-list">'
277                                            + '<li class="sf-nav-full-screen-list-header">'
278                                            + $(this).html().substr(0, ($(this).html().indexOf('</span>', 0) + 7))
279                                            + '</span></a></li>';
280                                        $flagSubL = $(this);
281                                        tagLi += subElement($flagSubL);
282                                        tagLi += '</ul>';
283                                        fullScreenWindow += tagLi;
284                                    });
285                                } else {
286                                    var tagLi = '<ul class="sf-nav-full-screen-list">'
287                                        + '<li class="sf-nav-full-screen-list-header">'
288                                        + $(this).html().substr(0, ($(this).html().indexOf('</span>', 0) + 7))
289                                        + '</span></a></li>';
290                                    $flagSubL = $(this);
291                                    tagLi += subElement($flagSubL);
292                                    tagLi += '</ul>';
293                                    fullScreenWindow += tagLi;
294                                }
295                            });
296                      fullScreenWindow += '</div></div></div>';
297                      $('body').append(fullScreenWindow); 
298            };
299
300            plugin.initEvents = function() {
301                var opts = this.settings;
302                $elem = $('.sf-nav-full-screen-lists');
303                $elem.children("ul").find("span.item-icon").bind("click touchend", function(e){
304                    
305                    e.stopPropagation(); 
306                    e.preventDefault();
307    
308                    if($(this).parent().siblings('.sf-full-screen-sub-level').length > 0) {
309                        if($(this).parent().siblings('.sf-full-screen-sub-level').css("display") == "none") {
310                            $(this).parent().siblings('.sf-full-screen-sub-level').css("display", 'flex');
311                            $(this).addClass("submenu-indicator-minus");
312                            return false;
313                        }
314                        else $(this).parent().siblings('.sf-full-screen-sub-level').css("display", 'none');
315                        if($(this).hasClass("submenu-indicator-minus")) $(this).removeClass("submenu-indicator-minus");
316                    }
317                });
318            };
319            
320            plugin.hideNav = function() {
321                $('.sf-nav-full-screen').removeClass('zoom').fadeOut('300');
322                $('html,body').css('overflow', 'auto');  
323            }
324            
325            var buttonHideNav = function() {
326                $('.sf-nav-full-screen').children('.sf-nav-full-screen-header').children(".sf-close").on("click touchend", function() {
327                    plugin.hideNav();
328                });
329            }
330    
331            var adjustMenuPadding = function() {
332                var contentHeight = $(element).find(".sf-nav-full-screen-content").innerHeight();
333                var innerElementsHeight = $(element).find(".full-screen-nav-menu, .sf-nav-full-screen-lists, .full-screen-nav-boxes, .full-screen-nav-circles, .full-screen-nav-general").innerHeight();
334                if(innerElementsHeight > contentHeight){
335                    $(element).find(".sf-nav-full-screen-content").css("padding-top", contentDefaultPaddingTop);
336                }
337                else{
338                    $(element).find(".sf-nav-full-screen-content").css("padding-top", (contentHeight - innerElementsHeight) / 2);
339                }
340            }
341
342            plugin.initFullScreen();
343            plugin.initEvents();
344            buttonHideNav();
345
346            $(window).resize(function(){
347                adjustMenuPadding();
348            });
349            
350        }
351// ========= END FULL.SCREEN.MENU ========= //
352// ========= FLEX.MENU ========= //
353        var transformMode = function(undo) {
354            var $this = $(element).children('.center-section').children('ul'),
355            $items = $this.find('> li'),
356            $firstItem = $items.first(),
357            $lastItem = $items.last(),
358            numItems = $this.find('li').length,
359            firstItemTop = Math.floor($firstItem.offset().top),
360            firstItemHeight = Math.floor($firstItem.outerHeight(true)),
361            $lastChild,
362            keepLooking,
363            $moreItem,
364            $moreLink,
365            numToRemove,
366            allInPopup = false,
367            $menu,
368            i;
369
370            function needsMenu($itemOfInterest) {
371                if($itemOfInterest !== undefined) {
372                    if((Math.ceil($itemOfInterest.offset().top)) >= (firstItemTop + firstItemHeight))
373                        return true;
374                    else return false;
375                } else return false;
376                
377            }
378            if(needsMenu($lastItem) && numItems > plugin.settings.transformThreshold && !undo && $this.is(':visible')) {
379                if(windowWidth() > plugin.settings.mobileWidth) {
380                    var $popup = $('<ul class="transform-submenu nav-dropdown nav-submenu m-0 p-0 flex-column mobile-level ' + plugin.settings.transformTheme + '"></ul>');
381                    $popup.addClass('');
382                    for(i = numItems; i > 1; i--) {
383                        $lastChild = $this.find('> li:last-child');
384                        keepLooking = (needsMenu($lastChild));
385                        if((i - 1) <= plugin.settings.transformCutoff) {
386                            $(this.children().get().reverse()).appendTo($popup);
387                            allInPopup = true;
388                            break;
389                        }
390                        if(!keepLooking) {
391                            break;
392                        } else {
393                            $lastChild.appendTo($popup);
394                        }
395                    }
396                    if(allInPopup) {
397                        $this.append('<li class="menu-item nav-item transform-allInPopup"><a href="#" class="btn-transform ' +
398                            plugin.settings.transformEffectHover + ' ' + plugin.settings.transformPaddingOne + '">' + 
399                            plugin.settings.iconMenu + '</a></li>');
400                    } else {
401                        $this.append('<li class="menu-item nav-item"><a href="#" class="btn-transform item-link ' +
402                                    plugin.settings.transformEffectHover + ' ' + plugin.settings.transformPaddingOne + '"><span class="item-icon">' + 
403                                    plugin.settings.iconMenu + '</span></a></li>');
404                    }
405                    $moreItem = $this.find('> li.menu-item');//.find('.mobile-level');
406
407                    if(needsMenu($moreItem)) {
408                        $this.find('> li:nth-last-child(2)').appendTo($popup);
409                    }
410
411                    $popup.children().each(function(i, li) {
412                        $popup.prepend(li);
413                    });
414                    $moreItem.append($popup);
415                    $moreLink = $this.find('> li.menu-item > a');
416                    $moreLink.click(function(e) {
417                        var $activeMenus,
418                            $menusToCollapse;
419                        $activeMenus = $('li.menu-item.active');
420                        $menusToCollapse = $activeMenus.not($moreItem);
421                        $menusToCollapse.removeClass('active').find('> ul').css('display', 'none');
422                        $popup.toggle();
423                        $moreItem.toggleClass('active');
424                        e.preventDefault();
425                    });
426                }
427                else if(windowWidth() <= (plugin.settings.mobileWidth)) {
428                    $menu = $this.find('ul.transform-submenu');
429                    numToRemove = $menu.find('li').length;
430                    for(i = 1; i <= numToRemove; i++) {
431                        $menu.find('> li:first-child').appendTo($this);
432                    }
433                    $menu.remove();
434                    $this.find('> li.menu-item').remove();
435                }
436            }
437            else if (undo && $this.find('ul.transform-submenu')) {
438                if(windowWidth() > (plugin.settings.mobileWidth)) {
439                    $menu = $this.find('ul.transform-submenu');
440                    numToRemove = $menu.find('li').length;
441                    for(i = 1; i <= numToRemove; i++) {
442                        $menu.find('> li:first-child').appendTo($this);
443                    }
444                    $menu.remove();
445                    $this.find('> li.menu-item').remove();
446                }
447            }
448        };
449        // ========= FIXED.MENU ========= //
450        var fixedMode = function() {
451
452            var navF = document.querySelector(plugin.settings.fixedId),
453                location = navF.getBoundingClientRect(),
454                locationStart = plugin.settings.topSpace ? plugin.settings.topSpace : 0,
455                classF = plugin.settings.fixedClass ? new String(plugin.settings.fixedClass) : "fixed-top";
456                classF += " transition";
457                var arrClassF = classF.split(" "),
458                lastScroll = 0;
459            
460
461            if(location.y < locationStart) {
462                for(var k = 0; k < arrClassF.length; k++) navF.classList.add(arrClassF[k]);
463                navF.style.top = 0;
464            } else for(var k = 0; k < arrClassF.length; k++) navF.classList.remove(arrClassF[k]);
465
466            document.addEventListener("scroll", function(e) {
467                var location = navF.getBoundingClientRect(),
468                    locationContainer = navF.parentNode.getBoundingClientRect();
469                if(location.y < locationStart) {
470                    for(var k = 0; k < arrClassF.length; k++) navF.classList.add(arrClassF[k]);
471                    navF.style.top = '0';
472                } else if(location.y <= locationContainer.y) for(var k = 0; k < arrClassF.length; k++) navF.classList.remove(arrClassF[k]);
473
474            
475            });
476        };
477
478        var leftCatalog = function() {
479            $(element).children("ul").find("span.submenu-indicator").bind("click touchend", function(e) {
480                e.stopPropagation(); 
481                e.preventDefault();
482                if($(this).parent().siblings('div.catalog-submenu').children(".submenu").length > 0) {
483                    if($(this).parent().siblings('div.catalog-submenu').children(".submenu").css("display") == "none") {
484                        $(this).parent().siblings('div.catalog-submenu').children(".submenu").css('display', 'block');
485                        $(this).parent().parent().parent().children(".submenu").css('display', 'none');
486                        $(this).parent().parent().parent().children(".submenu").siblings("a").removeClass("submenu-indicator-minus");
487                        $(this).parent().parent().parent().children(".submenu").siblings("a").children('i').css('transform', 'rotate(-90deg)');
488                        $(this).children('i').css('transform', 'rotate(0deg)');
489                        $(this).addClass("submenu-indicator-minus");
490                        return false;
491                    }
492                    else {
493                        $(this).parent().siblings('div.catalog-submenu').children(".submenu").delay(0).slideUp(0);
494                    }
495                    if($(this).hasClass("submenu-indicator-minus")) {
496                        $(this).removeClass("submenu-indicator-minus");
497                        $(this).children('i').css('transform', 'rotate(-90deg)');
498                    }
499                }
500            });
501        }
502
503//========== ========= //
504        
505// ========= END FIXED.MENU ========= //
506// ========= MOBILE.PUSH.MENU ========= //
507        var mobileMode = function() {
508            var $this = $(element),
509                $level = $this.find('> .mobile-level'),
510                i = 0;
511            function initEventClick(el, levelM) {
512                if($(el).attr('data-level') === levelM) {
513
514                $(el).parent().parent().find('> li').find('> a').each(function() {
515                        if(this.querySelector('.item-icon')) {
516							
517							 $(this).on('click touchstart', function(e) {
518                                 plugin.settings.positionY = $(this).position().top;
519                            });
520							
521                            $(this).on('click touchend', function(e) {
522                                e.stopPropagation();
523                                e.preventDefault();
524								if(Math.abs(plugin.settings.positionY - $(this).position().top)<10){
525									
526									var mLevel = this.parentNode.querySelector('.mobile-level');
527									mLevel.style.transitionProperty = 'left';
528									mLevel.classList.add('open-mobile');
529									var back = function() {
530										$(mLevel).removeClass("open-mobile")
531											.on("webkitTransitionEnd moztransitionend transitionend oTransitionEnd", function(){
532												$(element).find(".mobile-level")
533													.off();
534										});
535									}
536									mLevel.querySelector('a').addEventListener('click', back);
537									
538							    }
539                            });
540                        }
541                    });
542                    
543                }
544            }
545
546            function levelInc(i, el) {
547                i++;
548                var levelSub = $(el).children('ul')
549                    .children('li')
550                    .children('.mobile-level');
551                if(levelSub.length > 0) {
552                    $(levelSub).attr('data-level', 'level-mobile-' + i);
553                    $(levelSub).each(function() {
554                        levelInc(i, this);
555                    });
556                    initEventClick(levelSub, 'level-mobile-' + i);                    
557                }
558                return 0;
559            }
560
561            if($level.length > 0) {
562                $level.each(function() {
563                    i++;
564                    $(this).attr('data-level', 'level-mobile-' + i);
565                    /*if(this.classList.contains('d-flex')) {
566                        this.classList.remove('d-flex');
567                        $(this).children('ul').removeClass('container');
568                    }*/
569                    levelInc(i, this);
570                });
571            }
572
573
574        };
575
576        /*var horizontalMode = function() {
577
578            var ul = $(element).find('.nav-submenu');
579            var ulT = $(element).find('.transform-submenu');
580
581            var ulHeight = ulT.height() || 0;
582
583            $(ul).each(function() {
584                if($(this).height() > ulHeight) ulHeight = $(this).height();
585            });
586
587
588            if(windowWidth() > 767) {
589
590                if(ulT !== undefined)
591                    $(ulT).css('height', ulHeight);
592
593                    $(ul).each(function() {
594                        $(this).css('height', ulHeight);
595                    });
596
597                
598
599                var $this = $(element),
600                    $level = $this.find('> .mobile-level'),
601                    i = 0;
602
603                function initEventClick(el, levelM) {
604                    if($(el).attr('data-level') == levelM && $(el).attr('data-level') !== 'level-mobile-1') {
605                        var dataLevel = $(el).parent().parent();
606                        
607                        if($(dataLevel).attr('data-level') !== 'level-mobile-1') {
608
609                            $(dataLevel).find('> li').find('> a').each(function() {
610
611                                $(this).on('click touchend', function(e) {
612                                    e.stopPropagation();
613                                    e.preventDefault();
614                                    var mLevel = this.parentNode.querySelector('.mobile-level');
615                                    mLevel.style.transitionProperty = 'left';
616                                    mLevel.classList.add('open-horizontal');
617                                    var back = function() {
618                                        $(mLevel).removeClass("open-horizontal")
619                                            .on("webkitTransitionEnd moztransitionend transitionend oTransitionEnd", function(){
620                                                $(element).find(".mobile-level")
621                                                    .off();
622                                        });
623                                    }
624                                    mLevel.querySelector('a').addEventListener('click', back);
625                                });
626
627                            });
628                        }
629                        else {
630                            $(dataLevel).find('> li').find('> a').each(function() {
631                                $(this).unbind('click');
632                            });
633                        }
634
635                        
636                    }
637                }
638
639                function levelInc(i, el) {
640                    i++;
641                    if($(el).hasClass('transform-submenu')) {
642                        var levelSub = $(el).children('li')
643                            .children('.mobile-level');
644                        $(el).attr('data-level', 'level-mobile-' + (i - 1));
645                    } else {
646                        var levelSub = $(el).children('ul')
647                            .children('li')
648                            .children('.mobile-level');
649                        $(el).find('> ul').attr('data-level', 'level-mobile-' + (i - 1));
650                    }
651                    
652
653                    if(levelSub.length > 0) {
654                        $(levelSub).attr('data-level', 'level-mobile-' + i);
655                        $(levelSub).each(function() {
656                            levelInc(i, this);
657                        });
658                        initEventClick(levelSub, 'level-mobile-' + i);                    
659                    }
660                    return 0;
661                }
662
663                if($level.length > 0) {
664                    $level.each(function() {
665                        i++;
666                        $(this).attr('data-level', 'level-mobile-' + i);
667                        levelInc(i, this);
668                    });
669                }
670
671            } else {
672                if(ulT !== undefined)
673                    $(ulT).css('heigth', '100%');
674                $(ul).each(function() {
675                    $(this).css('height', '100%');
676                });
677            }
678
679        };*/
680// ========= END MOBILE.PUSH.MENU ========= //
681
682// =========  WINDOW WIDTH ========= //
683        var windowWidth = function() {
684            return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
685        };
686// =========  WINDOW HEIGHT ========= //
687        var windowHeight = function() {
688            return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
689        };
690
691        plugin.init();
692    };
693
694    $.fn.sfNavMulti = function(options) {
695        return this.each(function() {
696            if(undefined === $(this).data('sfNavMulti')) {
697                var plugin = new $.sfNavMulti(this, options);
698                $(this).data('sfNavMulti', plugin);
699            }
700        });
701    };
702
703})(jQuery, window, document);

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.