//this file is only called if a main menu with submenu items is available (function($) { "use strict"; $(document).ready(function() { //activates the mega menu javascript. if($.fn.aviaMegamenu) $(".main_menu .menu").aviaMegamenu({modify_position:true}); }); // ------------------------------------------------------------------------------------------- // Avia Menu // ------------------------------------------------------------------------------------------- $.fn.aviaMegamenu = function(variables) { var defaults = { modify_position:true, delay:300 }; var options = $.extend(defaults, variables), win = $(window); return this.each(function() { var the_html = $('html:first'), main = $('#main .container:first'), left_menu = the_html.filter('.html_menu_left, .html_logo_center').length, isMobile = $.avia_utilities.isMobile, menu = $(this), menuItems = menu.find(">li:not(.ignore_menu)"), megaItems = menuItems.find(">div").parent().css({overflow:'hidden'}), menuActive = menu.find('>.current-menu-item>a, >.current_page_item>a'), dropdownItems = menuItems.find(">ul").parent(), parentContainer = menu.parent(), mainMenuParent = menu.parents('.main_menu').eq(0), parentContainerWidth = parentContainer.width(), delayCheck = {}, mega_open = []; if(!menuActive.length){ menu.find('.current-menu-ancestor:eq(0) a:eq(0), .current_page_ancestor:eq(0) a:eq(0)').parent().addClass('active-parent-item')} if(!the_html.is('.html_header_top')) { options.modify_position = false; } menuItems.on('click' ,'a', function(e) { if(this.href == window.location.href + "#" || this.href == window.location.href + "/#") e.preventDefault(); }); menuItems.each(function() { var item = $(this), pos = item.position(), megaDiv = item.find("div:first").css({opacity:0, display:"none"}), normalDropdown = ""; //check if we got a mega menu if(!megaDiv.length) { normalDropdown = item.find(">ul").css({display:"none"}); } //if we got a mega menu or dropdown menu add the arrow beside the menu item if(megaDiv.length || normalDropdown.length) { var link = item.addClass('dropdown_ul_available').find('>a'); link.append(''); //is a mega menu main item doesnt have a link to click use the default cursor if(typeof link.attr('href') != 'string' || link.attr('href') == "#"){ link.css('cursor','default').click(function(e){ e.preventDefault(); }); } } //correct position of mega menus if(options.modify_position && megaDiv.length) { item.on('mouseenter', function(){ calc_offset(item, pos, megaDiv, parentContainerWidth) }); } }); function calc_offset(item, pos, megaDiv, parentContainerWidth) { pos = item.position(); if(!left_menu) { if(pos.left + megaDiv.width() < parentContainerWidth) { megaDiv.css({right: -megaDiv.outerWidth() + item.outerWidth() }); //item.css({position:'static'}); } else if(pos.left + megaDiv.width() > parentContainerWidth) { megaDiv.css({right: -mainMenuParent.outerWidth() + (pos.left + item.outerWidth() ) }); } } else { if(megaDiv.width() > pos.left + item.outerWidth()) { megaDiv.css({left: (pos.left* -1)}); } else if(pos.left + megaDiv.width() > parentContainerWidth) { megaDiv.css({left: (megaDiv.width() - pos.left) * -1 }); } } } function megaDivShow(i) { if(delayCheck[i] == true) { var item = megaItems.filter(':eq('+i+')').css({overflow:'visible'}).find("div:first"), link = megaItems.filter(':eq('+i+')').find("a:first"); mega_open["check"+i] = true; item.stop().css('display','block').animate({opacity:1},300); if(item.length) { link.addClass('open-mega-a'); } } } function megaDivHide (i) { if(delayCheck[i] == false) { megaItems.filter(':eq('+i+')').find(">a").removeClass('open-mega-a'); var listItem = megaItems.filter(':eq('+i+')'), item = listItem.find("div:first"); item.stop().css('display','block').animate({opacity:0},300, function() { $(this).css('display','none'); listItem.css({overflow:'hidden'}); mega_open["check"+i] = false; }); } } if(isMobile) { megaItems.each(function(i){ $(this).on('click', function() { if(mega_open["check"+i] != true) return false; }); }); } //bind event for mega menu megaItems.each(function(i){ $(this).hover( function() { delayCheck[i] = true; setTimeout(function(){megaDivShow(i); },options.delay); }, function() { delayCheck[i] = false; setTimeout(function(){megaDivHide(i); },options.delay); } ); }); // bind events for dropdown menu dropdownItems.find('li').addBack().each(function() { var currentItem = $(this), sublist = currentItem.find('ul:first'), showList = false; if(sublist.length) { sublist.css({display:'block', opacity:0, visibility:'hidden'}); var currentLink = currentItem.find('>a'); currentLink.on('mouseenter', function() { sublist.stop().css({visibility:'visible'}).animate({opacity:1}); }); currentItem.on('mouseleave', function() { sublist.stop().animate({opacity:0}, function() { sublist.css({visibility:'hidden'}); }); }); } }); }); }; })(jQuery);