define(['jquery','jquery/ui','mage/menu'
],function($){$.widget('techdivision.menu',$.mage.menu,{options:{mediaBreakpoint:'(max-width: 1023px)',pxAdditionLevel2:30,pxAdditionLevelCms:60,cssItemHasFocus:'ui-menuitem-focus',showDelay:200,hideDelay:0,delay:100,},_toggleMobileMode:function(){var subMenus,parentElement,loader,clickLinked,nav,topLevel,secondLevel,allSubs;nav=$('.navigation');allSubs=nav.find('.submenu');topLevel=nav.find('.level-top.has-children');secondLevel=nav.find('.level1');parentElement=nav.find('.has-children');allSubs.removeClass('touch-active');allSubs.hide();loader=$('
').addClass('loader');loader.hide();$('.nav-sections').append(loader);$('.nav-close').on('click',function(){$('html').removeClass('nav-before-open nav-open');});clickLinked=nav.find('.ui-menu-item:not(.has-children)');clickLinked.click(function(){$('.loader').show();});$(this.element).off('mouseenter mouseleave');this._on({'click .ui-menu-item:has(a)':function(event){var target;event.preventDefault();target=$(event.target).closest('.ui-menu-item');if(!target.hasClass('level-top')||!target.has('.ui-menu').length){window.location.href=target.find('> a').attr('href');}},'click .ui-menu-item:has(.ui-state-active)':function(event){this.collapseAll(event,true);}});subMenus=this.element.find('.has-children');$.each(subMenus,$.proxy(function(index,item){var category=$(item).find('> a span').not('.ui-menu-icon').text(),categoryUrl=$(item).find('> a').attr('href'),menu=$(item).find('> .ui-menu');this.categoryBackLink=$('').attr('href',categoryUrl).text(category).on('click',function(){$('.loader').show();});this.categoryBackLinkParent=$('
  • ').addClass('category-back').html(this.categoryBackLink);if(menu.find('.category-back').length===0){menu.prepend(this.categoryBackLinkParent);} $('.category-back > a').on('click',function(event){event.preventDefault();});},this));parentElement.click(function(e){var that=$(this);if(that.children('.submenu').hasClass('visible')){e.stopPropagation();that.children('.submenu').removeClass('visible');}else{that.children('.submenu').addClass('visible');return false;}});},_toggleTabletMode:function(){var nav=document.querySelector('.navigation');var topLevel=nav.querySelectorAll('.level-top.has-children');var secondLevel=nav.querySelectorAll('.level1');var parentElement=nav.querySelectorAll('.has-children');var clickLinked=nav.querySelectorAll('.ui-menu-item:not(.has-children)');var widget=this;$(clickLinked).off('click');$(parentElement).off('click');$(this.element).off('click');var handleTopLevelTouch=function(e){e.stopPropagation();var submenu=$(this).children('.submenu');if(submenu.hasClass('touch-active')){submenu.removeClass('touch-active');}else{$('.submenu').removeClass('touch-active');submenu.addClass('touch-active');} e.preventDefault();widget._changeMenuHeight(submenu);if(submenu.hasClass('touch-active')){widget._addLayerOverContent(0);}else{widget._removeLayerOverContent(0);} setTimeout(function(){widget._checkMenuHeightWithCMS(submenu);},widget.options.showDelay);};var handleSecondLevelTouch=function(e){e.stopPropagation();var submenu=$(this).children('.submenu');if(submenu.hasClass('touch-active')){submenu.removeClass('touch-active');}else{$(this).parent().find('.submenu').removeClass('touch-active');submenu.addClass('touch-active');} e.preventDefault();var target=$(e.target).closest('.ui-menu-item');if(!target.hasClass('has-children')){window.location.href=target.find('> a').attr('href');}};topLevel.forEach(function(element){element.addEventListener('touchstart',function(e){e.stopPropagation();},{passive:true});element.addEventListener('touchstart',handleTopLevelTouch,{passive:false});});secondLevel.forEach(function(element){element.addEventListener('touchstart',function(e){e.stopPropagation();},{passive:true});element.addEventListener('touchstart',handleSecondLevelTouch,{passive:false});});},_toggleDesktopMode:function(){var categoryBackLink,html,loader;this._toggleTabletMode();var widget=this;this._on({'mousedown .ui-menu-item > a':function(event){event.preventDefault();},'click .ui-state-disabled > a':function(event){event.preventDefault();},'click .ui-menu-item:has(a)':function(event){var target=$(event.target).closest('.ui-menu-item');if(!this.mouseHandled&&target.not('.ui-state-disabled').length){this.select(event);if(!event.isPropagationStopped()){this.mouseHandled=true;} if(target.has('.ui-menu').length){this.expand(event);}else if(!this.element.is(':focus')&&$(this.document[0].activeElement).closest('.ui-menu').length){this.element.trigger('focus',[true]);if(this.active&&this.active.parents('.ui-menu').length===1){clearTimeout(this.timer);}}}},'mouseenter .ui-menu-item':function(event){var target=$(event.currentTarget),submenu=this.options.menus,ulElement,ulElementWidth,width,targetPageX,rightBound;if(target.has(submenu)){ulElement=target.find(submenu);ulElementWidth=ulElement.outerWidth(true);width=target.outerWidth()*2;targetPageX=target.offset().left;rightBound=$(window).width();this._changeMenuHeight(target);if(ulElementWidth+width+targetPageX>rightBound){ulElement.addClass('submenu-reverse');} if(targetPageX-ulElementWidth<0){ulElement.removeClass('submenu-reverse');}} target.siblings().children('.ui-state-active').removeClass('ui-state-active');target.addClass(this.options.cssItemHasFocus);this.focus(event,target);if(target.hasClass('level0')){if(target.hasClass('has-children')){this._addLayerOverContent();}else{widget._removeLayerOverContent();}} setTimeout(function(){widget._checkMenuHeightWithCMS(target);},widget.options.showDelay);},'mouseleave .ui-menu-item':function(event){var target=$(event.currentTarget);target.removeClass(this.options.cssItemHasFocus);},'mouseleave':function(event){this.collapseAll(event,true);widget._removeLayerOverContent();},'mouseleave .ui-menu':'collapseAll'});html=$('html');categoryBackLink=this.element.find('.category-back');categoryBackLink.remove();loader=$('.nav-sections').find('.loader');loader.remove();if(html.hasClass('nav-open')){widget._removeLayerOverContent();}},_changeMenuHeight:function(element){var childMenu=element.find('.submenu');parentMenu=childMenu.parents('.submenu');if(childMenu.hasClass('level2')&&(childMenu.outerHeight()>parentMenu.outerHeight())){parentMenu.css('height',childMenu.outerHeight()+this.options.pxAdditionLevel2);}},_checkMenuHeightWithCMS:function(element){var childMenu=element.find('.submenu');if(childMenu.hasClass('level1')){var menuCmsBlock=childMenu.find('.block > div');var heightCMSBlock=menuCmsBlock.outerHeight()+this.options.pxAdditionLevelCms;if(heightCMSBlock>childMenu.outerHeight()){childMenu.css('height',heightCMSBlock);}}},_expandChildMenu:function(element){},_addLayerOverContent:function(myDelay){var html=$('html');if(typeof myDelay=='undefined'){myDelay=this.options.showDelay;} html.addClass('nav-before-open');this.layerShowTimer=this._delay(function(){html.addClass('nav-open');},myDelay);},_removeLayerOverContent:function(myDelay){clearTimeout(this.layerShowTimer);var html=$('html');if(typeof myDelay=='undefined'){myDelay=this.options.hideDelay;} setTimeout(function(){html.removeClass('nav-before-open');html.removeClass('nav-open');},myDelay);},_startOpening:function(submenu){clearTimeout(this.timer);if(submenu.attr("aria-hidden")!=="true"){return;} if($('html').hasClass('nav-before-open')){this._open(submenu);}else{this.showTimer=this._delay(function(){this._open(submenu);},this.options.showDelay);}},collapseAll:function(event,all){clearTimeout(this.showTimer);this._super(event,all);},collapse:function(event){this._super(event);clearTimeout(this.showTimer);},blur:function(event,fromFocus){this._super(event,fromFocus);clearTimeout(this.showTimer);}});$.widget('techdivision.navigation',$.mage.navigation,{options:{breakpoint:1023}});return $.techdivision.menu;return $.techdivision.navigation;});