1/** 2 * @copyright Copyright (C) 2012 Cedric KEIFLIN alias ced1870 3 * http://www.joomlack.fr 4 * Module Maximenu CK 5 * @license GNU/GPL 6 * */ 7 8(function($) { 9 $.fn.MobileMaxiMenu = function(options) { 10 var defaults = { 11 useimages: false, 12 container: 'body', 13 showdesc: false, 14 showlogo: true, 15 usemodules: false, 16 menuid: '', 17 mobilemenutext: 'Menu', 18 showmobilemenutext: '', 19 titletag: 'h3', 20 displaytype: 'flat', 21 displayeffect: 'normal', 22 menubarbuttoncontent : '', 23 topbarbuttoncontent : '', 24 uriroot : '', 25 mobilebackbuttontext : 'Back', 26 menuwidth : '300', 27 openedonactiveitem : '1', 28 loadanchorclass : '1', 29 langdirection : 'ltr' 30 }; 31 32 var opts = $.extend(defaults, options); 33 var menu = this; 34 var mobilemenu = $('#' + opts.menuid + '-mobile'); 35 36 // return menu.each(function(options) { 37 if ($('#' + opts.menuid + '-mobile').length) 38 return; 39 if (menu.prev(opts.titletag)) 40 menu.prev(opts.titletag).addClass('hidemenumobileck'); 41 updatelevel(menu); 42 mobilemaximenuinit(); 43 if (opts.displaytype == 'accordion') 44 mobilemaximenuSetAccordeon(); 45 if (opts.displaytype == 'fade') 46 mobilemaximenuSetFade(); 47 if (opts.displaytype == 'push') 48 mobilemaximenuSetPush(); 49 50 function mobilemaximenuinit() { 51 var activeitem, logoitem; 52 if ($('.maxipushdownck', menu).length) { 53 var menuitems = $(sortmenu(menu)); 54 } else { 55 var menuitems = $('ul.maximenuck li', menu); 56 } 57 //$(document.body).append('<div id="'+opts.menuid+'-mobile" class="mobilemaximenuck"></div>'); 58 if (opts.container == 'body' 59 || opts.container == 'topfixed' 60 || opts.displayeffect == 'slideleft' 61 || opts.displayeffect == 'slideright' 62 || opts.displayeffect == 'topfixed' 63 ) { 64 $(document.body).append('<div id="' + opts.menuid + '-mobile" class="mobilemaximenuck ' + opts.langdirection + '"></div>'); 65 } else { 66 menu.after($('<div id="' + opts.menuid + '-mobile" class="mobilemaximenuck"></div>')); 67 } 68 mobilemenu = $('#' + opts.menuid + '-mobile'); 69 mobilemenuHTML = '<div class="mobilemaximenucktopbar"><span class="mobilemaximenucktitle">' + opts.mobilemenutext + '</span><span class="mobilemaximenuckclose">' + opts.topbarbuttoncontent + '</span></div>'; 70 menuitems.each(function(i, itemtmp) { 71 itemtmp = $(itemtmp); 72 if (itemanchor = validateitem(itemtmp) 73 ) { 74 mobilemenuHTML += '<div class="mobilemaximenuckitem">'; 75 // itemanchor = $('> a.maximenuck', itemtmp).length ? $('> a.maximenuck', itemtmp).clone() : $('> span.separator', itemtmp).clone(); 76 if (!opts.showdesc) { 77 if ($('span.descck', itemanchor).length) 78 $('span.descck', itemanchor).remove(); 79 } 80 itemhref = itemanchor.attr('href') ? ' href="' + itemanchor.attr('href') + '"' : ''; 81 if (itemanchor.attr('target')) itemhref += ' target="' + itemanchor.attr('target') + '"'; 82 83 if (itemtmp.attr('data-mobiletext')) { 84 $('span.titreck', itemanchor).html(itemtmp.attr('data-mobiletext')); 85 } 86 var itemmobileicon = ''; 87 if (itemtmp.attr('data-mobileicon')) { 88 itemmobileicon = '<img class="mobileiconck" src="' + opts.uriroot + '/' + itemtmp.attr('data-mobileicon') + '" />'; 89 } 90 // var itemanchorClass = ''; 91 var itemanchorClass = (opts.loadanchorclass == '1' && itemanchor.attr('class')) ? itemanchor.attr('class') : ''; 92 // check for specific class on the anchor to apply to the mobile menu 93 if (itemanchor.hasClass('scrollTo') && opts.loadanchorclass != '1') { 94 itemanchorClass += 'scrollTo'; 95 } 96 itemanchorClass = (itemanchorClass) ? ' class="' + itemanchorClass + '"' : ''; 97 if (opts.useimages && ($('> * > img', itemtmp).length || $('> * > * > img', itemtmp).length)) { 98 datatocopy = itemanchor.html(); 99 mobilemenuHTML += '<div class="' + itemtmp.attr('class') + '"><a ' + itemhref + itemanchorClass + '>' + itemmobileicon + '<span class="mobiletextck">' + datatocopy + '</span></a></div>'; 100 } else if (opts.usemodules && $('> div.maximenuck_mod', itemtmp).length) { 101 datatocopy = $('> div.maximenuck_mod', itemtmp).html(); 102 mobilemenuHTML += '<div class="' + itemtmp.attr('class') + '">' + itemmobileicon + datatocopy + '</div>'; 103 } else { 104 if (itemtmp.attr('data-mobiletext')) { 105 datatocopy = itemtmp.attr('data-mobiletext'); 106 } else { 107 datatocopy = $('> span.titreck', itemanchor).html(); 108 } 109 mobilemenuHTML += '<div class="' + itemtmp.attr('class') + '"><a ' + itemhref + itemanchorClass + '>
109' + itemmobileicon + '<span class="mobiletextck">' + datatocopy + '</span></a></div>'; 110 } 111 112 itemlevel = $(itemtmp).attr('data-level'); 113 j = i; 114 while (menuitems[j + 1] && !validateitem(menuitems[j + 1]) && j < 1000) { 115 j++; 116 } 117 if (menuitems[j + 1] && validateitem(menuitems[j + 1])) { 118 itemleveldiff = $(menuitems[i]).attr('data-level') - $(menuitems[j + 1]).attr('data-level'); 119 if (itemleveldiff < 0) { 120 mobilemenuHTML += '<div class="mobilemaximenucksubmenu">'; 121 } 122 else if (itemleveldiff > 0) { 123 mobilemenuHTML += '</div>'; 124 mobilemenuHTML += mobilemaximenu_strrepeat('</div></div>', itemleveldiff); 125 } else { 126 mobilemenuHTML += '</div>'; 127 } 128 } else { 129 mobilemenuHTML += mobilemaximenu_strrepeat('</div></div>', itemlevel); 130 } 131 132 if (itemtmp.hasClass('current')) 133 activeitem = itemtmp.clone(); 134 if (!opts.showdesc) { 135 if ($('span.descck', $(activeitem)).length) 136 $('span.descck', $(activeitem)).remove(); 137 } 138 } //else if ($(itemtmp).hasClass('maximenucklogo')) { 139 //logoitem = $(itemtmp).clone(); 140 //} 141 }); 142 143 mobilemenu.append(mobilemenuHTML); 144 145 initCss(mobilemenu); 146 147 if (activeitem && opts.showmobilemenutext != 'none' && opts.showmobilemenutext != 'custom') { 148 if (opts.useimages) { 149 activeitemtext = activeitem.find('a.maximenuck').html(); 150 } else { 151 activeitemtext = activeitem.find('span.titreck').html(); 152 } 153 if (!activeitemtext || activeitemtext == 'undefined') 154 activeitemtext = opts.mobilemenutext; 155 } else { 156 activeitemtext = opts.mobilemenutext; 157 } 158 159 var position = (opts.container == 'body') ? 'absolute' : ( (opts.container == 'topfixed') ? 'fixed' : 'relative' ); 160 if (opts.container == 'topfixed') opts.container = 'body'; 161 var mobilebutton = '<div id="' + opts.menuid + '-mobilebarmaximenuck" class="mobilebarmaximenuck ' + opts.langdirection + '" style="position:' + position + '"><span class="mobilebarmenutitleck">' + activeitemtext + '</span>' 162 + '<div class="mobilebuttonmaximenuck">' + opts.menubarbuttoncontent + '</div>' 163 + '</div>'; 164 165 if (opts.container == 'body') { 166 $(document.body).append(mobilebutton); 167 } else { 168 menu.after(mobilebutton); 169 if (opts.displayeffect == 'normal' || opts.displayeffect == 'open') 170 mobilemenu.css('position', 'relative'); 171 mobilemenu.parents('.nav-collapse').css('height', 'auto'); 172 mobilemenu.parents('.navigation').find('.navbar').css('display', 'none'); 173 $('#' + opts.menuid + '-mobilebarmaximenuck').parents('.nav-collapse').css('height', 'auto'); 174 $('#' + opts.menuid + '-mobilebarmaximenuck').parents('.navigation').find('.navbar').css('display', 'none'); 175 } 176 177 if ($('.maximenucklogo', menu).length && opts.showlogo) { 178 logoitem = $('.maximenucklogo', menu).clone(); 179 if (opts.showlogo == '2') { 180 181 $('#' + opts.menuid + '-mobilebarmaximenuck').prepend('<div style="float:left;" class="' + $(logoitem).attr('class') + '">' + $(logoitem).html() + '</div>'); 182 } else if (opts.showlogo == '3') { 183 $('.mobilemaximenucktopbar', mobilemenu).prepend('<div style="float:left;" class="' + $(logoitem).attr('class') + '">' + $(logoitem).html() + '</div>'); 184 } else { 185 $('.mobilemaximenucktopbar', mobilemenu).after('<div class="' + $(logoitem).attr('class') + '">' + $(logoitem).html() + '<div style="clear:both;"></div></div>'); 186 } 187 } 188 189 $('#' + opts.menuid + '-mobilebarmaximenuck').click(function() { 190 toggleMenu(opts.menuid); 191 }); 192 $('.mobilemaximenuckclose', mobilemenu).click(function() { 193 closeMenu(opts.menuid); 194 }); 195 // close the menu when scroll is needed 196 $('.scrollTo', mobilemenu).click(function() { 197 closeMenu(opts.menuid); 198 }); 199 200 $(window).on("click touchstart", function(event){ 201 var shallclose = true; 202 $('.mobilemaximenuck').each(function() { 203 $this = $(this); 204 if ( 205 $this.has(event.target).length == 0 //checks if descendants of submenu was clicked 206 && 207 !$this.is(event.target) //checks if the submenu itself was clicked 208 && 209 $('#' + opts.menuid + '-mobilebarmaximenuck').has(event.target).length == 0 210 && 211 !$('#' + opts.menuid + '-mobilebarmaximenuck').is(event.target) 212 ){ 213 // is outside 214 // closeMenu(opts.menuid); 215 // shallclose = true; 216 } else { 217 // is inside one of the mobile menus, do nothing 218 shallclose = false;
219 } 220 }); 221 if (shallclose) closeMenu(opts.menuid); 222 }); 223 } 224 225 function mobilemaximenuSetAccordeon() { 226 mobilemenu = $('#' + opts.menuid + '-mobile'); 227 $('.mobilemaximenucksubmenu', mobilemenu).hide(); 228 $('.mobilemaximenucksubmenu', mobilemenu).each(function(i, submenu) { 229 submenu = $(submenu); 230 itemparent = submenu.prev('.maximenuck'); 231 if ($('+ .mobilemaximenucksubmenu > div.mobilemaximenuckitem', itemparent).length) 232 $(itemparent).append('<div class="mobilemaximenucktogglericon" />'); 233 }); 234 $('.mobilemaximenucktogglericon', mobilemenu).click(function() { 235 itemparentsubmenu = $(this).parent().next('.mobilemaximenucksubmenu'); 236 if (itemparentsubmenu.css('display') == 'none') { 237 itemparentsubmenu.css('display', 'block'); 238 $(this).parent().addClass('open'); 239 } else { 240 itemparentsubmenu.css('display', 'none'); 241 $(this).parent().removeClass('open'); 242 } 243 }); 244 // open the submenu on the active item 245 if (opts.openedonactiveitem == '1') { 246 $('.maximenuck.active:not(.current) > .mobilemaximenucktogglericon', mobilemenu).trigger('click'); 247 } 248 } 249 250 function mobilemaximenuSetFade() { 251 mobilemenu = $('#' + opts.menuid + '-mobile'); 252 $('.mobilemaximenucktopbar', mobilemenu).prepend('<div class="mobilemaximenucktitle mobilemaximenuckbackbutton">'+opts.mobilebackbuttontext+'</div>'); 253 $('.mobilemaximenuckbackbutton', mobilemenu).hide(); 254 $('.mobilemaximenucksubmenu', mobilemenu).hide(); 255 $('.mobilemaximenucksubmenu', mobilemenu).each(function(i, submenu) { 256 submenu = $(submenu); 257 itemparent = submenu.prev('.maximenuck'); 258 if ($('+ .mobilemaximenucksubmenu > div.mobilemaximenuckitem', itemparent).length) 259 $(itemparent).append('<div class="mobilemaximenucktogglericon" />'); 260 }); 261 $('.mobilemaximenucktogglericon', mobilemenu).click(function() { 262 itemparentsubmenu = $(this).parent().next('.mobilemaximenucksubmenu'); 263 parentitem = $(this).parents('.mobilemaximenuckitem')[0]; 264 $('.ckopen', mobilemenu).removeClass('ckopen'); 265 $(itemparentsubmenu).addClass('ckopen'); 266 $('.mobilemaximenuckbackbutton', mobilemenu).fadeIn(); 267 $('.mobilemaximenucktitle:not(.mobilemaximenuckbackbutton)', mobilemenu).hide(); 268 // hides the current level items and displays the submenus 269 $(parentitem).parent().find('> .mobilemaximenuckitem > div.maximenuck').fadeOut(function() { 270 $('.ckopen', mobilemenu).fadeIn(); 271 }); 272 }); 273 $('.mobilemaximenucktopbar .mobilemaximenuckbackbutton', mobilemenu).click(function() { 274 backbutton = this; 275 $('.ckopen', mobilemenu).fadeOut(500, function() { 276 $('.ckopen', mobilemenu).parent().parent().find('> .mobilemaximenuckitem > div.maximenuck').fadeIn(); 277 oldopensubmenu = $('.ckopen', mobilemenu); 278 if (! $('.ckopen', mobilemenu).parents('.mobilemaximenucksubmenu').length) { 279 $('.ckopen', mobilemenu).removeClass('ckopen'); 280 $('.mobilemaximenucktitle', mobilemenu).fadeIn(); 281 $(backbutton).hide(); 282 } else { 283 $('.ckopen', mobilemenu).removeClass('ckopen'); 284 $(oldopensubmenu.parents('.mobilemaximenucksubmenu')[0]).addClass('ckopen'); 285 } 286 }); 287 288 }); 289 } 290 291 function mobilemaximenuSetPush() { 292 mobilemenu = $('#' + opts.menuid + '-mobile'); 293 mobilemenu.css('height', '100%'); 294 $('.mobilemaximenucktopbar', mobilemenu).prepend('<div class="mobilemaximenucktitle mobilemaximenuckbackbutton">'+opts.mobilebackbuttontext+'</div>'); 295 $('.mobilemaximenuckbackbutton', mobilemenu).hide(); 296 $('.mobilemaximenucksubmenu', mobilemenu).hide(); 297 // $('div.mobilemaximenuckitem', mobilemenu).css('position', 'relative'); 298 mobilemenu.append('<div class="mobilemaximenuckitemwrap" />'); 299 $('.mobilemaximenuckitemwrap', mobilemenu).css('position', 'absolute').width('100%'); 300 $('> div.mobilemaximenuckitem', mobilemenu).each(function(i, item) { 301 $('.mobilemaximenuckitemwrap', mobilemenu).append(item); 302 }); 303 zindex = 10; 304 $('.mobilemaximenucksubmenu', mobilemenu).each(function(i, submenu) { 305 submenu = $(submenu); 306 itemparent = submenu.prev('.maximenuck'); 307 submenu.css('left', '100%' ).css('width', '100%' ).css('top', '0' ).css('position', 'absolute').css('z-index', zindex); 308 if ($('+ .mobilemaximenucksubmenu > div.mobilemaximenuckitem', itemparent).length) 309 $(itemparent).append('<div class="mobilemaximenucktogglericon" />'); 310 zindex++; 311 }); 312 $('.mobilemaximenucktogglericon', mobilemenu).click(function() { 313 itemparentsubmenu = $(this).parent().next('.mobilemaximenucksubmenu'); 314 parentitem = $(this).parents('.mobilemaximenuckitem')[0]; 315 $(parentitem).parent().find('.mobilemaximenucksubmenu').hide(); 316 $('.ckopen', mobilemenu).removeClass('ckopen'); 317 $(itemparentsubmenu).addClass('ckopen'); 318 $('.mobilemaximenuckbackbutton', mobilemenu).fadeIn(); 319 $('.mobilemaximenucktitle:not(.mobilemaximenuckbackbutton)', mobilemenu).hide(); 320 $('.ckopen', mobilemenu).fadeIn(); 321 $('.mobilemaximenuckitemwrap', mobilemenu).animate({'left': '-=100%' }); 322 }); 323 $('.mobilemaximenucktopbar .mobilemaximenuckbackbutton', mobilemenu).click(function() { 324 backbutton = this; 325 $('.mobilemaximenuckitemwrap', mobilemenu).animate({'left': '+=100%' }); 326 // $('.ckopen', mobilemenu).fadeOut(500, function() { 327 // $('.ckopen', mobilemenu).parent().parent().find('> .mobilemaximenuckitem > div.maximenuck').fadeIn(); 328 oldopensubmenu = $('.ckopen', mobilemenu); 329 if (! $('.ckopen', mobilemenu).parents('.mobilemaximenucksubmenu').length) { 330 $('.ckopen', mobilemenu).removeClass('ckopen').hide(); 331 $('.mobilemaximenucktitle', mobilemenu).fadeIn(); 332 $(backbutton).hide(); 333 } else { 334 $('.ckopen', mobilemenu).removeClass('ckopen').hide(); 335 $(oldopensubmenu.parents('.mobilemaximenucksubmenu')[0]).addClass('ckopen'); 336 } 337 // }); 338 339 }); 340 } 341 342 function resetFademenu(menu) { 343 mobilemenu = $('#' + opts.menuid + '-mobile'); 344 $('.mobilemaximenucksubmenu', mobilemenu).hide(); 345 $('.mobilemaximenuckitem > div.maximenuck').show().removeClass('open'); 346 $('.mobilemaximenucktopbar .mobilemaximenucktitle').show(); 347 $('.mobilemaximenucktopbar .mobilemaximenucktitle.mobilemaximenuckbackbutton').hide(); 348 } 349 350 function resetPushmenu(menu) { 351 mobilemenu = $('#' + opts.menuid + '-mobile'); 352 $('.mobilemaximenucksubmenu', mobilemenu).hide(); 353 $('.mobilemaximenuckitemwrap', mobilemenu).css('left', '0'); 354 $('.mobilemaximenucktopbar .mobilemaximenucktitle:not(.mobilemaximenuckbackbutton)').show(); 355 $('.mobilemaximenucktopbar .mobilemaximenucktitle.mobilemaximenuckbackbutton').hide(); 356 } 357 358 function updatelevel(menu) { 359 $('div.maximenuck_mod', menu).each(function(i, module) { 360 module = $(module); 361 liparentlevel = module.parent('li.maximenuckmodule').attr('data-level'); 362 $('li.maximenuck', module).each(function(j, li) { 363 li = $(li); 364 lilevel = parseInt(li.attr('data-level')) + parseInt(liparentlevel) - 1; 365 li.attr('data-level', lilevel).addClass('level' + lilevel); 366 }); 367 }); 368 } 369 370 function validateitem(itemtmp) { 371 if (!itemtmp || $(itemtmp).hasClass('nomobileck')) 372 return false;
373// if (($('> a.maximenuck', itemtmp).length || $('> span.separator', itemtmp).length || $('> * > a.maximenuck', itemtmp).length || $('> * > span.separator', itemtmp).length) 374// && ($('> a.maximenuck > span.titreck', itemtmp).length || $('> span.separator > span.titreck', itemtmp).length || opts.useimages) 375// || ($('> div.maximenuck_mod', itemtmp).length && opts.usemodules) 376// && !itemtmp.hasClass('nomobileck') 377// ) 378// if ($('> * > img', itemtmp).length && opts.useimages) { 379// return $('> *', itemtmp).clone(); 380 if ($('> * > img', itemtmp).length && !opts.useimages && !$('> * > span.titreck', itemtmp).length) { 381 return false 382 } 383 if ($('> a.maximenuck', itemtmp).length) 384 return $('> a.maximenuck', itemtmp).clone(); 385 if ($('> span.separator,> span.nav-header', itemtmp).length) 386 return $('> span.separator,> span.nav-header', itemtmp).clone(); 387 if ($('> * > a.maximenuck', itemtmp).length) 388 return $('> * > a.maximenuck', itemtmp).clone(); 389 if ($('> * > span.separator,> * > span.nav-header', itemtmp).length) 390 return $('> * > span.separator,> * > span.nav-header', itemtmp).clone(); 391 if ($('> div.maximenuck_mod', itemtmp).length && opts.usemodules) 392 return $('> div.maximenuck_mod', itemtmp).clone(); 393 394// if ($('> * > * > img', itemtmp).length && opts.useimages) return $('> * > *', itemtmp).clone(); 395// return $('> a.maximenuck', itemtmp).length ? $('> a.maximenuck', itemtmp).clone() : $('> span.separator', itemtmp).clone(); 396 return false; 397 } 398 399 function mobilemaximenu_strrepeat(string, count) { 400 var s = ''; 401 if (count < 1) 402 return ''; 403 while (count > 0) { 404 s += string; 405 count--; 406 } 407 return s; 408 } 409 410 function sortmenu(menu) { 411 var items = new Array(); 412 mainitems = $('ul.maximenuck > li.maximenuck.level1', menu); 413 j = 0; 414 mainitems.each(function(ii, mainitem) { 415 items.push(mainitem); 416 if ($(mainitem).hasClass('parent')) { 417 subitemcontainer = $('.maxipushdownck > .floatck', menu).eq(j); 418 subitems = $('li.maximenuck', subitemcontainer); 419 subitems.each(function(k, subitem) { 420 items.push(subitem); 421 }); 422 j++; 423 } 424 }); 425 return items; 426 } 427 428 function initCss(mobilemenu) { 429 switch (opts.displayeffect) { 430 case 'normal': 431 default: 432 mobilemenu.css({ 433 'position': 'absolute', 434 'z-index': '100000', 435 'top': '0', 436 'left': '0', 437 'display': 'none' 438 }); 439 break; 440 case 'slideleft': 441 case 'slideleftover': 442 mobilemenu.css({ 443 'position': 'fixed', 444 'overflow-y': 'auto', 445 'overflow-x': 'hidden', 446 'z-index': '100000', 447 'top': '0', 448 'left': '0', 449 'width': opts.menuwidth, 450 'height': '100%', 451 'display': 'none' 452 }); 453 break; 454 case 'slideright': 455 case 'sliderightover': 456 mobilemenu.css({ 457 'position': 'fixed', 458 'overflow-y': 'auto', 459 'overflow-x': 'hidden', 460 'z-index': '100000', 461 'top': '0', 462 'right': '0', 463 'left': 'auto', 464 'width': opts.menuwidth, 465 'height': '100%', 466 'display': 'none' 467 }); 468 break; 469 case 'topfixed': 470 mobilemenu.css({ 471 'position': 'fixed', 472 'overflow-y': 'scroll', 473 'z-index': '100000', 474 'top': '0', 475 'right': '0', 476 'left': '0', 477 'max-height': '100%', 478 'display': 'none' 479 }); 480 break; 481 } 482 } 483 484 function toggleMenu(menuid) { 485 if ($('#' + menuid + '-mobile').css('display') == 'block') { 486 closeMenu(menuid); 487 } else { 488 openMenu(menuid); 489 } 490 } 491 492 function openMenu(menuid) { 493 mobilemenu = $('#' + menuid + '-mobile'); 494// mobilemenu.show(); 495 switch (opts.displayeffect) { 496 case 'normal': 497 default: 498 mobilemenu.fadeOut(); 499 $('#' + opts.menuid + '-mobile').fadeIn(); 500 if (opts.container != 'body') 501 $('#' + opts.menuid + '-mobilebarmaximenuck').css('display', 'none'); 502 break; 503 case 'slideleft': 504 case 'slideleftover': 505 mobilemenu.css('display', 'block').css('opacity', '0').css('width', '0').animate({'opacity': '1', 'width': opts.menuwidth}); 506 if (opts.displayeffect =='slideleft')$('body').css('position', 'relative').animate({'left': opts.menuwidth}); 507 break; 508 case 'slideright': 509 case 'sliderightover': 510 mobilemenu.css('display', 'block').css('opacity', '0').css('width', '0').animate({'opacity': '1', 'width': opts.menuwidth}); 511 if (opts.displayeffect =='slideright') $('body').css('position', 'relative').animate({'right': opts.menuwidth}); 512 break; 513 case 'open': 514 // mobilemenu..slideDown(); 515 $('#' + opts.menuid + '-mobile').slideDown('slow'); 516 if (opts.container != 'body') 517 $('#' + opts.menuid + '-mobilebarmaximenuck').css('display', 'none'); 518 break; 519 } 520 $(document).trigger('maximenuckmobile_open'); 521 } 522 523 function closeMenu(menuid) { 524 if (opts.displaytype == 'fade') { 525 resetFademenu(); 526 } 527 if (opts.displaytype == 'push') { 528 resetPushmenu(); 529 } 530 mobilemenu = $('#' + menuid + '-mobile'); 531 switch (opts.displayeffect) { 532 case 'normal': 533 default: 534 $('#' + opts.menuid + '-mobile').fadeOut(); 535 if (opts.container != 'body') 536 $('#' + opts.menuid + '-mobilebarmaximenuck').css('display', ''); 537 break; 538 case 'slideleft': 539 mobilemenu.animate({'opacity': '0', 'width': '0'}, function() { 540 mobilemenu.css('display', 'none'); 541 }); 542 $('body').animate({'left': '0'}, function() { 543 $('body').css('position', '') 544 }); 545 break; 546 case 'slideright': 547 mobilemenu.animate({'opacity': '0', 'width': '0'}, function() { 548 mobilemenu.css('display', 'none'); 549 }); 550 $('body').animate({'right': '0'}, function() { 551 $('body').css('position', '') 552 }); 553 break; 554 case 'open': 555 $('#' + opts.menuid + '-mobile').slideUp('slow', function() { 556 if (opts.container != 'body') 557 $('#' + opts.menuid + '-mobilebarmaximenuck').css('display', ''); 558 }); 559 560 break; 561 } 562 $(document).trigger('maximenuckmobile_close'); 563 } 564 // }); 565 } 566})(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.