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.