PageSourceSearch

https://www.freistaedter-motorshow.at/lib/msvorlagen/sass01a/sw2015/includes/FlexiMenus2/fleximenus2.js

js freistaedter-motorshow.at collected 2026-10-08 03:28:24 UTC 54,945 bytes, 1,870 lines download raw bytes

1// build number: 2.0.331�
2�
3(function($) {�
4	function bindEffect(name, params) {�
5		var menu = $("ul.FM2_" + name);�
6		�
7		var uls = menu.find("ul");�
8		var timeout;�
9		�
10		function getBrowser() {�
11			// jquery code//�
12			var ua = navigator.userAgent.toLowerCase();�
13			var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||�
14				/(webkit)[ \/]([\w.]+)/.exec( ua ) ||�
15				/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||�
16				/(msie) ([\w.]+)/.exec( ua ) ||�
17				ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||�
18				[];�
19			�
20			var ver = match[ 2 ] || "0";�
21			var fi = ver.indexOf('.');�
22			var fi2 = ver.indexOf('.', fi);�
23			if (fi2 != -1) {�
24				ver = parseFloat(ver.substring(0, fi2));�
25			}�
26			return {�
27				name: match[ 1 ] || "",�
28				version: ver�
29			};�
30		}�
31�
32�
33		function mouseLeft(el) {�
34			if (!window.PIE || !PIE.Element) return;�
35			var pie = PIE.Element.getInstance( el[0]);�
36			if (pie) {�
37				pie.mouseLeft(true);�
38			}�
39		}�
40		�
41		function mouseEntered(el) {�
42			if (!window.PIE || !PIE.Element) return;�
43			var pie = PIE.Element.getInstance( el[0]);�
44			if (pie) {�
45				pie.mouseEntered(true);�
46			}�
47		}�
48�
49		function getEffectForLevel(level) { �
50			switch(level) { �
51				case 0:�
52					return params["effectSub"];�
53				break;�
54�
55				case 1:�
56					return params["effectSubTwo"] ? params["effectSubTwo"] : params["effectRest"];�
57				break;�
58�
59				default:�
60					return params["effectRest"]�
61				break;�
62			}�
63		}�
64		�
65		function showMenu(liItem, callback) {�
66			�
67			�
68			var self = liItem;�
69�
70			if (!callback) callback = function(){};�
71			if($(self).find('ul').data('hideTimeout')) { �
72				clearTimeout($(self).find('ul').data('hideTimeout'));�
73			}�
74			�
75			var level = getButtonLevel(self);�
76			�
77			var effectObj = getEffectForLevel(level);�
78			if(!effectObj) { �
79				effectObj = {name : "none"};�
80			}�
81			var effectOpts = {�
82				'duration' : effectObj.duration,�
83				'easing' : effectObj.easing,�
84				'direction' : effectObj.direction�
85			};�
86�
87			�
88			var checkIfVisible = true;;�
89			var submenu = $(self).find('>ul');�
90			if(submenu.length == 0) { �
91				if($(self).children('.ui-effects-wrapper').length > 0) { �
92					checkIfVisible = false;�
93					submenu = $(self).find('.ui-effects-wrapper >ul');�
94				}�
95			} �
96�
97			if(checkIfVisible && submenu.is(':visible')) { �
98				return;�
99			}�
100�
101			var browser = getBrowser();�
102			var isIE7 = (browser.name == "msie" && browser.version == 7);�
103			if(isIE7) { �
104				effectObj.name = "none";�
105				submenu.children('li').css('float','left');�
106				if(params["menuType"] == "tabbed" && level == 0) { �
107					submenu.width(menu.outerWidth());�
108				}�
109			}�
110�
111			switch(effectObj.name) {�
112				case "none":�
113					submenu.show();�
114					break;�
115�
116				case "bounce":�
117					if($(self).parent().is(":animated")) {�
118						return;�
119					}�
120�
121				case "blind":�
122				case "explode":�
123				case "clip":�
124				case "drop":�
125				case "fold":�
126				case "slide":�
127�
128					�
129					if($(self).find('ul').is(":animated")) {�
130						$(self).find('ul').removeAttr("style");�
131					}�
132�
133					if(submenu.data('hideTimeout')) { �
134						clearTimeout(submenu.data('hideTimeout'));�
135						submenu.removeData('hideTimeout');�
136					}�
137�
138					$(self).siblings().find('ul').stop(false, true);�
139�
140					window.setTimeout(function(){�
141						�
142						if(submenu.css('display') != 'none' && !submenu.is(":animated")) { �
143							return;�
144						}�
145						�
146						submenu.stop(false,true);�
147�
148						if(effectObj.useFade) { �
149							submenu.fadeIn({duration : effectOpts.duration * 2, queue : false}).css('display', 'none');�
150						}�
151						submenu.show(effectObj.name, effectOpts, function(){�
152							if(effectObj.name == "fold") {�
153								$(this).css({"position":"", "left" :"", "top": "", "right":"", "bottom" :""});�
154							}�
155						});�
156					}, 5);�
157					break;�
158�
159				case "fade":�
160					uls.stop(true, true);�
161					submenu.show(effectObj.name, effectOpts);�
162					break;�
163				�
164				default:�
165					uls.stop(true, false);�
166					window.setTimeout(function(){�
167						submenu.show(effectObj.name, effectOpts);�
168					}, 5);�
169			}�
170		}�
171		�
172		function hideMenu(liItem, callback) {�
173�
174			var self = liItem;�
175			if (!callback) callback = function(){};�
176			�
177			var level = getButtonLevel(self);�
178			�
179			var effectObj = getEffectForLevel(level);�
180			if(!effectObj) { �
181				effectObj = {name : "none"};�
182			}�
183			var effectOpts = {�
184				'duration' : effectObj.duration,�
185				'easing' : effectObj.easing,�
186				'direction' : effectObj.direction�
187			};�
188�
189			var browser = getBrowser();�
190			var isIE7 = (browser.name == "msie" && browser.version == 7);�
191			if(isIE7) { �
192				effectObj.name = "none";�
193			}�
194			�
195�
196			var submenu = $(self).find('ul');�
197			�
198			if(submenu.length == 0) { �
199				if($(self).children('.ui-effects-wrapper').length > 0) { �
200					submenu = $(self).find('.ui-effects-wrapper >ul');�
201				}�
202			} �
203�
204			switch(effectObj.name) {�
205				case "none":�
206					submenu.hide();�
207					callback();�
208					break;�
209�
210				case "bounce":�
211					if($(self).parent().is(":animated")) {�
212						return;�
213					}�
214				case "blind":�
215				case "explode":�
216				case "clip":�
217				case "drop":�
218				case "fold":�
219				case "slide":�
220					submenu.stop(false, true);�
221					if(submenu.data('hideTimeout')) { �
222						clearTimeout(submenu.data('hideTimeout'));�
223					}�
224�
225�
226�
227					var timeout = window.setTimeout(function(){�
228						submenu.stop(false,true);�
229						submenu.find('ul').hide();�
230						if(effectObj.useFade) { �
231							submenu.fadeOut({duration : effectOpts.duration * 1.40, queue : false});�
232						}�
233						submenu.hide(effectObj.name, effectOpts, function(){�
234							$(this).removeAttr("style");�
235							$(this).find("ul").removeAttr("style").hide();�
236							callback();�
237						});�
238					}, 100);	�
239�
240					submenu.data('hideTimeout', timeout);�
241�
242					break;�
243				�
244				case "fade":�
245					uls.stop(true, true);�
246					$(self).find('ul').hide(effectObj.name, effectOpts, function() {�
247						callback();�
248					});�
249					break;�
250�
251				default:�
252					uls.stop(true, false);�
253					if(submenu.data('hideTimeout')) { �
254						clearTimeout($(self).find('ul').data('hideTimeout'));�
255					}�
256					var timeout = window.setTimeout(function(){�
257						submenu.hide(effectObj.name, effectOpts, function() {�
258							callback();�
259						});�
260					}, 100);	�
261					submenu.data('hideTimeout', timeout);�
262			}�
263		}�
264		�
265		$(menu).find("li").mouseenter(function(ev) {�
266			ev.preventDefault();�
267			ev.stopImmediatePropagation();�
268�
269			var self = this;�
270		�
271			clearTimeout(timeout);�
272			try { �
273�
274				$(this).siblings().each(function() {�
275					hideMenu($(this));�
276				});�
277			} catch(e) {�
278�
279			}�
280			�
281			showMenu($(self));�
282			�
283			�
284			�
285			$(self).find('li').each(function() {�
286				$(this).removeClass('hover');�
287				mouseLeft($(this).children('a'));�
288			});�
289			�
290			$(self).siblings('li').each(function() {�
291				var liItem = $(this);�
292				mouseLeft($(this).children('a'), function() {�
293					liItem.parent().find('.hover').each(function() {�
294						$(this).removeClass('hover');�
295						mouseLeft($(this).children('a'));�
296					});					�
297				});�
298				$(this).removeClass('hover');�
299			});�
300�
301			�
302			mouseEntered($(self).children('a'));�
303			$(self).addClass('hover');�
304			�
305			$(self).parents('li').each(function() {�
306				mouseEntered($(this).children('a'));�
307				$(this).addClass('hover');�
308			});�
309			�
310		}).mouseleave(function(ev){�
311			var self = this;�
312			if ($(self).find('>ul, >.ui-effects-wrapper>ul').length) {�
313				clearTimeout(timeout);�
314				timeout = window.setTimeout(function(){�
315					hideMenu($(self), function() {�
316						$(self).find('li').andSelf().each(function() {�
317							$(this).removeClass('hover');�
318							mouseLeft($(this).children('a'));�
319						});					�
320					});	�
321				}, 200);�
322			} else {�
323				clearTimeout(timeout);�
324				timeout = window.setTimeout(function(){�
325					$(self).removeClass('hover');�
326					mouseLeft($(self).children('a'));�
327				},0);�
328			}�
329		});�
330	}�
331�
332	function unbindEffect(name) { �
333		var menu = $("ul.FM2_" + name);�
334		$(menu).find("li").unbind('mouseenter');�
335		$(menu).find("li").unbind('mouseleave');�
336	}�
337�
338	function stickToTop(name, fullWidth, options) {�
339		var menu = $("div.FM2_" + name + "_container");�
340		var mobileButton = $("a#FM2_" + name + "_mobile_button");�
341		�
342		if(!menu.hasClass('stick')) { �
343			menu.data("top", menu.offset().top);�
344			menu.data("originalWidth", menu.width());�
345			menu.data('originalLeft',  menu.offset().left);�
346		} else {�
347			//menu.removeClass('stick');�
348			menu.removeClass('stick');�
349			menu.data("originalWidth", menu.width());�
350			menu.data('originalLeft',  menu.offset().left);�
351			menu.css({�
352				"left" : menu.offset().left�
353			});�
354�
355			menu.addClass('stick');�
356		}�
357		�
358		if (mobileButton.length) {�
359			if(!mobileButton.hasClass('stick')) { �
360				mobileButton.data("originalWidth", mobileButton.width());�
361			} else {�
362				//menu.removeClass('stick');�
363				mobileButton.removeClass('stick');�
364				mobileButton.data("originalWidth", mobileButton.width());�
365�
366				mobileButton.addClass('stick');�
367				mobileButton.width(mobileButton.data("originalWidth"));�
368			}�
369		}�
370		�
371		$(window).unbind('scroll.stickToTop').bind('scroll.stickToTop', function(ev) {�
372			doStickToTopScroll(ev, menu, fullWidth, options, name);�
373		});�
374		var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent );�
375		if (iOS) {�
376			$(window).unbind('scroll.stickToTop');�
377			$(window).unbind('touchmove.stickToTop').bind('touchmove.stickToTop', function(ev) { �
378				doStickToTopScroll(ev, menu, fullWidth, options, name);�
379			});�
380		}�
381	}�
382	�
383	function doStickToTopScroll(ev, menu, fullWidth, options, name) {�
384		if ($('.FM2_mobile_jq_menu').length && $('.FM2_mobile_jq_menu').is(":visible")) {�
385			var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent );�
386            if (!iOS || !($(ev.target).is('.FM2_mobile_jq_menu') || $(ev.target).parents('.FM2_mobile_jq_menu').length!=1)) {�
387                ev.preventDefault();�
388                ev.stopPropagation();�
389                return false;�
390            }�
391		}�
392		var window_top = $(window).scrollTop();�
393		var div_top = menu.data("top");�
394		var mobileButton = $("a#FM2_" + name + "_mobile_button");�
395		if (!mobileButton.data("originalWidth") || mobileButton.data("originalWidth")=='') {�
396			mobileButton.data("originalWidth", mobileButton.width());�
397		}�
398		if (window_top > div_top) {�
399			�
400			if(!fullWidth) { �
401				menu.css({�
402					"width" : menu.data("originalWidth"),�
403					"left" : menu.offset().left�
404				});�
405			} else { �
406				menu.css({�
407					"width" : "100%",�
408					'border-radius' : '0px',�
409					'-webkit-border-radius' : '0px',�
410					"left" : '0px'�
411				})�
412			}�
413�
414�
415			menu.addClass('stick');�
416			mobileButton.addClass('stick');�
417			mobileButton.width(mobileButton.data("originalWidth"));�
418			if ($('.FM2_mobile_jq_menu').length && options.preset=='relative') {�
419				$('.FM2_mobile_jq_menu').css('position', 'fixed');�
420				$('.FM2_mobile_jq_menu').css('left', 'auto');�
421				$('.FM2_mobile_jq_menu').css('width', mobileButton.outerWidth()+"px");�
422				$('.FM2_mobile_jq_menu').css('top', mobileButton.outerHeight()+"px");�
423			}�
424			�
425		} else {�
426			menu.removeClass('stick').removeAttr('style');�
427			mobileButton.removeClass('stick').removeAttr('style');�
428			mobileButton.data("originalWidth", '');�
429�
430			flexiCssMenus.alignMenu(name, options);�
431			if ($('.FM2_mobile_jq_menu').length && options.preset=='relative') {�
432				$('.FM2_mobile_jq_menu').css('position', '');�
433				$('.FM2_mobile_jq_menu').css('top', "");�
434			}�
435		}�
436	}�
437	�
438	function getButtonLevel(selectedNode) {�
439		try {�
440			var upULSNo = 0;�
441			�
442			//log("##getSelectedLevel##" + selectedNode.parentNode);�
443			while (selectedNode && selectedNode[0].className != undefined &&selectedNode[0].className.toLowerCase().indexOf("fm") < 0) {�
444				//log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());�
445				if (selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul") {�
446					upULSNo++;�
447				}�
448				selectedNode = $(selectedNode).parent();�
449			}�
450		} catch (e) {�
451			alert("Error in getSelectedLevel ##" + e);�
452		}�
453		return upULSNo;�
454	}�
455�
456�
457	function destroy() { �
458		window.flexiCssMenus = {};�
459	}�
460�
461	function addParentSelected(liElem) { �
462		var parentUl = liElem.parent();�
463		if(parentUl[0].tagName && parentUl[0].tagName.toLowerCase() == "ul") { �
464			var parentLi = parentUl.parent();�
465			if(parentLi[0].tagName && parentLi[0].tagName.toLowerCase() == "li") { �
466				parentLi.add(parentLi.children('a')).addClass('sel');�
467				addParentSelected(parentLi);�
468			}�
469		}�
470	}�
471�
472	function checkForButtonSelect(menu, location) { �
473		var selected = false;�
474		menu.children('li').each(function() { �
475			if(selected) { �
476				return;�
477			}�
478			var $a = $(this).children('a');�
479			var href = $a.attr('href') ? $a.attr('href') : "";�
480�
481�
482			if(href != "#" && href != "") { �
483				if(location.indexOf(href) > -1) { �
484					�
485					selected = true;�
486					$(this).add($a).addClass('sel');�
487					addParentSelected($(this));�
488				}�
489			} �
490�
491			if(!selected) { �
492				if($(this).children('ul').length > 0)�
493				checkForButtonSelect($(this).children('ul').first(), location);�
494			}�
495		});�
496	}�
497�
498�
499	function addSelectedClass(name) { �
500		var currentPage = window.location.href;�
501		var menu = $("ul.FM2_" + name);�
502�
503		checkForButtonSelect(menu, currentPage);�
504	}�
505�
506�
507	function alignMenu(name, options) { �
508		�
509		if(!options || !options['align'] || options['align'] == "left") { �
510			return;	�
511		}�
512		var align = options['align'];�
513		var menu = $('ul.FM2_' + name);�
514		var container = menu.parent();�
515�
516		�
517�
518		switch(align) { �
519			case "center" : �
520				var containerWidth = $(container).outerWidth(true,false);	�
521				$(container).css({ �
522					"float" : "none",�
523					"width" : containerWidth + "px",�
524					"margin-left" : "auto",�
525					"margin-right" : "auto"�
526				})�
527			break;�
528�
529			case "right" : �
530				if($(container).css('float') == 'left') {�
531					$(container).css({�
532						"float" : "right"�
533					})�
534				}�
535		}�
536�
537	}�
538	�
539	if (!window.flexiCssMenus) window.flexiCssMenus = {};�
540	window.flexiCssMenus.stickToTop = stickToTop;�
541	window.flexiCssMenus.bindEffect = bindEffect;�
542	window.flexiCssMenus.addSelectedClass = addSelectedClass;�
543	window.flexiCssMenus.unbindEffect = unbindEffect;�
544	window.flexiCssMenus.alignMenu = alignMenu;�
545	�
546})(menus_jQuery);�
547�
548(function($) {�
549�
550	//css menus touch devices//�
551�
552	var CSSMenus;�
553�
554	if (!CSSMenus)�
555	{�
556		CSSMenus = new Object;�
557	}�
558�
559	// Set the user aggent into our own variable.�
560	CSSMenus.UserAgent = navigator.userAgent.toLowerCase();�
561�
562	/*�
563	 *	IsMobile() - Returns true if this is a mobile device.�
564	 */�
565	CSSMenus.IsMobile = function (viewportWidth, maxWidth)�
566	{�
567		var deviceMatch = (/iphone|ipod|android|blackberry|mini|windows\sce|windows\sphone|iemobile|palm|webos|series60|symbianos|meego/i.test(CSSMenus.UserAgent));�
568		var sizeMatch;�
569		var isLTIE9 =  (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9);�
570		if(window.matchMedia && !isLTIE9) { �
571			sizeMatch = window.matchMedia("(max-width:" + (maxWidth) + "px)").matches;�
572		} else { �
573			sizeMatch = viewportWidth < maxWidth;�
574		}�
575		//console.log('mobile match ' + deviceMatch + " .. " + sizeMatch)�
576		return deviceMatch || sizeMatch;�
577	}�
578�
579	/*�
580	 *	IsTablet() - Return true if this is a tablet device.�
581	 */�
582	CSSMenus.IsTablet = function (viewportWidth, minWidth, maxWidth)�
583	{�
584		var UA = CSSMenus.UserAgent;�
585		var is_touch_device = 'ontouchstart' in document.documentElement;�
586		/*if (UA.indexOf("android") != -1 && UA.indexOf("mobile") == -1)�
587			return true;�
588		*/�
589		�
590		var deviceMatch = (/ipad|Win64|tablet/i.test(UA));�
591		var sizeMatch;�
592		var isLTIE9 =  (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9);�
593		if(!isLTIE9 && window.matchMedia) { �
594			sizeMatch = window.matchMedia("(max-width:" + (maxWidth) + "px) and (min-width:" + (minWidth+1) + "px)").matches;�
595			//console.log('tablet match ' + sizeMatch + " -- " + "(max-width:" + (maxWidth-1) + "px) and (min-width:" + minWidth + "px)");�
596		} else { �
597			sizeMatch = viewportWidth < maxWidth && viewportWidth >= minWidth;�
598		}�
599		//alert('device match ' + deviceMatch + ".. " + sizeMatch+ " .. touch device " + is_touch_device);�
600		return is_touch_device && (deviceMatch || sizeMatch);�
601	}�
602�
603	CSSMenus.IsAppleProduct = function ()�
604	{�
605		return (/iphone|ipod|ipad/i.test(CSSMenus.UserAgent));�
606	}�
607�
608	�
609	function xtdCSSMenuInit(Name, options)�
610	{�
611		// If this is a mobile device we want to show one of our menus�
612		// either the one for small devices or for devices with higher resolution.�
613		�
614		var viewportWidth = window.flexiCssMenus.correctedViewportW();�
615		�
616		�
617		//console.log(viewportWidth + " .. " + options.mobileMaxWidth + " > " + CSSMenus.IsTablet(viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth));�
618		var mobileCheck = CSSMenus.IsMobile(viewportWidth, options.mobileMaxWidth)�
619		var isMobileDevice = options.enableMobile && mobileCheck;�
620		var tabletCheck = CSSMenus.IsTablet(viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth);�
621		var isTabletDevice = (options.enableTablet && tabletCheck) || (!options.enableMobile && mobileCheck);�
622�
623�
624		//alert('mobile device ' + isMobileDevice + " .. tablet device " + isTabletDevice);�
625�
626		if (isMobileDevice || isTabletDevice)�
627		{�
628			try�
629			{�
630				if (isTabletDevice)�
631				{�
632					$("#"+Name+"_container").show();�
633					xtdSetTabletBehavior("#"+Name+"_container", options);�
634					flexiCssMenus.alignMenu(Name, options);�
635				}�
636				else�
637				{�
638�
639					�
640					var BtnParent = $("body");�
641�
642					var Menu = new XTDMobileMenu(Name);�
643					// Initialize the menu�
644					Menu.Init(options);�
645					Menu.Create(BtnParent);�
646				}�
647			}�
648			catch (e)�
649			{�
650				// Something went wrong.�
651				//console.error(e);�
652				return false;�
653			}�
654�
655			// The banner was succesus fully been created.�
656			return true;�
657		} else { �
658			$("#"+Name+"_container").show();�
659		}�
660�
661		// Something wrong happened.�
662		return false;�
663	}�
664�
665	/*�
666	 *	***	Tablet menu section. It binds the events for mouseenter and click for each button�
667	 *	***	which has a submenu.�
668	 *	�
669	 *	xtdSetTabletBehavior() - set tablet behaviour�
670	 *	�
671	 *	@param: elem - the jquery object representing the menu to modify.�
672	 *	@param: options - object with settings for the close button�
673	 */�
674�
675	function xtdSetTabletBehavior(elem, options) {�
676		var children = $(elem).children();�
677		�
678		for (var i = 0; i < children.length; i++) {�
679			if (children[i].tagName && children[i].tagName.toLowerCase() == "li") {�
680				if(children[i].className.toLowerCase().indexOf("fm_close") == -1) {�
681					if(CSSMenus.IsAppleProduct()) {�
682						children.eq(i).bind("mouseenter", flexiCSSMenus_mouseEnterHandlerForIpad);�
683					}�
684					children.eq(i).bind("click", flexiCSSMenus_clickHandlerForTouchDevices);�
685				} else {�
686					children.eq(i).bind("click", flexiCSSMenus_clickHandlerForCloseButton);�
687				}�
688			}�
689�
690			if (children[i].tagName && children[i].tagName.toLowerCase() == "ul" && flexiCSSMenus_getButtonLevel($(children[i])) > 0 && options.tabletCloseBtnEnable != false) {�
691				var closeLabel;�
692				if(options.tabletCloseBtnLabel) { �
693					closeLabel = options.tabletCloseBtnLabel;�
694				} else { �
695					closeLabel = "Close";�
696				}�
697�
698				var liHtml = "<a href='#' target='_self'><font class='leaf'>"+ closeLabel +"</font></a>";�
699				var closeLI = $("<li/>").addClass("FM_CLOSE").html(liHtml);�
700				children.eq(i).append(closeLI);�
701			}�
702�
703			xtdSetTabletBehavior(children.get(i), options);�
704		}�
705	}�
706�
707	function xtdUnsetTabletBehavior(elem) { �
708		var children = $(elem).children();�
709�
710		for(var i=0; i<children.length; i++) {�
711			children.eq(i).unbind("click");�
712			xtdUnsetTabletBehavior(children.get(i));�
713		}�
714	}�
715�
716�
717	CSSMenus.flexiCSSMenus_currentButton = undefined;�
718	CSSMenus.flexiCSSMenus_currentLevel = -1;�
719�
720�
721	/*�
722	 *	If it's ipad, remove the mouseover event.�
723	 */�
724	function flexiCSSMenus_mouseEnterHandlerForIpad(event) {�
725		�
726	}�
727�
728	/*�
729	 *	Method which is called when somebody clicks on a option.�
730	 */�
731	function flexiCSSMenus_clickHandlerForTouchDevices(event) {�
732		var submenu = $(this).find("ul:eq(0)");�
733		�
734		if(event.stopPropagation) event.stopPropagation();�
735�
736		if(CSSMenus.flexiCSSMenus_currentButton && (CSSMenus.flexiCSSMenus_currentButton.get(0) == this) || !submenu.get(0)) { �
737			var parentNode;�
738			var level;�
739			while(CSSMenus.flexiCSSMenus_currentButton) {�
740				parentNode = CSSMenus.flexiCSSMenus_currentButton.parent().parent();�
741�
742				level = flexiCSSMenus_getButtonLevel(parentNode);�
743				flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);�
744�
745				if(level > 0) {�
746					CSSMenus.flexiCSSMenus_currentButton = parentNode.parent().parent();�
747				} else {�
748					if(!parentNode) {�
749						flexiCSSMenus_deselectButton(parentNode);�
750					}�
751					CSSMenus.flexiCSSMenus_currentButton = undefined;�
752				}�
753				CSSMenus.flexiCSSMenus_currentLevel = level - 1;�
754			}�
755�
756			return;�
757		} else { �
758			event.preventDefault();�
759		}�
760		�
761		try { �
762			var node, level = flexiCSSMenus_getButtonLevel($(this));�
763		} catch(e) { �
764			alert('error 2');�
765		}�
766�
767		if(level > CSSMenus.flexiCSSMenus_currentLevel) { �
768			CSSMenus.flexiCSSMenus_currentButton = $(this);�
769�
770			if(level > 0) { �
771				node = CSSMenus.flexiCSSMenus_currentButton.parent();	�
772				while(level > CSSMenus.flexiCSSMenus_currentLevel && node.get(0).className.toLowerCase().indexOf('fm') < 0) { �
773					if(node.get(0).tagName && node.get(0).tagName.toLowerCase() == "li") {�
774						flexiCSSMenus_selectButton($(node));�
775						CSSMenus.flexiCSSMenus_currentLevel--; �
776					}�
777					node = node.parent();		�
778				}�
779			}		�
780			flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton));				�
781			CSSMenus.flexiCSSMenus_currentLevel = level;�
782			return;�
783		} �
784�
785		if(level == CSSMenus.flexiCSSMenus_currentLevel) { �
786			try { �
787				flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);�
788				CSSMenus.flexiCSSMenus_currentButton = $(this);�
789				CSSMenus.flexiCSSMenus_currentLevel = level;�
790				flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton));�
791			} catch(e) { �
792				alert('error 3');�
793			}�
794			return;�
795		}�
796		�
797		if(level < CSSMenus.flexiCSSMenus_currentLevel) { �
798			//flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);�
799			while(level < CSSMenus.flexiCSSMenus_currentLevel) { �
800				CSSMenus.flexiCSSMenus_currentButton = CSSMenus.flexiCSSMenus_currentButton.parent();�
801				if(CSSMenus.flexiCSSMenus_currentButton.get(0).tagName && CSSMenus.flexiCSSMenus_currentButton.get(0).tagName.toLowerCase() == "li") {�
802					flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);�
803					CSSMenus.flexiCSSMenus_currentLevel--;�
804				}�
805			}�
806			CSSMenus.flexiCSSMenus_currentButton = $(this);�
807			CSSMenus.flexiCSSMenus_currentLevel = level;�
808			flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton));�
809			return;�
810		}�
811	}�
812�
813	/*�
814	 *	Set behaviour for close button�
815	 */�
816	function flexiCSSMenus_clickHandlerForCloseButton(event) {�
817		var parentNode = $(this).parent().parent();�
818		if(event.stopPropagation) event.stopPropagation();�
819		event.preventDefault();�
820		flexiCSSMenus_deselectButton(parentNode);�
821		try{�
822			var level = flexiCSSMenus_getButtonLevel(parentNode);�
823		} catch (e) {�
824			//console.error(e);�
825		}�
826		if(level > 0) {�
827			CSSMenus.flexiCSSMenus_currentButton = parentNode.parent().parent();�
828		} else {�
829			CSSMenus.flexiCSSMenus_currentButton = undefined;�
830		}�
831		CSSMenus.flexiCSSMenus_currentLevel = level - 1;�
832	}�
833�
834	/*�
835	 *	Removes the "hovered" class and sets the "current level" and "current selected button"�
836	 *	to the correct values	�
837	 */�
838	function flexiCSSMenus_deselectButton(button) {�
839		try { �
840			if(button) {  �
841				button.find('a:eq(0)').removeAttr("class");�
842				var submenu = button.find('ul');�
843				if(submenu.length > 0) { �
844					button.removeAttr("class");�
845					hideSubmenu(submenu.eq(0));�
846					var hovered = submenu.eq(0).find(".hover");�
847					if (hovered.length > 0) {�
848						flexiCSSMenus_deselectButton(hovered.eq(0));�
849					}�
850				}�
851				�
852				var lis = submenu.eq(0).find('li');�
853				for(var i = 0; i < lis.length; i++) { �
854�
855					lis.eq(i).css("position", "relative");�
856				}�
857			}�
858		} catch(e) { �
859			//console.log(e);�
860		}�
861	}�
862�
863	function flexiCSSMenus_selectButton(button) {�
864		//button.css("position","relative");�
865		�
866		try { �
867			var submenu = button.find('ul');�
868			submenu.eq(0).css("z-index", "1");�
869			if(submenu.length > 0) {�
870				button.addClass("hover");�
871				showSubmenu(submenu.eq(0));�
872			�
873				var lis = submenu.eq(0).find('li');�
874				for(var i = 0; i < lis.length; i++) { �
875					lis.eq(i).css("position", "relative");�
876				}�
877			}�
878		} catch(e) { �
879			alert('error 1##'+e);�
880		}�
881	}�
882�
883�
884	function flexiCSSMenus_getButtonLevel(selectedNode) {�
885		try {�
886			var upULSNo = 0;�
887			�
888			//log("##getSelectedLevel##" + selectedNode.parentNode);�
889			while (selectedNode && selectedNode[0].className != undefined &&selectedNode[0].className.toLowerCase().indexOf("fm") < 0) {�
890				//log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());�
891				if (selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul") {�
892					upULSNo++;�
893				}�
894				selectedNode = $(selectedNode).parent();�
895			}�
896		} catch (e) {�
897			alert("Error in getSelectedLevel ##" + e);�
898		}�
899		return upULSNo;�
900	}�
901�
902	function flexiCSSMenus_getButtonMenu(selectedNode) {�
903		try {�
904			var upULSNo = 0;�
905			�
906			//log("##getSelectedLevel##" + selectedNode.parentNode);�
907			while (selectedNode && (selectedNode[0].className.toLowerCase().indexOf("FM2_") == -1 || selectedNode[0].className.toLowerCase().indexOf("_container") == -1) ) {�
908				//log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());�
909				selectedNode = selectedNode.parent();�
910			}�
911		} catch (e) {�
912			alert("Error in getButtonMenu ##" + e);�
913		}�
914		return selectedNode;�
915	}�
916�
917	function flexiCSSMenus_getMenuType(menuNode) {�
918		var menu, comment, start, end, type, props;�
919		menu = menuNode.get(0);�
920		�
921		start = menu.innerHTML.indexOf("<!--") + 4;�
922		end = menu.innerHTML.indexOf("-->");�
923		comment = menu.innerHTML.substring(start, end);�
924		props = comment.split(';');�
925		type = props[props.length - 2].replace('type=', '');�
926		�
927		return type;�
928	}�
929�
930	function showSubmenu(el){�
931		var uls = $("#"+CSSMenus.name+"_container").find("ul");�
932�
933�
934		�
935		if(el.is(":animated") || (el.get(0) == $("#" + CSSMenus.name).get(0))) {�
936			return;�
937		}�
938�
939		if (flexiCssMenus.settings.effect == "none") {�
940			el.show();�
941		} else {�
942			el.show(flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200);�
943		}�
944	}�
945�
946	function hideSubmenu (el) {�
947		if (el.is(":animated") || (el.get(0) == $("#" + CSSMenus.name).get(0))) {�
948			return;�
949		}�
950		var uls = $("#"+CSSMenus.name+"_container").find("ul");�
951		if(flexiCssMenus.settings.effect == "none") {�
952			el.hide();�
953		} else {�
954			el.hide(flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200);�
955		}�
956	}�
957�
958	/**�
959	 **	End of tablet menu operations�
960	 **/�
961�
962	/*�
963	 *	Mobile menu generation�
964	 *�
965	 *	XTDMobileMenu() - Class which creates and handles a javascript menu for small mobile devices.�
966	 */�
967	function XTDMobileMenu(MenuName)�
968	{�
969		/* Private variables */�
970		var Self = this;�
971		var Parent = null;�
972�
973		var MenuName = MenuName;�
974		var Options = null;�
975�
976		var MenuButton = null;�
977		var MainContainer = null;�
978		var MainMenu = null;�
979		var mobileOverlay = null;�
980		var Container = null;�
981		var Header = null;�
982		var MainUL = null;�
983		var Visible = false;�
984		var mainMenuHeader = null;�
985�
986		var presets = {�
987			"fixed" : {�
988				effect : 'fade',�
989				overlay : true�
990			},�
991			"relative" : {�
992				effect : 'slideUp',�
993				overlay : true�
994			},�
995			"push" : { �
996				effect : 'slideLeft',�
997				overlay : false�
998			}�
999		};�
1000�
1001		window.flexiCssMenus.presetSettings = null;�
1002�
1003		/*�
1004		 *	Init() - Initialize menu data.�
1005		 */�
1006		this.Init = function (initObj)�
1007		{�
1008			Options =�
1009			{�
1010				FontColor: "#fff",�
1011				FontShadowColor: "#000",�
1012				NormalColor: "#ff0000",//"#F7F7F7",�
1013				HoverColor: "#DADADA"�
1014			};�
1015			�
1016			if (initObj) {�
1017				for (var i in initObj) {�
1018					Options[i] = initObj[i];�
1019				}�
1020			}�
1021�
1022			window.flexiCssMenus.presetSettings = presets[Options.preset];�
1023�
1024		}�
1025�
1026		/*�
1027		 *	Create() - Create the menu with the given settings.�
1028		 */�
1029		this.Create = function (ButtonParent, onResize)�
1030		{�
1031			if ( document.readyState !== 'complete' ) { �
1032				$(document).ready(function() { �
1033					CreateMainButton(ButtonParent);�
1034					var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());�
1035					var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());�
1036					createStructure();�
1037					$(mobileOverlay).height(overlayHeight);�
1038					$(mobileOverlay).width(overlayWidth);�
1039					�
1040				});�
1041			} else { �
1042�
1043				var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());�
1044				var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());�
1045				CreateMainButton(ButtonParent);�
1046				createStructure();�
1047				$(mobileOverlay).height(overlayHeight);�
1048				$(mobileOverlay).width(overlayWidth);�
1049			}�
1050			�
1051		}�
1052�
1053		function createStructure() { �
1054			mobileOverlay = document.createElement("div");�
1055			$(mobileOverlay).addClass('FM2_' + MenuName + '_mobile-overlay FM2_' + MenuName + '_mobile-overlay-hide mobile-overlay');�
1056			�
1057			$(mobileOverlay).mousedown(function(ev) { �
1058				ev.preventDefault();�
1059			}).click(function() { �
1060				// alert('clicked');�
1061				if(Visible) { �
1062					Self.Show(Visible = !Visible);�
1063				}�
1064			});�
1065�
1066			�
1067			�
1068			MainContainer = document.createElement("div");�
1069�
1070			MainContainer.setAttribute("id", "FM2_" + MenuName+"_jq_menu_back");�
1071			MainContainer.setAttribute("class", "FM2_mobile_jq_menu ui-main-container ui-corner-all ui-mobile-viewports");�
1072			MainContainer.style.height = "0px"�
1073			�
1074�
1075			MainContainer.style.zIndex = "10005";�
1076�
1077			Container = document.createElement("div");�
1078			Container.setAttribute("class", "menu-container");�
1079			MainMenu = document.createElement("div");�
1080			MainMenu.className = "menu main-menu";�
1081�
1082			mainMenuHeader = createMainMenuHeader("Menu");�
1083			MainContainer.appendChild(mainMenuHeader);�
1084			�
1085			var ItemList = CreateItemList();�
1086�
1087			MainMenu.appendChild(ItemList);�
1088�
1089			Container.appendChild(MainMenu);�
1090			MainContainer.appendChild(Container);�
1091			// Append the main container.�
1092			�
1093			Parent = /*(Parent != null)? Parent :*/ document.getElementsByTagName('body')[0];�
1094�
1095			if(Options.preset == "fixed") { �
1096				mobileOverlay.appendChild(MainContainer);�
1097				Parent.appendChild(mobileOverlay);�
1098			} else { �
1099				$(MenuButton).after($(MainContainer));�
1100			}�
1101			�
1102�
1103			if(Options.preset != 'relative') { �
1104				if(Options.preset != 'push') { �
1105					$(Container).css('top', parseInt($(mainMenuHeader).outerHeight(true)) + "px");�
1106				} else { �
1107					MainMenu.style.marginTop =  parseInt($(mainMenuHeader).outerHeight(true)) + "px";�
1108				}�
1109				var calcHeight = parseInt($(Container).height()) + parseInt($(mainMenuHeader).outerHeight()) ;�
1110				if(Options.preset == "push") { �
1111					//alert('dadsdf ' + $('body').outerWidth() + " .. " +  $(window).width() + " .. " +  $(document).width() + "px");�
1112					MainContainer.style.height = Math.max($('body').outerWidth(), $(window).width(), $(document).width()) + "px";�
1113					Container.style.height = calcHeight + "px" ;�
1114				} else { �
1115					MainContainer.style.height = calcHeight + "px" ;�
1116				}�
1117			}�
1118			$(MainContainer).hide();�
1119			�
1120			//$("#creative_menu_structure").remove();�
1121�
1122			// Set the links callback.�
1123			UpdateLinks();�
1124�
1125�
1126			GetCurrentItem();�
1127�
1128			Self.Update();�
1129		}�
1130�
1131		/*�
1132		 *	Show() - Show the menu�
1133		 */�
1134		this.Show = function (Visible) {�
1135			//alert("show me " + Visible);�
1136			if (Visible){�
1137				$(mobileOverlay).removeClass('FM2_' + MenuName + '_mobile-overlay-hide');�
1138�
1139				switch(window.flexiCssMenus.presetSettings.effect) { �
1140					case "fade" : �
1141�
1142						$(MainContainer).css('width', $('body').width());�
1143						var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());�
1144						$(mobileOverlay).width(overlayWidth);�
1145					�
1146						$(MainContainer).fadeIn("fast").css({�
1147							top : $(window).scrollTop(),�
1148							left : $('body').css('margin-left')�
1149						});�
1150						var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());�
1151						var containerHeight = $(Container).height() + $(window).scrollTop() + 300;�
1152�
1153						$(mobileOverlay).height(Math.max(overlayHeight, containerHeight));�
1154					break;�
1155�
1156					case "slideUp" : �
1157						$(MainContainer).css('height','auto').slideDown();�
1158�
1159					break;�
1160�
1161					case "slideLeft":�
1162						$('body').stop(true, true).css({�
1163							'width' : '100%',�
1164							'overflow' : 'hidden'�
1165						}).animate({�
1166							'margin-left' : '72%'�
1167						}, '300');�
1168�
1169						var pageHeight =  Math.max($('body').outerWidth(), $(window).width(), $(document).outerHeight());�
1170						var containerHeight = $(Container).height() + $(window).scrollTop() + 20;�
1171�
1172�
1173						$(MainContainer).stop(true, true).show().css('height',Math.max(pageHeight, containerHeight)).animate({�
1174							left : '0px'�
1175						}, '400');�
1176�
1177						$(Container).css({�
1178							"margin-top" : $(window).scrollTop()�
1179						});�
1180�
1181						$(mainMenuHeader).css({�
1182							"margin-top" : $(window).scrollTop() +10�
1183						});�
1184						�
1185					break;�
1186				}�
1187				�
1188			//	$('body').bind('touchmove', function(e){ e.preventDefault(); });�
1189				�
1190				//$('body').css('margin-left', '40px');�
1191�
1192			} else {�
1193				$(mobileOverlay).addClass('FM2_' + MenuName + '_mobile-overlay-hide');�
1194				switch(window.flexiCssMenus.presetSettings.effect) { �
1195					case "fade" : �
1196						$(MainContainer).fadeOut("fast", function (){�
1197							$(MainContainer).find(".submenu").remove();�
1198							$(MainContainer).find(".menu").css("width", "").show();�
1199							//$(mobileOverlay).remove();�
1200						});�
1201					break;�
1202�
1203					case "slideUp" : �
1204						$(MainContainer).slideUp();�
1205�
1206					break;�
1207�
1208					case "slideLeft":�
1209						$('body').stop(true, true).animate({�
1210							'margin-left' : '0'�
1211						}, '400', function() { �
1212							$(this).css('width', 'auto')�
1213						});�
1214�
1215						$(MainContainer).stop(true, true).animate({�
1216							left : '-100%'�
1217						}, '300', function() { �
1218							$(this).hide();�
1219						})�
1220						�
1221					break;�
1222				}�
1223				�
1224			//	$('body').unbind('touchmove');�
1225			}�
1226		}�
1227		�
1228		/*�
1229		 *	ShowHeader() - Show/Hide the header.�
1230		 *�
1231		 *	PARAMETERS:�
1232		 *		Visible - Specifies if this should be visible or not.�
1233		 */�
1234		this.ShowHeader = function (Visible)�
1235		{�
1236			if (Visible)�
1237				$(Header).show();�
1238			else�
1239				$(Header).hide();�
1240		}�
1241�
1242		/*�
1243		 *	GoToSubmenu() - Go to the specified submenu.�
1244		 */�
1245		this.GoToSubmenu = function(ParentID, Current)�
1246		{�
1247			if ($(Current).parent().has("ul").length)�
1248			{�
1249				var Submenu = document.createElement("div");�
1250				Submenu.setAttribute("class", "menu submenu");�
1251				var UlElement = $(Current).parent().children("ul").clone(true, true);�
1252�
1253				// Save these to know which submenu to set to header.�
1254				UlElement.attr("elcaption", $(Current).text());�
1255				UlElement.attr("ellink", $(Current).attr("href"));�
1256				UlElement.attr("eltarget", $(Current).attr("target"));�
1257				UlElement.show();�
1258				var newHeader = CreateHeader($(Current).text(), $(Current).attr("href"));�
1259�
1260				Submenu.appendChild(newHeader);�
1261				UlElement.appendTo($(Submenu));�
1262�
1263				$(Submenu).appendTo(Container);�
1264�
1265				var containerWidth = parseInt($(MainContainer).width());�
1266				Submenu.style.width = containerWidth + "px";�
1267				$(Container).children(".menu").eq(-1).css("width", containerWidth);�
1268				$(Container).children(".menu").eq(-2).css("width", containerWidth);�
1269				Container.style.width = 2 * containerWidth + 2 + "px";�
1270				MainContainer.style.height = Math.max(parseInt(MainContainer.style.height), parseInt(Container.style.height)) + "px";�
1271				switch(window.flexiCssMenus.presetSettings.effect) { �
1272					case "fade":�
1273						�
1274						$(Container).animate({display:"none"}, 1, "swing", function(){�
1275							$(Container).children(".menu").eq(-2).hide();�
1276							$(Container).css({"width" : "", "left" : ""});�
1277							$(Container).children(".menu").eq(-1).css("opacity", 0).animate({opacity:1},150);�
1278						});�
1279�
1280					break;�
1281�
1282					case "slideLeft" :�
1283						$(Container).animate({left :"-" + containerWidth + "px"}, 250, "swing", function(){�
1284							$(Container).children(".menu").eq(-2).hide();�
1285							$(Container).css({"width" : "", "left" : ""});�
1286							$(Container).children(".menu").eq(-1).css("width", "").css({�
1287								top : $(window).scrollTop()�
1288							});�
1289						});�
1290�
1291					break;�
1292�
1293					case "slideUp" :�
1294					�
1295						$(Container).animate({left :"-" + containerWidth + "px"}, 250, "swing", function(){�
1296							$(Container).children(".menu").eq(-2).hide();�
1297							$(Container).css({"width" : "", "left" : ""});�
1298							$(Container).children(".menu").eq(-1).css("width", "");�
1299						});�
1300					break;�
1301				}�
1302				�
1303�
1304				�
1305�
1306			}�
1307�
1308�
1309		}�
1310�
1311		/*�
1312		 *	GoBack() - Go back to the previous menu submenu.�
1313		 */�
1314		this.GoBack = function (Current)�
1315		{�
1316			if ($(Container).children(".menu").length > 1) {�
1317				var containerWidth = parseInt($(MainContainer).width());�
1318�
1319				$(Container).children(".menu").eq(-1).css("width", containerWidth + "px");�
1320				$(Container).children(".menu").eq(-2).show().css("width", containerWidth + "px");�
1321				$(Container).css({"width" : 2 * containerWidth + "px", "left" : "-" + containerWidth + "px"});�
1322				switch(window.flexiCssMenus.presetSettings.effect) { �
1323					case "fade" : �
1324						$(Container).animate({opacity : 1}, 1, "swing", function() {�
1325							$(Container).children(".menu").last().remove();�
1326							$(Container).css({"width" : "", "left" : ""});�
1327							$(Container).children(".menu").eq(-1).css("opacity", 0).animate({opacity:1},150);�
1328						});�
1329�
1330					break;�
1331�
1332					case "slideLeft" :�
1333�
1334						$(Container).animate({left : "0px"}, 250, "swing", function() {�
1335							$(Container).children(".menu").last().remove();�
1336							$(Container).css({"width" : "", "left" : ""});�
1337							$(Container).children(".menu").eq(-1).css("width", "");�
1338						});�
1339					break;�
1340�
1341					case "slideUp" :�
1342					�
1343						$(Container).animate({left : "0px"}, 250, "swing", function() {�
1344							$(Container).children(".menu").last().remove();�
1345							$(Container).css({"width" : "", "left" : ""});�
1346							$(Container).children(".menu").eq(-1).css("width", "");�
1347						});�
1348					break;�
1349				}�
1350			}�
1351		}�
1352�
1353		�
1354		/*�
1355		 *	SetOptions() - Set Menu options.�
1356		 */�
1357		this.SetOptions = function (Value)�
1358		{�
1359			Options = $.extend(true, Options, Value);�
1360�
1361			// Update menu with the new options.�
1362			Self.Update();�
1363		}�
1364�
1365		/*�
1366		 *	Update() - Update the menu.�
1367		 */�
1368		this.Update = function ()�
1369		{�
1370			if ($(Container).children("ul").length == 1)�
1371			{�
1372				$(Header).children("a.back-btn").css("display", "none");�
1373			}�
1374		}�
1375�
1376�
1377		/* Private functions */�
1378�
1379		/*�
1380		 *	CreateMainButton() - Create the Level 0 button.�
1381		 */�
1382		function CreateMainButton(Parent) {�
1383			�
1384			// search the page for already created button�
1385			var btn = $("#FM2_" + MenuName + "_mobile_button");�
1386�
1387			if(btn.length > 0) { �
1388				btn.attr('href', '#').removeAttr('style');�
1389				MenuButton = btn[0];�
1390			} else { �
1391				�
1392				// create a new button�
1393				MenuButton = document.createElement("a");�
1394�
1395				MenuButton.innerHTML += "<span class='down-arrow'>&#x25BC;</span><span class='caption'>Menu</span>";�
1396				MenuButton.setAttribute("href", "#");�
1397				MenuButton.setAttribute("id", "FM2_" + MenuName + "_mobile_button");�
1398				�
1399				$(MenuButton).addClass("FM2_mobile_button").appendTo(Parent);�
1400				�
1401			}�
1402			�
1403			$(MenuButton).unbind('click').click(function (ev) {�
1404				ev.preventDefault();�
1405				ev.stopPropagation();�
1406				�
1407				// Toggle visible.�
1408				Self.Show(Visible = !Visible);�
1409			});�
1410		}�
1411�
1412		/*�
1413		 *	CreateHeader() - Create the menu header.�
1414		 */�
1415		function CreateHeader(Caption, Link)�
1416		{�
1417			var Header = document.createElement("div");�
1418			var BackBtn = document.createElement("a");�
1419			var CloseBtn = document.createElement("a");�
1420			var Title = document.createElement("p");�
1421�
1422			Header.setAttribute("id", MenuName+"_jq_menu_header");�
1423			Header.setAttribute("class", "menu-header");�
1424�
1425			BackBtn.setAttribute("href", "javascript: void(0);");�
1426			BackBtn.setAttribute("class", "back-btn");�
1427			�
1428			$(BackBtn).click(function (ev)�
1429			{�
1430				ev.stopPropagation();�
1431				// Go back.�
1432				Self.GoBack();�
1433			});�
1434�
1435			Title.innerHTML = "<a href='" + Link + "''>" + Caption + "</a>";�
1436�
1437			Header.appendChild(BackBtn);�
1438			Header.appendChild(Title);�
1439�
1440			return Header;�
1441		}�
1442�
1443		function createMainMenuHeader(caption) { �
1444			var Header = document.createElement("div");�
1445			Header.setAttribute("class", "main-menu-header");�
1446			/*var HeaderContainer = document.createElement("p");�
1447			var CloseBtn = document.createElement("span");�
1448			var Title = document.createElement("span");�
1449�
1450			�
1451�
1452			CloseBtn.setAttribute("href", "javascript: void(0);");�
1453			CloseBtn.setAttribute("class", "close-btn");�
1454			�
1455			�
1456			$(CloseBtn).click(function ()�
1457			{�
1458				// Go back.�
1459				Visible = false;�
1460				Self.Show(Visible);�
1461			});�
1462			$(Title).addClass('caption');�
1463			Title.innerHTML = caption;�
1464			�
1465			HeaderContainer.appendChild(Title);�
1466			HeaderContainer.appendChild(CloseBtn);�
1467			Header.appendChild(HeaderContainer);�
1468*/�
1469			$(Header).click(function (ev) {�
1470				ev.preventDefault();�
1471				ev.stopPropagation();�
1472				// Toggle visible.�
1473				Self.Show(Visible = !Visible);�
1474			});�
1475�
1476			return Header;�
1477		}�
1478�
1479		/*�
1480		 *	SetHeader() - Set caption and link to header.�
1481		 */�
1482		/*function SetHeader(Caption, Link, Target)�
1483		{�
1484			if (typeof(Link) != "undefined")�
1485				$(Header).children("p").html("<a href='"+Link+"' target='"+Target+"'>"+Caption+"</a>");�
1486			else�
1487				$(Header).children("p").html(Caption);�
1488		}*/�
1489�
1490		/*�
1491		 *	GetCurrentItem() - Get the current item from link.�
1492		 */�
1493		function GetCurrentItem()�
1494		{�
1495			var MenuItem = "Menu";�
1496�
1497			$(Container).children("ul").find("a").each(function ()�
1498			{�
1499				if ($(this).attr("href") == window.location)�
1500				{�
1501					MenuItem = $(this).children("p").html();�
1502				}�
1503			});�
1504�
1505			$(MenuButton).children("span.caption").children("p.xtd_menu_ellipsis").html(MenuItem);�
1506		}�
1507�
1508		/*�
1509		 *	CreateItemList() - Create a list with all menu/submenu items.�
1510		 */�
1511		function CreateItemList(Structure)�
1512		{�
1513			var Structure = (typeof(Structure) != "undefined") ? Structure : $("#" + MenuName + "_container > ul > li");�
1514			var ULElement = document.createElement("ul");�
1515�
1516			Structure.each(function (Index)�
1517			{�
1518				var LiElement = document.createElement("li");�
1519				var AElement = null;�
1520�
1521				LiElement.className = "ellipsis";�
1522				// Clone the original a element�
1523				AElement = $(this).children("a").clone().appendTo($(LiElement));�
1524				�
1525				// Add a paragraph for ellipsis to work.�
1526				AElement.html('<p class="xtd_menu_ellipsis">' + AElement.html() + '</p>'); �
1527�
1528				if ($(this).children("ul").length)�
1529				{�
1530					// Recursive call for the child elements.�
1531					var NewUL = CreateItemList($(this).children("ul").children("li"));�
1532					NewUL.style.display = "none";�
1533					LiElement.appendChild(NewUL);�
1534				}�
1535�
1536				ULElement.appendChild(LiElement);�
1537			});�
1538�
1539			return ULElement;�
1540		}�
1541�
1542		/*�
1543		 *	UpdateLinks() - Update the jquery click event.�
1544		 */�
1545		function UpdateLinks(Cont)�
1546		{�
1547			var ObjContainer = (Cont != undefined) ? Cont : MainMenu;�
1548			// Do some init here.�
1549�
1550			$(ObjContainer).children("ul").find("li").click(function (event)�
1551			{�
1552				var elem = $(this).children('a');�
1553				if($(MainContainer).find(".menu").filter(":visible").length > 1) {�
1554					//console.log($(".menu").filter(":visible").length);�
1555					return;�
1556				}�
1557�
1558				// Check if it has a child so we know if we execute the link or the child.�
1559				event.preventDefault();�
1560				event.stopPropagation();�
1561				if (elem.parent().has("ul").length)�
1562				{�
1563�
1564					Self.GoToSubmenu("", elem);�
1565					event.preventDefault();�
1566					event.stopPropagation();�
1567				}�
1568				else�
1569				{�
1570					if(elem.length > 0 && elem.attr('href')) { �
1571						window.location = elem.attr('href');�
1572					}�
1573					$(MenuButton).children("span.caption").children("p.xtd_menu_ellipsis").html(elem.children("p").html());�
1574					if(Visible) { �
1575						Self.Show(Visible = !Visible);�
1576					}�
1577				}�
1578			}).on('touchstart', function() { �
1579				$(this).addClass('clicked');�
1580			}).on('touchend', function() { �
1581				$(this).removeClass('clicked');�
1582			}).on('touchmove', function() { �
1583				$(this).removeClass('clicked');�
1584			});�
1585		}�
1586�
1587�
1588		/*�
1589		 * Destroy menu - destroy the mobile menu when required�
1590		 */�
1591		�
1592	}�
1593	function destroy() { �
1594		$(".mobile_menu_button").remove();�
1595		$('.mobile-overlay').remove();�
1596		$('.FM2_mobile_jq_menu').remove();�
1597		$('body').unbind('touchmove');�
1598		if(window.flexiCssMenus.presetSettings && window.flexiCssMenus.presetSettings.effect == "slideLeft") { �
1599			$('body').stop(true, true).css({�
1600				'margin-left' : '0',�
1601				'width': 'auto'�
1602			});�
1603		}�
1604	}�
1605	if (!window.flexiCssMenus) window.flexiCssMenus = {};�
1606	window.flexiCssMenus.xtdCSSMenuInit = xtdCSSMenuInit;�
1607	window.flexiCssMenus.xtdUnsetTabletBehavior = xtdUnsetTabletBehavior;�
1608	window.flexiCssMenus.destroy = destroy;�
1609�
1610})(menus_jQuery);�
1611�
1612�
1613//ie css3 script//�
1614�
1615(function($) {�
1616	function getBrowser() {�
1617		// jquery code//�
1618		var ua = navigator.userAgent.toLowerCase();�
1619		var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||�
1620			/(webkit)[ \/]([\w.]+)/.exec( ua ) ||�
1621			/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||�
1622			/(msie) ([\w.]+)/.exec( ua ) ||�
1623			ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||�
1624			[];�
1625		�
1626		var ver = match[ 2 ] || "0";�
1627		var fi = ver.indexOf('.');�
1628		var fi2 = ver.indexOf('.', fi);�
1629		if (fi2 != -1) {�
1630			ver = parseFloat(ver.substring(0, fi2));�
1631		}�
1632		return {�
1633			name: match[ 1 ] || "",�
1634			version: ver�
1635		};�
1636	}�
1637	�
1638	function getScriptFolder() {�
1639		var scripts = document.getElementsByTagName('SCRIPT');�
1640		for (var i = 0; i < scripts.length; i++) {�
1641			var src = scripts[i].getAttribute('src');�
1642			if (src && src.indexOf('fleximenus2.js') != -1) {�
1643				if (src.lastIndexOf('/') != -1) {�
1644					return src.substring(0, src.lastIndexOf('/') + 1);�
1645				} else {�
1646					return '';�
1647				}�
1648			}�
1649		}�
1650	}�
1651	�
1652	var browser = getBrowser();�
1653	�
1654	if (!window.flexiCssMenus) window.flexiCssMenus = {};�
1655	window.flexiCssMenus.browser = getBrowser();�
1656	�
1657	var scriptFolder = getScriptFolder();�
1658	var ssFolder = scriptFolder;�
1659	�
1660	function addEventListener(element, type, listener) {�
1661		if (element.addEventListener) {�
1662			element.addEventListener(type, listener, false); �
1663		} else if (element.attachEvent)  {�
1664			element.attachEvent('on' + type, listener);�
1665		}�
1666	}�
1667	�
1668	var addPropertyFails = {};�
1669	�
1670	function addBehavior() {�
1671		function addPropertyInRules(ss, url) {�
1672			if (!addPropertyFails[url]) addPropertyFails[url] = 0;�
1673			if (!ss.rules.length) {�
1674				addPropertyFails[url]++;�
1675				if (ss.owningElement.readyState != "complete" && addPropertyFails[url] < 500) {�
1676					setTimeout( (function(ss, url) {�
1677						return function() {�
1678							addPropertyInRules(ss, url);�
1679						};�
1680					})(ss, url) , 10);�
1681				}�
1682			} else {�
1683				for (var j = ss.rules.length - 1; j >= 0; j--) {�
1684					var rule = ss.rules[j];�
1685					rule.style.behavior =  "url(" + url + ")";�
1686				}�
1687			}�
1688		}�
1689		�
1690		var links = document.getElementsByTagName('LINK');�
1691		for (var i = 0; i < links.length; i++) {�
1692			var href = links[i].getAttribute('href');�
1693			if (href) {�
1694				if (href.indexOf('-ie.css') != -1 && href.toLowerCase().indexOf(ssFolder.toLowerCase()) != -1) {�
1695					var url = href.substring(0, href.lastIndexOf('/')) + "/PIE.htc";�
1696					addPropertyInRules(links[i].styleSheet, url);�
1697				}�
1698			}�
1699		}�
1700	}�
1701	�
1702	var parsedLinks = [];�
1703	�
1704	function linkWasParsed(link) {�
1705		for (var i = 0; i < parsedLinks.length; i++) {�
1706			if (parsedLinks[i] == link) {�
1707				return true;�
1708			}�
1709		}�
1710		return false;�
1711	}�
1712	�
1713	function existsInHead(link) {�
1714		var links = document.getElementsByTagName('LINK');�
1715		for (var i = 0; i < links.length; i++) {�
1716			var href = links[i].getAttribute('href');�
1717			if (href == link) {�
1718				return true;�
1719			}�
1720		}�
1721		return false;�
1722	}�
1723	�
1724	function addIE9Links(){�
1725		if (browser.name == "msie" && browser.version <= 9) {�
1726			var links = document.getElementsByTagName('LINK');�
1727			var length = links.length;�
1728			for (var i = 0; i < length; i++) {�
1729				var href = links[i].getAttribute('href');�
1730				if (!linkWasParsed(href)) {�
1731					parsedLinks.push(href);�
1732					if (href && href.indexOf('http://') == -1 && href.indexOf('reset.css') == -1 && href.indexOf('-ie.css') == -1 && href.toLowerCase().indexOf(ssFolder.toLowerCase()) != -1) {�
1733						if (!existsInHead(href.replace('.css', '-ie.css'))){ �
1734							document.createStyleSheet(href.replace('.css', '-ie.css'));�
1735							parsedLinks.push(href.replace('.css', '-ie.css'));�
1736						}�
1737					}�
1738				}�
1739			}�
1740		}�
1741	}�
1742	�
1743	addIE9Links();�
1744	addEventListener(window, "load", function() {�
1745		// this is for link tags added after our script//�
1746		addIE9Links();�
1747�
1748		if (browser.name == "msie" && browser.version == 7) {�
1749			window.setTimeout(function() {�
1750				addBehavior();�
1751			}, 1000);�
1752		}�
1753		�
1754		if (browser.name == "msie" && browser.version <= 9 && browser.version != 7) {�
1755			addBehavior();�
1756		}�
1757	});�
1758})(menus_jQuery);�
1759�
1760�
1761function registerFlexiCSSMenu(name, settings) {�
1762	flexiCssMenus.settings = settings;�
1763�
1764	if(!window.registeredFlexiMenus) { �
1765		window.registeredFlexiMenus = [];�
1766	}�
1767�
1768�
1769	if (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9) {�
1770		//alert(name + " .. " + window.flexiCssMenus.browser.name + " .. " + window.flexiCssMenus.browser.version);�
1771		menus_jQuery(document).ready(function() {�
1772			menus_jQuery(".FM2_mobile_button").hide();�
1773		});�
1774		settings["effectRest"] = null;�
1775		settings["effectSub"] = null;�
1776		settings["effectSubTwo"] = null;�
1777		�
1778	} �
1779�
1780	registeredFlexiMenus.push({"name" : name, "settings" : settings});�
1781�
1782	menus_jQuery("#"+name+"_container").removeAttr('style');�
1783	//console.log(settings.options['enableMobile']);�
1784	if(!settings.options['enableMobile']) { �
1785		menus_jQuery(document).ready(function() { �
1786			menus_jQuery(".FM2_mobile_button").hide();�
1787		});�
1788	}�
1789�
1790	setTimeout(function() {�
1791		if(!flexiCssMenus.xtdCSSMenuInit(name, settings.options)) {�
1792			flexiCssMenus.bindEffect(name, settings);�
1793			flexiCssMenus.addSelectedClass(name);�
1794			flexiCssMenus.alignMenu(name, settings.options);�
1795			if(settings.stickToTop) { �
1796				flexiCssMenus.stickToTop(name, settings.takeBrowserWidth, settings.options);�
1797			}�
1798		}�
1799		if(settings.stickToTop)�
1800			flexiCssMenus.stickToTop(name, settings.takeBrowserWidth, settings.options)�
1801		�
1802	},500)�
1803	�
1804	�
1805�
1806}�
1807�
1808�
1809(function($) {�
1810	var id;�
1811	if(window.addEventListener) { �
1812		window.addEventListener("orientationchange", function()  {�
1813			clearTimeout(id);�
1814			id = setTimeout(doneResizing, 100);�
1815		});�
1816	}�
1817	menus_jQuery(window).unbind('resize.xtd').bind('resize.xtd', function() {�
1818	//menus_jQuery(window).resize(function() { �
1819		var is_touch_device = 'ontouchstart' in document.documentElement;�
1820		if(is_touch_device) { �
1821			menus_jQuery(window).unbind('resize');�
1822			return;�
1823		}�
1824		clearTimeout(id);�
1825		id = setTimeout(doneResizing, 100);�
1826	});�
1827�
1828�
1829	function doneResizing() {�
1830		for(var i=0; i < registeredFlexiMenus.length; i++) {�
1831			var menu = registeredFlexiMenus[i];�
1832�
1833			if(flexiCssMenus.destroy) { �
1834				flexiCssMenus.destroy(menu.name);�
1835				menus_jQuery('.FM_CLOSE').remove();�
1836				flexiCssMenus.xtdUnsetTabletBehavior("#" + menu.name + "_container");�
1837				flexiCssMenus.unbindEffect(menu.name);�
1838			}�
1839		}�
1840�
1841		for(var i=0; i < registeredFlexiMenus.length; i++) { �
1842			var menu = registeredFlexiMenus[i];�
1843�
1844		�
1845			if(!flexiCssMenus.xtdCSSMenuInit(menu.name, menu.settings.options)) {�
1846				flexiCssMenus.bindEffect(menu.name, menu.settings);�
1847			//	flexiCssMenus.addSelectedClass(name);�
1848				flexiCssMenus.alignMenu(name, menu.settings.options);�
1849			}	�
1850			if(menu.settings.stickToTop) { �
1851				flexiCssMenus.stickToTop(menu.name, menu.settings.takeBrowserWidth,menu.settings.options);�
1852			}�
1853		}�
1854	}�
1855�
1856	var correctedViewportW = (function (win, docElem) {�
1857�
1858	    var mM = win['matchMedia'] || win['msMatchMedia']�
1859	      , client = docElem['clientWidth']�
1860	      , inner = win['innerWidth']�
1861�
1862	    return mM && client < inner && true === mM('(min-width:' + inner + 'px)')['matches']�
1863	        ? function () { return win['innerWidth'] }�
1864	        : function () { return docElem['clientWidth'] }�
1865�
1866	}(window, document.documentElement));�
1867	�
1868	if (!window.flexiCssMenus) window.flexiCssMenus = {};�
1869	window.flexiCssMenus.correctedViewportW = correctedViewportW;�
1870})(menus_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.