<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
 * DC Mega Menu - jQuery mega menu
 * Copyright (c) 2011 Design Chemical
 *
 * Dual licensed under the MIT and GPL licenses:
 *  http://www.opensource.org/licenses/mit-license.php
 *  http://www.gnu.org/licenses/gpl.html
 *
 */
(function($){

 //define the defaults for the plugin and how to call it 
 $.fn.dcMegaMenu = function(options){
  //set default options  
  var defaults = {
   classParent: 'dc-mega',
   classContainer: 'sub-container',
   classSubParent: 'mega-hdr',
   classSubLink: 'mega-hdr',
   classWidget: 'dc-extra',
   rowItems: 3,
   speed: 'fast',
   effect: 'fade',
   event: 'hover',
   fullWidth: false,
   onLoad : function(){},
            beforeOpen : function(){},
   beforeClose: function(){}
  };

  //call in the default otions
  var options = $.extend(defaults, options);
  var $dcMegaMenuObj = this;

  //act upon the element that is passed into the design    
  return $dcMegaMenuObj.each(function(options){

   var clSubParent = defaults.classSubParent;
   var clSubLink = defaults.classSubLink;
   var clParent = defaults.classParent;
   var clContainer = defaults.classContainer;
   var clWidget = defaults.classWidget;
   
   megaSetup();
   
   function megaOver(){
    var subNav = $('.sub',this);
    $(this).addClass('mega-hover');
    if(defaults.effect == 'fade'){
     $(subNav).fadeIn(defaults.speed);
    }
    if(defaults.effect == 'slide'){
     $(subNav).show(defaults.speed);
    }
    // beforeOpen callback;
    defaults.beforeOpen.call(this);
   }
   function megaAction(obj){
    var subNav = $('.sub',obj);
    $(obj).addClass('mega-hover');
    if(defaults.effect == 'fade'){
     $(subNav).fadeIn(defaults.speed);
    }
    if(defaults.effect == 'slide'){
     $(subNav).show(defaults.speed);
    }
    // beforeOpen callback;
    defaults.beforeOpen.call(this);
   }
   function megaOut(){
    var subNav = $('.sub',this);
    $(this).removeClass('mega-hover');
    $(subNav).hide();
    // beforeClose callback;
    defaults.beforeClose.call(this);
    $("#triangle").hide();
   }
   function megaActionClose(obj){
    var subNav = $('.sub',obj);
    $(obj).removeClass('mega-hover');
    $(subNav).hide();
    // beforeClose callback;
    defaults.beforeClose.call(this);
    $("#triangle").hide();
   }
   function megaReset(){
    $('li',$dcMegaMenuObj).removeClass('mega-hover');
    $('.sub',$dcMegaMenuObj).hide();
    $("#triangle").hide();
   }

   function megaSetup(){
    $arrow = '&lt;span class="dc-mega-icon"&gt;&lt;/span&gt;';
    var clParentLi = clParent+'-li';
    var menuWidth = $dcMegaMenuObj.outerWidth();
    $('&gt; li',$dcMegaMenuObj).each(function(){
     //Set Width of sub
     var $mainSub = $('&gt; ul',this);
     var $primaryLink = $('&gt; a',this);
     if($mainSub.length){
      $primaryLink.addClass(clParent).append($arrow);
      $mainSub.addClass('sub').wrap('&lt;div class="'+clContainer+'" /&gt;');
      
      var pos = $(this).position();
      pl = pos.left;
       
      if($('ul',$mainSub).length){
       $(this).addClass(clParentLi);
       $('.'+clContainer,this).addClass('mega');
       $('&gt; li',$mainSub).each(function(){
        if(!$(this).hasClass(clWidget)){
         $(this).addClass('mega-unit');
         if($('&gt; ul',this).length){
          $(this).addClass(clSubParent);
          $('&gt; a',this).addClass(clSubParent+'-a');
         } else {
          $(this).addClass(clSubLink);
          $('&gt; a',this).addClass(clSubLink+'-a');
         }
        }
       });

       // Create Rows
       var hdrs = $('.mega-unit',this);
       rowSize = parseInt(defaults.rowItems);
       for(var i = 0; i &lt; hdrs.length; i+=rowSize){
        hdrs.slice(i, i+rowSize).wrapAll('&lt;div class="row" /&gt;');
       }

       // Get Sub Dimensions &amp; Set Row Height
       $mainSub.show();
       
       // Get Position of Parent Item
       var pw = $(this).width();
       var pr = pl + pw;
       
       // Check available right margin
       var mr = menuWidth - pr;
       
       // // Calc Width of Sub Menu
       var subw = $mainSub.outerWidth();
       var totw = $mainSub.parent('.'+clContainer).outerWidth();
       var cpad = totw - subw;
       
       if(defaults.fullWidth == true){
        var fw = menuWidth - cpad;
        $mainSub.parent('.'+clContainer).css({width: fw+'px'});
        $dcMegaMenuObj.addClass('full-width');
       }
       var iw = $('.mega-unit',$mainSub).outerWidth(true);
       var rowItems = $('.row:eq(0) .mega-unit',$mainSub).length;
       var inneriw = iw * rowItems;
       var totiw = inneriw + cpad;
       
       // Set mega header height
       $('.row',this).each(function(){
        $('.mega-unit:last',this).addClass('last');
        var maxValue = undefined;
        $('.mega-unit &gt; a',this).each(function(){
         var val = parseInt($(this).height());
         if (maxValue === undefined || maxValue &lt; val){
          maxValue = val;
         }
        });
        $('.mega-unit &gt; a',this).css('height',maxValue+'px');
        $(this).css('width',inneriw+'px');
       });
       
       // Calc Required Left Margin incl additional required for right align
       
       if(defaults.fullWidth == true){
        params = {left: 0};
       } else {
        
        var ml = mr &lt; ml ? ml + ml - mr : (totiw - pw)/2;
        var subLeft = pl - ml;

        // If Left Position Is Negative Set To Left Margin
        var params = {left: pl+'px', marginLeft: -ml+'px'};
        
        if(subLeft &lt; 0){
         params = {left: 0};
        }else if(mr &lt; ml){
         params = {right: 0};
        }
       }
       $('.'+clContainer,this).css(params);
       
       // Calculate Row Height
       $('.row',$mainSub).each(function(){
        var rh = $(this).height();
        $('.mega-unit',this).css({height: rh+'px'});
        $(this).parent('.row').css({height: rh+'px'});
       });
       $mainSub.hide();
       $("#triangle").hide();
     
      } else {
       $('.'+clContainer,this).addClass('non-mega').css('left',pl+'px');
      }
     }
    });
    // Set position of mega dropdown to bottom of main menu
    var menuHeight = $('&gt; li &gt; a',$dcMegaMenuObj).outerHeight(true);
    $('.'+clContainer,$dcMegaMenuObj).css({top: menuHeight+'px'}).css('z-index','1000');
    
    if(defaults.event == 'hover'){
     // HoverIntent Configuration
     var config = {
      sensitivity: 2,
      interval: 100,
      over: megaOver,
      timeout: 400,
      out: megaOut
     };
     $('li',$dcMegaMenuObj).hoverIntent(config);
    }
    
    if(defaults.event == 'click'){
    
     $('body').mouseup(function(e){
      if(!$(e.target).parents('.mega-hover').length){
       megaReset();
      }
     });

     $('&gt; li &gt; a.'+clParent,$dcMegaMenuObj).click(function(e){
      var $parentLi = $(this).parent();
      if($parentLi.hasClass('mega-hover')){
       megaActionClose($parentLi);
      } else {
       megaAction($parentLi);
      }
      e.preventDefault();
     });
    }
    
	$('.close img').click(function() {
       megaReset();
	});    
    
    
    // onLoad callback;
    defaults.onLoad.call(this);
   }
  });
 };
})(jQuery);
</pre></body></html>