PageSourceSearch

https://stadtsafari.com/plugins/system/maximenuckmobile/assets/maximenuckmobile.js

js stadtsafari.com collected 2026-10-04 10:18:14 UTC 22,709 bytes, 566 lines download raw bytes

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.