PageSourceSearch

https://www.isapredecodelco.cl/wp-content/themes/thegem/js/thegem-menu_init.js?ver=6.8.11

js isapredecodelco.cl collected 2026-10-08 11:22:07 UTC 29,552 bytes, 898 lines download raw bytes

1function supportsTransitions() {
2	return getSupportedTransition() != '';
3}
4
5function getSupportedTransition() {
6	var b = document.body || document.documentElement,
7        s = b.style,
8        p = 'transition';
9
10    if (typeof s[p] == 'string') { return p; }
11
12    // Tests for vendor specific prop
13    var v = ['Moz', 'webkit', 'Webkit', 'Khtml', 'O', 'ms'];
14    p = p.charAt(0).toUpperCase() + p.substr(1);
15
16    for (var i=0; i<v.length; i++) {
17        if (typeof s[v[i] + p] == 'string') { return true; }
18    }
19
20    return '';
21}
22window.supportedTransition = getSupportedTransition();
23window.supportsTransitions = supportsTransitions();
24
25function supportsAnimations() {
26	return getSupportedAnimation() != '';
27}
28
29function getSupportedAnimation() {
30	var t,
31		el = document.createElement("fakeelement");
32
33	var animations = {
34		"animation"      : "animationend",
35		"OAnimation"     : "oAnimationEnd",
36		"MozAnimation"   : "animationend",
37		"WebkitAnimation": "webkitAnimationEnd",
38		'msAnimation' : 'MSAnimationEnd'
39	};
40
41	for (t in animations){
42		if (el.style[t] !== undefined) {
43			return t;
44		}
45	}
46	return '';
47}
48window.supportedAnimation = getSupportedAnimation();
49window.supportsAnimations = supportsAnimations();
50
51function getMobileMenuType() {
52	if(!document.getElementById('site-header')) return 'default';
53	var m = document.getElementById('site-header').className.match(/mobile-menu-layout-([a-zA-Z0-9]+)/);
54	window.gemMobileMenuType = m ? m[1] : 'default';
55	return window.gemMobileMenuType;
56}
57getMobileMenuType();
58
59(function() {
60	var logoFixTimeout = false;
61
62	function getElementPosition(elem) {
63		var w = elem.offsetWidth,
64			h = elem.offsetHeight,
65			l = 0,
66			t = 0;
67
68		while (elem) {
69			l += elem.offsetLeft;
70			t += elem.offsetTop;
71			elem = elem.offsetParent;
72		}
73		return {"left":l, "top":t, "width": w, "height":h};
74	}
75
76	function fixMenuLogoPosition() {
77		if (logoFixTimeout) {
78			clearTimeout(logoFixTimeout);
79		}
80
81		var headerMain = document.querySelector('#site-header .header-main');
82		if (headerMain == null) {
83			return false;
84		}
85
86		var headerMainClass = headerMain.className;
87		if (headerMainClass.indexOf('logo-position-menu_center') == -1 || headerMainClass.indexOf('header-layout-fullwidth_hamburger') != -1 || headerMainClass.indexOf('header-layout-vertical') != -1) {
88			return false;
89		}
90
91		logoFixTimeout = setTimeout(function() {
92			var page = document.getElementById('page'),
93				primaryMenu = document.getElementById('primary-menu'),
94				primaryNavigation = document.getElementById('primary-navigation'),
95				windowWidth = page.offsetWidth,
96				pageComputedStyles = window.getComputedStyle(page, null),
97				pageMargin = parseFloat(pageComputedStyles['marginLeft']);
98
99			if (isNaN(pageMargin)) {
100				pageMargin = 0;
101			}
102
103			if (headerMainClass.indexOf('header-layout-fullwidth') != -1) {
104				var logoItem = primaryMenu.querySelector('.menu-item-logo'),
105					items = primaryNavigation.querySelectorAll('#primary-menu > li'),
106					lastItem = null;
107
108				for (var i = items.length - 1; i >=0; i--) {
109					if (items[i].className.indexOf('mobile-only') == -1) {
110						lastItem = items[i];
111						break;
112					}
113				}
114
115				primaryMenu.style.display = '';
116				logoItem.style.marginLeft = '';
117				logoItem.style.marginRight = '';
118
119				if (windowWidth < 1212 || lastItem === null) {
120					return;
121				}
122
123				primaryMenu.style.display = 'block';
124
125				var pageCenter = windowWidth / 2 + pageMargin,
126					logoOffset = getElementPosition(logoItem),
127					offset = pageCenter - logoOffset.left - logoItem.offsetWidth / 2;
128
129				logoItem.style.marginLeft = offset + 'px';
130
131				var primaryMenuOffsetWidth = primaryMenu.offsetWidth,
132					primaryMenuOffsetLeft = getElementPosition(primaryMenu).left,
133					lastItemOffsetWidth = lastItem.offsetWidth,
134					lastItemOffsetLeft = getElementPosition(lastItem).left,
135					rightItemsOffset = primaryMenuOffsetWidth - lastItemOffsetLeft - lastItemOffsetWidth + primaryMenuOffsetLeft;
136
137				logoItem.style.marginRight = rightItemsOffset + 'px';
138			} else {
139				if (windowWidth < 1212) {
140					primaryNavigation.style.textAlign = '';
141					primaryMenu.style.position = '';
142					primaryMenu.style.left = '';
143					return;
144				}
145
146				primaryNavigation.style.textAlign = 'left';
147				primaryMenu.style.left = 0 + 'px';
148
149				var pageCenter = windowWidth / 2,
150					primaryMenuOffsetLeft = getElementPosition(primaryMenu).left,
151					logoOffset = getElementPosition(document.querySelector('#site-header .header-main #primary-navigation .menu-item-logo')),
152					pageOffset = getElementPosition(page),
153					offset = pageCenter - (logoOffset.left - pageOffset.left) - document.querySelector('#site-header .header-main #primary-navigation .menu-item-logo').offsetWidth / 2;
154
155				if (primaryMenuOffsetLeft + offset >= 0) {
156					primaryMenu.style.position = 'relative';
157					primaryMenu.style.left = offset + 'px';
158				} else {
159					primaryMenu.style.position = '';
160					primaryMenu.style.left = '';
161				}
162			}
163		}, 50);
164	}
165
166	window.fixMenuLogoPosition = fixMenuLogoPosition;
167
168	window.addEventListener('load', function(event) {
169		window.fixMenuLogoPosition();
170	}, false);
171
172})();
173
174
175(function($) {
176    /* PRIMARY MENU */
177
178	var isVerticalMenu = $('.header-main').hasClass('header-layout-vertical'),
179		isHamburgerMenu = $('.header-main').hasClass('header-layout-fullwidth_hamburger'),
180		isPerspectiveMenu = $('#thegem-perspective').length > 0;
181
182	$(window).resize(function() {
183	    window.updateGemClientSize(false);
184		window.updateGemInnerSize();
185	});
186
187	window.menuResizeTimeoutHandler = false;
188
189    var megaMenuSettings = {};
190
191    function getOffset(elem) {
192		if (elem.getBoundingClientRect && window.gemBrowser.platform.name != 'ios'){
193			var bound = elem.getBoundingClientRect(),
194				html = elem.ownerDocument.documentElement,
195				htmlScroll = getScroll(html),
196				elemScrolls = getScrolls(elem),
197				isFixed = (styleString(elem, 'position') == 'fixed');
198			return {
199				x: parseInt(bound.left) + elemScrolls.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
200				y: parseInt(bound.top)  + elemScrolls.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
201			};
202		}
203
204		var element = elem, position = {x: 0, y: 0};
205		if (isBody(elem)) return position;
206
207		while (element && !isBody(element)){
208			position.x += element.offsetLeft;
209			position.y += element.offsetTop;
210
211			if (window.gemBrowser.name == 'firefox'){
212				if (!borderBox(element)){
213					position.x += leftBorder(element);
214					position.y += topBorder(element);
215				}
216				var parent = element.parentNode;
217				if (parent && styleString(parent, 'overflow') != 'visible'){
218					position.x += leftBorder(parent);
219					position.y += topBorder(parent);
220				}
221			} else if (element != elem && window.gemBrowser.name == 'safari'){
222				position.x += leftBorder(element);
223				position.y += topBorder(element);
224			}
225
226			element = element.offsetParent;
227		}
228		if (window.gemBrowser.name == 'firefox' && !borderBox(elem)){
229			position.x -= leftBorder(elem);
230			position.y -= topBorder(elem);
231		}
232		return position;
233	};
234
235	function getScroll(elem){
236		return {x: window.pageXOffset || document.documentElement.scrollLeft, y: window.pageYOffset || document.documentElement.scrollTop};
237	};
238
239	function getScrolls(elem){
240		var element = elem.parentNode, position = {x: 0, y: 0};
241		while (element && !isBody(element)){
242			position.x += element.scrollLeft;
243			position.y += element.scrollTop;
244			element = element.parentNode;
245		}
246		return position;
247	};
248
249	function styleString(element, style) {
250		return $(element).css(style);
251	};
252
253	function styleNumber(element, style){
254		return parseInt(styleString(element, style)) || 0;
255	};
256
257	function borderBox(element){
258		return styleString(element, '-moz-box-sizing') == 'border-box';
259	};
260
261	function topBorder(element){
262		return styleNumber(element, 'border-top-width');
263	};
264
265	function leftBorder(element){
266		return styleNumber(element, 'border-left-width');
267	};
268
269	function isBody(element){
270		return (/^(?:body|html)$/i).test(element.tagName);
271	};
272
273
274    function checkMegaMenuSettings() {
275		if (window.customMegaMenuSettings == undefined || window.customMegaMenuSettings == null) {
276			return false;
277		}
278
279		var uri = window.location.pathname;
280
281		window.customMegaMenuSettings.forEach(function(item) {
282			for (var i = 0; i < item.urls.length; i++) {
283				if (uri.match(item.urls[i])) {
284					megaMenuSettings[item.menuItem] = item.data;
285				}
286			}
287		});
288	}
289
290	function fixMegaMenuWithSettings() {
291		checkMegaMenuSettings();
292
293		$('#primary-menu > li.megamenu-enable').each(function() {
294			var m = this.className.match(/(menu-item-(\d+))/);
295			if (!m) {
296				return;
297			}
298
299			var itemId = parseInt(m[2]);
300			if (megaMenuSettings[itemId] == undefined || megaMenuSettings[itemId] == null) {
301				return;
302			}
303
304			var $item = $('> ul', this);
305
306			if (megaMenuSettings[itemId].masonry != undefined) {
307				if (megaMenuSettings[itemId].masonry) {
308					$item.addClass('megamenu-masonry');
309				} else {
310					$item.removeClass('megamenu-masonry');
311				}
312			}
313
314			if (megaMenuSettings[itemId].style != undefined) {
315				$(this).removeClass('megamenu-style-default megamenu-style-grid').addClass('megamenu-style-' + megaMenuSettings[itemId].style);
316			}
317
318			var css = {};
319
320			if (megaMenuSettings[itemId].backgroundImage != undefined) {
321				css.backgroundImage = megaMenuSettings[itemId].backgroundImage;
322			}
323
324			if (megaMenuSettings[itemId].backgroundPosition != undefined) {
325				css.backgroundPosition = megaMenuSettings[itemId].backgroundPosition;
326			}
327
328			if (megaMenuSettings[itemId].padding != undefined) {
329				css.padding = megaMenuSettings[itemId].padding;
330			}
331
332			if (megaMenuSettings[itemId].borderRight != undefined) {
333				css.borderRight = megaMenuSettings[itemId].borderRight;
334			}
335
336			$item.css(css);
337		});
338	}
339
340	function isResponsiveMenuVisible() {
341		// var menuToggleDisplay = $('.menu-toggle').css('display');
342		// return menuToggleDisplay == 'block' || menuToggleDisplay == 'inline-block';
343		return $('.primary-navigation .menu-toggle').is(':visible');
344	}
345	window.isResponsiveMenuVisible = isResponsiveMenuVisible;
346
347	function isTopAreaVisible() {
348		return window.gemSettings.topAreaMobileDisable ? window.gemOptions.clientWidth >= 768 : true;
349	}
350	window.isTopAreaVisible = isTopAreaVisible;
351
352	function isVerticalToggleVisible() {
353		return window.gemOptions.clientWidth > 1600;
354	}
355
356	$('#primary-menu > li.megamenu-enable').hover(
357		function() {
358			fix_megamenu_position(this);
359		},
360		function() {}
361	);
362
363	$('#primary-menu > li.megamenu-enable:hover').each(function() {
364		fix_megamenu_position(this);
365	});
366
367	$('#primary-menu > li.megamenu-enable').each(function() {
368		var $item = $('> ul', this);
369		if($item.length == 0) return;
370		$item.addClass('megamenu-item-inited');
371	});
372
373	function fix_megamenu_position(elem) {
374		if (!$('.megamenu-inited', elem).length && isResponsiveMenuVisible()) {
375			return false;
376		}
377
378			var $item = $('> ul', elem);
379			if($item.length == 0) return;
380			var self = $item.get(0);
381
382			$item.addClass('megamenu-item-inited');
383
384			var default_item_css = {
385				width: 'auto',
386				height: 'auto'
387			};
388
389			if (!isVerticalMenu && !isHamburgerMenu && !isPerspectiveMenu) {
390				default_item_css.left = 0;
391			}
392
393			$item
394				.removeClass('megamenu-masonry-inited megamenu-fullwidth')
395				.css(default_item_css);
396
397			$(' > li', $item).css({
398				left: 0,
399				top: 0
400			}).each(function() {
401				var old_width = $(this).data('old-width') || -1;
402				if (old_width != -1) {
403					$(this).width(old_width).data('old-width', -1);
404				}
405			});
406
407			if (isResponsiveMenuVisible()) {
408				return;
409			}
410
411			if (isVerticalMenu) {
412				var container_width = window.gemOptions.clientWidth - $('#site-header-wrapper').outerWidth();
413			} else if (isPerspectiveMenu) {
414				var container_width = window.gemOptions.clientWidth - $('#primary-navigation').outerWidth();
415			} else if (isHamburgerMenu) {
416				var container_width = window.gemOptions.clientWidth - $('#primary-menu').outerWidth();
417			} else {
418				var $container = $item.closest('.header-main'),
419					container_width = $container.width(),
420					container_padding_left = parseInt($container.css('padding-left')),
421					container_padding_right = parseInt($container.css('padding-right')),
422					parent_width = $item.parent().outerWidth();
423			}
424
425			var megamenu_width = $item.outerWidth();
426
427			if (megamenu_width > container_width) {
428				megamenu_width = container_width;
429				var new_megamenu_width = container_width - parseInt($item.css('padding-left')) - parseInt($item.css('padding-right'));
430				var columns = $item.data('megamenu-columns') || 4;
431				var column_width = parseFloat(new_megamenu_width - columns * parseInt($(' > li.menu-item:first', $item).css('margin-left'))) / columns;
432				var column_width_int = parseInt(column_width);
433				$(' > li', $item).each(function() {
434					$(this).data('old-width', $(this).width()).css('width', column_width_int);
435				});
436				$item.addClass('megamenu-fullwidth').width(new_megamenu_width - (column_width - column_width_int) * columns);
437			}
438
439			if (!isVerticalMenu && !isHamburgerMenu && !isPerspectiveMenu) {
440				if (megamenu_width > parent_width) {
441					var left = -(megamenu_width - parent_width) / 2;
442				} else {
443					var left = 0;
444				}
445
446				var container_offset = getOffset($container[0]);
447				var megamenu_offset = getOffset(self);
448
449				if ((megamenu_offset.x - container_offset.x - container_padding_left + left) < 0) {
450					left = -(megamenu_offset.x - container_offset.x - container_padding_left);
451				}
452
453				if ((megamenu_offset.x + megamenu_width + left) > (container_offset.x + $container.outerWidth() - container_padding_right)) {
454					left -= (megamenu_offset.x + megamenu_width + left) - (container_offset.x + $container.outerWidth() - container_padding_right);
455				}
456
457				$item.css('left', left).css('left');
458			}
459
460			if ($item.hasClass('megamenu-masonry')) {
461				var positions = {},
462					max_bottom = 0;
463
464				$item.width($item.width() - 1);
465				var new_row_height = $('.megamenu-new-row', $item).outerHeight() + parseInt($('.megamenu-new-row', $item).css('margin-bottom'));
466
467				$('> li.menu-item', $item).each(function() {
468					var pos = $(this).position();
469					if (positions[pos.left] != null && positions[pos.left] != undefined) {
470						var top_position = positions[pos.left];
471					} else {
472						var top_position = pos.top;
473					}
474					positions[pos.left] = top_position + $(this).outerHeight() + new_row_height + parseInt($(this).css('margin-bottom'));
475					if (positions[pos.left] > max_bottom)
476						max_bottom = positions[pos.left];
477					$(this).css({
478						left: pos.left,
479						top: top_position
480					})
481				});
482
483				$item.height(max_bottom - new_row_height - parseInt($item.css('padding-top')) - 1);
484				$item.addClass('megamenu-masonry-inited');
485			}
486
487			if ($item.hasClass('megamenu-empty-right')) {
488				var mega_width = $item.width();
489				var max_rights = {
490					columns: [],
491					position: -1
492				};
493
494				$('> li.menu-item', $item).removeClass('megamenu-no-right-border').each(function() {
495					var pos = $(this).position();
496					var column_right_position = pos.left + $(this).width();
497
498					if (column_right_position > max_rights.position) {
499						max_rights.position = column_right_position;
500						max_rights.columns = [];
501					}
502
503					if (column_right_position == max_rights.position) {
504						max_rights.columns.push($(this));
505					}
506				});
507
508				if (max_rights.columns.length && max_rights.position >= (mega_width - 7)) {
509					max_rights.columns.forEach(function($li) {
510						$li.addClass('megamenu-no-right-border');
511					});
512				}
513			}
514
515			if (isVerticalMenu || isHamburgerMenu || isPerspectiveMenu) {
516				var clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
517					itemOffset = $item.offset(),
518					itemHeight = $item.outerHeight(),
519					scrollTop = $(window).scrollTop();
520
521				if (itemOffset.top - scrollTop + itemHeight > clientHeight) {
522					$item.css({
523						top: clientHeight - itemOffset.top + scrollTop - itemHeight - 20
524					});
525				}
526			}
527
528			$item.addClass('megamenu-inited');
529	}
530
531	function primary_menu_reinit() {
532		if(isResponsiveMenuVisible()) {
533			if (window.gemMobileMenuType == 'default') {
534				var $submenuDisabled = $('#primary-navigation .dl-submenu-disabled');
535				if ($submenuDisabled.length) {
536					$submenuDisabled.addClass('dl-submenu').removeClass('dl-submenu-disabled');
537				}
538			}
539			if ($('#primary-menu').hasClass('no-responsive')) {
540				$('#primary-menu').removeClass('no-responsive');
541			}
542			if (!$('#primary-navigation').hasClass('responsive')) {
543				$('#primary-navigation').addClass('responsive');
544			}
545			$('.menu-overlay').addClass('mobile');
546			window.fixMenuLogoPosition();
547		} else {
548			if (window.gemMobileMenuType == 'overlay' && !$('.header-layout-overlay').length && $('.menu-overlay').hasClass('active')) {
549				$('.mobile-menu-layout-overlay .menu-toggle').click();
550			}
551
552			$('#primary-navigation').addClass('without-transition');
553
554			if (window.gemMobileMenuType == 'default') {
555				$('#primary-navigation .dl-submenu').addClass('dl-submenu-disabled').removeClass('dl-submenu');
556			}
557			$('#primary-menu').addClass('no-responsive');
558			$('#primary-navigation').removeClass('responsive');
559			$('.menu-overlay').removeClass('mobile');
560
561			window.fixMenuLogoPosition();
562
563			$('#primary-navigation').removeClass('without-transition');
564		}
565	}
566
567	if (window.gemMobileMenuType == 'default') {
568		$('#primary-navigation .submenu-languages').addClass('dl-submenu');
569	}
570	$('#primary-navigation > ul> li.menu-item-language').addClass('menu-item-parent');
571
572	fixMegaMenuWithSettings();
573
574	if (window.gemMobileMenuType == 'default') {
575		var updateMobileMenuPosition = function() {
576			var siteHeaderHeight = $('#site-header').outerHeight(),
577				windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
578
579			if ($('#thegem-perspective #primary-menu').length) {
580				$('#thegem-perspective > .mobile-menu-layout-default').css({
581					top: siteHeaderHeight
582				});
583			}
584
585			$('#primary-menu').css({
586				maxHeight: windowHeight - siteHeaderHeight
587			});
588		};
589
590		$(window).resize(function() {
591			if (isResponsiveMenuVisible() && $('#primary-menu').hasClass('dl-menuopen')) {
592				setTimeout(updateMobileMenuPosition, 50);
593			} else {
594				$('#primary-menu').css({
595					maxHeight: ''
596				});
597			}
598		});
599
600		$('#site-header .dl-trigger').on('click', function() {
601			updateMobileMenuPosition();
602		});
603
604		$('#primary-navigation').dlmenu({
605			animationClasses: {
606				classin : 'dl-animate-in',
607				classout : 'dl-animate-out'
608			},
609			onLevelClick: function (el, name) {
610				//$('html, body').animate({ scrollTop : 0 });
611			},
612			backLabel: thegem_dlmenu_settings.backLabel,
613			showCurrentLabel: thegem_dlmenu_settings.showCurrentLabel
614		});
615	}
616	primary_menu_reinit();
617
618	$('#primary-menu > li').hover(
619		function() {
620			var $items = $('ul:not(.minicart ul), .minicart, .minisearch', this);
621			$items.removeClass('invert vertical-invert');
622
623			if (!$(this).hasClass('megamenu-enable')) {
624				$items.css({top: ''});
625			}
626
627			if ($(this).hasClass('megamenu-enable') ||
628					$(this).closest('.header-layout-overlay').length ||
629					$(this).closest('.mobile-menu-layout-overlay').length && isResponsiveMenuVisible()) {
630				return;
631			}
632
633			var topItemTranslate = 0;
634			if ($('>ul', this).css('transform')) {
635				topItemTranslate = parseInt($('>ul', this).css('transform').split(',')[5]);
636			}
637			if (isNaN(topItemTranslate)) {
638				topItemTranslate = 0;
639			}
640			var windowScroll = $(window).scrollTop(),
641				siteHeaderOffset = $('#site-header').offset(),
642				siteHeaderOffsetTop = siteHeaderOffset.top - windowScroll,
643				siteHeaderHeight = $('#site-header').outerHeight();
644
645			$items.each(function() {
646		        var $item = $(this);
647		        var self = this;
648
649				var itemOffset = $item.offset(),
650					itemOffsetTop = itemOffset.top - windowScroll,
651					itemOffsetLeft = itemOffset.left;
652
653				if(itemOffsetLeft - $('#page').offset().left + $item.outerWidth() > $('#page').width()) {
654					$item.addClass('invert');
655				}
656
657				if (isVerticalMenu || isPerspectiveMenu || isHamburgerMenu) {
658					if (itemOffsetTop - topItemTranslate + $item.outerHeight() > $(window).height()) {
659						$item.addClass('vertical-invert');
660						var itemOffsetFix = itemOffsetTop  - topItemTranslate + $item.outerHeight() - $(window).height();
661						if (itemOffsetTop - topItemTranslate - itemOffsetFix < 0) {
662							itemOffsetFix = 0;
663						}
664						$item.css({ top: -itemOffsetFix + 'px' });
665					}
666				} else {
667					if (itemOffsetTop - topItemTranslate + $item.outerHeight() > $(window).height()) {
668						$item.addClass('vertical-invert');
669						var itemOffsetFix = itemOffsetTop  - topItemTranslate + $item.outerHeight() - $(window).height();
670						if (itemOffsetTop - topItemTranslate - itemOffsetFix < siteHeaderOffsetTop + siteHeaderHeight) {
671							itemOffsetFix -= siteHeaderOffsetTop + siteHeaderHeight - (itemOffsetTop - topItemTranslate - itemOffsetFix);
672							if (itemOffsetFix < 0) {
673								itemOffsetFix = 0;
674							}
675						}
676						$item.css({ top: -itemOffsetFix + 'px' });
677					}
678				}
679		    });
680		},
681		function() {}
682	);
683
684	$('.hamburger-toggle').click(function(e) {
685		e.preventDefault();
686		$(this).closest('#primary-navigation').toggleClass('hamburger-active');
687		$('.hamburger-overlay').toggleClass('active');
688	});
689
690	$('.overlay-toggle, .mobile-menu-layout-overlay .menu-toggle').click(function(e) {
691		e.preventDefault();
692		if($('.menu-overlay').hasClass('active')) {
693			$('.menu-overlay').removeClass('active');
694			$('.primary-navigation').addClass('close');
695			$('.primary-navigation').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
696				$('.primary-navigation').removeClass('overlay-active close');
697				$('.overlay-menu-wrapper').removeClass('active');
698			});
699		} else {
700			$('.overlay-menu-wrapper').addClass('active');
701			$('.primary-navigation').off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend');
702			$('.primary-navigation').addClass('overlay-active').removeClass('close');
703			if (isResponsiveMenuVisible()) {
704				$('#site-header').removeClass('hidden');
705				$('.menu-overlay').addClass('mobile');
706			} else {
707				$('.menu-overlay').removeClass('mobile');
708			}
709			$('.menu-overlay').addClass('active');
710		}
711	});
712
713	$('.mobile-menu-layout-slide-horizontal .primary-navigation #primary-menu li.menu-item-current, .mobile-menu-layout-slide-vertical .primary-navigation #primary-menu li.menu-item-current').each(function() {
714		$(this).addClass('opened');
715		$('> ul', this).show();
716	});
717
718	$('.mobile-menu-layout-slide-horizontal .menu-toggle, .mobile-menu-layout-slide-vertical .menu-toggle, .mobile-menu-slide-wrapper .mobile-menu-slide-close').click(function(e) {
719		e.preventDefault();
720		$('#site-header').removeClass('hidden');
721		$('.mobile-menu-slide-wrapper').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
722			$(this).removeClass('animation');
723		});
724		$('.mobile-menu-slide-wrapper').addClass('animation').toggleClass('opened');
725	});
726
727	$('.mobile-menu-layout-slide-horizontal .primary-navigation #primary-menu .menu-item-parent-toggle, .mobile-menu-layout-slide-vertical .primary-navigation #primary-menu .menu-item-parent-toggle').on('click', function(e) {
728		e.preventDefault();
729		var self = this;
730		$(this).closest('li').toggleClass('opened');
731		$(this).siblings('ul').slideToggle(200, function() {
732			if (!$(self).closest('li').hasClass('opened')) {
733				$(self).siblings('ul').find('li').removeClass('opened');
734				$(self).siblings('ul').css('display', '');
735				$(self).siblings('ul').find('ul').css('display', '');
736			}
737		});
738	});
739
740	$('.header-layout-overlay #primary-menu a, .mobile-menu-layout-overlay .primary-navigation #primary-menu .menu-item-parent-toggle').on('click', function(e) {
741		//if(!$('#primary-menu').hasClass('no-responsive')) return ;
742
743		if (!$('#primary-menu').hasClass('no-responsive') && !$(this).hasClass('menu-item-parent-toggle')) {
744			return;
745		}
746
747		var $itemLink = $(this);
748		var $item = $itemLink.closest('li');
749		if($item.hasClass('menu-item-parent') && ($item.closest('ul').hasClass('nav-menu') || $item.parent().closest('li').hasClass('menu-overlay-item-open'))) {
750			e.preventDefault();
751			if($item.hasClass('menu-overlay-item-open')) {
752				$(' > ul, .menu-overlay-item-open > ul', $item).each(function() {
753					$(this).css({height: $(this).outerHeight()+'px'});
754				});
755				setTimeout(function() {
756					$(' > ul, .menu-overlay-item-open > ul', $item).css({height: ''});
757					$('.menu-overlay-item-open', $item).add($item).removeClass('menu-overlay-item-open');
758				}, 50);
759			} else {
760				var $oldActive = $('.primary-navigation .menu-overlay-item-open').not($item.parents());
761				$('> ul', $oldActive).not($item.parents()).each(function() {
762					$(this).css({height: $(this).outerHeight()+'px'});
763				});
764				setTimeout(function() {
765					$('> ul', $oldActive).not($item.parents()).css({height: ''});
766					$oldActive.removeClass('menu-overlay-item-open');
767				}, 50);
768				$('> ul', $item).css({height: 'auto'});
769				var itemHeight = $('> ul', $item).outerHeight();
770				$('> ul', $item).css({height: ''});
771				setTimeout(function() {
772					$('> ul', $item).css({height: itemHeight+'px'});
773					$item.addClass('menu-overlay-item-open');
774					$('> ul', $item).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
775						$('> ul', $item).css({height: 'auto'});
776					});
777				}, 50);
778			}
779		}
780	});
781
782	$('.vertical-toggle').click(function(e) {
783		e.preventDefault();
784		$(this).closest('#site-header-wrapper').toggleClass('vertical-active');
785	});
786
787	$(function() {
788		$(window).resize(function() {
789			if (window.menuResizeTimeoutHandler) {
790				clearTimeout(window.menuResizeTimeoutHandler);
791			}
792			window.menuResizeTimeoutHandler = setTimeout(primary_menu_reinit, 50);
793		});
794	});
795
796	$('#primary-navigation a').click(function(e) {
797		var $item = $(this);
798		if($('#primary-menu').hasClass('no-responsive') && window.gemSettings.isTouch && $item.next('ul').length) {
799			e.preventDefault();
800		}
801	});
802})(jQuery);
803
804// Menu perspective
805(function($) {
806	var transitionEndEvent = {
807			'WebkitTransition': 'webkitTransitionEnd',
808			'MozTransition': 'transitionend',
809			'OTransition': 'oTransitionEnd',
810			'msTransition': 'MSTransitionEnd',
811			'transition': 'transitionend'
812    	}[ window.supportedTransition ],
813		clickEventName = 'click';
814
815	function initPerspective() {
816		var $menuToggleButton = $('.perspective-toggle'),
817			$perspective = $('#thegem-perspective'),
818			$page = $('#page');
819
820		if (!$perspective.length) {
821			return false;
822		}
823
824		$menuToggleButton.on(clickEventName, function(event) {
825			if ($perspective.hasClass('animate')) {
826				return;
827			}
828
829			var documentScrollTop = $(window).scrollTop();
830			$(window).scrollTop(0);
831
832			var pageWidth = $page.outerWidth(),
833				perspectiveWidth = $perspective.outerWidth(),
834				pageCss = {
835					width: pageWidth
836				};
837
838			if (pageWidth < perspectiveWidth) {
839				pageCss.marginLeft = $page[0].offsetLeft;
840			}
841
842			$page.css(pageCss);
843
844			$perspective.addClass('modalview animate');
845			$page.scrollTop(documentScrollTop);
846			//$(window).trigger('perspective-modalview-opened');
847			event.preventDefault();
848			event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
849		});
850
851		$('#primary-navigation').on(clickEventName, function(event) {
852			if (isResponsiveMenuVisible()) {
853				return;
854			}
855			event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
856		});
857
858		$('#thegem-perspective .perspective-menu-close').on(clickEventName, function(event) {
859			$perspective.click();
860			event.preventDefault();
861			event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
862		});
863
864		$perspective.on(clickEventName, function(event) {
865			if (!$perspective.hasClass('animate')) {
866				return;
867			}
868
869			var onEndTransitionCallback = function(event) {
870				if (window.supportsTransitions && (event.originalEvent.target.id !== 'page' || event.originalEvent.propertyName.indexOf('transform' ) == -1)) {
871					return;
872				}
873
874				$(this).off(transitionEndEvent, onEndTransitionCallback);
875				var pageScrollTop = $page.scrollTop();
876				$perspective.removeClass('modalview');
877				$page.css({
878					width: '',
879					marginLeft: ''
880				});
881				$(window).scrollTop(pageScrollTop);
882				$page.scrollTop(0);
883				$(window).resize();
884				//$(window).trigger('perspective-modalview-closed');
885			};
886
887			if (window.supportsTransitions) {
888				$perspective.on(transitionEndEvent, onEndTransitionCallback);
889			} else {
890				onEndTransitionCallback.call();
891			}
892
893			$perspective.removeClass('animate');
894		});
895	}
896
897	initPerspective();
898})(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.