(function($) { $(document).ready(function() { var _timeout = 350; var $menu = $('#wp-megamenu-primary-left > div > ul.wp-megamenu'); // Add link title for accessibility purposes. $('.wpmm_mobile_menu_btn:not(.menu-active)').attr('title', 'Open Menu'); // megamenu plugin isn't preserving the classes in the menu items $('.no-left-margin').removeClass('no-left-margin').closest('li').addClass('no-left-margin'); var $search = $('li.menu-item.search, li.menu-item.mobile-search'); $search.click(function(e) { e.preventDefault(); toggleSearchModal(); return false; }); $('#search-modal .search-close').click(function(e) { e.preventDefault(); toggleSearchModal(); return false; }); $('.mobile-menu-header .mobile-close').click(function(e) { // pass through the click to the actual mobile menu button $('.wpmm_mobile_menu_btn').click(); }); $(document).keyup(function(e) { if (e.keyCode === 27) { if($('#search-modal').is(':visible')) { toggleSearchModal(); } } }); function toggleSearchModal() { if($('#search-modal').is(':visible')) { $('#search-modal').css('display', 'none'); } else { $('#search-modal').css('display', 'flex'); $('#search-modal .search-form__input').focus(); } } $(window).resize(function() { $('.tertiary-menu-parent.calculated').each(function(idx, item) { $(item).removeClass('calculated'); $(item).children('.tertiary-menu').css({ top: 'auto' }); }); if(window.hasOwnProperty('resizeBlankSeparator') && typeof window.resizeBlankSeparator === "function") { window.resizeBlankSeparator(); } }); $('.wpmm_mobile_menu_btn').click(function(e) { if(!$(this).hasClass('menu-active')) { var $li = $menu.find('.cta .wp-megamenu-sub-menu').closest('li'); if($li.length) { handleMobileMenuToggle($($li.get(0))); } } }); function addActiveHover($item) { $item.addClass('active-hover'); //$item.siblings('.active-hover').removeClass('active-hover'); $item.siblings('.initial-open').removeClass('initial-open'); var current_width = parseInt($(window).width()); if (current_width > window.wpmm_responsive_breakpoint) { var $tm = $item.find('.tertiary-menu-parent:not(.calculated)'); var $tmg = $item.find('.tertiary-menu-grandparent'); var tmg_height = $tmg.height(); var tmp_height = $item.height(); if($tm.length) { var first_offset = 0; $tm.each(function(idx, item) { var $item = $(item); var item_offset = $item.offset().top; if(!first_offset) { first_offset = item_offset; } $tm = $item.children('.tertiary-menu'); var tm_height = $tm.height(); var tm_offset = -((tm_height - tmp_height) / 2); var relative_tmp_offset = item_offset - first_offset; if((tm_offset + relative_tmp_offset) < 0) { tm_offset = -relative_tmp_offset; } else if(relative_tmp_offset + tm_height + tm_offset > tmg_height) { var tm_height_diff = tmg_height - tm_height; if(tm_height_diff < 0) tm_height_diff = 0; tm_offset = tm_height_diff - relative_tmp_offset - tmp_height; } $tm.css({ top: tm_offset + 'px' }); $item.addClass('calculated'); }); } } } $('.wp-megamenu-sub-menu').find('.wp-megamenu-sub-menu').find('.wp-megamenu-sub-menu').find('.wp-megamenu-sub-menu').each(function(index, item) { var $item = $(item); var $parent = $item.closest('li'); $item.addClass('tertiary-menu'); $item.children('li').addClass('tertiary-menu-child'); $parent.addClass('tertiary-menu-parent'); $parent.closest('.wp-megamenu-sub-menu').addClass('tertiary-menu-grandparent'); $item.attr('data-menu-parent', $parent.attr('id')); }); $('.tertiary-menu-parent').mouseenter(function(e) { $(this).closest('.wp-megamenu-sub-menu').addClass('tertiary-menu-grandparent'); }); $('.tertiary-menu-parent').mouseleave(function(e) { $(this).closest('.wp-megamenu-sub-menu').removeClass('tertiary-menu-grandparent'); }); var $sub_menus = $('#wp-megamenu-primary-left .wpmm-nav-wrap ul.wp-megamenu > li > div > ul > li > ul.wp-megamenu-sub-menu'); $.each($sub_menus, function(idx, item) { var $tertiary_menu_parents = $(item).find('.tertiary-menu-parent'); if($tertiary_menu_parents.length) { var $first_tertiary_menu_parent = $($tertiary_menu_parents.get(0)); $first_tertiary_menu_parent.addClass('initial-open'); $first_tertiary_menu_parent.parents('.wpmm-strees-row-and-content-container').addClass('tertiary-menu-open'); } }); $('.oco-hed').mouseleave(function(e) { $(this).removeClass('menu-hover'); $('.active-hover').removeClass('active-hover'); }); $('#wp-megamenu-primary-left > div > ul.wp-megamenu > li').mouseover(function(e) { $(this).siblings('.active-hover').removeClass('active-hover'); var videos = $(this).find('.oc-video-lazyload'); for(var i = 0; i < videos.length; i++) { loadVideo(videos[i]); } addActiveHover($(this)); $('.oco-hed').addClass('menu-hover'); }); $('#wp-megamenu-primary-left > div > ul.wp-megamenu > li li').hover(function(e) { addActiveHover($(this)); }, function(e) { $(this).removeClass('active-hover'); }); }); /* * Megamenu Overrides (de-registered wpmm.js and copied pertinent bits) */ var wpmm_disable_mobile = false; $(document).on('click', '.wpmm_mobile_menu_btn', function(e) { e.preventDefault(); $(this).toggleClass('menu-active').closest('.wpmm-mobile-menu').find('.wp-megamenu').slideToggle(); // Add link title for accessibility purposes. $('.wpmm_mobile_menu_btn.menu-active').attr('title', 'Close Menu'); $('.wpmm_mobile_menu_btn:not(.menu-active)').attr('title', 'Open Menu'); }); function handleMobileMenuToggle($parent_li) { var $icon = $parent_li.children('a').children('.fa'); if($icon.hasClass('fa-angle-down')) { $icon.removeClass('fa-angle-down').addClass('fa-angle-up'); } else if($icon.hasClass('fa-angle-up')) { $icon.removeClass('fa-angle-up').addClass('fa-angle-down'); } if ($parent_li.find('ul').length) { if ($parent_li.hasClass('wpmm_dropdown_menu')) { $parent_li.find('ul.wp-megamenu-sub-menu').first().toggle(); } else { $parent_li.find('ul').toggle(); $parent_li.find('.wpmm-row ul:not(.tertiary-menu)').show(); if(!$parent_li.hasClass('tertiary-menu-parent')) { $('.tertiary-menu').hide(); } } $parent_li.siblings('li:not(.cta)').find('ul.wp-megamenu-sub-menu:visible, .wpmm-row ul:visible, ul:visible').hide(); } } function wpmmMobileMenuActive() { var current_width = parseInt($(window).width()); if ( wpmm_disable_mobile == 'true' ) { if (current_width < (window.wpmm_responsive_breakpoint + 1) ) { $('.wp-megamenu-wrap').addClass('wpmm-hide-mobile-menu'); } else { $('.wp-megamenu-wrap').removeClass('wpmm-hide-mobile-menu'); } } else { if (current_width < (window.wpmm_responsive_breakpoint + 1) ) { $('.wp-megamenu-wrap').addClass('wpmm-mobile-menu'); $('ul.wp-megamenu li a b, ul.wp-megamenu li a > svg.svg-inline--fa').off('click').on('click', function(e) { $parent_li = $(this).closest('li'); if($parent_li.hasClass('wpmm_dropdown_menu') || $parent_li.hasClass('wpmm_mega_menu') || $parent_li.hasClass('menu-item-has-children') || $parent_li.hasClass('tertiary-menu-parent')) { e.preventDefault(); handleMobileMenuToggle($parent_li); } }); } else { $('.wp-megamenu-wrap').removeClass('wpmm-mobile-menu'); } } } //wpmmMobileMenuActive(); //$(window).on('resize load scroll', wpmmMobileMenuActive); $(window).on('load resize', wpmmMobileMenuActive); }) (jQuery);