\r\n var v = (navigator.appVersion).match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\r\n return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];\r\n }\r\n },\r\n\r\n // Cache the DOM\r\n cacheDom: function () {\r\n this.window = $(window)\r\n this.body = $('body')\r\n this.siteNav = $('.sitenav')\r\n this.siteNavToggler = $('.sitenav__toggle')\r\n this.searchToggler = $('.search-toggle')\r\n this.globalNav = $('.global-navigation')\r\n this.globalNavToggler = $('.global-nav-toggle, .global-nav-more, .global-nav-close')\r\n\tthis.dropdownToggles = this.siteNav.find('.has-dropdown')\r\n this.linksInDropdowns = this.siteNav.find('.has-dropdown a')\r\n this.dropdownClose = this.siteNav.find('.dropdown__close')\r\n\tthis.siteGroups = this.globalNav.find('[data-site-color]')\r\n\tthis.preventToggling = false;\r\n\t\r\n },\r\n\r\n // Bind relevant events on our DOM elements to their desired functions\r\n bindEvents: function() {\r\n\t var that = this;\r\n this.siteNavToggler.on('click tap', this.toggleSiteNav.bind(this))\r\n this.globalNavToggler.on('click', this.toggleGlobalNav.bind(this))\r\n\tthis.dropdownToggles.on('click tap', this.toggleDropdown.bind(this))\r\n\tthis.siteNav.on('click tap', '.has-dropdown a', this.goToLink.bind(this))\r\n\tthis.siteNav.on('click tap', 'a.logo', this.goToLink.bind(this))\r\n\tthis.siteNav.on('click tap', '.sitenav__link:not(.has-dropdown) > span > a', this.goToLink.bind(this))\r\n\tthis.linksInDropdowns.on('click tap', this.goToLink.bind(this))\r\n\tthis.dropdownToggles.on('mouseenter', function () {\r\n\t\tif ($(this).closest(\".sitenav\").hasClass(\"sitenav--nodrops\") && !$(this).hasClass(\"secondary-nav\"))\r\n\t\t{\r\n\t\t\tconsole.log(\"no drops\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t$(this).addClass(\"hover\");\r\n\t}).on('mouseleave', function () { $(this).removeClass(\"hover\"); })\r\n this.dropdownClose.on('click', this.closeDropdown.bind(this));\r\n\tthis.window.on('scroll', this.animateSiteNav.bind(this))\r\n\tthis.siteNav.on(this.touchEvent, '[data-toggle=modal]', function () { $($(this).attr('href')).modal(\"show\") });\r\n\tthis.siteNav.on('tap', '[data-dismiss=modal]', function () { $(this).closest('.modal').modal(\"hide\") });\r\n\tthis.siteNav.on('tap', '.remove-prod', function () { $(this).trigger(\"click\") });\r\n },\r\n\r\n goToLink: function (e) {\r\n\t var elem = $(e.target);\r\n\t if (elem.attr(\"target\") == \"_blank\") {\r\n\t\t return;\r\n\t }\r\n\t var gotoHref = elem.attr(\"href\");\r\n\t if (gotoHref === undefined) {\r\n\t\t gotoHref = elem.parent().attr(\"href\");\r\n\t }\r\n\t window.location.href = gotoHref;\r\n },\r\n\r\n // iOS9 ignores padding on the nav items which is annoying\r\n optimizeMobile: function () {\r\n if (this.window.width() > 1025)\r\n return\r\n\r\n var globalNavItems = this.globalNav.find('.global-navigation-featured li')\r\n\r\n // Remove the padding so we get an accurate reading of the span's width\r\n this.globalNav.find('.global-navigation-featured a, .global-navigation-featured button').css('padding', 0)\r\n \r\n globalNavItems.each(function () {\r\n // For some reason outerWidth is 12px off\r\n var width = $(this).find('a, button').outerWidth() + 12\r\n var spanWidth = $(this).find('span').outerWidth() + 12\r\n\r\n // Padding on each side equals 3rem\r\n var padding = 39 * 2\r\n\r\n // The width of the a tag should be equal to the width of the span plus the padding\r\n var desiredWidth = padding + spanWidth\r\n\r\n // If the a tags width doesn't match then we add min-width to it to fight iOS9\r\n if (width < desiredWidth)\r\n $(this).css('min-width', desiredWidth)\r\n })\r\n },\r\n\r\n // Open or close site nav on mobile devices\r\n toggleSiteNav: function () {\r\n\t console.log(\"toggleSiteNav\");\r\n\t var that = this\r\n\r\n\t if (!that.preventToggling) {\r\n if (this.globalNav.find('ul').scrollLeft() > 0) {\r\n this.globalNav.find('ul').scrollLeft(0)\r\n }\r\n\r\n this.globalNav.toggleClass('sitenav-is-open')\r\n this.siteNav.addClass('visible')\r\n this.siteNav.toggleClass(this.navigationOpenClass)\r\n this.siteNavToggler.toggleClass(this.toggleActiveClass)\r\n this.searchToggler.toggleClass('sitenav--is-open')\r\n\r\n // Prevent body scroll\r\n\tthis.body.toggleClass(this.bodyNoScrollClass)\r\n\t }\r\n\r\n\t that.preventToggling = true;\r\n\t setTimeout(function () {\r\n\t\t that.preventToggling = false\r\n\t }, 100)\r\n },\r\n\r\n // Open or close global nav on mobile and desktop devices\r\n toggleGlobalNav: function() {\r\n this.globalNav.toggleClass(this.navigationOpenClass)\r\n\r\n // Prevent body scroll\r\n this.body.toggleClass(this.bodyNoScrollClass)\r\n },\r\n\r\n // Toggle dropdowns on mobile devices\r\n toggleDropdown: function (e) {\r\n\t console.log(e);\r\n\t var that = this\r\n if (this.window.width() >= 1025)\r\n return\r\n\t e.stopPropagation();\r\n var elem = $(e.target)\r\n\t var dropdown = elem.siblings('.dropdown').length ? elem.siblings('.dropdown') : elem.find('.dropdown').first()\r\n\t if (!that.preventToggling) {\r\n\t\t dropdown.toggleClass('is-open')\r\n\t\t elem.parent().toggleClass('is-active')\r\n\t }\r\n\r\n\t that.preventToggling = true;\r\n\t setTimeout(function () {\r\n\t\t that.preventToggling = false\r\n\t }, 100)\r\n },\r\n\r\n // Toggle dropdowns on mobile devices\r\n closeDropdown: function (e) {\r\n\r\n var elem = $(e.target)\r\n var dropdown = elem.closest('.has-dropdown.hover').trigger('mouseleave');\r\n },\r\n\r\n addDropdownHover: function (e) {\r\n var elem = $(e.target);\r\n elem.addClass(\"hover\");\r\n },\r\n\r\n removeDropdownHover: function (e) {\r\n var elem = $(e.target);\r\n elem.removeClass(\"hover\");\r\n },\r\n\r\n // Apply background colors to links in site groups\r\n applySiteColor: function () {\r\n this.siteGroups.each(function (i, e) {\r\n var color = $(e).attr('data-site-color')\r\n $(e).find('a').css({\r\n backgroundColor: color,\r\n color: '#fff'\r\n })\r\n })\r\n },\r\n\r\n animateSiteNav: function () {\r\n var oldScrollTop = this.scrollTop\r\n var newScrollTop = this.window.scrollTop()\r\n var siteNavHeight = this.siteNav.outerHeight()\r\n var globalNavHeight = this.globalNav.find('.global-navigation-featured').outerHeight()\r\n var siteNavTop = parseInt(this.siteNav.css('top'), 10)\r\n var speed = 1\r\n\r\n // Check if the scroll direction is downwards or upwards\r\n // if false we can assume it's upwards\r\n var directionDown = newScrollTop > oldScrollTop\r\n\r\n var moveOverGlobalNav = newScrollTop < globalNavHeight\r\n var animateOut = directionDown && newScrollTop > globalNavHeight\r\n var animateIn = !directionDown && newScrollTop > globalNavHeight\r\n\r\n if (newScrollTop > globalNavHeight + siteNavHeight) {\r\n this.body.addClass('fixed-nav')\r\n }\r\n\r\n if (this.window.width() < 1024) {\r\n if (newScrollTop <= globalNavHeight + siteNavHeight) {\r\n this.body.removeClass('fixed-nav')\r\n }\r\n } else {\r\n if (newScrollTop <= globalNavHeight) {\r\n this.body.removeClass('fixed-nav')\r\n }\r\n }\r\n\r\n if (animateIn) {\r\n this.siteNav.addClass('visible')\r\n } else {\r\n this.siteNav.removeClass('visible')\r\n }\r\n\r\n // Update scrollTop variable when all is done\r\n this.scrollTop = newScrollTop\r\n },\r\n\r\n _animateSiteNav: function () {\r\n var oldScrollTop = this.scrollTop\r\n var newScrollTop = this.window.scrollTop()\r\n var siteNavHeight = this.siteNav.outerHeight()\r\n var globalNavHeight = this.globalNav.find('.global-navigation-featured').outerHeight()\r\n var siteNavTop = parseInt(this.siteNav.css('top'), 10)\r\n var speed = 1\r\n\r\n // Check if the scroll direction is downwards or upwards\r\n // if false we can assume it's upwards\r\n var directionDown = newScrollTop > oldScrollTop\r\n\r\n var scrolledOnMobile = newScrollTop > 0 && this.window.width() < 1024\r\n var moveOverGlobalNav = newScrollTop < globalNavHeight\r\n var animateOut = directionDown && newScrollTop > globalNavHeight\r\n var animateIn = !directionDown && newScrollTop > globalNavHeight && siteNavTop < 0\r\n\r\n if (moveOverGlobalNav) {\r\n this.siteNav.css('top', globalNavHeight - newScrollTop)\r\n }\r\n\r\n if (animateOut) {\r\n var top = siteNavTop - (newScrollTop - oldScrollTop) / speed\r\n top = top < -Math.abs(siteNavHeight) ? -Math.abs(siteNavHeight) : top\r\n this.siteNav.css('top', top)\r\n }\r\n\r\n if (animateIn) {\r\n var top = siteNavTop + (oldScrollTop - newScrollTop)\r\n top = top > 0 ? 0 : top\r\n this.siteNav.css('top', top)\r\n }\r\n\r\n if (scrolledOnMobile) {\r\n this.siteNav.addClass('scrolled')\r\n } else {\r\n this.siteNav.removeClass('scrolled')\r\n }\r\n\r\n // Update scrollTop variable when all is done\r\n this.scrollTop = newScrollTop\r\n },\r\n\r\n positionSiteNavOnLoad: function() {\r\n if (this.scrollTop > this.globalNav.outerHeight() + this.siteNav.outerHeight())\r\n this.siteNav.css('top', 0)\r\n },\r\n\r\n // Inititate the module\r\n init: function() {\r\n this.cacheDom()\r\n this.applySiteColor()\r\n this.optimizeMobile()\r\n this.bindEvents()\r\n\r\n // Update scrollTop and siteNavOffsetTop variables as soon as the page loads\r\n this.scrollTop = this.window.scrollTop()\r\n // this.positionSiteNavOnLoad()\r\n }\r\n\r\n}\r\n\r\n$(document).ready(function() { navigation.init();console.log(\"navigation\");} );\r\n","var search = {\r\n\topenClass: 'open',\r\n\tcacheDom: function () {\r\n\t\tthis.siteNav = $('.sitenav')\r\n\t\tthis.siteSearch = $('.site-search')\r\n\t\tthis.siteNavToggler = $('.sitenav__toggle')\r\n\t\tthis.globalNav = $('.global-navigation')\r\n\t\tthis.toggler = $('[data-toggle-site-search]')\r\n\t\tthis.overlay = $('.site-overlay')\r\n\t\tthis.wrapper = $('[data-site-search]')\r\n\t\tthis.content = this.wrapper.find(\"[data-site-search__content]\");\r\n\t\tthis.form = this.wrapper.find(\"[data-site-search__form]\");\r\n\t\tthis.input = this.wrapper.find('[data-site-search__input]')\r\n\t},\r\n\tbindEvents: function () {\r\n\t\tthis.input.on('keyup', this.performSearch.bind(this))\r\n\t\tthis.toggler.on('tap', this.toggleSearch.bind(this))\r\n\t},\r\n\ttoggleSearch: function () {\r\n\t\t$('body').addClass('noscroll')\r\n\t\tif ($(window).width() < 1025) {\r\n\t\t\tthis.siteNav.addClass('open')\r\n\t\t\tthis.globalNav.addClass('sitenav-is-open')\r\n\t\t\tthis.siteNavToggler.addClass('tcon-transform')\r\n\t\t\tthis.input.focus()\r\n\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.wrapper.toggleClass(this.openClass)\r\n\t\tthis.overlay.addClass('hide').toggleClass(this.openClass)\r\n\t\tthis.toggler.toggleClass(this.openClass)\r\n\r\n\t\t// Focus on or clear input\r\n\t\tif (this.wrapper.hasClass(this.openClass)) {\r\n\t\t\tthis.input.focus()\r\n\t\t\tthis.overlay.one('click', this.toggleSearch.bind(this))\r\n\t\t} else {\r\n\t\t\tthis.input.val('')\r\n\t\t}\r\n\t},\r\n\tperformSearch: function () {\r\n\t\t//TODO: Throttle searches\r\n\t\tvar loadUrl = this.form.attr(\"action\") + \"?\" + this.form.serialize() + \" .main > *:nth-child(n+1)\";\r\n\t\tvar siteSearch = this.siteSearch\r\n\t\tvar content = this.content;\r\n\r\n\t\tsiteSearch.addClass('loading')\r\n\r\n\t\tvar data = $(\"\").load(loadUrl, function () {\r\n\t\t\t$(this).find(\"h1\").remove();\r\n\t\t\tcontent.html($(this).html());\r\n\t\t\tsiteSearch.removeClass(\"loading\");\r\n\t\t});\r\n\t\t\r\n\t},\r\n\tinit: function () {\r\n\t\tthis.cacheDom()\r\n\t\tthis.bindEvents()\r\n\t}\r\n}\r\n\r\n$(document).ready(function() {\r\n\tsearch.init()\r\n});","/*!\r\n * @copyright Copyright (c) 2016 IcoMoon.io\r\n * @license Licensed under MIT license\r\n * See https://github.com/Keyamoon/svgxuse\r\n * @version 1.1.17\r\n */\r\n(function () {\r\n\tif (window && window.addEventListener) {\r\n\t\tvar c = Object.create(null), l, p, a = function () { clearTimeout(p); p = setTimeout(l, 100) }, q = function () { }, t = function () {\r\n\t\t\tvar e; window.addEventListener(\"resize\", a, !1); window.addEventListener(\"orientationchange\", a, !1); window.MutationObserver ? (e = new MutationObserver(a), e.observe(document.documentElement, { childList: !0, subtree: !0, attributes: !0 }), q = function () {\r\n\t\t\t\ttry {\r\n\t\t\t\t\te.disconnect(), window.removeEventListener(\"resize\", a, !1), window.removeEventListener(\"orientationchange\", a,\r\n\t\t\t\t\t\t!1)\r\n\t\t\t\t} catch (c) { }\r\n\t\t\t}) : (document.documentElement.addEventListener(\"DOMSubtreeModified\", a, !1), q = function () { document.documentElement.removeEventListener(\"DOMSubtreeModified\", a, !1); window.removeEventListener(\"resize\", a, !1); window.removeEventListener(\"orientationchange\", a, !1) })\r\n\t\t}, u = function (e) { var c, a = location.hostname; if (window.XMLHttpRequest) { c = new XMLHttpRequest; var m = document.createElement(\"a\"); m.href = e; e = m.hostname; c = void 0 === c.withCredentials && \"\" !== e && e !== a ? XDomainRequest || void 0 : XMLHttpRequest } return c };\r\n\t\tl = function () {\r\n\t\t\tfunction e() { --n; 0 === n && t() } function a(b) { return function () { !0 !== c[b.base] && b.useEl.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", \"#\" + b.hash) } } function l(b) { return function () { var c = document.body, a = document.createElement(\"x\"); b.onload = null; a.innerHTML = b.responseText; if (a = a.getElementsByTagName(\"svg\")[0]) a.setAttribute(\"aria-hidden\", \"true\"), a.style.position = \"absolute\", a.style.width = 0, a.style.height = 0, a.style.overflow = \"hidden\", c.insertBefore(a, c.firstChild); e() } } function m(a) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\ta.onerror =\r\n\t\t\t\t\t\tnull; a.ontimeout = null; e()\r\n\t\t\t\t}\r\n\t\t\t} var d, f, g, h, n = 0, b, k; q(); k = document.getElementsByTagName(\"use\"); for (h = 0; h < k.length; h += 1) {\r\n\t\t\t\ttry { f = k[h].getBoundingClientRect() } catch (v) { f = !1 } g = k[h].getAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\").split(\"#\"); d = g[0]; g = g[1]; b = f && 0 === f.left && 0 === f.right && 0 === f.top && 0 === f.bottom; f && 0 === f.width && 0 === f.height && !b ? d.length && (b = c[d], !0 !== b && setTimeout(a({ useEl: k[h], base: d, hash: g }), 0), void 0 === b && (g = u(d), void 0 !== g && (b = new g, c[d] = b, b.onload = l(b), b.onerror = m(b), b.ontimeout = m(b),\r\n\t\t\t\t\tb.open(\"GET\", d), b.send(), n += 1))) : b || (void 0 === c[d] ? c[d] = !0 : c[d].onload && (c[d].abort(), c[d].onload = void 0, c[d] = !0))\r\n\t\t\t} k = \"\"; n += 1; e()\r\n\t\t}; window.addEventListener(\"load\", function r() { window.removeEventListener(\"load\", r, !1); p = setTimeout(l, 0) }, !1)\r\n\t}\r\n})();","$(function () {\r\n\r\n\t$(\"[data-gallery] [data-index]\").on(\"click\", function (e) {\r\n\t\te.preventDefault();\r\n\t\tgoToGalleryImage($(this).closest(\"[data-gallery]\").attr(\"data-gallery\"), $(this).attr(\"data-index\"));\r\n\t});\r\n\r\n\t$(\"#galleryModal .gallery-control\").on(\"click\", function () {\r\n\t\tvar id = $(this).closest(\"#galleryModal\").attr(\"data-gallery-id\");\r\n\t\tif ($(this).hasClass(\"left\")) {\r\n\t\t\tgoToPrev(id);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tgoToNext(id);\r\n\t\t}\r\n\t});\r\n\r\n\tfunction goToGalleryImage(id, index) {\r\n\t\tvar gallery = $(\"[data-gallery='\" + id + \"']\");\r\n\t\tconsole.log(gallery);\r\n\t\tif (gallery.length == 0) return;\r\n\r\n\t\tvar modal = $(\"#galleryModal[data-gallery-id='\" + id + \"']\");\r\n\t\tconsole.log(modal);\r\n\t\tif (modal.length == 0) return;\r\n\r\n\t\tindex = parseInt(\"0\" + index);\r\n\t\tconsole.log(index);\r\n\r\n\t\tmodal.find(\"[data-gallery-image]\").attr(\"src\", gallery.find(\"[data-index='\" + index + \"']\").attr(\"href\"));\r\n\t\tmodal.attr(\"data-gallery-index\", index);\r\n\r\n\t\tvar previous = gallery.find(\"[data-index='\" + (index - 1) + \"']\");\r\n\t\tvar next = gallery.find(\"[data-index='\" + (index + 1) + \"']\");\r\n\r\n\t\tif (previous.length == 0) {\r\n\t\t\tprevious = gallery.find(\":last-child [data-index]\");\r\n\t\t}\r\n\t\tif (next.length == 0) {\r\n\t\t\tnext = gallery.find(\":first-child [data-index]\");\r\n\t\t}\r\n\r\n\t\tif ((modal.data('bs.modal') || {}).isShown) {\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tmodal.modal(\"show\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction goToNext(id) {\r\n\r\n\t\tvar gallery = $(\"[data-gallery='\" + id + \"']\");\r\n\t\tif (gallery.length == 0) return;\r\n\r\n\t\tvar modal = $(\"#galleryModal[data-gallery-id='\" + id + \"'][data-gallery-index]\");\r\n\t\tif (modal.length == 0) return;\r\n\r\n\t\tvar index = parseInt(\"0\" + modal.attr(\"data-gallery-index\"));\r\n\r\n\t\tvar next = gallery.find(\"[data-index='\" + (index + 1) + \"']\");\r\n\r\n\t\tif (next.length == 0) {\r\n\t\t\tnext = gallery.find(\":first-child [data-index]\");\r\n\t\t}\r\n\r\n\t\tgoToGalleryImage(id, next.attr(\"data-index\"));\r\n\t}\r\n\r\n\r\n\tfunction goToPrev(id) {\r\n\r\n\t\tvar gallery = $(\"[data-gallery='\" + id + \"']\");\r\n\t\tif (gallery.length == 0) return;\r\n\r\n\t\tvar modal = $(\"#galleryModal[data-gallery-id='\" + id + \"'][data-gallery-index]\");\r\n\t\tif (modal.length == 0) return;\r\n\r\n\t\tvar index = parseInt(\"0\" + modal.attr(\"data-gallery-index\"));\r\n\r\n\t\tvar previous = gallery.find(\"[data-index='\" + (index - 1) + \"']\");\r\n\r\n\t\tif (previous.length == 0) {\r\n\t\t\tprevious = gallery.find(\":last-child [data-index]\");\r\n\t\t}\r\n\r\n\t\tgoToGalleryImage(id, previous.attr(\"data-index\"));\r\n\t}\r\n});"],"sourceRoot":""}