(function ($) { $.fn.measure = function () { const elementCopy = $(this).clone(false); elementCopy.css({visibility: 'hidden', position: 'absolute'}); elementCopy.appendTo('body'); const result = elementCopy.innerWidth(); elementCopy.remove(); return result; }; $.fn.totalWidth = function () { let total = 0; $(this).each(function (_index, element) { total += $(element).innerWidth(); }); return total; }; })(jQuery); (function ($) { function handleMenuButtonVisibility(index) { const menuButton = $('.menu_button').eq(index); const menuList = $('.menu_list').eq(index); if (menuList.children().length > 0) { menuButton.removeClass('hidden'); } else { menuButton.addClass('hidden'); menuList.parent().animate({'height': 'hide'}, "fast"); $('.menu_backdrop').eq(index).hide(); } } function initMenu() { let menu, menuList, menuItems; $('.menu_links').each(function (index) { menu = $(this); menuList = $('.menu_list').eq(index); menuItems = menu.children('a'); let menuItemsTotalWidth = menu.find('.menu_button').innerWidth(); let childWidth, isChildListItem; menuItems.each(function () { childWidth = $(this).innerWidth(); $(this).removeClass('hidden'); isChildListItem = menuItemsTotalWidth + childWidth > menu.width() || menuList.children().length > 0 || window.innerWidth <= 400; if (isChildListItem) { menuList.append($(this)); $(this).wrap('
  • '); } else { menuItemsTotalWidth += childWidth; } handleMenuButtonVisibility(index); }); }); $('.menu_button, .menu_list_wrapper').click(function () { const classes = $(this).attr('class'); const index = $(`[class='${classes}']`).index(this); const menuListWrapper = $('.menu_list_wrapper').eq(index); if (window.innerWidth <= 500) { menuListWrapper.animate({'width': 'toggle'}, 300, "linear"); } else { menuListWrapper.animate({'height': 'toggle'}, "fast"); } $('.menu_backdrop').eq(index).fadeToggle(500); }); } window.setTimeout(function () { initMenu(); }, 250); $(window).on('resize', function () { let menu, menuList; $('.menu_links').each(function (index) { menu = $(this); menuList = $('.menu_list').eq(index); let menuItemsTotalWidth = menu.children().totalWidth(); if (menu.width() <= menuItemsTotalWidth || window.innerWidth <= 400) { let menuItems = menu.children('a'); let menuItem, menuItemWidth; while (menuItems.length > 0) { menuItem = menuItems.last(); menuItemWidth = menuItem.measure(); menuList.prepend(menuItem); menuItem.wrap('
  • '); menuItemsTotalWidth -= menuItemWidth; if (menu.width() > menuItemsTotalWidth && window.innerWidth > 400) { break; } menuItems = menu.children('a'); } } else { let menuListItems = menuList.children(); let listItem, listItemWidth; while (menuListItems.length > 0) { listItem = menuListItems.find('a').first(); listItemWidth = listItem.measure(); if (menuItemsTotalWidth + listItemWidth < menu.width()) { listItem.unwrap(); $('.menu_button').eq(index).before(listItem); menuItemsTotalWidth += listItemWidth; } else { break; } menuListItems = menuList.children(); } } handleMenuButtonVisibility(index); }); }); })(jQuery);x

    Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586