1// Item Name : Mega Menu Reloaded 2// Item URI : http://codecanyon.net/item/mega-menu-reloaded/1593152 3// Author URI : http://codecanyon.net/user/Pixelworkshop/ 4// Version : 2.0 5 6 7 8(function ($) { 9 10 11 12 var settings = { 13 menu_speed_show : 300, // Time (in milliseconds) to show a drop down 14 menu_speed_hide : 200, // Time (in milliseconds) to hide a drop down 15 menu_speed_delay : 200, // Time (in milliseconds) before showing a drop down 16 menu_effect : 'open_close_slide', // Drop down effect, choose between 'hover_fade', 'hover_slide', 'click_fade', 'click_slide', 'open_close_fade', 'open_close_slide' 17 menu_easing : 'jswing', // Easing Effect : 'easeInQuad', 'easeInElastic', etc. 18 menu_click_outside : 0, // Clicks outside the drop down close it (1 = true, 0 = false) 19 menu_show_onload : 0, // Drop down to show on page load (type the number of the drop down, 0 for none) 20 menubar_trigger : 0, // Show the menu trigger (button to show / hide the menu bar), only for the fixed version of the menu (1 = show, 0 = hide) 21 menubar_hide : 0, // Hides the menu bar on load (1 = hide, 0 = show) 22 menu_responsive : 1, // Enables mobile-specific script 23 menu_carousel : 0, // Enable / disable carousel 24 menu_carousel_groups : 0, // Number of groups of elements in the carousel 25 hoverIntentConfig:{ // HoverIntent Configuration 26 sensitivity:2, // number = sensitivity threshold (must be 1 or higher) 27 interval:100, // number = milliseconds for onMouseOver polling interval 28 over:megaMenuOver, // function = onMouseOver callback (REQUIRED) 29 timeout:200, // number = milliseconds delay before onMouseOut 30 out:megaMenuOut // function = onMouseOut callback (REQUIRED) 31 } 32 }; 33 34 35 var methods = { 36 37 38 init:function (options) { 39 40 41 settings = $.extend(1, settings, options); 42 43 44 return this.each(function () { 45 46 47 var megaMenu = $(this), 48 menuItem = $(megaMenu).children('li'), 49 menuItemSpan = $(menuItem).children('span'), 50 menuDropDown = $(menuItem).children('.megamenu_fullwidth'); 51 menuDropDownScroller = $('.megamenu_scroller_container'); 52 menuButton = $('.megamenu_button'); 53 54 if(options.menu_carousel === 1){ 55 megaMenuCarousel(); 56 } 57 if(options.menu_click_outside === 1){ 58 megaMenuClickOutside(); 59 } 60 if ((menuDropDownScroller.length > 0)) { 61 $(menuDropDownScroller).nanoScroller({alwaysVisible: true}); 62 } 63 64 $(menuDropDown).css('left', '0').hide(); 65 66 // hack 67 megaMenuDropDownShift(); 68 69 megaMenuTabs(); 70 71 72 // Mobile Devices 73 74 if (("ontouchstart" in document.documentElement) && (settings.menu_responsive === 1)) { 75 76 77 if ($(window).width() < 768) { 78 $(menuDropDown).css({'left':'0', 'top':'auto'}).hide(); 79 $(menuItem).hide(0); 80 $(menuButton).show(0); 81 $(menuButton).children('span').hammer().on('tap', function () { 82 $(menuButton).toggleClass('megamenu_button_active') 83 $(menuItem).not(":eq(0)").toggle(0); 84 }); 85 } 86 87 $(menuItem).toggleClass('noactive'); 88 89 $(menuItem).children('span').hammer().on('tap', function () { 90 91 var $this = $(this); 92 $this.parent(menuItem).toggleClass('active noactive') 93 .find(menuDropDown).toggle(0).end() 94 .siblings().addClass('noactive').removeClass('active') 95 .find(menuDropDown).hide(0); 96 return false; 97 98 }); 99 100 $(document).hammer().on('tap', function () { 101 $(menuItem).addClass('noactive'); 102 $(menuDropDown).hide(0); 103 }); 104 $(megaMenu).hammer().on('tap', function (event) { 105 event.stopPropagation(); 106 }); 107 $(window).bind('orientationchange', function () { 108 $(menuItem).addClass('noactive'); 109 $(menuDropDown).hide(0); 110 }); 111 112 return; 113 114 115 } 116 117 118 // Desktop Computers 119 120 else { 121 122 123 megaMenuDropDownPosition(); 124 125 $(window).resize(function() { 126 megaMenuDropDownPosition(); 127 }); 128 129 $(menuButton).click(function () { 130 $(menuButton).toggleClass('megamenu_button_active'); 131 $(menuItem).not(":eq(0)").toggle(0); 132 }); 133 134 if( options.menubar_trigger === 1 ) { 135 megamenuBarHide = options.menubar_hide; 136 megaMenuTrigger(); 137 } 138 139 switch (settings.menu_effect) { 140 141 case 'open_close_fade': 142 var menuEffectShow = 'fadeToggle', 143 menuEffectHide = 'fadeOut'; 144 break; 145 case 'open_close_slide': 146 var menuEffectShow = 'slideToggle', 147 menuEffectHide = 'slideUp'; 148 break; 149 case 'open_close_toggle': 150 var menuEffectShow = 'toggle', 151 menuEffectHide = 'hide'; 152 break; 153 154 } 155 156 switch (settings.menu_effect) { 157 158 case 'hover_fade': 159 case 'hover_slide': 160 case 'hover_toggle': 161 case 'click_fade': 162 case 'click_slide': 163 case 'click_toggle': 164 $(menuItem).hoverIntent(settings.hoverIntentConfig); 165 break; 166 167 case 'open_close_fade': 168 case 'open_close_slide': 169 case 'open_close_toggle': 170 171 $('.megamenu > li:nth-child(' + settings.menu_show_onload + ')') 172 .find(menuDropDown).show() 173 .closest(menuItem).toggleClass('active'); 174 175 $(menuItem).unbind('mouseenter mouseleave').click(function () { 176 177 var $this = $(this); 178 $this.siblings().removeClass('active') 179 .find(menuDropDown)[menuEffectHide](settings.menu_speed_hide); 180 $this.toggleClass('active') 181 .find(menuDropDown).first() 182 .delay(settings.menu_speed_delay)[menuEffectShow](settings.menu_speed_show) 183 .click(function (event) { 184 event.stopPropagation(); 185 }); 186 187 }); 188 189 break; 190 191 } 192 193 194 } 195 196 197 }); // End each 198 199 }, 200 201 update:function (options) { 202 settings = $.extend(1, settings, options); 203 } 204 205 }; 206 207 208 209 $.fn.megaMenuReloaded = function (method) { 210 211 212 if (methods[method]) { 213 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 214 } else if (typeof method === 'object' || !method) { 215 return methods.init.apply(this, arguments); 216 } else { 217 $.error('No found method ' + method); 218 } 219 220 221 }; 222 223 /** shift dropdowns left to keep on page **/ 224 function megaMenuDropDownShift() { 225 $('.megamenu_fullwidth[megamenuleft]').each(function(){ 226 $(this).css('left',$(this).attr('megamenuleft')+'px'); 227 }) 228 } 229 230 231 function megaMenuDropDownPosition() { 232
233 if (($(window).width() < 768) && (settings.menu_responsive === 1)) { 234 $('.megamenu').children('li').css({'display':'none'}); 235 $('.megamenu_button').css({'display':'block'}); 236 } 237 238 else { 239 $('.megamenu').children('li').css({'display':'inline'}); 240 $('.megamenu_button').css({'display':'none'}); 241 } 242 243 } 244 245 246 function megaMenuOver() { 247 248 var $this = $(this), 249 dropDown = $('.megamenu_fullwidth',this); 250 251 switch (settings.menu_effect) { 252 case 'hover_fade': 253 $(dropDown).fadeIn(settings.menu_speed_show); 254 break; 255 case 'hover_slide': 256 $(dropDown).slideDown(settings.menu_speed_show); 257 break; 258 case 'hover_toggle': 259 $(dropDown).show(settings.menu_speed_show); 260 break; 261 case 'click_fade': 262 $this.click(function () { 263 $(dropDown).fadeIn(settings.menu_speed_show); 264 }); 265 break; 266 case 'click_slide': 267 $this.click(function () { 268 $(dropDown).slideDown(settings.menu_speed_show); 269 }); 270 break; 271 case 'click_toggle': 272 $this.click(function () { 273 $(dropDown).show(settings.menu_speed_show); 274 }); 275 break; 276 277 } 278 279 } 280 281 282 function megaMenuOut() { 283 284 var $this = $(this), 285 dropDown = $('.megamenu_fullwidth',this); 286 287 switch (settings.menu_effect) { 288 case 'hover_fade': 289 case 'click_fade': 290 $(dropDown).fadeOut(settings.menu_speed_hide); 291 break; 292 case 'hover_slide': 293 case 'click_slide': 294 $(dropDown).slideUp(settings.menu_speed_hide); 295 break; 296 case 'hover_toggle': 297 case 'click_toggle': 298 $(dropDown).toggle(settings.menu_speed_hide); 299 break; 300 301 } 302 303 } 304 305 306 function megaMenuTrigger(){ 307 308 var megaMenuBar = $('.megamenu_fixed'); 309 310 $(megaMenuBar).after('<a id="megamenu_trigger" href="#"></a>'); 311 312 if( megamenuBarHide === 1 ) { 313 $(megaMenuBar).hide(0); 314 $('#megamenu_trigger').toggleClass("active"); 315 } 316 317 $('#megamenu_trigger').click(function() { 318 $(megaMenuBar).slideToggle(300); 319 $(this).toggleClass("active"); 320 return false; 321 }); 322 323 } 324 325 326 function megaMenuClickOutside(){ 327 328 $(document).click(function(){ 329 $('.megamenu').children('li').removeClass('active'); 330 $('.megamenu_fullwidth').hide(0); 331 }); 332 333 $('.megamenu').click(function(event){ 334 event.stopPropagation(); 335 }); 336 337 } 338 339 340 /** 341 * Simple Carousel 342 * Copyright (c) 2010 Tobias Zeising, http://www.aditu.de 343 * Licensed under the MIT license 344 * 345 * http://code.google.com/p/simple-carousel/ 346 * Version 0.3 347 */ 348 function megaMenuCarousel(){ 349 350 var megaMenu = $('.megamenu'); 351 352 $(megaMenu).append('<span class="megamenu_carousel_prev"></span><span class="megamenu_carousel_next"></span>'); 353 354 var defaults = { 355 width:$('.megamenu_wrapper').width(), 356 visible:1, 357 next: $('.megamenu_carousel_next'), 358 prev: $('.megamenu_carousel_prev'), 359 current: 0, 360 items: 2, 361 slidespeed: 600 362 }; 363 var width = defaults.width; 364 365 $(megaMenu).wrap('<div class="megamenu_carousel_frame"></div>'); 366 367 var container = $(megaMenu).parent('.megamenu_carousel_frame'); 368 369 var slide = function(dir, click) { 370 371 if(dir=="next") { 372 defaults.current += defaults.visible; 373 if(defaults.current>=defaults.items) 374 defaults.current = 0; 375 } else if(dir=="prev") { 376 defaults.current -= defaults.visible; 377 if(defaults.current<0) 378 defaults.current = (defaults.visible==1) ? defaults.items-1 : defaults.items-defaults.visible+(defaults.visible-(defaults.items%defaults.visible)); 379 } else { 380 defaults.current = dir; 381 } 382 383 $(megaMenu).animate( {marginLeft: -1.0*defaults.current*defaults.width}, defaults.slidespeed ); 384 385 } 386 387 if(defaults.next!=false) 388 defaults.next.click(function() { 389 slide('next',true); 390 }); 391 392 if(defaults.prev!=false) 393 defaults.prev.click(function() { 394 slide('prev',true); 395 }); 396 397 } 398 399 400 function megaMenuTabs(){ 401 402 $('.megamenu_tabs').each(function(index, value) { 403 404 var menuTabs = $(this); 405 menuTabsNav = menuTabs.find(".megamenu_tabs_nav > li > a"); 406 407 menuTabsNav.click(function() { 408 409 var menuTabsLinkCurrent = menuTabs.find("a.current").attr("href").substring(1), 410 $menuTabsLink = $(this), 411 menuTabsLinkID = $menuTabsLink.attr("href").substring(1); 412 413 if ((menuTabsLinkID != menuTabsLinkCurrent) && ( menuTabs.find(":animated").length == 0)) { 414 415 menuTabs.find(".megamenu_tabs_nav li a").removeClass("current"); 416 $menuTabsLink.addClass("current"); 417 418 menuTabs.find("#"+menuTabsLinkCurrent).fadeOut(300, function() { 419 420 menuTabs.find("#"+menuTabsLinkID).fadeIn(300); 421 var newHeight = menuTabs.find("#"+menuTabsLinkID).height(); 422 423 }); 424 425 } 426 427 return false; 428 429 }); 430 431 }); 432 433 } 434 435 436 437})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.