').prependTo('body');\n\n var slider = this.$element.find('>.parallax-slider');\n var sliderExisted = false;\n\n if (slider.length == 0)\n this.$slider = $('
').prependTo(this.$mirror);\n else {\n this.$slider = slider.prependTo(this.$mirror)\n sliderExisted = true;\n }\n\n this.$mirror.addClass('parallax-mirror').css({\n visibility: 'hidden',\n zIndex: this.zIndex,\n position: 'fixed',\n top: 0,\n left: 0,\n overflow: 'hidden'\n });\n\n this.$slider.addClass('parallax-slider').one('load', function() {\n if (!self.naturalHeight || !self.naturalWidth) {\n self.naturalHeight = this.naturalHeight || this.height || 1;\n self.naturalWidth = this.naturalWidth || this.width || 1;\n }\n self.aspectRatio = self.naturalWidth / self.naturalHeight;\n\n Parallax.isSetup || Parallax.setup();\n Parallax.sliders.push(self);\n Parallax.isFresh = false;\n Parallax.requestRender();\n });\n\n if (!sliderExisted)\n this.$slider[0].src = this.imageSrc;\n\n if (this.naturalHeight && this.naturalWidth || this.$slider[0].complete || slider.length > 0) {\n this.$slider.trigger('load');\n }\n\n };\n\n\n // Parallax Instance Methods\n\n $.extend(Parallax.prototype, {\n speed: 0.2,\n bleed: 0,\n zIndex: -100,\n iosFix: true,\n androidFix: true,\n position: 'center',\n overScrollFix: false,\n\n refresh: function() {\n this.boxWidth = this.$element.outerWidth();\n this.boxHeight = this.$element.outerHeight() + this.bleed * 2;\n this.boxOffsetTop = this.$element.offset().top - this.bleed;\n this.boxOffsetLeft = this.$element.offset().left;\n this.boxOffsetBottom = this.boxOffsetTop + this.boxHeight;\n\n var winHeight = Parallax.winHeight;\n var docHeight = Parallax.docHeight;\n var maxOffset = Math.min(this.boxOffsetTop, docHeight - winHeight);\n var minOffset = Math.max(this.boxOffsetTop + this.boxHeight - winHeight, 0);\n var imageHeightMin = this.boxHeight + (maxOffset - minOffset) * (1 - this.speed) | 0;\n var imageOffsetMin = (this.boxOffsetTop - maxOffset) * (1 - this.speed) | 0;\n\n if (imageHeightMin * this.aspectRatio >= this.boxWidth) {\n this.imageWidth = imageHeightMin * this.aspectRatio | 0;\n this.imageHeight = imageHeightMin;\n this.offsetBaseTop = imageOffsetMin;\n\n var margin = this.imageWidth - this.boxWidth;\n\n if (this.positionX == 'left') {\n this.offsetLeft = 0;\n } else if (this.positionX == 'right') {\n this.offsetLeft = - margin;\n } else if (!isNaN(this.positionX)) {\n this.offsetLeft = Math.max(this.positionX, - margin);\n } else {\n this.offsetLeft = - margin / 2 | 0;\n }\n } else {\n this.imageWidth = this.boxWidth;\n this.imageHeight = this.boxWidth / this.aspectRatio | 0;\n this.offsetLeft = 0;\n\n var margin = this.imageHeight - imageHeightMin;\n\n if (this.positionY == 'top') {\n this.offsetBaseTop = imageOffsetMin;\n } else if (this.positionY == 'bottom') {\n this.offsetBaseTop = imageOffsetMin - margin;\n } else if (!isNaN(this.positionY)) {\n this.offsetBaseTop = imageOffsetMin + Math.max(this.positionY, - margin);\n } else {\n this.offsetBaseTop = imageOffsetMin - margin / 2 | 0;\n }\n }\n },\n\n render: function() {\n var scrollTop = Parallax.scrollTop;\n var scrollLeft = Parallax.scrollLeft;\n var overScroll = this.overScrollFix ? Parallax.overScroll : 0;\n var scrollBottom = scrollTop + Parallax.winHeight;\n\n if (this.boxOffsetBottom > scrollTop && this.boxOffsetTop <= scrollBottom) {\n this.visibility = 'visible';\n this.mirrorTop = this.boxOffsetTop - scrollTop;\n this.mirrorLeft = this.boxOffsetLeft - scrollLeft;\n this.offsetTop = this.offsetBaseTop - this.mirrorTop * (1 - this.speed);\n } else {\n this.visibility = 'hidden';\n }\n\n this.$mirror.css({\n transform: 'translate3d(0px, 0px, 0px)',\n visibility: this.visibility,\n top: this.mirrorTop - overScroll,\n left: this.mirrorLeft,\n height: this.boxHeight,\n width: this.boxWidth\n });\n\n this.$slider.css({\n transform: 'translate3d(0px, 0px, 0px)',\n position: 'absolute',\n top: this.offsetTop,\n left: this.offsetLeft,\n height: this.imageHeight,\n width: this.imageWidth,\n maxWidth: 'none'\n });\n }\n });\n\n\n // Parallax Static Methods\n\n $.extend(Parallax, {\n scrollTop: 0,\n scrollLeft: 0,\n winHeight: 0,\n winWidth: 0,\n docHeight: 1 << 30,\n docWidth: 1 << 30,\n sliders: [],\n isReady: false,\n isFresh: false,\n isBusy: false,\n\n setup: function() {\n if (this.isReady) return;\n\n var $doc = $(document), $win = $(window);\n\n var loadDimensions = function() {\n Parallax.winHeight = $win.height();\n Parallax.winWidth = $win.width();\n Parallax.docHeight = $doc.height();\n Parallax.docWidth = $doc.width();\n };\n\n var loadScrollPosition = function() {\n var winScrollTop = $win.scrollTop();\n var scrollTopMax = Parallax.docHeight - Parallax.winHeight;\n var scrollLeftMax = Parallax.docWidth - Parallax.winWidth;\n Parallax.scrollTop = Math.max(0, Math.min(scrollTopMax, winScrollTop));\n Parallax.scrollLeft = Math.max(0, Math.min(scrollLeftMax, $win.scrollLeft()));\n Parallax.overScroll = Math.max(winScrollTop - scrollTopMax, Math.min(winScrollTop, 0));\n };\n\n $win.on('resize.px.parallax load.px.parallax', function() {\n loadDimensions();\n Parallax.isFresh = false;\n Parallax.requestRender();\n })\n .on('scroll.px.parallax load.px.parallax', function() {\n loadScrollPosition();\n Parallax.requestRender();\n });\n\n loadDimensions();\n loadScrollPosition();\n\n this.isReady = true;\n },\n\n configure: function(options) {\n if (typeof options == 'object') {\n delete options.refresh;\n delete options.render;\n $.extend(this.prototype, options);\n }\n },\n\n refresh: function() {\n $.each(this.sliders, function(){ this.refresh() });\n this.isFresh = true;\n },\n\n render: function() {\n this.isFresh || this.refresh();\n $.each(this.sliders, function(){ this.render() });\n },\n\n requestRender: function() {\n var self = this;\n\n if (!this.isBusy) {\n this.isBusy = true;\n window.requestAnimationFrame(function() {\n self.render();\n self.isBusy = false;\n });\n }\n },\n destroy: function(el){\n var i,\n parallaxElement = $(el).data('px.parallax');\n parallaxElement.$mirror.remove();\n for(i=0; i < this.sliders.length; i+=1){\n if(this.sliders[i] == parallaxElement){\n this.sliders.splice(i, 1);\n }\n }\n $(el).data('px.parallax', false);\n if(this.sliders.length === 0){\n $(window).off('scroll.px.parallax resize.px.parallax load.px.parallax');\n this.isReady = false;\n Parallax.isSetup = false;\n }\n }\n });\n\n\n // Parallax Plugin Definition\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var options = typeof option == 'object' && option;\n\n if (this == window || this == document || $this.is('body')) {\n Parallax.configure(options);\n }\n else if (!$this.data('px.parallax')) {\n options = $.extend({}, $this.data(), options);\n $this.data('px.parallax', new Parallax(this, options));\n }\n else if (typeof option == 'object')\n {\n $.extend($this.data('px.parallax'), options);\n }\n if (typeof option == 'string') {\n if(option == 'destroy'){\n Parallax['destroy'](this);\n }else{\n Parallax[option]();\n }\n }\n })\n };\n\n var old = $.fn.parallax;\n\n $.fn.parallax = Plugin;\n $.fn.parallax.Constructor = Parallax;\n\n\n // Parallax No Conflict\n\n $.fn.parallax.noConflict = function () {\n $.fn.parallax = old;\n return this;\n };\n\n\n // Parallax Data-API\n\n $(document).on('ready.px.parallax.data-api', function () {\n $('[data-parallax=\"scroll\"]').parallax();\n });\n\n}(jQuery, window, document));\n","module.exports = {\n 'Init': require('./init')\n};","module.exports = function () {\n\n // footer header toggle\n $('.main-footer__nav__header-toggle').click(function (e) {\n e.preventDefault();\n\n var $groupToToggle = $(this).parent().siblings('.main-footer__nav__groups').first();\n\n if ($(this).hasClass('main-footer__nav__header-toggle--is-active')) {\n $(this).removeClass('main-footer__nav__header-toggle--is-active');\n $groupToToggle.css({\n height: '0px'\n });\n }\n else {\n var height = 0;\n $groupToToggle.find('.main-footer__nav__group').each(function (i) {\n height += $(this).outerHeight(true);\n });\n\n $(this).addClass('main-footer__nav__header-toggle--is-active');\n $groupToToggle.css({\n height: height + 'px'\n });\n }\n\n updateFooterAccessibilityElements();\n });\n\n var checkFooterNavigationGroupsForSocialLinks = function () {\n $('.main-footer__nav__groups').each(function (i, el) {\n var $container = $(this).find('.main-footer__social-link-items-container');\n\n if (!$container.length) {\n $(this).addClass('main-footer__nav__groups--without-social-links')\n }\n });\n };\n\n var resetFooterHeights = function () {\n if (window.innerWidth > 767) {\n $('.main-footer__nav__groups').css({\n height: ''\n });\n\n $('.main-footer__nav__header-toggle').removeClass('main-footer__nav__header-toggle--is-active');\n }\n };\n\n // update aria and tabindex properties of footer elements\n var updateFooterAccessibilityElements = function () { \n if (window.innerWidth < 768) {\n $('.main-footer__nav__header-toggle').not('.main-footer__nav__header-toggle--is-active').attr('aria-expanded', false);\n $('.main-footer__nav__header-toggle--is-active').attr('aria-expanded', true);\n\n $('.main-footer__nav__header').each(function () {\n\n var $navHeader = $(this).find('.main-footer__nav__header-toggle');\n\n if ($navHeader) {\n var $navGroups = $(this).next('.main-footer__nav__groups--without-social-links');\n\n if ($navHeader && $navHeader.hasClass('main-footer__nav__header-toggle--is-active')) {\n $navGroups.removeAttr('aria-hidden');\n $navGroups.find('a').attr('tabindex', '');\n }\n else {\n $navGroups.attr('aria-hidden', true);\n $navGroups.find('a').attr('tabindex', '-1');\n }\n }\n });\n }\n else {\n $('.main-footer').find('a').not('.main-footer__social-link-icon').attr('tabindex', '');\n }\n };\n\n $(window).resize(function () {\n requestAnimationFrame(resetFooterHeights);\n\n updateFooterAccessibilityElements();\n });\n\n checkFooterNavigationGroupsForSocialLinks();\n updateFooterAccessibilityElements();\n};","module.exports = function () {\n\n if ($('.main-header').length === 0) {\n return;\n }\n\n function isHamburgerMenuOpen() {\n return $('.main-nav__hamburger').hasClass('main-nav__hamburger--is-active');\n } \n\n function openHamburgerMenu() {\n $('.main-nav__hamburger').addClass('main-nav__hamburger--is-active');\n $('.hamburger-nav').addClass('hamburger-nav--is-active');\n $('body').addClass('hamburger-nav--is-active');\n $('.main-header').addClass('hamburger-nav--is-active').addClass('main-header--with-open-header');\n\n ariaHideNonHeaderContent();\n updateHamburgerMenuAccessibilityElements();\n }\n\n function closeHamburgerMenu() {\n $('.main-nav__hamburger').removeClass('main-nav__hamburger--is-active');\n $('.hamburger-nav').removeClass('hamburger-nav--is-active');\n $('body').removeClass('hamburger-nav--is-active'); \n $('.main-header').removeClass('hamburger-nav--is-active');\n\n ariaUnhideNonHeaderContent();\n updateHamburgerMenuAccessibilityElements();\n\n if ($(document.activeElement).closest('.hamburger-nav').length > 0) {\n $(document.activeElement).closest('.main-header').find('.main-nav__hamburger').first().focus();\n }\n\n setTimeout(function () {\n $('.main-header').removeClass('main-header--with-open-header');\n }, 500);\n }\n\n function updateHamburgerMenuAccessibilityElements() {\n var $allFocusableElements = $('.hamburger-nav a');\n\n removeFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__hamburger').add($allFocusableElements));\n\n if (isHamburgerMenuOpen()) {\n $('.main-nav__hamburger').attr('aria-expanded', 'true');\n $('.hamburger-nav').removeAttr('aria-hidden');\n\n if (ICF.Utils.Breakpoints.IsMobile()) {\n $('.hamburger-nav__header-link').add('.main-header__social-link').add('.hamburger-nav__header-toggle').attr('tabindex', '');\n\n $('.hamburger-nav__header').each(function () {\n var $navHeader = $(this).find('.hamburger-nav__header-toggle');\n\n if ($navHeader) {\n var $navGroups = $(this).next('.hamburger-nav__groups');\n\n if ($navHeader && $navHeader.hasClass('hamburger-nav__header-toggle--is-active')) {\n $navHeader.attr('aria-expanded', 'true');\n $navGroups.removeAttr('aria-hidden');\n $navGroups.find('a').attr('tabindex', '');\n }\n else {\n $navHeader.attr('aria-expanded', 'false');\n $navGroups.attr('aria-hidden', 'true');\n $navGroups.find('a:not(\".main-header__social-link\")').attr('tabindex', '-1');\n }\n }\n });\n }\n else {\n $allFocusableElements.attr('tabindex', '');\n $('.hamburger-nav__groups').removeAttr('aria-hidden');\n $('.hamburger-nav__header-toggle').attr('aria-expanded', 'true');\n }\n \n setFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__hamburger').add($('.hamburger-nav [tabindex=\"\"]')));\n }\n else {\n $('.main-nav__hamburger').attr('aria-expanded', 'false');\n $('.hamburger-nav').attr('aria-hidden', 'true');\n $('.hamburger-nav__groups--without-social-links').attr('aria-hidden', 'true');\n $('.hamburger-nav__header-toggle').attr('aria-expanded', 'false');\n $allFocusableElements.attr('tabindex', '-1') \n }\n }\n\n function isSearchPaneOpen() {\n return $('.main-nav__search-btn').hasClass('main-nav__search-btn--is-active');\n }\n\n function updateSearchWrapperHeight() {\n\n var $searchWrapperWithSuggestions = $('.search-wrapper--with-suggestions');\n if ($searchWrapperWithSuggestions.hasClass('search-wrapper--is-active')) {\n var containerHeight = $searchWrapperWithSuggestions.find('.search-wrapper__container').outerHeight(true);\n \n if (containerHeight + 80 <= $('body').outerHeight(true)) {\n var containerHeightValue = containerHeight + 'px';\n $searchWrapperWithSuggestions.css('height', containerHeightValue);\n }\n else {\n $searchWrapperWithSuggestions.css('height', 'calc(100% - 80px)');\n $searchWrapperWithSuggestions.css('overflow-y', 'scroll');\n }\n }\n else {\n $searchWrapperWithSuggestions.css('height', '0');\n $searchWrapperWithSuggestions.css('overflow-y', '');\n }\n };\n\n function openSearchPane() {\n $('.main-nav__search-btn').addClass('main-nav__search-btn--is-active');\n $('.search-wrapper').addClass('search-wrapper--is-active');\n $('body').addClass('search-pane--is-active');\n $('.main-nav__hamburger').addClass('main-nav__hamburger--is-faded');\n\n var $searchWrapperWithSuggestions = $('.search-wrapper--with-suggestions');\n if ($searchWrapperWithSuggestions.length) {\n $('.header-scrim').addClass('header-scrim--is-visible');\n $('.main-header').addClass('main-header--with-open-search');\n\n requestAnimationFrame(function () {\n $('.header-scrim').addClass('header-scrim--is-active');\n });\n\n updateSearchWrapperHeight();\n }\n\n ariaHideNonHeaderContent();\n updateSearchPaneAccessibilityElements();\n\n setTimeout(function () {\n $('.search-wrapper input').first().focus();\n }, 250); \n }\n\n function closeSearchPane() {\n $('.main-nav__search-btn').removeClass('main-nav__search-btn--is-active');\n $('.search-wrapper').removeClass('search-wrapper--is-active');\n $('body').removeClass('search-pane--is-active');\n $('.main-nav__hamburger').removeClass('main-nav__hamburger--is-faded');\n\n var $searchWrapperWithSuggestions = $('.search-wrapper--with-suggestions');\n if ($searchWrapperWithSuggestions.length) { \n updateSearchWrapperHeight();\n $('.header-scrim').removeClass('header-scrim--is-active');\n\n setTimeout(function () {\n $('.header-scrim').removeClass('header-scrim--is-visible');\n $('.main-header').removeClass('main-header--with-open-search');\n }, 250); \n }\n\n ariaUnhideNonHeaderContent(); \n updateSearchPaneAccessibilityElements();\n\n if ($(document.activeElement).closest('.search-wrapper').length > 0) {\n $(document.activeElement).closest('.main-header').find('.main-nav__search-btn').first().focus();\n }\n }\n\n function updateSearchPaneAccessibilityElements() { \n var $focusableElements = $('.search-wrapper').find('.search-control__search-input, .search-control__search-btn, .search-list__list-item__link, .featured-result-link');\n\n if (isSearchPaneOpen()) {\n $('.main-nav__search-btn').attr('aria-expanded', 'true');\n $('.search-wrapper').removeAttr('aria-hidden');\n $focusableElements.attr('tabindex', '');\n setFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__search-btn').add($focusableElements));\n }\n else {\n $('.main-nav__search-btn').attr('aria-expanded', 'false');\n $('.search-wrapper').attr('aria-hidden', 'true');\n $focusableElements.attr('tabindex', '-1');\n removeFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__search-btn').add($focusableElements));\n }\n }\n\n function isHeaderNavActive() {\n return $('.main-nav__center:not(.main-nav__center--is-disabled)').length > 0;\n }\n\n function activateHeaderNav() { \n $('.main-nav__center').removeClass('main-nav__center--is-disabled').attr('aria-hidden', 'false');\n $('.main-nav__center .main-nav__dropdown-item__link').attr('tabindex', '');\n }\n\n function deactivateHeaderNav() { \n $('.main-nav__center').addClass('main-nav__center--is-disabled').attr('aria-hidden', 'true');\n $('.main-nav__center .main-nav__dropdown-item__link').attr('tabindex', '-1');\n\n if (isAnyHeaderNavDropdownOpen()) {\n closeHeaderNavDropdown();\n }\n }\n\n function isAnyHeaderNavDropdownOpen() {\n return $('.main-nav__dropdown-item--is-active').length > 0;\n }\n \n function openHeaderNavDropdown(mainNavDropdownItemLink) {\n $(mainNavDropdownItemLink).parent().addClass('main-nav__dropdown-item--is-active');\n\n var distanceToTop = $(document).scrollTop() * -1;\n $('body').addClass('with-open-header').css('top', distanceToTop + 'px')\n \n $('.header-scrim').addClass('header-scrim--is-visible');\n $('.main-header').addClass('main-header--with-open-header');\n\n requestAnimationFrame(function () {\n $('.header-scrim').addClass('header-scrim--is-active');\n });\n\n var $content = $(mainNavDropdownItemLink).siblings('.main-nav__dropdown-item__content');\n var contentHeight = $content.find('.main-nav__dropdown-item__content-container').outerHeight() + 'px';\n $content.css('height', contentHeight);\n\n ariaHideNonHeaderContent();\n updateHeaderNavDropdownAccessibilityElements();\n }\n\n function closeHeaderNavDropdown(deactivateScrimAndCloseHeader) {\n\n if (typeof deactivateScrimAndCloseHeader === 'undefined') {\n deactivateScrimAndCloseHeader = true;\n }\n\n $('.main-nav__search-btn').attr('aria-expanded', 'true');\n\n $('body').removeClass('with-open-header').css({\n 'top': ''\n });\n\n if (deactivateScrimAndCloseHeader) {\n $('.header-scrim').removeClass('header-scrim--is-active');\n setTimeout(function () {\n $('.header-scrim').removeClass('header-scrim--is-visible');\n }, 250);\n\n setTimeout(function () {\n $('.main-header').removeClass('main-header--with-open-header');\n }, 600);\n }\n\n $('.main-nav__dropdown-item__link').each(function (i, el) {\n $(this).parent().removeClass('main-nav__dropdown-item--is-active');\n var $content = $(this).siblings('.main-nav__dropdown-item__content');\n $content.css('height', '0px');\n });\n\n ariaUnhideNonHeaderContent();\n updateHeaderNavDropdownAccessibilityElements();\n\n if ($(document.activeElement).closest('.main-nav__dropdown-item__content').length > 0)\n {\n $(document.activeElement).closest('.main-nav__dropdown-item').find('.main-nav__dropdown-item__link').first().focus();\n }\n }\n\n function updateHeaderNavDropdownAccessibilityElements() { \n removeFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__dropdown-item__link, .main-nav__search-btn, .main-nav__hamburger, header [tabindex=\"\"]'));\n \n if (ICF.Utils.Breakpoints.IsAtLeastTablet()) {\n $('.main-nav__dropdown-item').each(function () {\n if ($(this).hasClass('main-nav__dropdown-item--is-active')) {\n $(this).find('.main-nav__dropdown-item__link').attr('aria-expanded', 'true');\n $(this).find('.main-nav__dropdown-item__content').attr('aria-hidden', 'false').find('a').attr('tabindex', '');\n }\n else { \n $(this).find('.main-nav__dropdown-item__link').attr('aria-expanded', 'false');\n $(this).find('.main-nav__dropdown-item__content').attr('aria-hidden', 'true').find('a').attr('tabindex', '-1');\n }\n });\n\n if (isAnyHeaderNavDropdownOpen()) {\n setFocusableElementRestriction($('.main-nav__logo-wrapper, .main-nav__dropdown-item__link, .main-nav__search-btn, .main-nav__hamburger, header [tabindex=\"\"]'));\n } \n } \n }\n\n function ariaHideNonHeaderContent() { \n $('main, footer').attr('aria-hidden', 'true');\n }\n\n function ariaUnhideNonHeaderContent() { \n $('main, footer').removeAttr('aria-hidden');\n }\n\n // add the classes that cause tab and shift+tab to be restricted to a subset of elements.\n var setFocusableElementRestriction = function (focusableElements) {\n var firstFocusableElement = focusableElements.first();\n var lastFocusableElement = focusableElements.last();\n\n $(lastFocusableElement).addClass('focus-trap-focusable-last');\n $(firstFocusableElement).addClass('focus-trap-focusable-first');\n }\n\n // remove the classes that cause tab and shift+tab to be restricted to a subset of elements.\n var removeFocusableElementRestriction = function () {\n $('.focus-trap-focusable-first').removeClass('focus-trap-focusable-first');\n $('.focus-trap-focusable-last').removeClass('focus-trap-focusable-last');\n }\n \n // close menus when pressing esc\n $(document).on('keyup', function (evt) {\n if (evt.keyCode == 27) {\n // if hamburger is open, close it\n if (isHamburgerMenuOpen()) {\n closeHamburgerMenu();\n activateHeaderNav();\n }\n // if search pane is open, close it\n if (isSearchPaneOpen()) {\n closeSearchPane();\n activateHeaderNav();\n }\n // if any header nav dropdown is open, close it\n if (isAnyHeaderNavDropdownOpen()) {\n closeHeaderNavDropdown();\n }\n }\n });\n \n // tab and shift+tab handling\n $(document).on('keydown', function (e) {\n if (isHamburgerMenuOpen() || isSearchPaneOpen() || isAnyHeaderNavDropdownOpen()) {\n // if we're tabbing, tab through the focusable elements in the navigation modal.\n if (e.key === 'Tab' || e.keyCode === 9) {\n if ($('.focus-trap-focusable-first.focus-trap-focusable-last').length <= 0) {\n\n if (e.shiftKey) /* shift tab keypress */ {\n if ($(document.activeElement).hasClass('focus-trap-focusable-first')) {\n $('.focus-trap-focusable-last').focus();\n e.preventDefault();\n }\n } else /* tab keypress */ {\n if ($(document.activeElement).hasClass('focus-trap-focusable-last')) {\n $('.focus-trap-focusable-first').focus();\n e.preventDefault();\n }\n }\n } else {\n e.preventDefault();\n }\n }\n }\n });\n\n // hamburger menu toggle\n $('.main-nav__hamburger').click(function (e) {\n e.preventDefault(); \n \n if (isHamburgerMenuOpen()) { \n closeHamburgerMenu();\n activateHeaderNav();\n }\n else {\n if (isHeaderNavActive()) {\n deactivateHeaderNav();\n }\n if (isSearchPaneOpen()) {\n closeSearchPane();\n }\n \n openHamburgerMenu();\n }\n });\n\n // hamburger nav header toggle\n $('.hamburger-nav__header-toggle').click(function (e) {\n e.preventDefault();\n\n var $groupToToggle = $(this).parent().siblings('.hamburger-nav__groups').first();\n\n if ($(this).hasClass('hamburger-nav__header-toggle--is-active')) {\n $(this).removeClass('hamburger-nav__header-toggle--is-active');\n\n $groupToToggle.css({\n height: '0px'\n });\n }\n else {\n var height = 0;\n $groupToToggle.find('.hamburger-nav__group').each(function (i) {\n height += $(this).outerHeight(true);\n });\n\n $(this).addClass('hamburger-nav__header-toggle--is-active');\n\n $groupToToggle.css({\n height: height + 'px'\n });\n } \n\n updateHamburgerMenuAccessibilityElements();\n });\n\n // main navigation item menu toggle\n $('.main-nav__dropdown-item').not('.main-nav__dropdown-item--with-logo').find('.main-nav__dropdown-item__link:not(.main-nav__dropdown-item__link--standalone)').click(function (e) {\n e.preventDefault();\n\n if (!$('.main-nav__center').hasClass('main-nav__center--is-disabled')) { \n if ($(this).parent().hasClass('main-nav__dropdown-item--is-active')) {\n closeHeaderNavDropdown(); \n }\n else {\n if (isSearchPaneOpen()) {\n closeSearchPane();\n }\n else {\n closeHeaderNavDropdown(false);\n } \n openHeaderNavDropdown(this);\n }\n }\n });\n\n // search pane toggle\n $('.main-nav__search-btn').click(function (e) {\n e.preventDefault();\n\n if (isSearchPaneOpen()) {\n closeSearchPane();\n activateHeaderNav(); \n }\n else {\n if (isHeaderNavActive()) {\n closeHeaderNavDropdown(false);\n }\n if (isHamburgerMenuOpen()) {\n closeHamburgerMenu();\n }\n if (!isHeaderNavActive()) {\n activateHeaderNav();\n }\n openSearchPane(); \n }\n return false;\n });\n\n $('.search-wrapper__search-btn').click(function() {\n $(this).closest('form').submit();\n });\n\n // close header if clicked out of it\n var mainHeaderElement = document.getElementsByClassName('main-header')[0];\n if (typeof mainHeaderElement !== 'undefined') {\n document.addEventListener('click', function (event) {\n if (!mainHeaderElement.contains(event.target)) {\n var modalWrapperElement = document.getElementsByClassName('modaal-wrapper')[0];\n if (typeof modalWrapperElement == 'undefined' || (typeof modalWrapperElement !== 'undefined' && !modalWrapperElement.contains(event.target))) {\n if (isSearchPaneOpen()) {\n closeSearchPane();\n activateHeaderNav();\n }\n\n closeHeaderNavDropdown();\n }\n }\n });\n } \n\n var checkHeaderNavigationGroupsForSocialLinks = function () {\n $('.hamburger-nav__groups').each(function (i, el) {\n var $container = $(this).find('.main-header__social-link-items-container');\n\n if (!$container.length) {\n $(this).addClass('hamburger-nav__groups--without-social-links')\n }\n });\n };\n\n var resetHeaderHeights = function () {\n\n if (ICF.Utils.Breakpoints.IsMobile()) {\n var $hamburgerNavSections = $('.hamburger-nav__section');\n\n $hamburgerNavSections.each(function (i, navSection) {\n var $navSection = $(navSection);\n var $activeHeaderToggle = $navSection.find('.hamburger-nav__header-toggle--is-active');\n\n if ($activeHeaderToggle.length) {\n var $navGroupItems = $navSection.find('.hamburger-nav__group');\n var height = 0;\n\n $navGroupItems.each(function (j) {\n height += $(this).outerHeight(true);\n });\n\n $navSection.find('.hamburger-nav__groups:not(.hamburger-nav__groups--social)').css({\n height: height + 'px'\n });\n }\n else {\n $navSection.find('.hamburger-nav__groups:not(.hamburger-nav__groups--social)').css({\n height: '0px'\n });\n }\n });\n }\n else {\n var $activeItem = $('.main-nav__dropdown-item.main-nav__dropdown-item--is-active');\n\n if ($activeItem.length) {\n var height = $activeItem.find('.main-nav__dropdown-item__content-container').outerHeight() + 'px';\n $activeItem.find('.main-nav__dropdown-item__content').css('height', height);\n }\n\n $('.hamburger-nav__groups').css('height', '');\n }\n\n updateHeaderNavDropdownAccessibilityElements();\n };\n\n // check to see if header should have class that applies box shadow\n var checkHeaderPosition = function () {\n var $header = $('.main-header');\n\n if ($(window).scrollTop() > $header.height()) {\n $header.addClass('header--is-scrolled');\n $('body').addClass('header--is-scrolled');\n }\n else {\n $header.removeClass('header--is-scrolled');\n $('body').removeClass('header--is-scrolled');\n }\n };\n\n $(window).resize(function () {\n if (isAnyHeaderNavDropdownOpen()) {\n if (ICF.Utils.Breakpoints.IsMobile() || ICF.Utils.Breakpoints.IsTablet()) {\n closeHeaderNavDropdown();\n }\n }\n\n requestAnimationFrame(resetHeaderHeights);\n updateSearchWrapperHeight();\n\n if (isHamburgerMenuOpen()) {\n updateHamburgerMenuAccessibilityElements();\n } \n });\n\n $(window).scroll(function () {\n requestAnimationFrame(checkHeaderPosition);\n });\n\n checkHeaderNavigationGroupsForSocialLinks();\n checkHeaderPosition(); \n updateHeaderNavDropdownAccessibilityElements(); \n updateHamburgerMenuAccessibilityElements(); \n updateSearchPaneAccessibilityElements();\n};","module.exports = {\n 'Header': require('./header'),\n 'Footer': require('./footer'),\n 'ModuleSpacing': require('./module-spacing')\n};","module.exports = function ($potentialModules) {\n var collapsableModules = [\n 'paragraph',\n //'features-by-column',\n //'button-module',\n //'quote',\n //'campaign-listing',\n //'insights-collection-by-tag-selection',\n //'featured-topic-list',\n //'related-insights',\n //'client-story-grid',\n //'large-image',\n //'careers-persona-detail-body-description',\n //'universal-promo-module',\n 'topic-landing',\n 'tag-landing-page',\n 'page-section-header--hidden',\n 'featured-content-module'\n ];\n\n for (var i = 0; i < $potentialModules.length - 1; ++i) {\n var $currentModule = $($potentialModules[i]).first();\n var $nextModule = $($potentialModules[i + 1]).first();\n\n // make sure each module is in the list of accepted modules\n var currentModuleClassList = $currentModule[0].classList.value.split(' ');\n var nextModuleClassList = $nextModule[0].classList.value.split(' ');\n var currentMatchingClass, nextMatchingClass;\n var isCurrentInList = false;\n var isNextInList = false;\n\n for (var j = 0; j < collapsableModules.length; ++j) {\n var currentClass = collapsableModules[j];\n\n var currentClassIndex = currentModuleClassList.indexOf(currentClass);\n var nextClassIndex = nextModuleClassList.indexOf(currentClass);\n\n if (currentClassIndex !== -1) {\n isCurrentInList = true;\n currentMatchingClass = currentModuleClassList[j];\n }\n\n if (nextClassIndex !== -1) {\n isNextInList = true;\n nextMatchingClass = currentModuleClassList[j];\n }\n\n if (isCurrentInList && isNextInList) {\n break;\n }\n }\n\n if (isCurrentInList && isNextInList) {\n var currentBackgroundColor = $currentModule.css('background-color');\n var nextBackgroundColor = $nextModule.css('background-color');\n\n var currentBackgroundImage = $currentModule.css('background-image');\n var nextBackgroundImage = $currentModule.css('background-image');\n\n if (currentBackgroundColor === nextBackgroundColor && currentBackgroundImage === 'none' && nextBackgroundImage === 'none') {\n if ($currentModule.hasClass('page-section-header--hidden')) {\n if ($currentModule.hasClass('collapse-space')) {\n $nextModule.addClass('collapse-space');\n }\n }\n else {\n $nextModule.addClass('collapse-space');\n }\n }\n }\n }\n}; ","module.exports = {\n 'CollapseSpace': require('./collapse-space'),\n 'Init': require('./init')\n};","module.exports = function () {\n var $contentModules = $('#main-content').children();\n var $careersPersonaModules = $('.careers-persona-detail-body-left').first().children();\n\n ICF.Layout.ModuleSpacing.CollapseSpace($contentModules);\n ICF.Layout.ModuleSpacing.CollapseSpace($careersPersonaModules);\n};","module.exports = {\n 'Variables': require('./variables'),\n 'Utils': require('./utils'),\n 'Modules': require('./modules'),\n 'Layout': require('./layout')\n};","module.exports = {\n 'TrackGoal': require('./track-goal'),\n 'TrackLinkClick': require('./track-link-click')\n};","module.exports = function (name, data, callback) {\n var goalId = undefined;\n\n for (var i = 0; i < window.goalIds.length; i++) {\n var goal = window.goalIds[i];\n if (goal.name === name) {\n goalId = goal.id;\n break;\n }\n }\n\n if (!goalId) {\n console.error('Failed to find id for event name ', name);\n return;\n }\n\n $.post('/icfapi/analytics/trackgoal', { 'goalId': goalId, 'data': data }, function (responseData) {\n if (callback) {\n callback(responseData);\n }\n });\n};","module.exports = function (goalName, data, href) {\n var hasRedirected = false;\n var redirect = function () {\n if (hasRedirected) {\n return;\n }\n hasRedirected = true;\n window.location = href;\n };\n\n ICF.Modules.Analytics.TrackGoal(goalName, JSON.stringify(data), function () {\n redirect();\n });\n\n setTimeout(function () {\n redirect();\n }, 500);\n};","module.exports = function () {\n $('.author-details').children().each(function () {\n var $textElement;\n\n if ($(this).hasClass('author-link')) {\n $textElement = $('.author-text span[data-id=\"' + $(this).data('id') + '\"]');\n $textElement.replaceWith('' + $textElement.html() + '');\n }\n else if ($(this).hasClass('author-tooltip')) {\n $textElement = $('.author-text span[data-id=\"' + $(this).data('id') + '\"]');\n if ($(this).data('href')) {\n var $newTextElement = $('
' + $textElement.html() + '');\n $(this).appendTo($newTextElement);\n $textElement.replaceWith($newTextElement);\n } else {\n $(this).appendTo($textElement);\n }\n }\n });\n}","module.exports = function () {\n var $downloadLink = $('.download-link');\n\n if (!$downloadLink.length) {\n return;\n }\n\n var url = $downloadLink.attr('href');\n var filename = $downloadLink.data('filename');\n\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\n var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n if (isIE) {\n var downloadCallback = function () {\n var blobObject = this.response;\n window.navigator.msSaveBlob(blobObject, filename);\n };\n\n var a = new XMLHttpRequest();\n a.addEventListener('load', downloadCallback, false);\n a.open('get', url, true);\n a.responseType = 'blob';\n a.send();\n }\n else if (isIOS) {\n window.location.href = url;\n }\n else {\n $downloadLink[0].click();\n }\n}","module.exports = {\n 'Init': require('./init')\n};","module.exports = function () {\n\n if ($('.card-grid-module').length === 0) {\n return;\n } \n \n $('.card-grid-module__show-more-button').click(function () { \n var $moduleContainer = $(this).closest('.card-grid-module__container');\n var $cardsContainer = $moduleContainer.find('.card-grid-module__cards-container');\n var $buttonContainer = $(this).closest('.card-grid-module__button-container'); \n var showMoreCardNumber = $buttonContainer.data('showMoreCardNumber');\n \n var $nextHiddenCards = $cardsContainer.find('.card-grid-module__card.hidden').slice(0, showMoreCardNumber);\n if ($nextHiddenCards.length) {\n $nextHiddenCards.removeClass('hidden');\n $buttonContainer.find('.card-grid-module__show-less-button').removeClass('hidden');\n var $remainingHiddenCards = $cardsContainer.find('.card-grid-module__card.hidden');\n if (!$remainingHiddenCards.length) {\n $(this).addClass('hidden');\n }\n window.scrollTo({ top: $nextHiddenCards.offset().top - 80, behavior: 'smooth' }); \n } \n });\n\n $('.card-grid-module__show-less-button').click(function () {\n var $moduleContainer = $(this).closest('.card-grid-module__container');\n var $cardsContainer = $moduleContainer.find('.card-grid-module__cards-container');\n var $buttonContainer = $(this).closest('.card-grid-module__button-container'); \n var showMoreCardNumber = $buttonContainer.data('showMoreCardNumber');\n\n var hideStartPosition = 0;\n var hideableCardNumber = $cardsContainer.find('.card-grid-module__card--non-default:not(.hidden)').length;\n if (hideableCardNumber > showMoreCardNumber) {\n hideStartPosition = (Math.ceil(hideableCardNumber / showMoreCardNumber)-1) * showMoreCardNumber;\n }\n\n var $nextHideableCards = $cardsContainer.find('.card-grid-module__card--non-default:not(.hidden)').slice(hideStartPosition);\n if ($nextHideableCards.length) {\n $nextHideableCards.addClass('hidden');\n $buttonContainer.find('.card-grid-module__show-more-button').removeClass('hidden');\n\n var $remainingHideableCards = $cardsContainer.find('.card-grid-module__card--non-default:not(.hidden)');\n\n var scrollToElement = null;\n\n if (!$remainingHideableCards.length) {\n $(this).addClass('hidden');\n scrollToElement = $cardsContainer[0];\n }\n else { \n scrollToElement = $remainingHideableCards.slice($remainingHideableCards.length - showMoreCardNumber)[0];\n }\n\n if (scrollToElement !== null) {\n window.scrollTo({ top: $(scrollToElement).offset().top - 80, behavior: 'smooth' }); \n }\n } \n });\n\n var setCardGridHoverability = function () {\n window.cardGridHoverability = true;\n if (window.matchMedia('(hover: none)').matches) {\n window.cardGridHoverability = false;\n }\n }\n\n var revealCardHiddenContent = function (cardImageAreaElement) { \n $(cardImageAreaElement).addClass('card-grid-module__card-image-area--hidden-content-revealed');\n $(cardImageAreaElement).find('.card-grid-module__card-hidden-content-container').removeAttr('aria-hidden');\n $(cardImageAreaElement).find('.card-grid-module__card-hidden-content-close').attr('tabindex', '');\n $(cardImageAreaElement).find('.card-grid-module__card-link-text').attr('tabindex', '');\n }\n \n var hideCardHiddenContent = function (cardImageAreaElement) {\n $(cardImageAreaElement).removeClass('card-grid-module__card-image-area--hidden-content-revealed'); \n\n if ($(cardImageAreaElement).hasClass('card-grid-module__card-image-area--toggled')) {\n $(cardImageAreaElement).removeClass('card-grid-module__card-image-area--toggled');\n var toggleIndicator = $(cardImageAreaElement).find('.card-grid-module__card-image-toggle-indicator').first();\n toggleIndicator.removeClass('card-grid-module__card-image-toggle-indicator--deactivated');\n toggleIndicator.focus();\n }\n\n $(cardImageAreaElement).find('.card-grid-module__card-hidden-content-container').attr('aria-hidden', 'true');\n $(cardImageAreaElement).find('.card-grid-module__card-hidden-content-close').attr('tabindex', '-1');\n $(cardImageAreaElement).find('.card-grid-module__card-link-text').attr('tabindex', '-1');\n }\n\n setCardGridHoverability();\n\n $('.card-grid-module__card-image-area').hover(\n function () {\n if (window.cardGridHoverability) {\n revealCardHiddenContent(this);\n }\n },\n function () {\n if (window.cardGridHoverability) {\n hideCardHiddenContent(this);\n }\n }\n );\n\n var setCardImageClickability = function () {\n if (!(window.cardGridHoverability)) { \n $('.card-grid-module__card-image-area').addClass('card-grid-module__card-image-area--clickable');\n }\n else { \n $('.card-grid-module__card-image-area').removeClass('card-grid-module__card-image-area--clickable');\n }\n }\n \n setCardImageClickability();\n \n $('.card-grid-module__card').on('click', '.card-grid-module__card-image-area--clickable:not(.card-grid-module__card-image-area--hidden-content-revealed)', function () {\n revealCardHiddenContent(this);\n });\n \n $('.card-grid-module__card').on('click', '.card-grid-module__card-hidden-content-close', function () {\n var cardImageAreaElement = $(this).closest('.card-grid-module__card-image-area').first();\n hideCardHiddenContent(cardImageAreaElement); \n });\n\n $('.card-grid-module__card').on('click', '.card-grid-module__card-image-toggle-indicator', function () {\n $(this).addClass('card-grid-module__card-image-toggle-indicator--deactivated');\n var cardImageAreaElement = $(this).closest('.card-grid-module__card-image-area').first();\n cardImageAreaElement.addClass('card-grid-module__card-image-area--toggled');\n revealCardHiddenContent(cardImageAreaElement);\n cardImageAreaElement.find('.card-grid-module__card-hidden-content-close').first().focus();\n }); \n\n $(window).resize(function () {\n setCardGridHoverability();\n setCardImageClickability();\n });\n};","module.exports = function () {\n $('.careers-search-hero.careers-search-hero--animate').addClass('careers-search-hero--is-animated'); \n};","module.exports = function () {\n $('.career-detail-buttons-apply').click(function() {\n var requisitionId = $(this).data('requisitionId');\n\n ICF.Modules.Analytics.TrackGoal('Apply Button Click', requisitionId);\n });\n\n $('.careers-detail-header__show-all-locations').click(function(e) {\n e.preventDefault();\n\n $('.careers-detail-header__location-item').removeClass('careers-detail-header__location-item--hidden');\n $(this).remove();\n });\n}","module.exports = function () {\n if ($('.careers-embedded-jobs').length) {\n var locationsActiveClass = 'careers-embedded-jobs__all-locations--visible';\n\n $('.careers-embedded-jobs__show-more').click(function (e) {\n e.preventDefault();\n\n var isHidden = $(this).data('locationsHidden');\n var $resultItem = $(this).closest('.careers-embedded-jobs-requisition');\n var $locations = $resultItem.find('.careers-embedded-jobs__all-locations');\n var showMoreText = isHidden ? 'Hide' : 'Show';\n\n if (isHidden) {\n $locations.addClass(locationsActiveClass);\n $locations.attr(\"aria-hidden\", !isHidden);\n }\n else {\n $locations.removeClass(locationsActiveClass);\n }\n\n $(this).text(showMoreText);\n $(this).data('locationsHidden', !isHidden);\n $locations.attr(\"aria-hidden\", !isHidden);\n });\n \n \n $('.careers-embedded-jobs-requisition-apply-link').click(function () {\n var requisitionId = $(this).data('requisitionId');\n\n ICF.Modules.Analytics.TrackGoal('Apply Button Click', requisitionId);\n });\n }\n};","module.exports = function () {\n if ($('.careers-header').length) {\n const headerLinksClass = 'careers-header-links';\n const headerLinksOpenClass = 'careers-header-links-open';\n\n const resizeMenu = function () {\n const lastLink = $('.' + headerLinksClass + ' a').last();\n const height = lastLink.position().top + lastLink.outerHeight() - 16;\n if (ICF.Utils.Breakpoints.IsMobile()) {\n $('.' + headerLinksClass).css('height', height + 'px');\n } else {\n $('.' + headerLinksClass).css('height', '');\n }\n };\n\n resizeMenu();\n setTimeout(resizeMenu, 100);\n $(window).resize(resizeMenu);\n\n $('.careers-header-links-open-button').click(function() {\n $('.' + headerLinksClass).toggleClass(headerLinksOpenClass);\n if ($('.' + headerLinksClass).hasClass(headerLinksOpenClass)) {\n $(this).find('img').css('transform', 'rotateZ(180deg)');\n } else {\n $(this).find('img').css('transform', '');\n }\n });\n }\n}","module.exports = {\n 'Landing': require('./landing'),\n 'Search': require('./search'),\n 'InlineSearch': require('./inline-search'),\n 'Header': require('./header'),\n 'PersonaDetail': require('./persona-detail'),\n 'Detail': require('./detail'),\n 'EmbeddedJobs': require('./embedded-jobs')\n}","module.exports = function () {\n if ($('.careers-inline-search').length) {\n var $careersTypeAheadContainer = $('.careers-inline-search__type-ahead-container');\n\n var filledClass = 'careers-inline-search-fields-filled';\n\n $('.careers-inline-search-fields input').keyup(function () {\n if ($(this).val().length) {\n $(this).closest('.careers-inline-search-fields-keywords').addClass(filledClass);\n } else {\n $(this).closest('.careers-inline-search-fields-keywords').removeClass(filledClass);\n }\n });\n\n $('.careers-inline-search-field-clear').click(function () {\n $(this).siblings('input').val('').focus();\n $(this).closest('.careers-inline-search-fields-keywords').removeClass(filledClass);\n\n var $typeAheadHidden = $careersTypeAheadContainer.find('.type-ahead-hidden');\n var $typeAheadVisible = $careersTypeAheadContainer.find('.type-ahead-visible');\n\n $typeAheadHidden.text('');\n $typeAheadVisible.text('');\n });\n\n var autoComplete;\n\n ICF.Utils.LoadScript('http://maps.googleapis.com/maps/api/js?key=' + window.ICFGoogleMapsKey + '&libraries=places', function () {\n autoComplete = new google.maps.places.Autocomplete($('#location')[0], {\n types: ['(regions)']\n });\n }); \n }\n};","module.exports = function () {\n const careersLandingCategoriesClass = 'careers-landing-categories';\n const careersLandingCategoriesListClass = 'careers-landing-categories-list';\n const careersLandingCategoriesOpenClass = 'careers-landing-categories-open';\n const careersLandingCategoriesExpandClass = 'careers-landing-categories-expand';\n\n $('.' + careersLandingCategoriesExpandClass).click(function () {\n $(this).parents('.' + careersLandingCategoriesClass).first().toggleClass(careersLandingCategoriesOpenClass);\n });\n\n const resizeCategoriesContainer = function() {\n $('.' + careersLandingCategoriesClass).each(function () {\n var newHeight = $(this).find('.' + careersLandingCategoriesListClass).outerHeight();\n\n if (ICF.Utils.Breakpoints.IsMobile()) {\n newHeight += 32;\n }\n\n $(this).height(newHeight);\n });\n };\n\n resizeCategoriesContainer();\n setTimeout(resizeCategoriesContainer, 100);\n $(window).resize(resizeCategoriesContainer);\n\n const resizePersonas = function() {\n $('.careers-landing-persona-content').each(function() {\n $(this).css('bottom', '-' + $(this).find('.careers-landing-persona-description').first().outerHeight() + 'px');\n });\n };\n\n resizePersonas();\n setTimeout(resizePersonas, 100);\n $(window).resize(resizePersonas);\n};","module.exports = function() {\n const resizeMorePersonas = function() {\n const $morePersonasElement = $('.careers-persona-detail-more-personas');\n if ($morePersonasElement.length) {\n const $lastPersona = $morePersonasElement.find('.careers-persona-detail-more-personas-persona').last();\n var newHeight = $lastPersona.outerHeight() + $lastPersona.position().top + 8;\n\n if (ICF.Utils.Breakpoints.IsMobile()) {\n newHeight += 24;\n }\n\n $morePersonasElement.height(newHeight);\n }\n }\n\n resizeMorePersonas();\n setTimeout(resizeMorePersonas, 100);\n $(window).resize(resizeMorePersonas);\n\n $('.careers-persona-detail-header-expand-button').click(function () {\n $(this).toggleClass('careers-persona-detail-header-expand-button-active');\n $('.careers-persona-detail-more-personas').toggleClass('careers-persona-detail-more-personas-open');\n });\n};","module.exports = function() {\n $('.careers-search-result-apply-button').click(function() {\n var requisitionId = $(this).data('requisitionId');\n\n ICF.Modules.Analytics.TrackGoal('Apply Button Click', requisitionId);\n });\n};","module.exports = {\n 'Init': require('./init'),\n 'ApplyCTAHandler': require('./apply-cta-handler')\n};","var showAllLocationsHandler = require('./show-all-locations-handler');\n\nmodule.exports = function () {\n if ($('.careers-search').length) {\n var $careersTypeAheadContainer = $('.careers-search-header__type-ahead-container');\n\n var resizeFacets = function () {\n $('.careers-search-facet').each(function () {\n var finalNode = $(this).find('.careers-search-facet-options, .careers-search-facets-fields-open-button').last();\n\n var newHeight = finalNode.position().top + finalNode.outerHeight() + 24;\n\n $(this).height(newHeight);\n });\n };\n\n resizeFacets();\n setTimeout(resizeFacets, 100);\n $(window).resize(resizeFacets);\n\n $('.careers-search-body-container').find('.careers-search-facets-fields-open-button').modaal({\n content_source: '#careers-search-fields-show-more-modal-content',\n custom_class: 'careers-search-fields-show-more-modal',\n hide_close: true,\n overlay_close: false\n });\n\n var resizeQuickSearches = function () {\n var newHeight = $('.careers-search-header-quick-search').last().position().top + $('.careers-search-header-quick-search').last().outerHeight();\n $('.careers-search-header-quick-searches-container').height(newHeight);\n };\n\n resizeQuickSearches();\n setTimeout(resizeQuickSearches, 100);\n $(window).resize(resizeQuickSearches);\n\n var autoComplete;\n\n ICF.Utils.LoadScript('http://maps.googleapis.com/maps/api/js?key=' + window.ICFGoogleMapsKey + '&libraries=places', function () {\n autoComplete = new google.maps.places.Autocomplete($('#location')[0], {\n types: ['(regions)']\n });\n });\n\n var getOpenFacets = function () {\n var openFacets = [];\n\n if ($('#careersSearchFacetDays').hasClass('careers-search-facet-open')) {\n openFacets.push('days');\n }\n\n if ($('#careersSearchFacetPersona').hasClass('careers-search-facet-open')) {\n openFacets.push('role');\n }\n\n if ($('#careersSearchFacetField').hasClass('careers-search-facet-open')) {\n openFacets.push('field');\n }\n\n if ($('#careersSearchFacetSchedule').hasClass('careers-search-facet-open')) {\n openFacets.push('schedule');\n }\n\n if ($('#careersSearchFacetLevel').hasClass('careers-search-facet-open')) {\n openFacets.push('type');\n }\n\n return openFacets;\n };\n\n var getQueryString = function (includeOpenFacets) {\n var queryStringComponents = {};\n\n queryStringComponents.location = encodeURIComponent($('#location').val());\n queryStringComponents.keywords = encodeURIComponent($('#keywords').val());\n queryStringComponents.role = $('#careersSearchFacetPersona').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n queryStringComponents.days = $('#careersSearchFacetDays').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n queryStringComponents.schedule = $('#careersSearchFacetSchedule').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n queryStringComponents.type = $('#careersSearchFacetLevel').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n queryStringComponents.order = encodeURIComponent($('.careers-search-results-sort-container select').val());\n queryStringComponents.category = $('#careersSearchFacetCategory').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n queryStringComponents.areaofinterest = $('#careersSearchFacetAreaOfInterest').find(':checked').toArray().map(function (input) { return encodeURIComponent($(input).val()); }).join('|');\n\n if (includeOpenFacets) {\n queryStringComponents.openfacets = getOpenFacets().join('|');\n }\n\n if (queryStringComponents.days === 'any') {\n queryStringComponents.days = '';\n }\n\n var page = $('#careersSearchCurrentPage').val();\n\n if (page !== '1') {\n queryStringComponents.page = page;\n }\n\n var queryString = Object.keys(queryStringComponents).filter(function (key) {\n return queryStringComponents[key];\n }).map(function (key) {\n return key + '=' + queryStringComponents[key];\n }).join('&');\n\n return queryString;\n };\n\n var updateQueryString = function () {\n var queryString = getQueryString();\n\n history.replaceState({}, window.title, window.location.pathname + (queryString.length ? '?' + queryString : ''));\n };\n\n var loadResults = function (callback) {\n $('.careers-search-results').parent().css('transition-delay', '0s').css('opacity', '0.15').css('pointer-events', 'none');\n $('.careers-search-body-container').append('

');\n\n var queryString = getQueryString(true);\n\n var url = '/icfapi/careerssearch/loadmore' + (queryString.length ? '?' + queryString : '');\n\n $.get(url, {}, function (data) {\n $('.careers-search-body-container').html(data);\n $('.careers-search-fields-show-more-modal').remove();\n resizeFacets();\n if (callback) {\n callback();\n }\n $('.careers-search-body-container').find('.careers-search-facets-fields-open-button').modaal({\n content_source: '#careers-search-fields-show-more-modal-content',\n custom_class: 'careers-search-fields-show-more-modal',\n hide_close: true,\n overlay_close: false\n });\n\n ICF.Modules.Careers.Search.ApplyCTAHandler();\n showAllLocationsHandler();\n });\n };\n\n $('.careers-search-header-fields-submit').click(function () {\n $('#careersSearchCurrentPage').val(1);\n updateQueryString();\n loadResults();\n return false;\n });\n\n $('.careers-search-header-fields input').keyup(function () {\n if ($(this).val().length) {\n $(this).closest('.careers-search-header-fields-keywords').addClass('careers-search-header-fields-filled');\n } else {\n $(this).closest('.careers-search-header-fields-keywords').removeClass('careers-search-header-fields-filled');\n }\n });\n\n $('.careers-search-header-field-clear').click(function () {\n $(this).siblings('input').val('').focus();\n $(this).closest('.careers-search-header-fields-keywords').removeClass('careers-search-header-fields-filled');\n\n var $typeAheadHidden = $careersTypeAheadContainer.find('.type-ahead-hidden');\n var $typeAheadVisible = $careersTypeAheadContainer.find('.type-ahead-visible');\n\n $typeAheadHidden.text('');\n $typeAheadVisible.text('');\n });\n\n $('#keywords, #location').keypress(function (e) {\n if (e.which === 13) {\n $('#careersSearchCurrentPage').val(1);\n updateQueryString();\n loadResults();\n return false;\n }\n\n return true;\n });\n\n $('.careers-search-header-quick-searches-more').click(function () {\n $('.careers-search-header-quick-searches-container').addClass('careers-search-header-quick-searches-open');\n });\n\n $('.careers-search').on('click', '.careers-search-header-quick-search,.careers-search-results-no-results-quick-search', function () {\n $('#keywords,#location').val('');\n $('#careersSearchFacetPersona').addClass('careers-search-facet-open');\n $('#careersSearchFacetPersona').find('input').prop('checked', false);\n $('[value=\"' + $(this).data('value') + '\"]').click();\n $('body, html').animate({ scrollTop: $('.careers-search-results-header').offset().top - 48 }, 500);\n });\n\n $('.careers-search-body-container').on('click', '.careers-search-facet-title', function () {\n var $facet = $(this).parents('.careers-search-facet').first();\n $facet.toggleClass('careers-search-facet-open');\n $facet.find('.circle-plus-minus-icon').toggleClass(\"circle-plus-minus-icon--is-active\");\n });\n\n $('.careers-search-body-container').on('change', '.careers-search-facet-option input', function (event) {\n if ($('.careers-search-fields-show-more-modal').length) {\n $('.careers-search-facets-fields-open-button').modaal('close');\n }\n\n $('[value=\"' + $(event.target).val() + '\"]').prop('checked', $(event.target).is(':checked'));\n $('body').removeClass('modal-open');\n $('.modal-backdrop').remove();\n $('#careersSearchCurrentPage').val(1);\n updateQueryString();\n loadResults();\n });\n\n $('.careers-search-body-container').on('click', '.careers-search-facets-mobile-title', function () {\n $(this).parents('.careers-search-facets').toggleClass('careers-search-facets-open');\n });\n\n $('.careers-search-body-container').on('change', '.careers-search-results-sort-container select', function () {\n $('#careersSearchCurrentPage').val(1);\n updateQueryString();\n loadResults();\n });\n\n $('.careers-search-body-container').on('click', '.careers-search-results-pagination-item', function () {\n $('html, body').animate({ scrollTop: 0 }, 500);\n $('#careersSearchCurrentPage').val($(this).data('value'));\n updateQueryString();\n loadResults();\n });\n\n $('.careers-search-body-container').on('click', '.careers-search-results-pagination-item-prev', function () {\n $('body, html').animate({ scrollTop: $('.careers-search-results-header').offset().top - 48 }, 500);\n $('#careersSearchCurrentPage').val(parseInt($('#careersSearchCurrentPage').val()) - 1);\n updateQueryString();\n loadResults();\n });\n\n $('.careers-search-body-container').on('click', '.careers-search-results-pagination-item-next', function () {\n $('body, html').animate({ scrollTop: $('.careers-search-results-header').offset().top - 48 }, 500);\n $('#careersSearchCurrentPage').val(parseInt($('#careersSearchCurrentPage').val()) + 1);\n updateQueryString();\n loadResults();\n });\n\n $('body').on('click', '.careers-search-fields-show-more-modal .modal-button-cancel', function () {\n var $modal = $(this).parents('.careers-search-fields-show-more-modal').first();\n\n $('#careersSearchFacetCategory input').each(function () {\n $modal.find('input[value=\"' + $(this).val() + '\"]').prop('checked', $(this).is(':checked'));\n });\n\n $('#careersSearchFacetAreaOfInterest input').each(function () {\n $modal.find('input[value=\"' + $(this).val() + '\"]').prop('checked', $(this).is(':checked'));\n });\n\n $('.careers-search-facets-fields-open-button').modaal('close');\n\n return false;\n });\n\n $('body').on('click', '.careers-search-fields-show-more-modal .modal-button-apply', function () {\n $(this).parents('.careers-search-fields-show-more-modal').find('input').each(function (elem) {\n $('#careersSearchFacetCategory input[value=\"' + $(this).val() + '\"]').prop('checked', $(this).is(':checked'));\n $('#careersSearchFacetAreaOfInterest input[value=\"' + $(this).val() + '\"]').prop('checked', $(this).is(':checked'));\n });\n\n $('.careers-search-facets-fields-open-button').modaal('close');\n\n updateQueryString();\n loadResults();\n\n return false;\n });\n\n ICF.Modules.Careers.Search.ApplyCTAHandler();\n showAllLocationsHandler(); \n }\n};","module.exports = function () {\n var locationsActiveClass = 'careers-search-result__all-locations--visible';\n\n $('.careers-search-result__show-more').click(function (e) {\n e.preventDefault();\n\n var isHidden = $(this).data('locationsHidden');\n var $resultItem = $(this).closest('.careers-search-result');\n var $locations = $resultItem.find('.careers-search-result__all-locations');\n var showMoreText = isHidden ? 'Hide' : 'Show';\n \n if (isHidden) {\n $locations.addClass(locationsActiveClass);\n $locations.attr(\"aria-hidden\", !isHidden);\n }\n else {\n $locations.removeClass(locationsActiveClass);\n }\n\n $(this).text(showMoreText);\n $(this).data('locationsHidden', !isHidden);\n $locations.attr(\"aria-hidden\", !isHidden);\n });\n};","module.exports = function() {\n if (document.getElementsByClassName('cycle-words')[0]) {\n\n var cycleArr = [];\n\n var currentIndex = 0;\n\n var cycleNodes = document.querySelectorAll('.cycle-word');\n\n for (var i = -1, l = cycleNodes.length >>> 0; ++i !== l; cycleArr[i] = cycleNodes[i]);\n\n function cycleWords() {\n\n TweenMax.to(jQuery(cycleArr[currentIndex]), 0.5, {\n autoAlpha: 1,\n display: 'block',\n onComplete: function () {\n\n TweenMax.to(jQuery(this.target), 0.5, {\n delay: 4,\n autoAlpha: 0,\n display: 'none',\n onComplete: function () {\n\n currentIndex = ++currentIndex % cycleArr.length;\n\n cycleWords();\n\n }\n });\n\n }\n });\n\n }\n\n cycleWords();\n\n setTimeout(function() {\n\n jQuery(\".hero-cycle-container\").addClass('active');\n\n },\n 2000);\n }\n};","module.exports = function () {\n ICF.Utils.EqualHeights.RegisterSetEqualHeights(\".blog-data-table-header-row\", 0);\n ICF.Utils.EqualHeights.RegisterSetEqualHeights(\".blog-data-table-body-row\", 0);\n ICF.Utils.EqualHeights.RegisterSetEqualHeights(\".blog-data-table-footer-row\", 0);\n}","module.exports = function (form) {\n return function (values, $formContainer, followUpUrl) {\n var wistiaChannelId = $formContainer.data('wistiaChannelId');\n\n if (wistiaChannelId) {\n var wistiaSubmitFunction = ICF.Modules.Wistia.WistiaFormSubmit(form);\n wistiaSubmitFunction(values, $formContainer, followUpUrl);\n }\n\n $formContainer.find('.embedded-subscription-module__text').remove();\n $formContainer.find('.marketo-form').remove();\n\n var $thankYouContainer = $formContainer.find('.embedded-subscription-module__thank-you');\n $thankYouContainer.addClass('embedded-subscription-module__thank-you--active');\n\n return false;\n };\n};","module.exports = {\n 'FormSubmit': require('./form-submit')\n};","module.exports = function () {\n if ($('.event-detail').length) {\n\n $('.event-detail__header__register-button').click(function () {\n var top = $($(this).attr('href')).offset().top - 32;\n $('html,body').animate({ scrollTop: top + 'px' });\n return false;\n });\n\n var doResize = function () {\n if (window.innerWidth >= 768) {\n var formTop = $('.event-detail-form').length ? $('.event-detail-form').position().top : 0;\n $('.event-detail-body').css('min-height',\n ($('.event-detail-form').outerHeight() + formTop - $('.event-detail__header').height() + 48) +\n 'px');\n }\n else {\n $('.event-detail-body').css('min-height', '');\n }\n\n\n $('.event-detail-related-article-content').css('min-height', $('.event-detail-related-article-content').children('img').outerHeight() + 'px');\n }\n\n if ($('.event-detail--with-form').length) {\n doResize();\n setTimeout(doResize, 100);\n $(window).resize(doResize);\n }\n \n $('.event-detail-related-event-share').on('click', function (e) {\n $(this).toggleClass('hover');\n e.stopPropagation();\n e.preventDefault();\n return false; \n });\n\n $('.event-detail-related-event-share').hover(function () {\n $(this).addClass('hover');\n }, function () {\n $(this).removeClass('hover');\n });\n }\n};","module.exports = function () {\n\n if ($('.embedded-events').length) {\n var sortElements = function ($grid, pastEvents) {\n $grid.find('.events-grid-event').sort(function (a, b) {\n if ($(a).data('pastEvent')) {\n if ($(b).data('pastEvent')) {\n return $(a).data('index') > $(b).data('index');\n } else {\n return pastEvents ? -1 : 1;\n }\n }\n else if ($(b).data('pastEvent')) {\n return pastEvents ? 1 : -1;\n } else {\n return $(a).data('index') > $(b).data('index');\n }\n\n }).appendTo($grid);\n };\n\n $('.embedded-events .events-time-header-option').click(function () {\n var $container = $(this).closest('.embedded-events');\n $container.find('.events-time-header-option-active').removeClass('events-time-header-option-active');\n $(this).addClass('events-time-header-option-active');\n\n if ($(this).data('value')) {\n $container.find('.events-grid-event[data-past-event=true]').show();\n $container.find('.events-grid-event[data-past-event=false]').hide();\n } else {\n $container.find('.events-grid-event[data-past-event=true]').hide();\n $container.find('.events-grid-event[data-past-event=false]').show();\n }\n\n sortElements($container.find('.events-grid'), $(this).data('value'));\n\n return false;\n });\n\n $('.embedded-events').each(function() {\n sortElements($(this).find('.events-grid'), false);\n });\n }\n};","module.exports = {\n 'Detail': require('./detail'),\n 'EmbeddedEvents': require('./embedded-events')\n};","module.exports = function() {\n\n if (!document.getElementsByClassName('gridder')[0]) return false;\n\n jQuery('.gridder').gridderExpander({\n scroll: false,\n\n scrollOffset: 30,\n\n scrollTo: \"panel\",\n\n animationSpeed: 400,\n\n animationEasing: \"easeInOutExpo\",\n\n showNav: false\n\n });\n};","module.exports = function () {\n if ($('.feature-grid-and-list').length) {\n var resizeListContainer = function() {\n $('.feature-grid-and-list-list-container').each(function () {\n var $innerContainer = $(this).children().last();\n var newHeight = $innerContainer.outerHeight() + $innerContainer.position().top + 32;\n $(this).css('height', newHeight + 'px');\n });\n };\n\n resizeListContainer();\n setTimeout(resizeListContainer, 100);\n $(window).resize(resizeListContainer);\n\n $('.feature-grid-and-list-expand-button').click(function () {\n var $container = $(this).parents('.feature-grid-and-list').first().find('.feature-grid-and-list-list-container');\n var openClass = 'feature-grid-and-list-list-container-open';\n var isClosing = $container.hasClass(openClass);\n $container.toggleClass(openClass);\n $(this).toggleClass('feature-grid-and-list-expand-button-open');\n $(this).find('span').text(isClosing ? $(this).data('showText') : $(this).data('hideText'));\n $(this).blur();\n return false;\n });\n }\n};","module.exports = function() {\n ICF.Utils.EqualHeights.RegisterSetEqualHeights(\".featured-content-columns-column\", 0);\n};","module.exports = function () {\n\n if ($('.featured-content-module').length === 0) {\n return;\n } \n\n var updateLargeFeature = function (largeFeature) {\n var $largeFeature = $(largeFeature);\n\n if (!ICF.Utils.Breakpoints.IsAtLeastTablet()) {\n return;\n }\n\n var $largeFeatureTitle = $largeFeature.find('.featured-content-module__large-feature-title');\n\n if ($largeFeatureTitle.length) {\n var titleLineHeight = parseInt($largeFeatureTitle.css('line-height'), 10)\n if (!isNaN(titleLineHeight)) {\n var numLines = $largeFeatureTitle.innerHeight() / titleLineHeight\n if (typeof (numLines) == 'number') {\n\n $largeFeature.removeClass('featured-content-module__large-feature--one-line-title');\n $largeFeature.removeClass('featured-content-module__large-feature--two-line-title');\n $largeFeature.removeClass('featured-content-module__large-feature--three-line-title');\n $largeFeature.removeClass('featured-content-module__large-feature--four-line-title');\n $largeFeature.removeClass('featured-content-module__large-feature--five-line-title');\n\n if (numLines > 4) { \n $largeFeature.addClass('featured-content-module__large-feature--five-line-title');\n }\n else if (numLines > 3) { \n $largeFeature.addClass('featured-content-module__large-feature--four-line-title');\n }\n else if (numLines > 2) { \n $largeFeature.addClass('featured-content-module__large-feature--three-line-title');\n }\n else if (numLines > 1) { \n $largeFeature.addClass('featured-content-module__large-feature--two-line-title');\n }\n else if (numLines > 0) { \n $largeFeature.addClass('featured-content-module__large-feature--one-line-title');\n } \n } \n }\n } \n };\n\n $('.featured-content-module__large-feature').each(function () {\n updateLargeFeature(this);\n });\n\n $(window).resize(function () {\n $('.featured-content-module__large-feature').each(function () {\n updateLargeFeature(this);\n });\n });\n};","module.exports = function () {\n $('.featured-people__more-cta').click(function (e) {\n e.preventDefault();\n\n var $module = $(this).parents('.featured-people').first();\n $module.find('.featured-people__more-cta-container').addClass('featured-people__more-cta-container--hidden');\n\n $module.find('.featured-people__more').addClass('featured-people__more--visible');\n AOS.refresh();\n });\n};","module.exports = function () {\n var currentIndex;\n\n // owl carousel breakpoints\n var breakpoints = {\n 0: {\n items: 1,\n stagePadding: 20\n },\n 768: {\n items: 3,\n stagePadding: 50\n }\n };\n\n // owl carousel settings\n var owlCarouselSettings = {\n nav: false,\n dots: true,\n margin: 0,\n responsive: breakpoints,\n callbacks: true,\n onChanged: function (event) {\n var $el = $(event.target);\n \n var item = event.item.index;\n var items = event.item.count;\n\n var $prev = $el.parents('.featured-topic-list').find('.featured-topic-list__cta--prev');\n var $next = $el.parents('.featured-topic-list').find('.featured-topic-list__cta--next');\n\n if (item === 0) {\n $prev.addClass('featured-topic-list__cta--disabled');\n $next.removeClass('featured-topic-list__cta--disabled');\n }\n else if ((item + event.page.size) === items) {\n $prev.removeClass('featured-topic-list__cta--disabled');\n $next.addClass('featured-topic-list__cta--disabled');\n }\n else {\n $prev.removeClass('featured-topic-list__cta--disabled');\n $next.removeClass('featured-topic-list__cta--disabled');\n }\n }\n };\n\n // owl carousel initialization\n $('.featured-topic-list').each(function () {\n var $cards = $(this).find('.universal-grid.universal-grid--featured');\n $cards.on('initialized.owl.carousel', centerFeaturedCards);\n $cards.addClass('owl-carousel');\n $cards.owlCarousel(owlCarouselSettings);\n var $next = $(this).find('.featured-topic-list__cta--next');\n\n $next.click(function () {\n $cards.trigger('next.owl.carousel');\n });\n\n var $prev = $(this).find('.featured-topic-list__cta--prev');\n $prev.click(function () {\n $cards.trigger('prev.owl.carousel');\n });\n });\n\n // set appropriate settings per breakpoint per carousel\n var centerFeaturedCards = function () {\n var currentWidth = window.innerWidth;\n var currentBreakpointInfo = null;\n\n var breakpointKeys = Object.keys(breakpoints);\n for (var i in breakpointKeys) {\n if (breakpointKeys.hasOwnProperty(i) && breakpointKeys[i] <= currentWidth) {\n currentBreakpointInfo = breakpoints[breakpointKeys[i]];\n }\n }\n\n var numItems = currentBreakpointInfo.items;\n\n if (currentIndex !== numItems) {\n currentIndex = numItems;\n\n $('.featured-topic-list').each(function () {\n // Capture index of first active item, so we can move back to it.\n var activeItemIndex = $(this).find('.owl-item.active').first().index();\n var clonedItemIndexOffset = $(this).find('.owl-item.cloned').filter(function (index) { return $(this).index() <= activeItemIndex; }).length;\n\n if (clonedItemIndexOffset > 0) {\n activeItemIndex = activeItemIndex - clonedItemIndexOffset;\n }\n\n var $cards = $(this).find('.universal-grid.universal-grid--featured');\n var cardsLength = $cards.find('.universal-grid-item').length;\n\n var $nav = $(this).find('.featured-topic-list__navigation');\n\n // is currently a carousel \n if ($cards.hasClass('owl-loaded') && cardsLength <= numItems) {\n $cards.owlCarousel('destroy');\n $cards.removeClass('owl-carousel');\n\n $nav.addClass('featured-topic-list__navigation--hidden');\n }\n else if (cardsLength > numItems) {\n $cards.on('initialized.owl.carousel', centerFeaturedCards);\n $cards.addClass('owl-carousel');\n $cards.owlCarousel(owlCarouselSettings);\n $nav.removeClass('featured-topic-list__navigation--hidden');\n }\n });\n }\n };\n\n $(window).resize(function () {\n setTimeout(centerFeaturedCards(), 200);\n });\n\n $(window).resize(); \n};","module.exports = {\n 'Init': require('./init'),\n 'SetupForm': function() {\n console.log('Legacy SetupForm called');\n }\n};","module.exports = function () {\n if (!('MktoForms2' in window)) {\n return;\n }\n\n window._mfq = window._mfq || [];\n\n MktoForms2.onFormRender(function (form) {\n require('./setup-form-values')(form);\n require('./setup-form-submit')(form);\n });\n\n MktoForms2.whenReady(function (form) {\n require('./setup-form-display')(form);\n\n if (typeof (navigator) !== 'undefined' && ((typeof (navigator.userAgent) !== 'undefined' && navigator.userAgent.includes('HeadlessChrome') && navigator.userAgent.includes('Linux')) || (typeof (navigator.webdriver) !== 'undefined' && navigator.webdriver))) {\n form.submittable(false);\n }\n });\n};","module.exports = function (form) {\n var $form = form.getFormElem();\n\n var uri = URI(window.location.href);\n var query = URI.parseQuery(uri._parts.query);\n\n var queryKeys = Object.keys(query);\n\n for (var i = 0; i < queryKeys.length; i++) {\n var queryKey = queryKeys[i];\n var $input = $form.find('#' + queryKey);\n if ($input.length) {\n $input.addClass('not-empty');\n }\n }\n\n $form.find('.mktoTextField, .mktoEmailField, .mktoTelField, textarea, select').each(function (i, elem) {\n var $input = $(elem);\n\n if ($input.hasClass('mktoFormElemProcessed')) {\n return;\n }\n\n $input.addClass('mktoFormElemProcessed');\n\n var $container = $input.closest('.mktoFieldWrap');\n var $originalLabel = $container.find('.mktoLabel').first();\n var placeholderText = $input.attr('placeholder');\n if (!placeholderText) {\n placeholderText = $originalLabel.text();\n }\n if (placeholderText.indexOf('*') === 0) {\n placeholderText = placeholderText.substr(1, placeholderText.length - 1);\n }\n if (placeholderText.indexOf(':') === placeholderText.length - 1) {\n placeholderText = placeholderText.substr(0, placeholderText.length - 1);\n }\n if ($(this).hasClass('mktoRequired')) {\n placeholderText += ' *';\n }\n $input.attr('placeholder', '');\n $originalLabel.remove();\n\n $container.append('
' + placeholderText + '
');\n\n $input.keyup(function () {\n if ($(this).val()) {\n $(this).addClass('not-empty');\n } else {\n $(this).removeClass('not-empty');\n }\n });\n });\n\n if ($form.find('.mktoCheckboxList')) {\n var $fieldsets = $form.find('fieldset');\n\n $fieldsets.each(function (fieldsetIndex, fieldset) {\n var $fieldset = $(fieldset);\n\n var $checkboxes = $fieldset.find('.mktoCheckboxList');\n\n $fieldset.append('
');\n\n var $checkboxListContainer = $fieldset.find('.mktoCheckboxListCol').first();\n\n $checkboxes.each(function (i, checkbox) {\n var $checkbox = $(checkbox);\n\n var $label = $checkbox.find('label').first();\n if ($label && !$label.text().length) {\n $checkbox.find('label').remove();\n var $siblingLabel = $checkbox.siblings('label');\n $checkbox.append($siblingLabel);\n }\n\n $checkbox.append('
');\n });\n\n if ($checkboxes.length > 1) {\n var $firstRow = $fieldset.find('.mktoFormRow').first().addClass('mktoFormRow--full-width');\n var $actualRows = $fieldset.find('.mktoFormRow:not(:first)');\n\n $checkboxListContainer.append($firstRow);\n $checkboxListContainer.append($actualRows);\n\n $actualRows.each(function (i, row) {\n var $row = $(row);\n var $cols = $($row.children('.mktoFormCol').get().reverse());\n\n $cols.each(function (j, col) {\n var $col = $(col);\n var newRow = document.createElement('div');\n var $newRow = $(newRow);\n $newRow.addClass('mktoFormRow');\n $newRow.append($col);\n $newRow.insertAfter($row);\n });\n\n $row.remove();\n });\n }\n });\n\n if (!$fieldsets.length) {\n var $checkboxes = $form.find('.mktoCheckboxList');\n\n $checkboxes.each(function (i, checkbox) {\n var $checkbox = $(checkbox);\n\n $checkbox.append('
');\n });\n }\n }\n\n $(window).resize();\n};","module.exports = function (form) {\n var $form = form.getFormElem();\n var mouseFlowFormId = '#' + $form[0].id;\n var formId = form.getId(); \n\n form.onSubmit(function (form) {\n window._mfq.push(['formSubmitAttempt', mouseFlowFormId]);\n });\n\n form.onValidate(function (validationStatus) {\n if (!validationStatus) {\n window._mfq.push(['formSubmitFailure', mouseFlowFormId]);\n } \n });\n\n form.onSuccess(function (vals, followUpUrl) {\n window._mfq.push(['formSubmitSuccess', mouseFlowFormId]);\n \n var $formContainer = $form.closest('[data-on-success]');\n var formSuccessFunctionName = $formContainer.data('onSuccess');\n var customOnSuccess = undefined;\n\n if (formSuccessFunctionName) {\n var current = window.ICF;\n var formSuccessFunctionPaths = formSuccessFunctionName.split('.');\n\n for (var i = 0; i < formSuccessFunctionPaths.length; ++i) {\n var pathElement = formSuccessFunctionPaths[i];\n if (pathElement === 'ICF') {\n continue;\n }\n\n current = current[pathElement];\n }\n\n var formSuccessFunction = current(form);\n\n customOnSuccess = formSuccessFunction(vals, $formContainer, followUpUrl);\n }\n\n var formName = '';\n var personalizationRuleName = '';\n\n window.dataLayer = window.dataLayer || [];\n\n if ($form.closest('.blog-subscribe-form').length) {\n dataLayer.push({\n event: 'successfulSubscription',\n formId: formId\n });\n }\n else if ($form.closest('.embedded-subscription-module').length) {\n formName = $form.closest('.embedded-subscription-module').find('h3').first().text();\n personalizationRuleName = $form.closest('.embedded-subscription-module').data('personalizationRuleName');\n }\n else if ($form.closest('.insights-detail__form').length) {\n dataLayer.push({\n 'event': 'resourceRegistrationComplete',\n formId: formId\n });\n\n formName = 'Resource Registration';\n }\n else {\n formName = $form.closest('.marketo-form').find('h2').first().text();\n personalizationRuleName = $form.closest('.marketo-form').data('personalizationRuleName');\n\n dataLayer.push({\n event: 'formSubmissionSuccess',\n formName: formName,\n data: vals,\n formId: formId,\n personalizationRuleName: personalizationRuleName\n });\n }\n\n dataLayer.push({\n event: 'formSubmission',\n formName: formName,\n data: vals,\n formId: formId,\n personalizationRuleName: personalizationRuleName\n });\n\n var mediaId = ICF.Utils.GetUrlParameter('mediaId');\n var gatingFormId = ICF.Utils.GetUrlParameter('gatingFormId');\n\n if (mediaId && gatingFormId) {\n $.post('/icfapi/gating/registercompletion?mediaId=' + mediaId + '&gatingFormId=' + gatingFormId, function () {\n var newUrl = followUpUrl + (followUpUrl.indexOf('?') === -1 ? '?' : '&') + 'mediaId=' + mediaId;\n window.location = newUrl;\n });\n\n return false;\n }\n else if ($form.closest('.insights-detail__form').length && window.videoId) {\n $.post('/icfapi/analytics/trackgoal?goalId={6F630192-7305-4076-BFEF-AB1BFC947D1B}');\n\n var newUrl = window.location.href +\n (window.location.href.indexOf('?') === -1 ? '?' : '&') +\n 'success=true&video=' +\n window.videoId;\n\n window.location.href = newUrl;\n\n return false;\n } else if ($form.closest('.insights-detail__form').length && window.resourceMediaId) {\n if (followUpUrl && followUpUrl.length) {\n var newFollowUpUrl = URI(followUpUrl);\n newFollowUpUrl.setQuery('mediaId', window.resourceMediaId);\n\n if (window.sourcePageId) {\n newFollowUpUrl.setQuery('sourcePageId', window.sourcePageId);\n }\n\n window.location.href = newFollowUpUrl;\n } else {\n $form.html('
Register to Download
Thank you for downloading! Your copy will download automatically. We have also emailed you the download link.
If your download did not start automatically, click here to download.
');\n\n var isIE = /*@cc_on!@*/false || !!document.documentMode;\n var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n\n if (isIE) {\n var downloadCallback = function () {\n var blobObject = this.response;\n window.navigator.msSaveBlob(blobObject, window.resourceFileName);\n };\n\n var a = new XMLHttpRequest();\n a.addEventListener('load', downloadCallback, false);\n a.open('get', window.resourceDownloadUrl, true);\n a.responseType = 'blob';\n a.send();\n }\n else if (isIOS) {\n window.location.href = window.resourceDownloadUrl;\n }\n else {\n document.getElementById('resourceDownloadLink').click();\n }\n\n $(\"body\").css(\"cursor\", \"\");\n }\n\n return false;\n }\n else if ($form.closest('.insights-detail__form').length && window.gatedRedirect) {\n if (window.gatedRedirect[0] == '/') { \n var redirectUrl = URI(URI(window.location.href).origin() + window.gatedRedirect);\n window.location.href = redirectUrl;\n }\n else {\n window.location.href = window.gatedRedirect;\n }\n \n return false;\n }\n\n if (customOnSuccess !== undefined && !customOnSuccess) {\n return false;\n }\n\n if (window.sourcePageId) {\n var newFollowUpUrl = URI(followUpUrl);\n newFollowUpUrl.setQuery('sourcePageId', window.sourcePageId);\n window.location.href = newFollowUpUrl;\n return false;\n } \n });\n}","module.exports = function (form) {\n var $form = form.getFormElem();\n var initValues = {};\n \n if ('utm_source' in window.utmValues) {\n initValues['icfi_utm_source'] = window.utmValues['utm_source'];\n }\n\n if ('utm_source' in window.utmValues) {\n initValues['icfi_utm_medium'] = window.utmValues['utm_medium'];\n }\n\n if ('utm_campaign' in window.utmValues) {\n initValues['icfi_utm_campaign'] = window.utmValues['utm_campaign'];\n }\n\n if ('utm_content' in window.utmValues) {\n initValues['icfi_utm_content'] = window.utmValues['utm_content'];\n }\n\n if ('utm_term' in window.utmValues) {\n initValues['icfi_utm_term'] = window.utmValues['utm_term'];\n }\n\n form.setValues(initValues);\n};","module.exports = function() {\n\n\n window.REMODAL_GLOBALS = {\n\n NAMESPACE: 'modal',\n\n DEFAULTS: {\n\n hashTracking: false\n\n }\n\n };\n\n\n var inst = jQuery('[data-remodal-id=predictiveSearchModal]').remodal();\n\n jQuery('#search').on(\"click\", function () {\n\n inst.open();\n\n });\n\n (function ($, window, document, undefined) {\n\n var elSelector = 'header',\n\n elClassHidden = 'header-white',\n\n throttleTimeout = 500,\n\n $element = jQuery(elSelector);\n\n if (!$element.length) return true;\n\n var $window = $(window),\n\n wHeight = 0,\n\n wScrollCurrent = 0,\n\n wScrollBefore = 0,\n\n wScrollDiff = 0,\n\n $document = $(document),\n\n dHeight = 0;\n\n if (document.getElementsByClassName('hero-cycle-wrapper')[0]) {\n\n $window.on('scroll', ICF.Utils.Throttle(throttleTimeout, function () {\n\n dHeight = $document.height();\n\n wHeight = $window.height();\n\n wScrollCurrent = $window.scrollTop();\n\n wScrollDiff = wScrollBefore - wScrollCurrent;\n\n if (wScrollCurrent <= 300) { // scrolled to the very top; element sticks to the top\n\n $element.removeClass(elClassHidden);\n\n } else if (wScrollDiff > 0 && $element.hasClass(elClassHidden)) { // scrolled up; element slides in\n\n\n } else if (wScrollDiff < 0) { // scrolled down\n\n $element.addClass(elClassHidden);\n\n }\n\n wScrollBefore = wScrollCurrent;\n\n }));\n\n }\n // controlling the header-white class for the overlapping header on Perspective Detail, News Detail, and Event Detail pages\n if (document.getElementsByClassName('whitepaper')[0]) {\n $window.on('scroll', ICF.Utils.Throttle(throttleTimeout, function () {\n dHeight = $document.height();\n wHeight = $window.height();\n wScrollCurrent = $window.scrollTop();\n wScrollDiff = wScrollBefore - wScrollCurrent;\n\n if (wScrollCurrent <= 100) { // scrolled to the very top; element sticks to the top\n $element.removeClass(elClassHidden);\n } else if (wScrollDiff > 0 && $element.hasClass(elClassHidden)) { // scrolled up; element slides in\n } else if (wScrollDiff < 0) { // scrolled down\n $element.addClass(elClassHidden);\n }\n wScrollBefore = wScrollCurrent;\n }));\n }\n\n })(jQuery, window, document);\n\n /*\n * \tGlobal Mobile Events\n */\n\n jQuery('#main-nav-collapse.accordion .accordion-body').on('show.bs.collapse', function (e) {\n\n e.stopPropagation();\n\n jQuery(e.target).closest('.accordion-group').addClass('active');\n\n });\n\n jQuery('#main-nav-collapse.accordion .accordion-body').on('hidden.bs.collapse', function (e) {\n\n e.stopPropagation();\n\n jQuery(e.target).closest('.accordion-group').removeClass('active');\n\n });\n\n jQuery('.navbar-toggle').on('click', function (e) {\n\n if (jQuery('.navbar-header').hasClass('expanded')) {\n\n jQuery('.navbar-header').removeClass('expanded');\n\n } else {\n\n jQuery('.navbar-header').addClass('expanded');\n\n }\n\n });\n};","module.exports = function() {\n\n if ($('.global-side-promo').length === 0) {\n return;\n }\n\n var promo = $('.global-side-promo');\n var promoOpenState = $(promo).attr(\"data-open\");\n var promoToggles = $(promo).find('.global-side-promo__toggle');\n var hasImage = $(promo).find('.global-side-promo__content--with-image').length > 0;\n var content = {\n desktop: {\n text: {\n maxCharCount: hasImage ? 140 : 150,\n content: $(promo).find('.global-side-promo__text--desktop').attr('data-promo-text'),\n },\n title: {\n maxCharCount: 84,\n maxLines: hasImage ? 3 : null,\n content: $(promo).find('.global-side-promo__title--desktop').attr('data-promo-title')\n },\n eyebrowText: {\n maxCharCount: 32,\n content: $(promo).find('.global-side-promo__eyebrow-text--desktop').attr('data-promo-eyebrow-text')\n },\n toggle: {\n maxCharCount: 36,\n content: $(promo).find('.global-side-promo__desktop-toggle p').text()\n }\n },\n tablet: {\n text: {\n maxCharCount: hasImage ? 124 : 120,\n content: $(promo).find('.global-side-promo__text--tablet').attr('data-promo-text')\n },\n title: {\n maxCharCount: hasImage ? 92 : 68,\n content: $(promo).find('.global-side-promo__title--tablet').attr('data-promo-title')\n },\n eyebrowText: {\n maxCharCount: 19,\n content: $(promo).find('.global-side-promo__eyebrow-text--tablet').attr('data-promo-eyebrow-text')\n },\n toggle: {\n maxCharCount: 36,\n content: $(promo).find('.global-side-promo__desktop-toggle p').text()\n }\n },\n mobile: {\n text: {\n maxCharCount: 132,\n content: $(promo).find('.global-side-promo__text--mobile').attr('data-promo-text')\n },\n title: {\n maxCharCount: 92,\n content: $(promo).find('.global-side-promo__title--mobile').attr('data-promo-title')\n },\n eyebrowText: {\n maxCharCount: 30,\n content: $(promo).find('.global-side-promo__eyebrow-text--mobile').attr('data-promo-eyebrow-text')\n },\n toggle: {\n maxCharCount: 52,\n content: $(promo).find('.global-side-promo__mobile-toggle p').text()\n }\n }\n };\n\n if (window.outerWidth > ICF.Variables.Breakpoints.DesktopSm - 1) {\n $(promo).attr(\"data-open\", true);\n promoOpenState = $(promo).attr(\"data-open\");\n }\n\n $.each(content, function(key, val) {\n var viewport = key;\n var text = val.text.content;\n var textMaxChar = val.text.maxCharCount;\n var title = val.title.content;\n var titleMaxChar = val.title.maxCharCount;\n var titleMaxLine = val.title.maxLines;\n var eyebrowText = val.eyebrowText.content;\n var eyebrowTextMaxChar = val.eyebrowText.maxCharCount;\n var toggleText = val.toggle.content;\n var toggleMaxChar = val.toggle.maxCharCount;\n \n if(typeof text !== 'undefined' && text.length > textMaxChar) {\n var truncatedText = truncateContent(text, textMaxChar, true);\n \n $(promo).find(`.global-side-promo__text--${viewport}`).text(truncatedText);\n }\n \n if(typeof title !== 'undefined' && title.length > titleMaxChar) {\n var truncatedText = truncateContent(title, titleMaxChar, true);\n \n $(promo).find(`.global-side-promo__title--${viewport}`).text(truncatedText);\n }\n\n if(typeof eyebrowText !== 'undefined' && eyebrowText.length > eyebrowTextMaxChar) {\n var truncatedText = truncateContent(eyebrowText, eyebrowTextMaxChar, true);\n \n $(promo).find(`.global-side-promo__eyebrow-text--${viewport}`).text(truncatedText);\n }\n\n if(typeof toggleText !== 'undefined' && toggleText.length > toggleMaxChar) {\n var truncatedText = truncateContent(toggleText, toggleMaxChar, false);\n \n $(promo).find(`.global-side-promo__${viewport}-toggle p`).text(truncatedText);\n }\n\n if(titleMaxLine !== (undefined || null)) {\n var title = $(promo).find(`.global-side-promo__title--${viewport}`)[0];\n if (typeof title !== 'undefined')\n {\n var lineHeight = parseFloat(window.getComputedStyle(title)['line-height']);\n var truncatedContent = $(title).text().split(' ');\n\n while (titleMaxLine * lineHeight < title.clientHeight) {\n truncatedContent.pop();\n $(title).text(truncatedContent.join(' ') + '...');\n }\n } \n }\n });\n\n function truncateContent(string, maxCharCount, ellipses = false) {\n var truncated;\n \n if(ellipses) {\n truncated = `${string.substring(0, maxCharCount-3).trim()}...`\n } else {\n truncated = string.substring(0, maxCharCount).trim()\n }\n\n return truncated;\n }\n \n setTimeout(function() {\n $(window).on('scroll', function() { \n if (($('body')[0].getBoundingClientRect()).top == 0) {\n $(promo).removeClass('scrolled');\n } else {\n $(promo).addClass('scrolled');\n } \n });\n }, 1000);\n\n $(window).on('resize', function() {\n if(window.outerWidth > ICF.Variables.Breakpoints.DesktopSm - 1) {\n $('body').css('overflow-y', '');\n } else if (promoOpenState === 'true') {\n $('body').css('overflow-y', 'hidden')\n }\n });\n\n promoToggles.click(togglePromo);\n\n $(document).click(function(e) {\n if($(e.target).parents('.global-side-promo').length === 0 && promoOpenState === 'true' && window.outerWidth < ICF.Variables.Breakpoints.DesktopSm - 1 || $(e.target).hasClass('global-side-promo__page-overlay')) togglePromo(e);\n });\n \n function togglePromo(e) {\n e.preventDefault();\n promo.attr(\"data-open\", promoOpenState === 'false' ? true : false);\n promoOpenState = promo.attr(\"data-open\");\n\n if(promoOpenState === 'true' && window.outerWidth < ICF.Variables.Breakpoints.DesktopSm - 1) {\n $('body').css('overflow-y', 'hidden');\n } else {\n $('body').css('overflow-y', '');\n }\n }\n};","module.exports = function () {\n var $heroWithClientStories = $('.hero-with-client-stories');\n\n if ($heroWithClientStories.length) {\n\n var $h1 = $(\".hero-with-client-stories h1\");\n\n $h1.html('
' + $h1.html().replace(/ /g, ' ') + '');\n\n var adjustContentPositon = function () {\n $(\".hero-with-client-stories-hero-headline\").css(\"margin-top\", \"-\" + $(\".hero-with-client-stories-hero-subheader\").outerHeight() / 2 + \"px\");\n var $lastSpan = $h1.find('span').last();\n $(\".hero-with-client-stories-hero-link\").css(\"left\", $lastSpan.position().left + $lastSpan.outerWidth() - $(\".hero-with-client-stories-hero-link\").outerWidth() + \"px\");\n };\n adjustContentPositon();\n\n setTimeout(adjustContentPositon, 500);\n $(window).resize(adjustContentPositon);\n\n // initialize video modaal\n $('.hero-with-client-stories-video-modal-cta').modaal({\n type: 'video',\n overlay_opacity: 0.8,\n close_text: 'esc',\n custom_class: 'show-close-btn-text'\n });\n\n $('.hero-with-client-stories-video-modal-cta').click(function (e) {\n e.preventDefault();\n\n $(this).modaal('open');\n });\n\n $('.hero-with-client-stories.hero-with-client-stories--animate').addClass('hero-with-client-stories--is-animated');\n }\n};","module.exports = function() {\n var $hero = $('.hero-with-image-and-links');\n if ($hero.length) {\n var $calloutContainer = $hero.find('.hero-with-image-and-links-callout-container').first();\n if ($calloutContainer.length) {\n var update = function() {\n var scrollThreshold = $hero.offset().top + $hero.find('.hero-with-image-and-links-container').outerHeight();\n var scrollPosition = $(window).scrollTop();\n\n if (scrollThreshold <= scrollPosition) {\n $hero.addClass('hero-with-image-and-links-sticky');\n } else {\n $hero.removeClass('hero-with-image-and-links-sticky');\n }\n };\n\n setInterval(update, 20);\n }\n }\n};","module.exports = function () {\n if ($('.hero').length === 0) {\n return;\n }\n\n $('.hero.hero--animate').addClass('hero--is-animated');\n\n var adjustHeroWrapperMinHeight = function () { \n $('.hero-content__feature-image').not('.hero-content__feature-image--cover').each(function () {\n\n var heroWrapper = $(this).closest('.hero__wrapper');\n\n var featureImageDivWidth = $(this).width();\n var featureImageHeight = $(this).data('imageHeight');\n var featureImageWidth = $(this).data('imageWidth');\n var newFeatureImageDivHeight = ((featureImageDivWidth) * (featureImageHeight / featureImageWidth))\n var featureImageDivMargin = $(this).outerHeight(true) - $(this).outerHeight();\n\n if (ICF.Utils.Breakpoints.IsAtLeastDesktopSm()) { \n var newHeroWrapperMinHeight = newFeatureImageDivHeight + featureImageDivMargin + \"px\"; \n heroWrapper.css('min-height', newHeroWrapperMinHeight);\n }\n else {\n heroWrapper.css('min-height', '');\n } \n });\n };\n\n adjustHeroWrapperMinHeight();\n\n $(window).resize(function () {\n adjustHeroWrapperMinHeight();\n });\n\n};","module.exports = function () {\n $('.selected-name').text($('.hub-page-filter-list-item.is-active').text());\n\n function setFilterListWrapperHeight() {\n setTimeout(function() {\n var MOBILE_BREAKPOINT = \"992\";\n var wrapperHeight;\n\n if ($('.hub-page-filter-list-wrapper').hasClass('is-active')) {\n wrapperHeight = $('.filter-selected').outerHeight(true) + $('.hub-page-filter-list').outerHeight(true);\n }\n else {\n wrapperHeight = window.innerWidth < MOBILE_BREAKPOINT ? $('.filter-selected').outerHeight(true) : $('.filter-selected').outerHeight(true) + $('.hub-page-filter-list').outerHeight(true);\n }\n\n $('.hub-page-filter-list-wrapper').height(wrapperHeight);\n }, 1);\n };\n\n setFilterListWrapperHeight();\n \n $('.hub-page-filter-list-item').click(function () {\n $(this).addClass('is-active');\n $(this).siblings().removeClass('is-active');\n\n var filterIndex = $(this).data('hub-page-filter-index');\n\n $('.hub-page-filtered-content:not([data-hub-page-filtered-index=\"' + filterIndex + '\"])').removeClass('is-active');\n\n $('.hub-page-filtered-content[data-hub-page-filtered-index=\"' + filterIndex + '\"]').addClass('is-active');\n\n $('.selected-name').text($(this).text());\n $('.selected-index-value').text($(this).index() + 1);\n\n $('.filter-selected').parent().removeClass('is-active');\n setFilterListWrapperHeight();\n AOS.refresh();\n });\n\n $('.filter-selected').click(function () {\n $(this).parent().toggleClass('is-active');\n setFilterListWrapperHeight();\n });\n\n $(window).on('resize', function() {\n setFilterListWrapperHeight();\n });\n};","module.exports = function (path) {\n window.iframePaths = window.iframePaths || [];\n window.iframePaths.push(path);\n var uri = new URI(path);\n var pathname = uri.pathname();\n history.pushState({}, '', pathname);\n};","module.exports = {\n 'Init': require('./init'),\n 'DidNavigate': require('./did-navigate')\n};","module.exports = function () {\n if ($('.iframe-page__container').length) {\n var iframeHost = $('.iframe-page__container').data('iframeHost');\n\n var onMessage = function (event) {\n if (event.origin !== iframeHost) {\n return;\n }\n\n var data = event.data;\n\n var path = data.func.split('.');\n\n var resolved;\n if (path.length === 1) {\n resolved = window[path[0]];\n } else {\n resolved = window[path[0]];\n for (var i = 1; i < path.length; i++) {\n resolved = resolved[path[i]];\n }\n }\n\n if (typeof (resolved) === \"function\") {\n resolved.call(null, data.message);\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", onMessage, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", onMessage, false);\n }\n\n $(window).on('popstate', function () {\n var iframe = $('.iframe-page__container').find('iframe')[0];\n if (window.iframePaths && window.iframePaths.length > 1) {\n iframe.src = window.iframePaths[window.iframePaths.length - 2];\n window.iframePaths.pop();\n window.iframePaths.pop();\n } else {\n iframe.src = iframe.src;\n }\n });\n }\n};","module.exports = function() {\n var $slideShows = $('.image-slideshow');\n var $thumbnails = $slideShows.find('.image-slideshow-thumbnails');\n\n $slideShows.each(function () {\n var $slideShow = $(this);\n \n var swiperContainer = $slideShow.find('.swiper')[0];\n var previousButton = $slideShow.find('.image-slideshow-previous-button')[0];\n var nextButton = $slideShow.find('.image-slideshow-next-button')[0];\n var pagination = $slideShow.find('.image-slideshow-pagination')[0];\n\n var swiper = new Swiper(swiperContainer, {\n direction: 'horizontal',\n loop: false,\n speed: 500,\n navigation: {\n nextEl: nextButton,\n prevEl: previousButton,\n },\n pagination: {\n el: pagination,\n clickable: true\n },\n on: {\n slideChange(swiper) {\n $thumbnails.find('.image-slideshow-thumbnail-active').removeClass('image-slideshow-thumbnail-active');\n $thumbnails.find('.image-slideshow-thumbnail:eq(' + swiper.activeIndex + ')').addClass('image-slideshow-thumbnail-active');\n }\n } \n });\n\n $thumbnails.find('.image-slideshow-thumbnail').click(function () {\n var numberOfSlides = Math.abs($(this).index() - swiper.activeIndex);\n\n if (numberOfSlides > 0) {\n swiper.slideTo($(this).index(), numberOfSlides * 500 - (numberOfSlides - 1) * 250, true);\n }\n });\n });\n};","module.exports = {\n 'CycleWords': require('./cycle-words'),\n 'ScrollExperience': require('./scroll-experience'),\n 'VerticalCarousel': require('./vertical-carousel'),\n 'GlobalNavigation': require('./global-navigation'),\n 'ExpandingGrid': require('./expanding-grid'), \n 'LoadMore': require('./load-more'),\n 'VideoModal': require('./video-modal'),\n 'SecondaryNavigation': require('./secondary-navigation'), \n 'InputAutoFocus': require('./input-auto-focus'),\n 'TabSelect': require('./tab-select'),\n 'ScrollToTop': require('./scroll-to-top'),\n 'DataTable': require('./data-table'),\n 'Resources': require('./resources'),\n 'Pulsepoint': require('./pulsepoint'),\n 'FeaturedContentColumns': require('./featured-content-columns'),\n 'FeaturedPeople': require('./featured-people'),\n 'SidebarBlocks': require('./sidebar-blocks'),\n 'Wffm': require('./wffm'),\n 'Careers': require('./careers'),\n 'Locations': require('./locations'),\n 'Analytics': require('./analytics'),\n 'Events': require('./events'),\n 'TableOfContents': require('./table-of-contents'),\n 'ImageSlideshow': require('./image-slideshow'),\n 'FeatureGridAndList': require('./feature-grid-and-list'),\n 'TwoColumnTabs': require('./two-column-tabs'),\n 'HeroWithImageAndLinks': require('./hero-with-image-and-links'),\n 'Forms': require('./forms'),\n 'UniversalPromoModule': require('./universal-promo-module'),\n 'HubPage': require('./hub-page'),\n 'AutoDownload': require('./auto-download'),\n 'HeroWithClientStories': require('./hero-with-client-stories'),\n 'Hero': require('./hero'), \n 'TopicAndTagFooterList': require('./topic-and-tag-footer-list'),\n 'FeaturedTopicList': require('./featured-topic-list'),\n 'InsightsDetail': require('./insights-detail'),\n 'Authors': require('./authors'),\n 'Pagination' : require('./pagination'), \n 'PersonalizedLinks': require('./personalized-links'),\n 'VideoHero': require('./video-hero'),\n 'VideoHeroSpinner': require('./video-hero-spinner'),\n 'PopupModal': require('./popup-modal'),\n 'VideoHeroBottom': require('./video-hero-bottom'),\n 'IFramePage': require('./iframe-page'),\n 'ParallaxModule': require('./parallax-module'),\n 'LargeImage': require('./large-image'),\n 'PersonDetail': require('./person-detail'),\n 'Wistia': require('./wistia'), \n 'Lottie': require('./lottie'),\n 'EmbeddedSubscriptionModule': require('./embedded-subscription-module'),\n 'LandingPagesSearchFilter': require('./landing-pages-search-filter'),\n 'GlobalSidePromo': require('./global-side-promo'),\n 'CareersSearchHero': require('./careers-search-hero'),\n 'LogosModule': require('./logos-module'),\n 'FeaturedContentModule': require('./featured-content-module'),\n 'TopicGroupLanding': require('./topic-group-landing'),\n 'TopicLanding': require('./topic-landing'),\n 'LargeCarouselModule': require('./large-carousel-module'),\n 'ParagraphModule': require('./paragraph-module'),\n 'CardGridModule': require('./card-grid-module'),\n 'SearchRendering': require('./search-rendering'),\n 'SearchControl': require('./search-control'),\n 'ProductHeroModule': require('./product-hero-module'),\n};\n","module.exports = function() {\n if ($(\"#predictiveSearchModal #search\").length > 0) {\n $(document).on('opening touchstart',\n '.remodal',\n function() {\n console.log(\"Modal is opening\");\n $(\"#predictiveSearchModal #search\").focus();\n });\n }\n};","module.exports = function () {\n\n if ($('.insights-detail').length === 0) {\n return;\n }\n\n var channelTooltip = tippy('.insights-detail-header__channel--with-tooltip', {\n maxWidth: '100%',\n content: document.getElementById('insights-detail-header__channel__content'),\n placement: 'top-end',\n onMount: function (instance) {\n var $instance = $(instance.popper);\n $closeCTA = $instance.find('.popover__close-cta');\n $closeCTA.unbind('click');\n\n $closeCTA.click(function () {\n instance.hide();\n });\n }\n })[0];\n\n var $form = $('.insights-detail__form');\n\n var getHeader = function () {\n return $('.insights-detail-header'); \n }\n\n var getHeaderOrHero = function () {\n var $headerOrHero = getHeader();\n\n if (!($headerOrHero.length)) {\n var $headerOrHero = $('.hero-module');\n }\n return $headerOrHero;\n }\n\n var determineFormPosition = function () { \n var topMargin = ICF.Utils.Breakpoints.IsAtLeastTablet() ? (getHeader().outerHeight(true) * -1) + 'px' : '';\n\n $form.css({\n 'margin-top': topMargin\n });\n };\n\n if ($form.length) {\n determineFormPosition();\n\n $(window).on('resize', function () {\n determineFormPosition();\n });\n \n var elementTarget = getHeader()[0];\n var observer = new MutationObserver(function (mutations) {\n determineFormPosition();\n adjustVideoPosition();\n });\n\n var config = { subtree: true, childList: true };\n\n observer.observe(elementTarget, config);\n }\n\n // offset embedded video to not clash with form\n var adjustVideoPosition = function () {\n var $video = $('.insights-detail-body__video-container');\n var $form = $('.insights-detail__form.marketo-form');\n\n $video.css('margin-top', '0')\n\n if ($video.length) {\n if (ICF.Utils.Breakpoints.IsAtLeastTablet()) {\n var formBottom = $form.offset().top + $form.outerHeight() + 24;\n var videoTop = $video.offset().top;\n var height;\n\n var difference;\n if (formBottom > videoTop) {\n difference = formBottom - videoTop + 32;\n if (difference < 48) {\n difference = 48;\n }\n $video.css({ 'margin-top': difference + 'px' });\n }\n }\n else {\n $video.css({ 'margin-top': '' });\n }\n }\n };\n\n var adjustPodcastPosition = function () { \n var $podcast = $('.insights-detail-podcast');\n\n if ($podcast.length) { \n var podcastClasses = {\n 'sticky': 'insights-detail-podcast--sticky',\n 'visible': 'insights-detail-podcast--visible',\n 'static': 'insights-detail-podcast--static'\n };\n var $placeholder = $('.insights-detail-header__podcast-player-placeholder');\n if ($placeholder.length) {\n var $header = getHeader();\n var $mainHeader = $('.main-header');\n var headerHeight = $header.outerHeight();\n var topPosition = headerHeight - $mainHeader.outerHeight() - $podcast.outerHeight();\n var currentPagePosition = $(window).scrollTop();\n var placeholderInfo = {\n 'initClass': 'insights-detail-header__podcast-player-placeholder--initialized',\n 'offset': $placeholder.offset().top + 'px'\n };\n\n if (currentPagePosition > topPosition) {\n $podcast.addClass(podcastClasses.sticky);\n $podcast.css({ 'top': '' });\n }\n else {\n $podcast.removeClass(podcastClasses.sticky);\n $podcast.css({ 'top': placeholderInfo.offset });\n }\n\n $placeholder.addClass(placeholderInfo.initClass);\n }\n else {\n $podcast.addClass(podcastClasses.static);\n }\n \n $podcast.addClass(podcastClasses.visible);\n }\n };\n\n var $headerOrHero = getHeaderOrHero();\n $headerOrHero.one('transitionend webkitTransitionEnd oTransitionEnd', function (e) {\n adjustPodcastPosition();\n\n $(window).resize(function () {\n adjustVideoPosition();\n requestAnimationFrame(adjustPodcastPosition);\n });\n\n $(window).scroll(function () {\n requestAnimationFrame(adjustPodcastPosition);\n });\n });\n\n $('.insights-detail-body__video-gated-text').click(function () {\n $(\"html, body\").animate({ scrollTop: 0 }, 300);\n });\n\n var $submenu = $('.insights-detail-submenu');\n var submenuStickyClass = 'insights-detail-submenu--sticky'; \n var $insightsBody = $('.insights-detail-body');\n var $lastParagraph = $insightsBody.siblings('.paragraph').last();\n var $progressTarget = $lastParagraph.length ? $lastParagraph : $insightsBody;\n\n var calculateSubmenuPosition = function () {\n var el = getHeaderOrHero()[0];\n var offset = ICF.Utils.Breakpoints.IsTablet() ? 128 : 80;\n var elBounds = el.getBoundingClientRect();\n\n if (elBounds.bottom - offset > 0) {\n $submenu.removeClass(submenuStickyClass);\n }\n else {\n $submenu.addClass(submenuStickyClass);\n }\n };\n\n var calculateProgressBarWidth = function ($bar) {\n var headerOffset = ICF.Utils.Breakpoints.IsTablet() ? 128 : 80;\n var heroEl = getHeaderOrHero()[0];\n var heroHeight = heroEl.getBoundingClientRect().height;\n var contentEl = $progressTarget[0];\n var contentBounds = contentEl.getBoundingClientRect();\n var submenuOffset = $submenu.outerHeight();\n var startingPoint = heroHeight - headerOffset;\n var totalOffset = headerOffset + submenuOffset;\n var adjustedBottom = contentBounds.bottom - totalOffset;\n\n if (document.documentElement.scrollTop < startingPoint) {\n ICF.Utils.ProgressBar.FillBar($bar, '0%');\n return;\n }\n\n if (adjustedBottom < 0) {\n ICF.Utils.ProgressBar.FillBar($bar, '100%');\n return;\n }\n\n var adjustedScrollDistance = document.documentElement.scrollTop - heroHeight;\n var ratio = adjustedScrollDistance / (adjustedScrollDistance + adjustedBottom);\n var percentage = ratio * 100 + '%';\n\n ICF.Utils.ProgressBar.FillBar($bar, percentage);\n };\n\n if ($submenu.length) {\n var $progressBar = $submenu.find('.progress-bar');\n $('.insights-detail-submenu__scroll-to-top').click(function (e) {\n e.preventDefault();\n\n $('html, body').animate({ scrollTop: 0 });\n });\n\n calculateSubmenuPosition();\n calculateProgressBarWidth($progressBar);\n\n $(window).scroll(function () {\n requestAnimationFrame(function () {\n calculateSubmenuPosition();\n calculateProgressBarWidth($progressBar);\n });\n });\n\n $(window).resize(function () {\n requestAnimationFrame(function () {\n calculateSubmenuPosition();\n calculateProgressBarWidth($progressBar);\n });\n });\n\n $('.main-header').addClass('header--with-submenu');\n }\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $page = $('#landing-page-with-search');\n\n if(!$page.length) {\n return;\n }\n\n var $filtersClearAllCTA = $page.find('.dropdown-filters__clear');\n\n $filtersClearAllCTA.unbind('click');\n\n $page.on('click', 'a.dropdown-filters__clear', function (e) {\n e.preventDefault();\n\n clearAll();\n });\n\n var clearAll = function () {\n window.page = 1;\n window.regions = [];\n window.topics = [];\n window.contentLabels = [];\n window.topicMatchType = '';\n\n if (window.$topicContentDesktopContent) {\n window.$topicContentDesktopContent.find('input[type=\"checkbox\"]').attr('checked', false);\n window.$topicContentDesktopContent.find('.popover__cta--reset').addClass('popover__cta--hidden');\n }\n\n if (window.$regionContentDesktopContent) {\n window.$regionContentDesktopContent.find('input[type=\"checkbox\"]').attr('checked', false);\n window.$regionContentDesktopContent.find('.popover__cta--reset').addClass('popover__cta--hidden');\n }\n\n if (window.$contentLabelContentDesktopContent) {\n window.$contentLabelContentDesktopContent.find('input[type=\"checkbox\"]').attr('checked', false);\n window.$contentLabelContentDesktopContent.find('.popover__cta--reset').addClass('popover__cta--hidden');\n }\n\n $('.dropdown-filters').removeClass('dropdown-filters--active');\n $('.dropdown-filter').removeClass('dropdown-filter--active');\n\n insertResults(apiEndpoint);\n };\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var topicContentDesktop = document.getElementById('TopicFiltering');\n var topicContentTouch = document.getElementById('TopicFilteringModal');\n var regionContentDesktop = document.getElementById('RegionFiltering') || document.getElementById('person-index__region-dropdown__desktop-content');\n var regionContentTouch = document.getElementById('RegionFilteringModal') || document.getElementById('person-index__region-dropdown__touch-content');\n var contentLabelContentDesktop = document.getElementById('ContentLabelFiltering');\n var contentLabelContentTouch = document.getElementById('ContentLabelFilteringModal');\n\n var $topicContentDesktopContent, $regionContentDesktopContent, $contentLabelContentDesktopContent;\n var $topicModal, $regionModal, $contentLabelModal;\n var topicTooltip, regionTooltip, contentLabelTooltip;\n\n var collapseGroupActiveClass = 'popover__group--expanded';\n var triggerActiveClass = 'circle-plus-minus-icon--is-active';\n\n var setPopoverGroup = function(group) {\n var $popoverGroup = $('.popover__group', group);\n $($popoverGroup).each(function () {\n var $popoverGroupTitle = $(this).find('.popover__group-title');\n var $popoverGroupTitvarext = $($popoverGroupTitle).text();\n $($popoverGroupTitle).attr('title', $popoverGroupTitvarext);\n $($popoverGroupTitle).append('
');\n });\n }\n\n var updateNumberOfChecked = function(content) {\n var $popoverGroup = $('.popover__group', content);\n\n $($popoverGroup).each(function () {\n var $popoverGroupTitle = $(this).find('.popover__group-title');\n var $checkedBoxes = $(this).find('input:checked');\n $($popoverGroupTitle).find('span').empty();\n if($checkedBoxes.length > 0) {\n $($popoverGroupTitle).find('span').append('('+$checkedBoxes.length+')');\n }\n else {\n $($popoverGroupTitle).find('span').empty();\n }\n });\n }\n\n var updateFiltersAndContent = function () {\n if($('.dropdown-filter--topic').length) {\n if (window.topics.length) {\n $('.dropdown-filter--topic').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--topic').removeClass('dropdown-filter--active');\n }\n }\n\n if($('.dropdown-filter--region').length) {\n if (window.regions.length) {\n $('.dropdown-filter--region').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--region').removeClass('dropdown-filter--active');\n }\n }\n\n if($('.dropdown-filter--content-label').length) {\n if (window.contentLabels.length) {\n $('.dropdown-filter--content-label').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--content-label').removeClass('dropdown-filter--active');\n }\n }\n if(!window.topics) {\n window.topics = [];\n }\n\n if(!window.regions) {\n window.regions = [];\n }\n\n if(!window.contentLabels) {\n window.contentLabels = [];\n }\n\n if (window.topics.length || window.regions.length || window.contentLabels.length) {\n $('.dropdown-filters').addClass('dropdown-filters--active');\n }\n else {\n $('.dropdown-filters').removeClass('dropdown-filters--active');\n }\n\n window.page = 1;\n window.topicMatchType = '';\n\n insertResults(apiEndpoint);\n };\n\n if (topicContentDesktop) {\n setPopoverGroup(topicContentDesktop);\n topicTooltip = tippy('.dropdown-filter--topic--desktop', {\n maxWidth: 'none',\n theme: 'light full-width',\n placement: 'bottom-start',\n flip: false,\n content: topicContentDesktop,\n onMount: function (instance) {\n var $instance = $(instance.popper);\n var $content = $(instance.props.content);\n resizeTopicDropdown();\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.topics) {\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.topics.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $instance.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n \n updateNumberOfChecked(topicContentDesktop);\n runSearch();\n instance.hide();\n });\n\n if (!window.topics.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n $closeCTA = $instance.find('.popover__close-cta');\n $closeCTA.unbind('click');\n if ($closeCTA) {\n $closeCTA.click(function () {\n instance.hide();\n });\n }\n\n var $applyCTA = $instance.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n instance.hide();\n });\n \n $checkboxes.unbind('click');\n $checkboxes.click(function (e) {\n var $checkbox = $(this);\n var $parentInputListItem = $checkbox.closest('.popover__input-list-item');\n var $childrenContainer = $parentInputListItem.find('.popover__input-list');\n var isParent = $childrenContainer.length > 0;\n var isChecked = $checkbox.is(':checked');\n\n if (isParent && isChecked) {\n var $childCheckboxes = $childrenContainer.find('input[type=\"checkbox\"]:not(:disabled)');\n $childCheckboxes.each(function () {\n $(this).prop('checked', true);\n });\n \n }\n updateNumberOfChecked(topicContentDesktop);\n });\n\n var runSearch = function () {\n var topics = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n topics.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.topics = topics;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n updateFiltersAndContent();\n };\n updateNumberOfChecked(topicContentDesktop);\n }\n })[0];\n\n $topicContentDesktopContent = $(topicTooltip.popperChildren.content);\n window.$topicContentDesktopContent = $topicContentDesktopContent;\n }\n\n if (topicContentTouch) {\n setPopoverGroup(topicContentTouch);\n $topicModal = $('.dropdown-filter--topic--touch').modaal({\n content_source: topicContentTouch,\n custom_class: 'modaal-wrapper--spacingless modaal-wrapper--no-close-btn modaal-wrapper--full-height',\n type: 'inline',\n overlay_opacity: .8,\n after_open: function (modal_wrapper) {\n var $content = $(modal_wrapper);\n window.$topicModalContent = $content;\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.topics) {\n var isAnyChecked = false;\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.topics.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $content.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n \n updateNumberOfChecked('.modaal-wrapper');\n runSearch();\n $topicModal.modaal('close');\n });\n\n if (!window.topics.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n var $closeCTA = $content.find('.popover__close-cta');\n $closeCTA.unbind('click');\n $closeCTA.click(function () {\n $topicModal.modaal('close');\n });\n\n var $applyCTA = $content.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n $topicModal.modaal('close');\n });\n\n $checkboxes.unbind('click');\n $checkboxes.click(function (e) {\n var $checkbox = $(this);\n var $parentInputListItem = $checkbox.closest('.popover__input-list-item');\n var $childrenContainer = $parentInputListItem.find('.popover__input-list');\n var isParent = $childrenContainer.length > 0;\n var isChecked = $checkbox.is(':checked');\n\n if (isParent && isChecked) {\n var $childCheckboxes = $childrenContainer.find('input[type=\"checkbox\"]:not(:disabled)');\n\n $childCheckboxes.each(function () {\n $(this).prop('checked', true);\n });\n }\n updateNumberOfChecked('.modaal-wrapper');\n });\n\n var $collapseGroups = $content.find('.popover__group--collapse');\n $collapseGroups.each(function () {\n var $collapseGroup = $(this);\n var $trigger = $collapseGroup.find('.circle-plus-minus-icon');\n var $content = $collapseGroup.find('.popover__group-content');\n\n $trigger.unbind('click');\n $trigger.click(function () {\n if ($collapseGroup.hasClass(collapseGroupActiveClass)) {\n $collapseGroup.removeClass(collapseGroupActiveClass);\n $trigger.removeClass(triggerActiveClass);\n $content.css({ 'height': '' });\n }\n else {\n $collapseGroup.addClass(collapseGroupActiveClass);\n var height = $content.find('> .popover__input-list').outerHeight(true);\n $trigger.addClass(triggerActiveClass);\n $content.css({ 'height': height + 'px' });\n }\n });\n\n var $groupedCheckboxes = $collapseGroup.find('input[type=\"checkbox\"]');\n var isGroupChecked = false;\n\n $groupedCheckboxes.each(function () {\n var isChecked = $(this).is(':checked');\n\n if (isChecked) {\n isGroupChecked = true;\n }\n });\n\n if (isGroupChecked) {\n $collapseGroup.addClass('popover__group-content--active');\n }\n else {\n $collapseGroup.removeClass('popover__group-content--active');\n }\n });\n\n var runSearch = function () {\n var topics = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n topics.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.topics = topics;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n updateFiltersAndContent();\n };\n updateNumberOfChecked('.modaal-wrapper');\n },\n before_close: function (modal_wrapper) {\n var $content = $(modal_wrapper);\n\n var $collapseGroups = $content.find('.popover__group--expanded');\n $collapseGroups.each(function () {\n var $collapseGroup = $(this);\n var $trigger = $collapseGroup.find('.circle-plus-minus-icon');\n var $content = $collapseGroup.find('.popover__group-content');\n\n $collapseGroup.removeClass(collapseGroupActiveClass);\n $trigger.removeClass(triggerActiveClass);\n $content.css({ 'height': '' });\n });\n }\n });\n }\n\n if (regionContentDesktop) {\n regionTooltip = tippy('.dropdown-filter--region--desktop', {\n maxWidth: 'none',\n theme: 'light',\n placement: 'bottom-start',\n flip: false,\n content: regionContentDesktop,\n onMount: function (instance) {\n var $instance = $(instance.popper);\n var $content = $(instance.props.content);\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.regions) {\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.regions.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $instance.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n\n runSearch();\n instance.hide();\n });\n\n if (!window.regions.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n $closeCTA = $instance.find('.popover__close-cta');\n $closeCTA.unbind('click');\n if ($closeCTA) {\n $closeCTA.click(function () {\n instance.hide();\n });\n }\n\n var $applyCTA = $instance.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n instance.hide();\n });\n\n var runSearch = function () {\n var regions = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n regions.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.regions = regions;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n if (window.regions.length) {\n $('.dropdown-filter--region').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--region').removeClass('dropdown-filter--active');\n }\n\n updateFiltersAndContent();\n };\n }\n })[0];\n\n $regionContentDesktopContent = $(regionTooltip.popperChildren.content);\n window.$regionContentDesktopContent = $regionContentDesktopContent;\n }\n\n if (regionContentTouch) {\n $regionModal = $('.dropdown-filter--region--touch').modaal({\n content_source: regionContentTouch,\n custom_class: 'modaal-wrapper--spacingless modaal-wrapper--no-close-btn modaal-wrapper--full-height',\n type: 'inline',\n overlay_opacity: .8,\n after_open: function (modal_wrapper) {\n var $content = $(modal_wrapper);\n window.$regionModalContent = $content;\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.regions) {\n var isAnyChecked = false;\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.regions.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $content.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n\n runSearch();\n $regionModal.modaal('close');\n });\n\n if (!window.regions.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n var $closeCTA = $content.find('.popover__close-cta');\n $closeCTA.unbind('click');\n $closeCTA.click(function () {\n $regionModal.modaal('close');\n });\n\n var $applyCTA = $content.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n $regionModal.modaal('close');\n });\n\n var runSearch = function () {\n var regions = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n regions.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.regions = regions;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n if (window.regions.length) {\n $('.dropdown-filter--region').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--region').removeClass('dropdown-filter--active');\n }\n\n updateFiltersAndContent();\n };\n }\n });\n }\n\n if (contentLabelContentDesktop) {\n contentLabelTooltip = tippy('.dropdown-filter--content-label--desktop', {\n maxWidth: 'none',\n theme: 'light',\n placement: 'bottom-start',\n flip: false,\n content: contentLabelContentDesktop,\n onMount: function (instance) {\n var $instance = $(instance.popper);\n var $content = $(instance.props.content);\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.contentLabels) {\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.contentLabels.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $instance.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n\n runSearch();\n instance.hide();\n });\n\n if (!window.contentLabels.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n $closeCTA = $instance.find('.popover__close-cta');\n $closeCTA.unbind('click');\n if ($closeCTA) {\n $closeCTA.click(function () {\n instance.hide();\n });\n }\n\n var $applyCTA = $instance.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n instance.hide();\n });\n\n var runSearch = function () {\n var contentLabels = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n contentLabels.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.contentLabels = contentLabels;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n if (window.contentLabels.length) {\n $('.dropdown-filter--content-label').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--content-label').removeClass('dropdown-filter--active');\n }\n\n updateFiltersAndContent();\n };\n }\n })[0];\n\n $contentLabelContentDesktopContent = $(contentLabelTooltip.popperChildren.content);\n window.$contentLabelContentDesktopContent = $contentLabelContentDesktopContent;\n }\n\n if (contentLabelContentTouch) {\n $contentLabelModal = $('.dropdown-filter--content-label--touch').modaal({\n content_source: contentLabelContentTouch,\n custom_class: 'modaal-wrapper--spacingless modaal-wrapper--no-close-btn modaal-wrapper--full-height',\n type: 'inline',\n overlay_opacity: .8,\n after_open: function (modal_wrapper) {\n var $content = $(modal_wrapper);\n window.$contentLabelModalContent = $content;\n\n var $checkboxes = $content.find('input[type=\"checkbox\"]');\n\n if (window.contentLabels) {\n var isAnyChecked = false;\n $checkboxes.each(function () {\n var $checkbox = $(this);\n var isChecked = window.contentLabels.indexOf($checkbox.val()) != -1;\n\n $checkbox.prop('checked', isChecked);\n });\n }\n\n var $resetCTA = $content.find('.popover__cta.popover__cta--reset');\n $resetCTA.unbind('click');\n $resetCTA.click(function () {\n $checkboxes.each(function () {\n $(this).prop('checked', false);\n });\n\n runSearch();\n $contentLabelModal.modaal('close');\n });\n\n if (!window.contentLabels.length) {\n $resetCTA.addClass('popover__cta--hidden');\n }\n else {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n\n var $closeCTA = $content.find('.popover__close-cta');\n $closeCTA.unbind('click');\n $closeCTA.click(function () {\n $contentLabelModal.modaal('close');\n });\n\n var $applyCTA = $content.find('.popover__cta.popover__cta--apply');\n $applyCTA.unbind('click');\n $applyCTA.click(function () {\n runSearch();\n $contentLabelModal.modaal('close');\n });\n\n var runSearch = function () {\n var contentLabels = [];\n var hasAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n contentLabels.push($(this).val());\n hasAnyChecked = true;\n }\n });\n\n window.contentLabels = contentLabels;\n if (hasAnyChecked) {\n $resetCTA.removeClass('popover__cta--hidden');\n }\n else {\n $resetCTA.addClass('popover__cta--hidden');\n }\n\n if (window.contentLabels.length) {\n $('.dropdown-filter--content-label').addClass('dropdown-filter--active');\n }\n else {\n $('.dropdown-filter--content-label').removeClass('dropdown-filter--active');\n }\n\n updateFiltersAndContent();\n };\n }\n });\n\n window.$regionModal = $regionModal;\n }\n\n var resizePopoverGroups = function () {\n var activeClass = 'circle-plus-minus-icon--is-active';\n\n var $collapseGroups = $('.popover__group--collapse');\n $collapseGroups.each(function () {\n var $collapseGroup = $(this);\n var $trigger = $collapseGroup.find('.circle-plus-minus-icon');\n var $content = $collapseGroup.find('.popover__group-content');\n if (ICF.Utils.Breakpoints.IsTablet() && $trigger.hasClass(activeClass)) {\n var height = $content.find('> .popover__input-list').outerHeight(true);\n $content.css({ 'height': height + 'px' });\n }\n\n else {\n $content.css({ 'height': '' });\n $trigger.removeClass(activeClass);\n }\n });\n }\n\n var resizeTopicDropdown = function() {\n if(ICF.Utils.Breakpoints.IsDesktop() && $('.dropdown-filter--topic--desktop').length) {\n var topicDropdown = $(\"#TopicFiltering\");\n var popoverBottom = $('.popover__bottom', topicDropdown)[0];\n var windowHeight = window.innerHeight;\n var topicDropdownCTAPosition = $('.dropdown-filter--topic--desktop')[0].getBoundingClientRect().top;\n \n if(popoverBottom) {\n \n if (topicDropdown.height() !== windowHeight - topicDropdownCTAPosition - popoverBottom.clientHeight ) {\n topicDropdown.css({'height': windowHeight - topicDropdownCTAPosition - popoverBottom.clientHeight + 'px'})\n }\n }\n }\n }\n\n $(window).resize(function () {\n resizePopoverGroups();\n resizeTopicDropdown();\n\n if (ICF.Utils.Breakpoints.IsDesktop()) {\n if (!!$topicModal) {\n $topicModal.modaal('close');\n }\n if (!!$regionModal) {\n $regionModal.modaal('close');\n }\n } \n else {\n if (!!topicTooltip) {\n topicTooltip.hide();\n }\n if (!!regionTooltip) {\n regionTooltip.hide();\n }\n }\n });\n};","module.exports = {\n 'Init': require('./init'),\n 'InsertResults': require('./insert-results'),\n 'Pagination': require('./pagination'),\n 'Search': require('./search'),\n 'ShowMore': require('./showMore'),\n 'ToggleModuleVisibility': require('./toggle-module-visibility')\n};","const dropdowns = require('./dropdowns');\nconst pagination = require('./pagination');\nconst clearAllHandler = require('./clear-all-handler');\nconst tagHandler = require('./tag-handler');\nconst tableOfContents = require('./table-of-contents');\nconst showMore = require('./showMore');\nconst toggleModuleVisibility = require('./toggle-module-visibility');\n\nmodule.exports = function () {\n var $page = $('#landing-page-with-search');\n \n window.pageInitialized = window.pageInitialized || false;\n \n if (!$page.length) {\n return;\n }\n \n var apiEndpoint = $page.data('searchEndpoint');\n \n if (!window.pageInitialized) {\n dropdowns(apiEndpoint);\n clearAllHandler(apiEndpoint);\n }\n\n pagination(apiEndpoint);\n tagHandler(apiEndpoint);\n tableOfContents(apiEndpoint);\n showMore(apiEndpoint);\n toggleModuleVisibility();\n\n window.pageInitialized = true;\n};","var search = require('./search');\n\nmodule.exports = function (apiEndpoint) {\n var pagination = require('./pagination');\n var tagHandler = require('./tag-handler');\n var tableOfContents = require('./table-of-contents');\n const toggleModuleVisibility = require('./toggle-module-visibility');\n\n search(function (results) {\n var $page = $('#landing-page-with-search');\n\n var $featureTiles = $page.find(\"div[class*='__feature-tiles']\");\n if ($featureTiles.length) {\n var featureTileBaseClass = $featureTiles.attr('class').split(/\\s+/).shift();\n var featureTilesHiddenClass = featureTileBaseClass + '--hidden';\n\n if ((window.topics && window.topics.length || window.regions && window.regions.length)) {\n if (!$featureTiles.hasClass(featureTilesHiddenClass)) {\n $featureTiles.addClass(featureTilesHiddenClass);\n }\n }\n else {\n $featureTiles.removeClass(featureTilesHiddenClass);\n }\n }\n\n var $content;\n\n if($page.find(\"div[class*='landing__content']\").length) {\n $content = $($page).find(\"div[class*='landing__content']\");\n }\n \n if ($page.find(\"div[class*='__content-inner']\").length) {\n $content = $($page).find(\"div[class*='__content-inner']\");\n }\n\n if (typeof $content !== 'undefined' && $content.length) {\n var featuredContentClassPattern = \"[class*='__featured-content']\";\n $featuredContent = $content.find(featuredContentClassPattern);\n\n if (typeof $featuredContent !== 'undefined' && $featuredContent.length) {\n $content.children().not(featuredContentClassPattern).remove();\n var hiddenFeaturedContentClassName = $featuredContent[0].className.split(\" \")[0] + \"--hidden\";\n\n if (results.length && /\\S/.test(results)) {\n $content.append(results);\n\n if (/data-results-status=\"default\"/.test(results)) {\n $featuredContent.removeClass(hiddenFeaturedContentClassName);\n }\n else {\n $featuredContent.addClass(hiddenFeaturedContentClassName);\n } \n } \n else {\n $featuredContent.removeClass(hiddenFeaturedContentClassName);\n } \n }\n else {\n $content.empty();\n $content.append(results);\n } \n }\n\n pagination(apiEndpoint);\n tableOfContents(apiEndpoint);\n tagHandler(apiEndpoint);\n toggleModuleVisibility();\n \n $('html, body').animate({ scrollTop: 0 });\n }, apiEndpoint);\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $page = $('#landing-page-with-search');\n var $paginationContainer = $page.find(\"div[class*='pagination']\");\n\n if ($paginationContainer.length) {\n var $pageLinks = $paginationContainer.find('[data-pagination-page]');\n\n $pageLinks.click(function (e) {\n var page = $(this).data('paginationPage');\n window.page = page;\n\n insertResults(apiEndpoint);\n\n return false;\n });\n }\n};","module.exports = function (cb, apiEndpoint) {\n var $page = $('#landing-page-with-search');\n var endpointUrl = URI(/icfapi/ + apiEndpoint);\n var browserUrl = URI(window.location.toString());\n\n var landingPageId;\n\n if ($page.attr('class').indexOf('award') != -1) {\n landingPageId = $page.data('awardLandingPageId');\n endpointUrl.setQuery('awardLandingPageId', landingPageId);\n }\n\n if ($page.attr('class').indexOf('client') != -1) {\n landingPageId = $page.data('clientStoryLandingPageId');\n endpointUrl.setQuery('clientStoryLandingPageId', landingPageId);\n }\n\n if ($page.attr('class').indexOf('event') != -1) {\n landingPageId = $page.data('eventLandingPageId');\n endpointUrl.setQuery('eventLandingPageId', landingPageId);\n }\n\n if ($page.attr('class').indexOf('news') != -1) {\n landingPageId = $page.data('newsLandingPageId');\n endpointUrl.setQuery('newsLandingPageId', landingPageId);\n if (window.column) {\n endpointUrl.setQuery('column', window.column);\n } \n }\n\n if ($page.attr('class').indexOf('person') != -1) {\n landingPageId = $page.data('personIndexPageId');\n endpointUrl.setQuery('contextItemId', landingPageId);\n }\n\n if (window.rootInsightItemId && window.rootInsightItemId.length) {\n endpointUrl.setQuery(\"contextItemId\", window.rootInsightItemId);\n }\n\n if (window.contentLabels && window.contentLabels.length) {\n var joinedContentLabels = window.contentLabels.join('|');\n\n if (joinedContentLabels.length) {\n endpointUrl.setQuery('types', joinedContentLabels);\n browserUrl.setQuery('types', joinedContentLabels);\n }\n }\n else {\n browserUrl.removeQuery('types');\n }\n\n if (window.topics && window.topics.length) {\n var joinedTopics = window.topics.join('|');\n\n if (joinedTopics.length) {\n endpointUrl.setQuery(\"topics\", joinedTopics);\n browserUrl.setQuery('topics', joinedTopics);\n }\n }\n else {\n browserUrl.removeQuery('topics');\n }\n\n if (window.regions && window.regions.length) {\n var joinedRegions = window.regions.join('|');\n\n if (joinedRegions.length) {\n endpointUrl.setQuery(\"regions\", joinedRegions);\n browserUrl.setQuery(\"regions\", joinedRegions);\n }\n }\n else {\n browserUrl.removeQuery('regions');\n }\n\n if (window.page > 1) {\n endpointUrl.setQuery('page', window.page);\n browserUrl.setQuery('page', window.page);\n }\n else {\n endpointUrl.removeQuery('page');\n browserUrl.removeQuery('page');\n }\n\n if (window.pastevents == true) {\n endpointUrl.setQuery('pastevents', true);\n browserUrl.setQuery('pastevents', true);\n }\n else {\n browserUrl.removeQuery('pastevents');\n }\n \n if (window.topicMatchType && window.topicMatchType.length) {\n endpointUrl.setQuery(\"topicmatchtype\", window.topicMatchType);\n browserUrl.setQuery(\"topicmatchtype\", window.topicMatchType);\n }\n else {\n browserUrl.removeQuery('topicmatchtype');\n }\n\n if($($page).attr('class').indexOf('landing--filtered') != -1) {\n history.replaceState({}, '', browserUrl.toString());\n \n $.ajax({\n url: endpointUrl.toString(),\n success: function (result) {\n if (cb) {\n cb(result);\n }\n },\n error: function (xhr, status, error) {\n return { 'error': error };\n }\n });\n }\n else if ($page.attr('class').indexOf('award') != -1) {\n window.location = browserUrl.toString();\n }\n else {\n history.replaceState({}, '', browserUrl.toString());\n\n $.ajax({\n url: endpointUrl.toString(),\n success: function (result) {\n if (cb) {\n cb(result);\n }\n }\n });\n }\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $container = $('.event-landing__cta-container');\n\n if ($container.length) {\n var $cta = $container.find('.event-landing__cta');\n\n $cta.click(function () {\n insertResults(apiEndpoint);\n });\n }\n};","module.exports = function () {\n var calculateSpeed = function (distance) {\n return distance / 3000 * 1000;\n };\n\n var $page = $(\"div[class*='landing']\")[0];\n\n $($page).find(\"[class*='landing__table-of-contents'] li a\").click(function () {\n var targetAnchor = $(this).data('contentsTarget');\n var targetName = $(this).data('contentsName');\n var targetIndex = $(this).data('contentsIndex');\n\n var $targetElement = $('#' + targetAnchor);\n if ($targetElement.length) {\n var baseOffset = ICF.Utils.Breakpoints.IsDesktop() ? 0 : 80;\n var offset = $targetElement.offset().top - baseOffset;\n\n var distance = Math.abs($(window).scrollTop() - offset);\n\n var speed = calculateSpeed(distance);\n\n $([document.documentElement, document.body]).animate({\n scrollTop: offset\n }, speed);\n }\n\n var $nearestUl = $(this).closest(\"[class*='landing__table-of-contents']\").find('ul');\n $nearestUl.removeClass(function(index, className) {\n return (className.match(/landing__table-of-contents--open$/))\n });\n\n $contentActive = $nearestUl.siblings(\"[class*='landing__table-of-contents-active']\");\n\n $contentActive.find(\"[class*='landing__table-of-contents-active__name']\").text(targetName);\n $contentActive.find(\"[class*='landing__table-of-contents-active__index']\").text(targetIndex);\n\n return false;\n });\n\n $(\"[class*='landing__table-of-contents-active']\").click(function () {\n var pageLandingClass = $($page).attr('class').split(' ').shift();\n var nameOfClass = pageLandingClass + '__table-of-contents--open';\n\n $(this).siblings('ul').first().toggleClass(nameOfClass);\n\n return false;\n });\n\n if ($(\"[class*='landing__table-of-contents']\").length) {\n var resize = function () {\n var $list = $(\"[class*='landing__table-of-contents'] ul\");\n var height = 24;\n $list.find('li').each(function (i, elem) {\n height += $(elem).outerHeight(true);\n });\n $list.css('height', height + 'px');\n };\n resize();\n $(window).resize(function () {\n requestAnimationFrame(resize);\n });\n\n Stickyfill.add($(\"[class*='landing__table-of-contents']\")[0]);\n }\n\n var determineCurrentActiveSection = function () {\n var currentPagePosition = $(window).scrollTop();\n\n var targetAnchors = $('[data-contents-target]');\n\n var targets = [];\n targetAnchors.each(function () {\n var targetAnchor = $(this).data('contentsTarget');\n var $target = $('#' + targetAnchor);\n\n targets.push($target);\n });\n\n var $currentActiveSection = null;\n var currentActiveSectionIndex = 0;\n\n for (var i = 0; i < targets.length - 1; ++i) {\n var navHeight = $('.main-header').height();\n var tableOfContentsHeight = $(\"[class*='landing__table-of-contents']\").outerHeight();\n var pageOffset = navHeight + tableOfContentsHeight;\n\n var currentItemPosition = targets[i].offset().top - pageOffset;\n var nextItemPosition = targets[i + 1].offset().top - pageOffset;\n\n if (currentPagePosition < currentItemPosition || currentPagePosition < nextItemPosition) {\n $currentActiveSection = targets[i];\n break;\n }\n\n ++currentActiveSectionIndex;\n }\n\n if ($currentActiveSection === null) {\n $currentActiveSection = targets[targets.length - 1];\n }\n\n var activeTarget = $(targetAnchors[currentActiveSectionIndex]);\n\n var activeName = activeTarget.data('contentsName');\n var activeIndex = activeTarget.data('contentsIndex');\n\n var $tableOfContents = $(\"[class*='landing__table-of-contents-active']\");\n $tableOfContents.find(\"[class*=landing__table-of-contents-active__name']\").text(activeName);\n $tableOfContents.find(\"[class*=landing__table-of-contents-active__index']\").text(activeIndex);\n };\n\n $(document).scroll(function () {\n requestAnimationFrame(determineCurrentActiveSection);\n });\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $page = $('#landing-page-with-search');\n\n if (!$page.length) {\n return;\n }\n\n $page.find('.dropdown-filters-info__item-close').click(function (e) {\n e.preventDefault();\n\n var $tagClose = $(this);\n var $tag = $tagClose.closest('.dropdown-filters-info__item');\n\n var type = $tag.data('type');\n var val = $tag.data('value');\n\n if (type === 'region') {\n var index = window.regions.indexOf(val);\n if (index > -1) {\n window.regions.splice(index, 1);\n\n var regionFilters;\n\n if(window.ICF.Utils.Breakpoints.IsAtLeastDesktopSm()) {\n if (window.$topicContentDesktopContent) {\n regionFilters = window.$regionContentDesktopContent;\n }\n }\n else {\n if ($('#RegionFilteringModal').length) {\n regionFilters = $('#RegionFilteringModal');\n }\n else if ($('#person-index__region-dropdown__touch-content').length){\n regionFilters = $('#person-index__region-dropdown__touch-content');\n }\n }\n\n if (regionFilters) {\n regionFilters.find('input[value=\"' + val + '\"]').attr('checked', false);\n\n var $checkboxes = regionFilters.find('input[type=\"checkbox\"]');\n var isAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n isAnyChecked = true;\n }\n });\n\n if (!isAnyChecked) {\n regionFilters.find('.popover__cta--reset').addClass('popover__cta--hidden');\n $('.dropdown-filter--region').removeClass('dropdown-filter--active');\n }\n }\n }\n }\n else if (type === 'topic') {\n var index = window.topics.indexOf(val);\n if (index > -1) {\n window.topics.splice(index, 1);\n\n var topicFilters;\n \n if(window.ICF.Utils.Breakpoints.IsAtLeastDesktopSm()) {\n if (window.$topicContentDesktopContent) {\n topicFilters = window.$topicContentDesktopContent;\n }\n }\n else {\n if ($('#TopicFilteringModal')) {\n topicFilters = $('#TopicFilteringModal');\n } \n }\n\n topicFilters.find('input[value=\"' + val + '\"]').attr('checked', false);\n\n var $checkboxes = topicFilters.find('input[type=\"checkbox\"]');\n var isAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n isAnyChecked = true;\n }\n });\n\n if (!isAnyChecked) {\n topicFilters.find('.popover__cta--reset').addClass('popover__cta--hidden');\n $('.dropdown-filter--topic').removeClass('dropdown-filter--active');\n }\n }\n }\n else if (type === 'contentLabel') {\n var index = window.contentLabels.indexOf(val);\n if (index > -1) {\n window.contentLabels.splice(index, 1);\n\n var contentFilters;\n \n if(window.ICF.Utils.Breakpoints.IsAtLeastDesktopSm()) {\n if (window.$contentLabelContentDesktopContent) {\n contentFilters = window.$contentLabelContentDesktopContent;\n }\n }\n else {\n if ($('#ContentLabelFilteringModal')) {\n contentFilters = $('#ContentLabelFilteringModal');\n } \n }\n\n if (contentFilters) {\n contentFilters.find('input[value=\"' + val + '\"]').attr('checked', false);\n\n var $checkboxes = contentFilters.find('input[type=\"checkbox\"]');\n var isAnyChecked = false;\n\n $checkboxes.each(function () {\n if ($(this).is(':checked')) {\n isAnyChecked = true;\n }\n });\n\n if (!isAnyChecked) {\n contentFilters.find('.popover__cta--reset').addClass('popover__cta--hidden');\n $('.dropdown-filter--content-label').removeClass('dropdown-filter--active');\n }\n }\n }\n }\n\n if (window.regions && !window.regions.length && window.topics && !window.topics.length && window.contentLabels && !window.contentLabels.length) {\n $('.dropdown-filters').removeClass('dropdown-filters--active');\n }\n\n window.page = 1;\n window.topicMatchType = '';\n\n insertResults(apiEndpoint);\n });\n};","module.exports = function () { \n if ($('#landing-page-with-search .dropdown-filters--active').length) {\n $('#landing-page-with-search ~ div').addClass('hidden');\n }\n else {\n $('#landing-page-with-search ~ div').removeClass('hidden');\n }\n};","module.exports = function () { \n if ($('.large-carousel-module').length === 0) {\n return;\n }\n\n var stopAutoPlay = function (swiper, $swiperPagination) { \n $swiperPagination.removeClass('swiper-pagination--autoplay-active'); \n }\n\n var startAutoPlay = function (swiper, $swiperPagination) { \n $swiperPagination.addClass('swiper-pagination--autoplay-active');\n }\n\n var slideChangeTransitionEndEvent = function (swiper) { \n var $activeSlide = $(swiper.el).find('.swiper-slide-active'); \n var activeSlideIndex = $activeSlide.data('swiperSlideIndex');\n $(swiper.el).closest('.large-carousel-module').find('.swiper-pagination-bullet-progress-bar').each(function (index) {\n if (index < activeSlideIndex) {\n this.style.setProperty(\"--progress\", 1)\n }\n else {\n this.style.setProperty(\"--progress\", 0)\n }\n }); \n }\n $('.large-carousel-module').each(function () { \n var $swiperPagination = $(this).find(\".swiper-pagination\"); \n\n var largeCarouselSwiper = new Swiper('.swiper', { \n autoplay: {\n delay: 6000,\n pauseOnMouseEnter: true,\n disableOnInteraction: true,\n },\n direction: 'horizontal',\n loop: true,\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n on: {\n autoplayStart(swiper) {\n startAutoPlay(swiper, $swiperPagination);\n\n },\n autoplayStop(swiper) {\n stopAutoPlay(swiper, $swiperPagination);\n\n },\n autoplayTimeLeft(s, time, progress) {\n if (progress < 0) { \n $swiperPagination.find('.swiper-pagination-bullet-active .swiper-pagination-bullet-progress-bar')[0].style.setProperty(\"--progress\", 1);\n }\n else if (progress > 1)\n {\n $swiperPagination.find('.swiper-pagination-bullet-active .swiper-pagination-bullet-progress-bar')[0].style.setProperty(\"--progress\", 0);\n }\n else {\n $swiperPagination.find('.swiper-pagination-bullet-active .swiper-pagination-bullet-progress-bar')[0].style.setProperty(\"--progress\", 1 - progress);\n } \n },\n slideChangeTransitionStart(swiper) {\n slideChangeTransitionEndEvent(swiper);\n }, \n },\n pagination: {\n el: \".swiper-pagination\",\n clickable: true,\n renderBullet: function (index, className) {\n return '
'\n }\n },\n })\n });\n\n var syncAutoplayWithScreenSize = function () {\n if (!ICF.Utils.Breakpoints.IsAtLeastDesktopSm()) {\n $('.large-carousel-module .swiper').each(function () {\n this.swiper.autoplay.stop();\n });\n }\n else {\n $('.large-carousel-module .swiper').each(function () {\n this.swiper.autoplay.start();\n });\n }\n };\n\n syncAutoplayWithScreenSize()\n\n $(window).resize(function () {\n syncAutoplayWithScreenSize();\n });\n};","module.exports = function () {\n var $largeImage = $('.large-image');\n\n var adjustCaptionWidth = function () {\n $largeImage.each(function (index, el) {\n var $item = $(el);\n\n var $image = $item.find('.large-image-image');\n if ($image.length > 1) {\n if (ICF.Utils.Breakpoints.IsMobile()) {\n $image = $item.find('.large-image-image--mobile');\n }\n else {\n $image = $item.find('.large-image-image--desktop');\n }\n }\n \n var $description = $item.find('.large-image-description');\n\n if ($image.length && $description.length) {\n\n var imageItem = $image[0];\n\n if ((imageItem.complete && imageItem.naturalHeight !== 0) || ($image.data('lottieSrc') !== undefined)) {\n var imageWidth = $image.width();\n\n $description.css({\n 'width': imageWidth + 'px'\n });\n }\n else {\n $image.load(function () {\n var imageWidth = $image.width();\n\n $description.css({\n 'width': imageWidth + 'px'\n });\n }); \n }\n }\n });\n };\n\n if ($largeImage.length) {\n adjustCaptionWidth();\n\n $(window).resize(function() {\n requestAnimationFrame(adjustCaptionWidth);\n });\n }\n};","module.exports = function() {\n if (document.getElementsByClassName('load-more-content')[0]) {\n var $loadMoreButton = $('.load-more-content .load-more-text');\n $ul = $(\".featured-grid-list\");\n maxItems = $ul.attr(\"data-items\");\n\n if ($ul.find(\"li\").length > maxItems) {\n $(\".load-more-content\").show();\n }\n $loadMoreButton.click(function() {\n var idx = $ul.find(\"li.hidden\").index();\n for (var i = 0; i < maxItems; i++) {\n if ($ul.find(\"li\").eq(idx + i).length) {\n $ul.find(\"li\").eq(idx + i).removeClass(\"hidden\");\n }\n }\n if ($ul.find(\"li.hidden\").length <= 0) {\n $loadMoreButton.parent().hide();\n }\n });\n }\n};","module.exports = function () {\n if ($('.location-directory').length === 0) {\n return;\n }\n\n var loadMap = function ($placeholder, location) {\n var mapOptions = {\n zoom: 13,\n key: window.ICFGoogleMapsKey,\n center: location,\n size: '238x280',\n markers: location\n };\n\n var mapOptionsQuery = Object.keys(mapOptions).filter(function (key) {\n return mapOptions.hasOwnProperty(key);\n }).map(function (key) {\n return key + '=' + encodeURIComponent(mapOptions[key].toString());\n }).join('&');\n\n var $mapItem = $('

');\n $placeholder.parent().append($mapItem);\n\n $mapItem[0].onload = function() {\n $placeholder.remove();\n };\n };\n\n $('.location-directory__location-link').click(function () {\n $(this).closest('.location-directory__container').find('.location-directory__tab-content-active').removeClass('location-directory__tab-content-active')\n $(this).closest('.location-directory__tab-content').addClass('location-directory__tab-content-active');\n \n var $clickedLocation = $(this).parents('.location-directory__location').first();\n\n $clickedLocation.find('[data-location]').each(function () {\n var $container = $(this);\n var $placeholder = $container.find('.location-directory__location-details-map-image-placeholder');\n if ($placeholder.length) {\n loadMap($placeholder, $container.data('location'));\n }\n });\n });\n\n $('.location-directory__location-link').modaal({ custom_class: \"location-directory__detail-modal\" });\n\n var id = window.location.hash.substring(1);\n\n if (id.length) { \n var $locationLink = $('[href=\"#' + id + '\"]').first(); \n\n if ($locationLink.length) { \n var $directoryTabs = $locationLink.closest('.location-directory__container').find('.location-directory__tabs').first();\n $directoryTabs.find('.location-directory__tab-active').removeClass('location-directory__tab-active'); \n var region = $locationLink.closest('.location-directory__tab-content').data('id'); \n $directoryTabs.find('[data-reference=\"' + region + '\"]').addClass('location-directory__tab-active');\n $locationLink.click();\n } \n\n history.replaceState(\"\", document.title, window.location.pathname + window.location.search);\n }\n\n $('.location-directory__tab').click(function () {\n $('.location-directory__tab-active').removeClass('location-directory__tab-active'); \n\n $(this).addClass('location-directory__tab-active');\n\n var reference = $(this).data('reference');\n var $referencedTab = $('[data-id=\"' + reference + '\"]');\n\n $('.location-directory__tab-content-active').removeClass('location-directory__tab-content-active');\n $referencedTab.addClass('location-directory__tab-content-active');\n }); \n};","module.exports = {\n 'Listing': require('./listing'),\n 'Directory': require('./directory')\n};","module.exports = function () {\n if ($('.locations-listing').length === 0) {\n return;\n }\n\n var loadMap = function ($placeholder, location) {\n var mapOptions = {\n zoom: 13,\n key: window.ICFGoogleMapsKey,\n center: location,\n size: '247x163',\n markers: location\n };\n\n var mapOptionsQuery = Object.keys(mapOptions).filter(function (key) {\n return mapOptions.hasOwnProperty(key);\n }).map(function (key) {\n return key + '=' + encodeURIComponent(mapOptions[key].toString());\n }).join('&');\n\n var $mapItem = $('

');\n $placeholder.parent().append($mapItem);\n\n $mapItem[0].onload = function() {\n $placeholder.remove();\n };\n };\n\n var id = window.location.hash.substring(1);\n\n if (id.length) {\n $('.locations-listing-tab-content-location-active').removeClass('locations-listing-tab-content-location-active');\n var $locationItem = $('[data-id=\"' + id + '\"]');\n $locationItem.addClass('locations-listing-tab-content-location-active');\n\n $locationItem.find('[data-location]').each(function () {\n var $container = $(this);\n var $placeholder = $container.find('.locations-listing-tab-content-location-image-placeholder');\n if ($placeholder.length) {\n loadMap($placeholder, $container.data('location'));\n }\n });\n\n $('.locations-listing-tab-content-active').removeClass('locations-listing-tab-content-active');\n var $regionTabContent = $locationItem.parents('.locations-listing-tab-content').first();\n $regionTabContent.addClass('locations-listing-tab-content-active');\n\n $('.locations-listing-tab-active').removeClass('locations-listing-tab-active');\n var $tabItem = $('[data-reference=\"' + $regionTabContent.data('id') + '\"]');\n $tabItem.addClass('locations-listing-tab-active');\n\n history.replaceState(\"\", document.title, window.location.pathname + window.location.search);\n }\n\n $('.locations-listing-tab').click(function() {\n $('.locations-listing-tab-active').removeClass('locations-listing-tab-active');\n $(this).addClass('locations-listing-tab-active');\n\n var reference = $(this).data('reference');\n var $referencedTab = $('[data-id=\"' + reference + '\"]');\n\n $('.locations-listing-tab-content-active').removeClass('locations-listing-tab-content-active');\n $referencedTab.addClass('locations-listing-tab-content-active');\n });\n\n $('.locations-listing-tab-content-location-title').click(function () {\n var $clickedLocation = $(this).parents('.locations-listing-tab-content-location').first();\n\n if ($clickedLocation.hasClass('locations-listing-tab-content-location-active')) {\n $clickedLocation.removeClass('locations-listing-tab-content-location-active');\n } else {\n $('.locations-listing-tab-content-location-active').removeClass('locations-listing-tab-content-location-active');\n $clickedLocation.addClass('locations-listing-tab-content-location-active');\n\n $clickedLocation.find('[data-location]').each(function () {\n var $container = $(this);\n var $placeholder = $container.find('.locations-listing-tab-content-location-image-placeholder');\n if ($placeholder.length) {\n loadMap($placeholder, $container.data('location'));\n }\n });\n }\n });\n\n var resortLocations = function($locations, $parent) {\n $locations.sort(function(a, b) {\n if (!$(a).is(':visible')) {\n return 1;\n }\n else if (!$(b).is(':visible')) {\n return -1;\n } else {\n return $(a).find('.locations-listing-tab-content-location-title').text() >\n $(b).find('.locations-listing-tab-content-location-title').text() ? 1: -1;\n }\n }).appendTo($parent);\n }\n\n $('.locations-listing-tab-content-subregion').click(function() {\n var $container = $(this).parents('.locations-listing-tab-content').first();\n\n $container.find('.locations-listing-tab-content-subregion-selected').removeClass('locations-listing-tab-content-subregion-selected');\n $container.find('.locations-listing-tab-content-subregion[data-subregion-id=\"' + $(this).data('subregionId') + '\"]').addClass('locations-listing-tab-content-subregion-selected');\n\n if ($(this).data('subregionId') === 'all') {\n $container.find('.locations-listing-tab-content-location').show();\n } else {\n $container.find('.locations-listing-tab-content-location').hide();\n $container.find('.locations-listing-tab-content-location[data-subregion-id=\"' + $(this).data('subregionId') + '\"]').show();\n }\n\n var $locations = $container.find('.locations-listing-tab-content-location');\n\n resortLocations($locations, $locations.first().parent());\n $(window).resize();\n });\n\n var resizeLocationInfo = function() {\n $('.locations-listing-tab-content-location').each(function () {\n var $location = $(this);\n var height = $location.find('.locations-listing-tab-content-location-content').outerHeight() + 56;\n $location.css('height', height + 'px');\n });\n };\n\n resizeLocationInfo();\n setTimeout(resizeLocationInfo, 100);\n $(window).resize(resizeLocationInfo);\n};","module.exports = function () {\n\n if ($('.logos-module').length === 0) {\n return;\n } \n \n $('.logos-module__load-more-button').click(function () { \n var $container = $(this).closest('.logos-module__container'); \n var $logosContainer = $container.find('.logos-module__logos-container'); \n var $nextHiddenLogos = $logosContainer.find('.logos-module__logo--mobile-hidden').slice(0, 4); \n $nextHiddenLogos.removeClass('logos-module__logo--mobile-hidden');\n var $remainingHiddenLogos = $logosContainer.find('.logos-module__logo--mobile-hidden'); \n if (!$remainingHiddenLogos.length) { \n $(this).addClass('logos-module__load-more-button--hidden');\n }\n }); \n};","module.exports = function () {\n var $lottieFiles = $('[data-lottie-src]');\n\n var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n\n var lottieIeFixer = function (el) {\n if (!isIE11) {\n return;\n }\n\n var width = el.clientWidth;\n var svg = el.querySelector('svg');\n\n var ratio = width / svg.width.baseVal.value;\n\n var newWidth = width + 'px';\n var newHeight = (svg.height.baseVal.value * ratio) + 'px';\n\n svg.style.width = newWidth;\n svg.style.height = newHeight;\n };\n\n var isInViewport = function (el) {\n var bounding = el.getBoundingClientRect();\n var isTallerThanViewport = bounding.height > window.innerHeight;\n var isInBounds = false;\n if (isTallerThanViewport) {\n isInBounds = (bounding.top <= window.innerHeight / 2 && bounding.left >= 0 && bounding.right <= window.innerWidth && bounding.bottom > window.innerHeight);\n } else {\n isInBounds = (bounding.top >= 0 && bounding.left >= 0 && bounding.right <= window.innerWidth && bounding.bottom <= window.innerHeight);\n }\n return isInBounds;\n };\n\n $lottieFiles.each(function () {\n var $lottieFile = $(this);\n var el = $lottieFile[0];\n var path = $lottieFile.data('lottieSrc');\n\n var animation = lottie.loadAnimation({\n container: el,\n renderer: 'svg',\n loop: true,\n autoplay: false,\n path: path\n });\n\n animation.addEventListener('data_ready', function () {\n if (isInViewport(el)) {\n animation.play();\n }\n else {\n var hasPlayed = false;\n\n $(window).scroll(function () {\n if (!hasPlayed) {\n if (isInViewport(el)) {\n animation.play();\n hasPlayed = true;\n }\n }\n });\n }\n });\n\n if (isIE11) {\n animation.addEventListener('DOMLoaded', function () {\n lottieIeFixer(el);\n });\n\n $(window).resize(function () {\n requestAnimationFrame(function () {\n lottieIeFixer(el);\n });\n });\n }\n });\n};","module.exports = function (page, totalPages, classPrefix) {\n var pagination = document.createElement('div');\n pagination.className = classPrefix;\n\n var paginationContainer = document.createElement('div');\n paginationContainer.className = classPrefix + '__container';\n\n if (page > 0) {\n var prev = document.createElement('a');\n prev.className = classPrefix + '__prev';\n prev.href = \"#\";\n prev.setAttribute('data-pagination-page', page);\n \n var prevText = document.createTextNode(\"Page \" + page);\n prev.appendChild(prevText);\n\n paginationContainer.appendChild(prev);\n }\n\n var current = document.createElement('span');\n current.className = classPrefix + '__current';\n var currentText = document.createTextNode(page + 1);\n current.appendChild(currentText);\n paginationContainer.appendChild(current);\n\n if (page < totalPages - 1) {\n var next = document.createElement('a');\n next.className = classPrefix + '__next';\n next.href = \"#\";\n next.setAttribute('data-pagination-page', page + 2);\n\n var nextText = document.createTextNode(\"Page \" + (page + 2));\n next.appendChild(nextText);\n\n paginationContainer.appendChild(next);\n }\n\n var subpagination = document.createElement('div');\n subpagination.className = classPrefix + '__subpagination';\n\n var subpaginationText = document.createTextNode('Jump to page');\n subpagination.appendChild(subpaginationText);\n\n if (page > 0) {\n var first = document.createElement('a');\n first.href = '#';\n first.setAttribute('data-pagination-page', '1');\n first.className = classPrefix + '__subpagination-link';\n\n var firstText = document.createTextNode('First');\n first.appendChild(firstText);\n\n subpagination.appendChild(first);\n }\n\n if (page + 1 < totalPages) {\n var inBetweenSubPaginationLinkStart = page + 3;\n var inBetweenSubPaginationLinkEnd = Math.min(page + 7, totalPages - 1);\n\n if (inBetweenSubPaginationLinkStart <= inBetweenSubPaginationLinkEnd) {\n if (page > 0) {\n var spacingFirst = document.createElement('span');\n spacingFirst.className = classPrefix + '__subpagination-spacing';\n subpagination.appendChild(spacingFirst);\n }\n\n for (var i = inBetweenSubPaginationLinkStart; i <= inBetweenSubPaginationLinkEnd; ++i) {\n var link = document.createElement('a');\n link.href = '#';\n link.setAttribute('data-pagination-page', i);\n link.className = classPrefix + '__subpagination-link';\n\n var linkText = document.createTextNode(i);\n link.appendChild(linkText);\n\n subpagination.appendChild(link);\n }\n }\n\n var spacingLast = document.createElement('span');\n spacingLast.className = classPrefix + '__subpagination-spacing';\n subpagination.appendChild(spacingLast);\n\n var last = document.createElement('a');\n last.href = '#';\n last.setAttribute('data-pagination-page', totalPages);\n last.className = classPrefix + '__subpagination-link';\n\n var lastText = document.createTextNode('Last');\n last.appendChild(lastText);\n\n subpagination.appendChild(last);\n }\n\n paginationContainer.appendChild(subpagination);\n\n pagination.appendChild(paginationContainer);\n\n return pagination;\n};","module.exports = {\n 'GeneratePagination': require('./generatePagination')\n};","module.exports = function () {\n if ($('.paragraph').length === 0) {\n return;\n }\n\n $('.paragraph__modaal-link').modaal({ custom_class: \"paragraph__modaal-wrapper\", type: \"image\" });\n};","module.exports = function () {\n if ($('.parallax-module__parallax-block').length) {\n\n var speed = 112;\n var maxDistance = 112 * 2;\n var multiplier = 1;\n\n var calculateParallax = function () {\n $('.parallax-module__parallax-block:not(.parallax-module__parallax-block--full-width):not(.parallax-module__parallax-block--full-height):not(.parallax-module__parallax-block--pinned)').each(function () {\n var $parallaxElement = $(this);\n var boundingClientRect = $parallaxElement[0].getBoundingClientRect();\n var midpointOfElement = boundingClientRect.top -\n parseInt($parallaxElement.css('top')) +\n boundingClientRect.height / 2;\n var midpointOfScreen = window.innerHeight / 2;\n\n var distanceFromMidpoint = midpointOfScreen - midpointOfElement;\n var offset = distanceFromMidpoint / window.innerHeight * (-speed * multiplier);\n\n if (offset < 0) {\n offset = Math.max(offset, -maxDistance);\n }\n else {\n offset = Math.min(offset, maxDistance);\n }\n\n var translatedOffset = \"translateY(\" + offset + \"px)\";\n \n $parallaxElement.css('transform', translatedOffset);\n });\n };\n\n $(window).scroll(function () {\n requestAnimationFrame(calculateParallax);\n });\n\n calculateParallax();\n\n var $squareParallaxBlocks = $('.parallax-module__parallax-block--square');\n\n var makeBoxesSquare = function () {\n if (ICF.Utils.Breakpoints.IsAtLeastTablet()) {\n $squareParallaxBlocks.each(function () {\n var height = $(this).find('.parallax-module__parallax-block__inner').height();\n var width = $(this).width();\n\n if (height < width) {\n $(this).css('height', (width + 'px'));\n } else {\n $(this).css('height', '');\n }\n });\n }\n else {\n $squareParallaxBlocks.css('height', '');\n }\n };\n\n if ($squareParallaxBlocks.length) {\n makeBoxesSquare();\n\n $(window).resize(function () {\n makeBoxesSquare();\n });\n }\n\n var $absolutePositionedParallaxBlocks = $('.parallax-module__parallax-block--full-width, .parallax-module__parallax-block--pinned');\n var $contentHeightBlocks = $('.parallax-module__container--content-height');\n\n var adjustContentHeightBlocks = function () {\n if (ICF.Utils.Breakpoints.IsMobile()) {\n $contentHeightBlocks.css('height', '');\n }\n else {\n $absolutePositionedParallaxBlocks.each(function () {\n var $block = $(this);\n\n var $parent = $block.closest('.parallax-module__container--content-height');\n\n if ($parent.length) {\n var blockHeight = $block.outerHeight(true);\n\n $parent.css('height', (blockHeight + 'px'));\n }\n });\n }\n };\n\n if ($absolutePositionedParallaxBlocks.length && $contentHeightBlocks.length) {\n adjustContentHeightBlocks();\n\n $(window).resize(function() {\n requestAnimationFrame(adjustContentHeightBlocks);\n });\n }\n }\n};","module.exports = function () {\n if ($('.person-detail').length) {\n var $quote = $('.person-detail-content__quote');\n var $bio = $('.person-detail-content__bio');\n\n if ($quote.length && $bio.length) {\n var $paragraphs = $bio.find('p');\n\n if ($paragraphs.length > 1) {\n var $firstParagraph = $paragraphs.first();\n\n $firstParagraph.after($quote);\n }\n }\n\n $('.person-detail-header__cta').modaal({\n overlay_opacity: 0.8,\n close_text: 'esc',\n custom_class: 'modaal-wrapper--spacingless modaal-wrapper--no-close-btn',\n content_source: '#marketoModalContent',\n after_open: function(modal_wrapper) {\n var $content = $(modal_wrapper);\n\n var $closeCTA = $content.find('.person-detail-modal__close-cta');\n\n $closeCTA.click(function () {\n $('.person-detail-header__cta').modaal('close');\n });\n }\n });\n\n $('.person-detail-header__cta').click(function (e) {\n e.preventDefault();\n\n $(this).modaal('open');\n });\n\n var $showMoreNewsCTA = $('.person-detail-featured-news__show-all-cta');\n $showMoreNewsCTA.click(function (e) {\n e.preventDefault();\n\n $('.person-detail-featured-news-item').removeClass('person-detail-featured-news-item--hidden');\n $('.person-detail-featured-news__show-all-cta-wrapper').remove();\n });\n\n var $showMoreInsightsCTA = $('.person-detail-insights__show-all-cta');\n $showMoreInsightsCTA.click(function (e) {\n e.preventDefault();\n\n $('.person-detail-insights').find('.universal-grid-item').removeClass('universal-grid-item--hidden');\n $('.person-detail-insights__show-all-cta-wrapper').remove();\n });\n\n var channelTooltip = tippy('.person-detail-header__organization--with-tooltip', {\n maxWidth: '100%',\n content: document.getElementById('person-detail-header__organization-content'),\n placement: 'bottom-start',\n flip: false,\n onMount: function (instance) {\n var $instance = $(instance.popper);\n var $closeCTA = $instance.find('.popover__close-cta');\n $closeCTA.unbind('click');\n\n $closeCTA.click(function () {\n instance.hide();\n });\n }\n })[0];\n }\n};","module.exports = function () {\n $(document).on('click', 'a[data-personalization-rule-name]', function () {\n try {\n var ruleName = $(this).data('personalizationRuleName');\n var moduleType = $(this).data('personalizationModuleType');\n\n var targetUrl = $(this).attr('href');\n\n if (targetUrl.indexOf('#') !== 0 && targetUrl.indexOf('http') === -1) {\n targetUrl = window.location.protocol + '//' + window.location.hostname + targetUrl;\n }\n\n dataLayer.push({\n event: 'Personalized Click',\n moduleType: moduleType,\n pageUrl: window.location.href,\n targetUrl: targetUrl,\n personalizationRuleName: ruleName\n });\n }\n catch (e) {\n console.error('Failed to send personalization error to datalayer: ' + e.message);\n }\n });\n};","module.exports = function (el) {\n var $el = $(el);\n var href = $el.attr('href');\n var id = $el.data('popupModalId');\n var modalClass = $el.data('popupModalClass');\n var cookieExpiration = $el.data('popupModalHideForDaysAfterDismissal');\n\n if (!modalClass) {\n modalClass = 'popup-modal';\n }\n\n var modalTrigger = $el.modaal({\n content_source: href,\n type: 'inline',\n overlay_opacity: .8,\n custom_class: modalClass,\n after_open: function(modal_wrapper) {\n ICF.Modules.PopupModal.RegisterPopupCTAEvents(modal_wrapper, id, $el, cookieExpiration);\n require('./trigger-datalayer-event')($el, 'Always');\n },\n before_close: function () {\n ICF.Modules.PopupModal.SetPopupCookie(id, cookieExpiration);\n },\n start_open: true\n });\n};","module.exports = function ($el) {\n $el.modaal('close');\n};","module.exports = {\n 'Init': require('./init'),\n 'AlwaysPopup': require('./always-popup'),\n 'TimeOnPagePopup': require('./time-on-page-popup'),\n 'TimeOnSitePopup': require('./time-on-site-popup'),\n 'ScrollDistancePopup': require('./scroll-distance-popup'),\n 'SetPopupCookie': require('./set-popup-cookie'),\n 'RegisterPopupCTAEvents': require('./register-popup-cta-events'),\n 'ClosePopup': require('./close-popup')\n};","module.exports = function () {\n var $popupTriggers = $('.popup-modal-trigger');\n\n $popupTriggers.each(function (index, popupTrigger) {\n var $popupTrigger = $(popupTrigger);\n var triggerType = $popupTrigger.data('popupModalTriggerType');\n\n if (triggerType == 'always') {\n ICF.Modules.PopupModal.AlwaysPopup($popupTrigger);\n }\n else if (triggerType == 'time-on-page') {\n ICF.Modules.PopupModal.TimeOnPagePopup($popupTrigger);\n }\n else if (triggerType == 'time-on-site') {\n ICF.Modules.PopupModal.TimeOnSitePopup($popupTrigger);\n }\n else if (triggerType == 'scroll-distance') {\n ICF.Modules.PopupModal.ScrollDistancePopup($popupTrigger);\n }\n }); \n};","module.exports = function (modal, id, $el, cookieExpiration) {\n var $modal = $(modal);\n\n var $successCTA = $modal.find('.popup-modal__cta--success').first();\n var $dismissCTA = $modal.find('.popup-modal__cta--dismiss').first();\n\n $successCTA.click(function (e) {\n ICF.Modules.PopupModal.SetPopupCookie(id, cookieExpiration);\n ICF.Modules.PopupModal.ClosePopup($el);\n });\n\n $dismissCTA.click(function (e) {\n e.preventDefault();\n ICF.Modules.PopupModal.ClosePopup($el);\n });\n};","module.exports = function (el) {\n var $el = $(el);\n var href = $el.attr('href');\n var id = $el.data('popupModalId');\n var modalClass = $el.data('popupModalClass');\n var cookieExpiration = $el.data('popupModalHideForDaysAfterDismissal');\n\n if (!modalClass) {\n modalClass = 'popup-modal';\n }\n\n var scrollDistance = $el.data('popupModalScrollDistance');\n var initialPosition = $(document).scrollTop();\n var currentPosition;\n\n var modalTrigger = $el.modaal({\n content_source: href,\n type: 'inline',\n overlay_opacity: .8,\n custom_class: modalClass,\n after_open: function (modal_wrapper) {\n ICF.Modules.PopupModal.RegisterPopupCTAEvents(modal_wrapper, id, $el, cookieExpiration);\n require('./trigger-datalayer-event')($el, 'Scroll Distance');\n },\n before_close: function () {\n ICF.Modules.PopupModal.SetPopupCookie(id, cookieExpiration);\n }\n });\n\n var checkPositionIndex = setInterval(function () {\n currentPosition = $(document).scrollTop();\n var distanceTraversed = Math.abs(currentPosition - initialPosition);\n\n if (distanceTraversed >= scrollDistance) {\n modalTrigger.modaal('open');\n clearInterval(checkPositionIndex);\n }\n }, 50);\n};","module.exports = function (id, cookieExpiration) {\n var cookieName = id + \"_Viewed\";\n \n function setCookie(name, value, expiration) {\n\n if (!ICF.Utils.Consent.HasAcceptedFunctional()) { \n return;\n }\n\n var date;\n\n if (expiration != '') {\n date = new Date();\n date.setTime(date.getTime() + (expiration * 24 * 60 * 60 * 1000));\n }\n else {\n date = new Date(2147483647 * 1000);\n }\n\n var expires = \"; expires=\" + date.toUTCString();\n var cookieValue = name + \"=\" + (value || \"\") + expires + \"; path=/\";\n\n document.cookie = cookieValue;\n }\n\n setCookie(cookieName, true, cookieExpiration);\n};","module.exports = function (el) {\n var $el = $(el);\n var href = $el.attr('href');\n var id = $el.data('popupModalId');\n var modalClass = $el.data('popupModalClass');\n var cookieExpiration = $el.data('popupModalHideForDaysAfterDismissal');\n\n if (!modalClass) {\n modalClass = 'popup-modal';\n }\n\n var secondsOnPage = $el.data('popupModalTimeToElapse') * 1000;\n \n var modalTrigger = $el.modaal({\n content_source: href,\n type: 'inline',\n overlay_opacity: .8,\n custom_class: modalClass,\n after_open: function (modal_wrapper) {\n ICF.Modules.PopupModal.RegisterPopupCTAEvents(modal_wrapper, id, $el, cookieExpiration);\n require('./trigger-datalayer-event')($el, 'Time on Page');\n },\n before_close: function () {\n ICF.Modules.PopupModal.SetPopupCookie(id, cookieExpiration);\n }\n });\n\n setTimeout(function() {\n modalTrigger.modaal('open');\n }, secondsOnPage);\n};","module.exports = function (el) {\n var $el = $(el);\n var href = $el.attr('href');\n var id = $el.data('popupModalId');\n var modalClass = $el.data('popupModalClass');\n var cookieExpiration = $el.data('popupModalHideForDaysAfterDismissal');\n\n if (!modalClass) {\n modalClass = 'popup-modal';\n }\n\n var secondsElapsed = $el.data('popupModalTimeElapsed') * 1000;\n var secondsOnSite = $el.data('popupModalTimeToElapse') * 1000;\n\n var modalTrigger = $el.modaal({\n content_source: href,\n type: 'inline',\n overlay_opacity: .8,\n custom_class: modalClass,\n after_open: function (modal_wrapper) {\n ICF.Modules.PopupModal.RegisterPopupCTAEvents(modal_wrapper, id, $el, cookieExpiration);\n require('./trigger-datalayer-event')($el, 'Time on Site');\n },\n before_close: function() {\n ICF.Modules.PopupModal.SetPopupCookie(id, cookieExpiration);\n }\n });\n\n if (secondsOnSite > secondsElapsed) {\n var secondsRemaining = secondsOnSite - secondsElapsed;\n\n setTimeout(function () {\n modalTrigger.modaal('open');\n }, secondsRemaining);\n }\n else {\n modalTrigger.modaal('open');\n }\n};","module.exports = function ($el, triggerType) {\n var name = $el.data('popupModalName');\n\n dataLayer.push({\n event: 'popupOpen',\n triggerType: triggerType,\n name: name\n });\n};","module.exports = {\n 'Init': require('./init'),\n 'UpdateVideoSize': require('./update-video-size')\n};","const updateVideoSize = require('./update-video-size');\n\nmodule.exports = function () {\n\n if ($('.product-hero-module').length === 0) {\n return;\n } \n\n updateVideoSize(); \n\n $(window).resize(function () {\n updateVideoSize();\n });\n};","module.exports = function () {\n $('.product-hero-module').each(function () {\n var $productHeroModule = $(this);\n var $productHeroModuleContentContainer = $productHeroModule.find('.product-hero-module__content-container').first();\n var containerWidth = $productHeroModuleContentContainer.width();\n var containerHeight = $productHeroModuleContentContainer.outerHeight();\n $productHeroModuleContentContainer.find('.product-hero-module__background-video-wrapper').css('height', containerHeight + 'px');\n $productHeroModuleContentContainer.find('.wistia_responsive_padding').css('width', containerWidth + 'px').css('height', containerHeight + 'px').css('padding-top', 0); \n $productHeroModuleContentContainer.find('[id^=\"wistia_chrome\"]').css('width', containerWidth + 'px').css('height', containerHeight + 'px'); \n });\n};","module.exports = {\n 'MobileMenu': require('./mobile-menu'),\n 'MenuLinks': require('./menu-links'),\n 'StickyHeader': require('./sticky-header'),\n};","module.exports = function() {\n $('.pulsepoint-header-nav a, a.hero-overlay').click(function() {\n var $headerLink = $(this);\n if ($headerLink.attr('href').indexOf('#') !== -1) {\n var $targetLink = $('.module-anchor[data-anchor-tag=' + $(this).attr('href').replace('#', '') + ']');\n if ($targetLink.length) {\n var $moduleParent = $targetLink.parentsUntil('body').last();\n var newTopPosition = $moduleParent.offset().top;\n\n var marginTop = parseInt(window.getComputedStyle($moduleParent[0]).getPropertyValue('margin-top')\n .match(/(\\d|\\.|-)+/));\n var paddingTop = parseInt(window.getComputedStyle($moduleParent[0]).getPropertyValue('padding-top')\n .match(/(\\d|\\.|-)+/));\n\n if (!isNaN(marginTop) && marginTop > 0) {\n newTopPosition -= marginTop;\n\n if (!isNaN(paddingTop) && paddingTop > 0) {\n newTopPosition += paddingTop;\n }\n }\n\n var $header = $('.pulsepoint-header');\n $header.removeClass('pulsepoint-header-open');\n\n var $duplicateHeader = $header.clone();\n $duplicateHeader.css('visibility', 'hidden');\n $duplicateHeader.addClass('pulsepoint-header-sticky');\n\n $('body').append($duplicateHeader);\n\n setTimeout(function() {\n var backgroundColor = window.getComputedStyle($duplicateHeader[0])\n .getPropertyValue('background-color');\n\n var isTransparent = false;\n\n if (backgroundColor.indexOf('rgba') === 0) {\n var rgbaRegex = /rgba\\((\\d+),[ ]?(\\d+),[ ]?(\\d+),[ ]?([\\d.]+)\\)/g;\n var matches = rgbaRegex.exec(backgroundColor);\n var alpha = parseFloat(matches[4]);\n\n if ($duplicateHeader.is(':hidden') || alpha <= 0.001) {\n isTransparent = true;\n }\n } else if (backgroundColor === 'transparent') {\n isTransparent = true;\n }\n\n if (!isTransparent) {\n newTopPosition -= $duplicateHeader.outerHeight();\n }\n\n $('html, body').animate({\n scrollTop: newTopPosition\n },\n 750);\n\n setTimeout(function() {\n $duplicateHeader.remove();\n },\n 0);\n },\n 0);\n\n return false;\n }\n }\n });\n};","module.exports = function() {\n $('.pulsepoint-header-open-button').click(function() {\n var $header = $(this).parents('.pulsepoint-header');\n $header.toggleClass('pulsepoint-header-open');\n return false;\n });\n};","module.exports = function () {\n var $header = $('.pulsepoint-header');\n\n if ($header.length) {\n var previousScrollPosition = -1;\n var forceRefresh = false;\n\n $(window).resize(function () {\n forceRefresh = true;\n });\n\n var checkPosition = function () {\n var scrollPosition = $(window).scrollTop();\n\n if (!forceRefresh && scrollPosition === previousScrollPosition) {\n return;\n }\n\n forceRefresh = false;\n previousScrollPosition = scrollPosition;\n\n var headerTransitionPosition = $('.pulsepoint-header-spacer').height();\n\n if (scrollPosition <= headerTransitionPosition) {\n if ($header.hasClass('pulsepoint-header-sticky')) {\n $header.removeClass('pulsepoint-header-sticky');\n }\n } else {\n if (!$header.hasClass('pulsepoint-header-sticky')) {\n $header.addClass('pulsepoint-header-sticky');\n }\n }\n\n if (scrollPosition < 475) {\n $('.hero-overlay').removeClass('hero-overlay-sticky');\n } else {\n $('.hero-overlay').addClass('hero-overlay-sticky');\n }\n\n var $element = ICF.Utils.ElementAtPointInElement($(window).width() / 2, 95, $(\"body\"), '[data-anchor-tag]');\n\n var activeClass = 'pulsepoint-header-nav-active';\n $header.find('.' + activeClass).removeClass(activeClass);\n\n if ($element.length) {\n var $anchorTag = $element.find('[data-anchor-tag]');\n\n if ($anchorTag.length) {\n var anchorTagText = $anchorTag.data('anchorTag');\n var $headerElement = $header.find('a[href=\"#' + anchorTagText + '\"]');\n\n\n if ($headerElement.length) {\n $headerElement.parent().addClass(activeClass);\n }\n }\n } else {\n $header.find('.' + activeClass).removeClass(activeClass);\n }\n };\n\n setInterval(checkPosition, 50);\n }\n};","module.exports = {\n 'Detail': {\n 'SetupForm': function () {\n console.log('Legacy Resources SetupForm called');\n }\n }\n};","module.exports = function () {\n var scroll = window.requestAnimationFrame ||\n\n window.webkitRequestAnimationFrame ||\n\n window.mozRequestAnimationFrame ||\n\n window.msRequestAnimationFrame ||\n\n window.oRequestAnimationFrame ||\n\n function (callback) {\n\n window.setCurrentStateTimeout(callback, 1000 / 600);\n\n };\n\n function init_scroll() {\n\n // Range that the cycle words will fade out. A larger number will make the user scroll more and will fade out more gradually.\n var cycleWordsFadeRange = 200;\n var blocksFadeRange = 600;\n\n if (!ICF.Utils.DeviceDetection.IsMobile()) {\n\n var windowHeight = jQuery(window).height();\n\n var fadeStart = 0,\n\n fadeUntil = cycleWordsFadeRange,\n\n $fading = jQuery('.parallax-banner').find('.parallax-bg');\n\n\n var offset = jQuery(document).scrollTop(),\n\n opacity = 0;\n\n if (offset <= fadeStart) {\n\n opacity = 1;\n\n } else if (offset <= fadeUntil) {\n\n opacity = 1 - offset / fadeUntil;\n\n }\n\n $fading.css('opacity', opacity);\n\n if (offset >= cycleWordsFadeRange + 20 && offset <= cycleWordsFadeRange + blocksFadeRange) {\n\n jQuery('.hero-pod').addClass('showed');\n\n } else {\n\n jQuery('.hero-pod').removeClass('showed');\n }\n\n } else {\n\n jQuery('.hero-pod').addClass('showed');\n\n }\n\n }\n\n if (!ICF.Utils.DeviceDetection.IsMobile()) {\n\n var podLeft = jQuery('.hero-pod-left'),\n\n podRight = jQuery('.hero-pod-right'),\n\n podHeight = 0,\n\n throttleTimeout = 500,\n\n $window = jQuery(window);\n\n jQuery(window).bind('scroll', function () {\n\n scroll(init_scroll);\n\n });\n\n $window.on('resize', ICF.Utils.Throttle(throttleTimeout, function () {\n\n podHeight = podLeft.outerHeight() - podRight.outerHeight();\n\n podRight.css('margin-top', podHeight);\n\n }))\n\n setTimeout(function () {\n $window.trigger('resize')\n }, 250);\n\n } else {\n\n jQuery('.hero-pod').addClass('showed');\n\n }\n};","module.exports = function() {\n $(window).scroll(function() {\n if ($(this).scrollTop() > 50) {\n $('#back-to-top').fadeIn();\n } else {\n $('#back-to-top').fadeOut();\n }\n });\n // scroll body to 0px on click\n $('#back-to-top').click(function() {\n $('#back-to-top').tooltip('hide');\n $('body,html').animate({\n scrollTop: 0\n },\n 800);\n return false;\n });\n\n $('#back-to-top').tooltip('show');\n};","module.exports = {\n 'Init': require('./init'),\n 'TypeAhead': require('./typeAhead'),\n 'Search': require('./search'),\n};","var typeAhead = require('./typeAhead');\n\nmodule.exports = function () {\n var $searchControls = $('.search-control'); \n \n if (!$searchControls.length) {\n return;\n } \n\n $searchControls.each(function () {\n $searchControl = $(this); \n typeAhead($searchControl, 'searchSuggestionsCache', '/icfapi/searchsuggestions/getsuggestions');\n\n $searchControl.find('.search-control__clear-search-btn').click(function (e) {\n e.preventDefault();\n var $searchControl = $(e.target).closest('.search-control');\n var $searchInput = $searchControl.find('.search-control__search-input');\n var $typeAheadHidden = $searchControl.find('.search-control__type-ahead-hidden-text');\n var $typeAheadVisible = $searchControl.find('.search-control__type-ahead-visible-text');\n\n $searchInput.val('');\n $typeAheadHidden.text('');\n $typeAheadVisible.text('');\n $searchControl.find('.search-control__search-suggestions-wrapper--active').removeClass('search-control__search-suggestions-wrapper--active');\n $searchInput.focus();\n });\n\n $searchControl.find('.search-control__search-btn').click(function (e) {\n var $searchControl = $(e.target).closest('.search-control'); \n $searchControl.find('.search-control__submit').click();\n });\n }); \n};","module.exports = function (endpoint, q, cb) {\n var endpointUrl = URI(endpoint);\n\n if (q) {\n endpointUrl.setQuery('q', q);\n }\n else {\n endpointUrl.removeQuery('q');\n }\n\n $.ajax({\n url: endpointUrl.toString(),\n success: function (result) {\n if (cb) {\n cb(result);\n }\n },\n error: function (xhr, status, error) {\n return { 'error': error };\n }\n });\n};","var search = require('./search');\n\nmodule.exports = function ($searchControl, cacheName, endpoint) { \n if ($searchControl.length) {\n window[cacheName] = {};\n\n var $searchInput = $searchControl.find('.search-control__search-input');\n var $typeAheadHidden = $searchControl.find('.search-control__type-ahead-hidden-text');\n var $typeAheadVisible = $searchControl.find('.search-control__type-ahead-visible-text');\n var $suggestionsWrapper = $searchControl.find('.search-control__search-suggestions-wrapper').first();\n\n var initialValue = $searchInput.data('initialValue');\n if (initialValue) {\n $searchInput.val(initialValue);\n }\n\n var clearTypeAhead = function () {\n $typeAheadHidden.text('');\n $typeAheadVisible.text('');\n };\n\n var commandCharacters = [ICF.Variables.TypeAhead.Enter, ICF.Variables.TypeAhead.Esc, ICF.Variables.TypeAhead.Tab, ICF.Variables.TypeAhead.DownArrow, ICF.Variables.TypeAhead.UpArrow];\n var ignoreCharacters = [ICF.Variables.TypeAhead.LeftArrow, ICF.Variables.TypeAhead.RightArrow];\n \n $searchInput.on('keyup', function (e) { \n var keyCode = e.which || e.keyCode; \n if (!commandCharacters.includes(keyCode) && !ignoreCharacters.includes(keyCode)) { \n var currentVal = $searchInput.val();\n\n if (currentVal.length >= ICF.Variables.TypeAhead.MinQueryLength) { \n if (currentVal in window[cacheName]) {\n updateSuggestions(window[cacheName][currentVal], currentVal);\n return;\n }\n\n clearTypeAhead();\n\n search(endpoint, currentVal, function (results) {\n if (results && results.suggestions && results.suggestions.length) {\n window[cacheName][currentVal] = results.suggestions;\n updateSuggestions(results.suggestions, currentVal);\n }\n else {\n clearTypeAhead();\n deactivateSuggestions();\n }\n });\n }\n else {\n clearTypeAhead();\n deactivateSuggestions();\n }\n } \n else if (keyCode === ICF.Variables.TypeAhead.Esc) {\n e.preventDefault();\n deactivateSuggestions(); \n clearTypeAhead(); \n }\n else if (keyCode === ICF.Variables.TypeAhead.DownArrow) { \n var $activeSearchSuggestionsWrapper = $searchControl.find('.search-control__search-suggestions-wrapper--active');\n if ($activeSearchSuggestionsWrapper.length) {\n var $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) {\n\n var $suggestionToActivate = $activeSuggestion.next();\n if (!$suggestionToActivate.length) {\n $suggestionToActivate = $activeSearchSuggestionsWrapper.find('.search-control__search-suggestion').first();\n }\n\n deactivateSuggestion($activeSuggestion);\n if ($suggestionToActivate.length) {\n activateSuggestion($suggestionToActivate);\n }\n }\n else {\n var $suggestionToActivate = $activeSearchSuggestionsWrapper.find('.search-control__search-suggestion').first();\n if ($suggestionToActivate.length) {\n activateSuggestion($suggestionToActivate);\n }\n }\n $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) {\n selectSuggestion($activeSuggestion, false, false);\n }\n\n e.preventDefault();\n }\n }\n else if (keyCode === ICF.Variables.TypeAhead.UpArrow) { \n var $activeSearchSuggestionsWrapper = $searchControl.find('.search-control__search-suggestions-wrapper--active');\n if ($activeSearchSuggestionsWrapper.length) {\n var $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) {\n \n var $suggestionToActivate = $activeSuggestion.prev();\n if (!$suggestionToActivate.length) {\n $suggestionToActivate = $activeSearchSuggestionsWrapper.find('.search-control__search-suggestion').last()\n }\n\n deactivateSuggestion($activeSuggestion);\n if ($suggestionToActivate.length) {\n activateSuggestion($suggestionToActivate);\n }\n }\n else { \n var $suggestionToActivate = $activeSearchSuggestionsWrapper.find('.search-control__search-suggestion').last();\n if ($suggestionToActivate.length) {\n activateSuggestion($suggestionToActivate);\n }\n }\n\n $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) {\n selectSuggestion($activeSuggestion, false, false);\n }\n \n e.preventDefault();\n }\n }\n else if (keyCode === ICF.Variables.TypeAhead.Enter) {\n var $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) { \n selectSuggestion($activeSuggestion);\n }\n else {\n $searchControl.find('.search-control__search-form').submit();\n }\n }\n });\n\n $searchInput.on('keydown', function (e) { \n var keyCode = e.which || e.keyCode; \n if (keyCode === ICF.Variables.TypeAhead.Tab) { \n deactivateSuggestions();\n }\n else if (commandCharacters.includes(keyCode)) {\n e.preventDefault();\n return false;\n } \n });\n \n $searchControl.on('click', '.search-control__search-suggestions-wrapper--active .search-control__search-suggestion', function (e) {\n selectSuggestion($(e.target));\n });\n\n var activeSuggestion = function () {\n return $searchControl.find('.search-control__search-suggestions-wrapper .search-control__search-suggestion--active');\n }\n\n var activateSuggestion = function ($suggestion) {\n $suggestion.addClass('search-control__search-suggestion--active');\n $suggestion.attr('aria-selected', 'true');\n $searchInput.attr('aria-activedescendant', $suggestion[0].id);\n }\n\n var deactivateSuggestion = function ($suggestion) {\n $suggestion.removeClass('search-control__search-suggestion--active');\n $suggestion.attr('aria-selected', 'false');\n $searchInput.removeAttr('aria-activedescendant');\n }\n\n var deactivateSuggestions = function () {\n var $suggestionsWrapper = $searchControl.find('.search-control__search-suggestions-wrapper');\n var $activeSuggestion = activeSuggestion();\n if ($activeSuggestion.length) {\n deactivateSuggestion($activeSuggestion);\n }\n \n $searchControl.find('.search-control__suggestion-announce').empty();\n $searchInput.removeAttr('aria-activedescendant');\n $suggestionsWrapper.removeClass('search-control__search-suggestions-wrapper--active');\n }\n\n var activateSuggestions = function () {\n var $suggestionsWrapper = $searchControl.find('.search-control__search-suggestions-wrapper'); \n $suggestionsWrapper.addClass('search-control__search-suggestions-wrapper--active');\n\n var numberOfSuggestions = $suggestionsWrapper.find('.search-control__search-suggestion').length;\n var suggestionWord = numberOfSuggestions == 1 ? \"suggestion\" : \"suggestions\";\n var announceText = numberOfSuggestions + \" \" + suggestionWord + \" found, to navigate use up and down arrows.\";\n var announceDiv = $searchControl.find('.search-control__suggestion-announce');\n if (announceDiv.text() !== announceText) {\n announceDiv.text(announceText);\n } \n }\n\n var updateSuggestions = function (suggestions, val) {\n if ($searchInput.val() !== val) {\n return;\n }\n \n var typeAheadValue = '';\n if ($searchInput.val().trim() == suggestions[0] && suggestions.length > 1) {\n typeAheadValue = suggestions[1];\n }\n else {\n typeAheadValue = suggestions[0];\n }\n\n $typeAheadHidden.text(val);\n $typeAheadVisible.text(typeAheadValue.substring(val.length));\n\n $searchInput.removeAttr('aria-activedescendant');\n var suggestionsListbox = $suggestionsWrapper.children('.search-control__search-suggestions').first();\n suggestionsListbox.empty();\n \n if (suggestions.length > 1 || (suggestions.length == 1 && suggestions[0] !== $searchInput.val().trim())) { \n for (var suggestion in suggestions) {\n suggestionsListbox.append(\"
\" + suggestions[suggestion] + \"
\");\n }\n activateSuggestions();\n }\n else {\n deactivateSuggestions();\n }\n };\n\n var selectSuggestion = function ($suggestion, shouldSubmitForm, shouldHideSuggestions) {\n shouldSubmitForm = typeof shouldSubmitForm !== 'undefined' ? shouldSubmitForm : true;\n shouldHideSuggestions = typeof shouldSubmitForm !== 'undefined' ? shouldHideSuggestions : true; \n \n if (shouldHideSuggestions) {\n deactivateSuggestions();\n }\n \n clearTypeAhead();\n $searchInput.val($suggestion[0].innerText);\n\n if (shouldSubmitForm) {\n $searchInput.closest('.search-control__search-form').submit();\n } \n }\n }\n};","var insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $searchRendering = $('.search-rendering');\n\n if(!$searchRendering.length) {\n return;\n }\n\n var $filtersClearAllCTA = $searchRendering.find('.search-rendering__clear-filters');\n $filtersClearAllCTA.unbind('click');\n\n $searchRendering.on('click', '.search-rendering__clear-filters', function (e) {\n e.preventDefault();\n clearAll(e.target);\n });\n\n $('body').on('click', '.search-rendering__mobile-clear-button', function (e) { \n e.preventDefault();\n $('.search-rendering__filter-checkbox').prop('checked', false);\n clearAll(e.target, false);\n });\n\n var clearAll = function (clearFiltersEl, shouldInsertResults) {\n shouldInsertResults = typeof shouldInsertResults !== 'undefined' ? shouldInsertResults : true;\n \n window.page = 1; \n window.topics = [];\n window.types = [];\n window.typecategories = [];\n window.lastSearchRenderingFocusId = '';\n\n if (shouldInsertResults) {\n insertResults(apiEndpoint);\n }\n };\n};","module.exports = function ($searchRendering) {\n $searchRendering.on('click', '.search-rendering__back-to-top', function (e) {\n var $searchInput = $(e.target).closest('.search-rendering').find('.search-control__search-input').first();\n window.scrollTo({ top: $searchInput.offset().top - 80, behavior: 'smooth' });\n setTimeout(function ($searchInput) {\n $searchInput.focus();\n }, 1000, $searchInput);\n });\n};","const insertResults = require('./insert-results');\n\nmodule.exports = function (apiEndpoint) {\n var $searchRendering = $('.search-rendering');\n\n if(!$searchRendering.length) {\n return;\n }\n\n var $checkboxes = $searchRendering.find('.search-rendering__filter-checkbox');\n\n $checkboxes.unbind('click');\n\n $searchRendering.on('click', '.search-rendering__filter-checkbox', function (e) { \n updateWindowFilterVars(e.target, true);\n });\n\n $('body').on('click', '.search-rendering__modaal-filters .search-rendering__filter-checkbox', function (e) {\n updateWindowFilterVars(e.target, false);\n });\n\n var updateWindowFilterVars = function (checkboxEl, shouldInsertResults) {\n shouldInsertResults = typeof shouldInsertResults !== 'undefined' ? shouldInsertResults : true; \n\n window.topics = [];\n window.types = [];\n window.typecategories = [];\n window.page = 1;\n \n if (checkboxEl.checked) { \n $(checkboxEl).closest('.search-rendering__filter').find('.search-rendering__filter-checkbox').not(checkboxEl).prop('checked', false);\n $(checkboxEl).closest('.search-rendering__filters-height-wrapper').siblings('.search-rendering__filter-checkbox-wrapper').find('.search-rendering__filter-checkbox').prop('checked', false);\n }\n \n var filtersWrapper = $(checkboxEl).closest('.search-rendering__filters-wrapper, .modaal-content-container');\n filtersWrapper.find('.search-rendering__filter-checkbox').filter('input:checked').each(function () {\n\n var category = $(this).prop('name');\n if (category == 'topics') {\n window.topics.push($(this).val());\n }\n else if (category == 'types') {\n window.types.push($(this).val());\n }\n else if (category == 'typecategories') {\n window.typecategories.push($(this).val());\n }\n });\n\n if (shouldInsertResults) { \n if (window.ignoreFilterClickFocusChange == undefined || !window.ignoreFilterClickFocusChange) {\n window.lastSearchRenderingFocusId = checkboxEl.id; \n }\n window.ignoreFilterClickFocusChange = false;\n\n insertResults(apiEndpoint);\n } \n };\n};","var updateFilterAccessibility = require('./update-filter-accessibility');\n\nmodule.exports = function ($searchRendering) {\n var handleFilterToggleClick = function(clickTarget, filterWrapperSelector)\n {\n $closestExpandableFilter = $(clickTarget).closest('.search-rendering__filter--expandable')\n $closestExpandableFilter.toggleClass('search-rendering__filter--expanded');\n if (!$closestExpandableFilter.hasClass('search-rendering__filter--expanded')) { \n $closestExpandableFilter.find('.search-rendering__filter--expandable').removeClass('search-rendering__filter--expanded');\n }\n updateFilterAccessibility($(clickTarget).closest(filterWrapperSelector));\n };\n\n $searchRendering.on('click', '.search-rendering__filter--expandable > div > .search-rendering__filter-toggle', function (e) {\n handleFilterToggleClick(e.target, '.search-rendering__filters-wrapper'); \n });\n\n $('body').on('click', '.search-rendering__modaal-filters .search-rendering__filter--expandable > div > .search-rendering__filter-toggle', function (e) { \n handleFilterToggleClick(e.target, '.modaal-content-container'); \n });\n};","module.exports = function (apiEndpoint) {\n $('.search-rendering__modaal-filters-link').modaal({\n custom_class: \"search-rendering__modaal-filters\", \n after_close: function () {\n ICF.Modules.SearchRendering.InsertResults(apiEndpoint);\n }\n });\n};","var handleModalFilters = require('./handle-modal-filters');\n\nmodule.exports = function (apiEndpoint) {\n $('body').on('click', '.search-rendering__mobile-view-results-button', function (e) {\n e.preventDefault();\n $('.search-rendering__modaal-filters-link').modaal('close');\n });\n\n handleModalFilters(apiEndpoint);\n};","module.exports = function (apiEndpoint, $searchRendering) {\n $searchRendering.on('click', '.search-rendering__more-results', function (e) {\n e.preventDefault();\n window.page = window.page + 1;\n ICF.Modules.SearchRendering.InsertResults(apiEndpoint);\n });\n};","module.exports = function ($searchRendering) {\n $searchRendering.on('click', '.search-rendering__filter-tag-close', function (e) {\n e.preventDefault();\n var $filterTag = $(e.target).closest('.search-rendering__filter-tag').first();\n var targetFilterId = '#' + $filterTag.data('type') + '-filtering-' + $filterTag.data('targetId');\n \n var prevFilterTag = $filterTag.prev('.search-rendering__filter-tag');\n var nextFilterTag = $filterTag.next('.search-rendering__filter-tag');\n if (prevFilterTag.length) {\n window.lastSearchRenderingFocusId = prevFilterTag.find('.search-rendering__filter-tag-close')[0].id;\n }\n else if (nextFilterTag.length) {\n window.lastSearchRenderingFocusId = nextFilterTag.find('.search-rendering__filter-tag-close')[0].id;\n }\n else {\n window.lastSearchRenderingFocusId = $(e.target).closest('.search-rendering').find('.search-rendering__filter-toggle').first()[0].id;\n } \n\n window.ignoreFilterClickFocusChange = true;\n $(targetFilterId).click(); \n }); \n};","module.exports = {\n 'Init': require('./init'),\n 'InsertResults': require('./insert-results'), \n 'Search': require('./search'), \n};","const clearAllHandler = require('./clear-all-handler');\nconst handleCheckboxes = require('./handle-checkboxes');\nconst handleFilterToggles = require('./handle-filter-toggles');\nconst handleTags = require('./handle-tags');\nconst handleShowMore = require('./handle-show-more');\nconst handleBackToTop = require('./handle-back-to-top');\nconst handleModalInteraction = require('./handle-modal-interaction');\nconst updateFilterAccessibility = require('./update-filter-accessibility');\n\nmodule.exports = function () {\n var $searchRendering = $('.search-rendering');\n\n if (!$searchRendering.length) {\n return;\n }\n \n window.searchRenderingInitialized = window.searchRenderingInitialized || false;\n\n if (!window.searchRenderingInitialized) { \n\n var apiEndpoint = $searchRendering.data('searchEndpoint');\n\n if (!window.pageInitialized) {\n clearAllHandler(apiEndpoint);\n }\n\n handleCheckboxes(apiEndpoint);\n handleFilterToggles($searchRendering);\n handleTags($searchRendering);\n handleModalInteraction(apiEndpoint);\n handleShowMore(apiEndpoint, $searchRendering);\n handleBackToTop($searchRendering);\n\n updateFilterAccessibility($searchRendering.find('.search-rendering__filters-wrapper'));\n\n window.pageInitialized = true;\n } \n};","var search = require('./search');\nvar updateFilterAccessibility = require('./update-filter-accessibility');\nvar handleModalFilters = require('./handle-modal-filters');\n\nmodule.exports = function (apiEndpoint) {\n \n search(function (results) {\n var $searchRendering = $('.search-rendering');\n var $oldInner = $($searchRendering).find('.search-rendering_search-page-inner');\n\n $expandedFilterButtons = $('.search-rendering__filter--expanded > div:first-child > button');\n var expandedFilterButtonIds = [];\n $expandedFilterButtons.each(function () {\n expandedFilterButtonIds.push(('#' + this.id));\n });\n\n $oldInner.remove();\n $searchRendering.append(results); \n \n $(expandedFilterButtonIds.join(', ')).parents('.search-rendering__filter--expandable').addClass('search-rendering__filter--expanded');\n updateFilterAccessibility($searchRendering.find('.search-rendering__filters-wrapper'));\n\n if (window.lastSearchRenderingFocusId && window.lastSearchRenderingFocusId.length) {\n $('#' + window.lastSearchRenderingFocusId).focus();\n window.lastSearchRenderingFocusId = '';\n }\n else if (window.page > 1) { \n $('.search-rendering__result').slice((window.page - 1) * 10).first().find('.search-rendering__result-title').focus();\n };\n\n handleModalFilters(apiEndpoint);\n\n }, apiEndpoint);\n \n};","module.exports = function (cb, apiEndpoint) {\n\n var $searchRendering = $('.search-rendering');\n var endpointUrl = URI(/icfapi/ + apiEndpoint);\n var browserUrl = URI(window.location.toString());\n\n var contextItemId = $searchRendering.data('contextItemId');\n endpointUrl.setQuery('contextItemId', contextItemId);\n\n if (window.query && window.query.length) {\n endpointUrl.setQuery('q', window.query);\n browserUrl.setQuery('q', window.query);\n }\n\n if (window.types && window.types.length) {\n var joinedTypes = window.types.join('|');\n\n if (joinedTypes.length) {\n endpointUrl.setQuery('types', joinedTypes);\n browserUrl.setQuery('types', joinedTypes);\n }\n }\n else {\n browserUrl.removeQuery('types');\n }\n\n if (window.typecategories && window.typecategories.length) {\n var joinedTypeCategories = window.typecategories.join('|');\n\n if (joinedTypeCategories.length) {\n endpointUrl.setQuery('typecategories', joinedTypeCategories);\n browserUrl.setQuery('typecategories', joinedTypeCategories);\n }\n }\n else {\n browserUrl.removeQuery('typecategories');\n }\n\n if (window.topics && window.topics.length) { \n var joinedTopics = window.topics.join('|');\n\n if (joinedTopics.length) { \n endpointUrl.setQuery(\"topics\", joinedTopics);\n browserUrl.setQuery('topics', joinedTopics);\n }\n }\n else {\n browserUrl.removeQuery('topics');\n }\n\n if (window.page > 1) {\n endpointUrl.setQuery('page', window.page);\n browserUrl.setQuery('page', window.page);\n }\n else {\n endpointUrl.removeQuery('page');\n browserUrl.removeQuery('page');\n } \n \n history.replaceState({}, '', browserUrl.toString());\n\n $.ajax({\n url: endpointUrl.toString(),\n success: function (result) {\n if (cb) {\n cb(result);\n }\n }\n });\n \n};","module.exports = function ($filtersWrapper) {\n $filtersWrapper.find('.search-rendering__filter--expandable').each(function() {\n $expandableFilter = $(this);\n $filterHeightWrapper = $expandableFilter.find('.search-rendering__filters-height-wrapper').first();\n $toggle = $expandableFilter.find('.search-rendering__filter-toggle').first();\n $filterCheckboxesAndToggles = $filterHeightWrapper.children('.search-rendering__filters').children('.search-rendering__filter').children('.search-rendering__filter-checkbox-wrapper').children('.search-rendering__filter-checkbox, .search-rendering__filter-toggle');\n\n if ($expandableFilter.hasClass('search-rendering__filter--expanded')) {\n $filterHeightWrapper.removeAttr('aria-hidden');\n $toggle.attr('aria-expanded', 'true');\n $filterCheckboxesAndToggles.attr('tabindex', '');\n }\n else {\n $filterHeightWrapper.attr('aria-hidden', 'true');\n $toggle.attr('aria-expanded', 'false');\n $filterCheckboxesAndToggles.attr('tabindex', '-1');\n } \n });\n};","module.exports = function() {\n //handle hover\n $('.secondary-navigation .menu-item').hover(function(event) {\n // if screen is tablet size and has tablet menu item, show it on hover otherwise it will break the desktop link\n if ((window.innerWidth > 767 && window.innerWidth < 1025) &&\n $(this).find('.touch-device-menu-item').length > 0) {\n $('.touch-device-menu-item').show();\n } else {\n $('.touch-device-menu-item').hide();\n }\n });\n //handle click -- this makes the main menu function on tablet (since main menu has clickable links that will only show on hover)\n $('.secondary-navigation .menu-item').on('click',\n '.accordion-heading a.navigation-sub',\n function(event) {\n if (window.innerWidth > 767 && window.innerWidth < 1025) {\n if ($(this).closest('.menu-item').find('.navigation-sub-menu').length > 0) { // if has a dropdown\n event.preventDefault();\n $('.touch-device-menu-item').show();\n } else {\n $('.touch-device-menu-item').hide();\n }\n }\n });\n};","module.exports = function() {\n ICF.Utils.EqualHeights.RegisterSetEqualHeights('.sidebar-block', 0);\n};","module.exports = function() {\n $(\".form-container\").on(\"keydown\",\n \".bootstrap-select\",\n function(e) {\n var code = e.which;\n if (code === 9) {\n var indx = $(this).find('.dropdown-menu li.selected').index();\n //console.log(\"Index: \" + indx);\n $(this).find('.dropdown-toggle').click();\n //console.log(\"click triggered on dropdown-toggle\");\n //console.log(\"length: \" + $(this).find('ul.dropdown-menu a').eq(indx).html());\n $(this).find('ul.dropdown-menu a').eq(indx).click();\n console.log($(this).parent().attr(\"class\"));\n console.log($(this).parent().next().attr(\"class\"));\n $(this).parent().next().focus();\n }\n });\n};","module.exports = function () {\n // Store a reference to the table of contents instead of querying it each time\n var $tableOfContents = $('.table-of-contents');\n\n // Start with an impossible previous position to force us to compute everything the first\n // time the handler is run\n var previousPosition = Infinity;\n\n // If there's no table of contents, don't do anything\n if ($tableOfContents.length) {\n\n var forceRefresh = false;\n\n $(window).resize(function () {\n forceRefresh = true;\n });\n\n // We use setInterval here at roughly 40x per second, instead of binding to the window\n // scroll event. This is because of the potentially large amount of events that could\n // be generated from scrolling, and also to accommodate devices that don't register\n // events during the inertial scroll after the user lets go of the touch but before\n // the window has finished scrolling.\n setInterval(function () {\n\n // Determine the position the user is currently scrolled to\n var scrollPosition = $(window).scrollTop();\n\n // We only run all of the logic if this is the first run or if the scroll position\n // has changed since the last run. This reduces the frequency that we actually need\n // to run the logic.\n if (!forceRefresh && isFinite(previousPosition) && previousPosition === scrollPosition) {\n previousPosition = scrollPosition;\n return;\n }\n\n forceRefresh = false;\n\n // Store our current position\n previousPosition = scrollPosition;\n\n // Calculate the position at which we change from non-sticky to sticky mode. We do\n // this by using a sentinal element which is located immediately after the table of\n // contents. We need this because when the table of contents changes to sticky, we\n // otherwise wouldn't be able to locate when it's original position ended.\n var targetTopPosition = $(window).scrollTop() +\n $tableOfContents.nextAll('.table-of-contents-sentinal')[0].getBoundingClientRect().top - $('.main-header').outerHeight(true);\n\n // If we're not in sticky mode, remove the height of the table of contents to find\n // the position where it starts.\n if (!$tableOfContents.hasClass(\"table-of-contents-sticky\")) {\n targetTopPosition -= $tableOfContents.height();\n }\n\n // Get a reference to the first container located in the table of contents.\n var $tableOfContentsContainer = $tableOfContents.children('.table-of-contents__container');\n\n // If we've hit the scroll threshold, we turn sticky on\n if (scrollPosition >= targetTopPosition) {\n\n // Temporarily disable height transitions\n $tableOfContentsContainer.first().css(\"transition\", \"none\");\n\n // We need to wait till the next runloop to make sure that the transition is actually off\n setTimeout(function () {\n\n // Make the table of contents sticky\n $tableOfContents.addClass('table-of-contents-sticky');\n\n // Display the spacer which is the same height as the table of contents\n // itself. This preserves the spacing when we make our transition\n $tableOfContents.nextAll('.table-of-contents-spacer').first().css({\n 'display': 'block'\n });\n\n // We'll need to determine the height that we need for the spacer. This\n // depends on some other logic and whether the dropdown is open or not\n var spacerHeight = 0;\n\n // If the table of contents is open\n if ($tableOfContents.hasClass('table-of-contents-open')) {\n\n // Determine the position and height of the table of contents\n var position = $tableOfContents.find('ul').position();\n var height = $tableOfContents.find('ul').outerHeight();\n\n // Set the height of the container to be the height of the table of\n // contents.\n $tableOfContentsContainer.css('height', position.top + height + 'px');\n\n // Determine the position and height of the header for the dropdown\n var $tableOfContentsSelectHeader =\n $tableOfContents.find('.table-of-contents-select-header');\n var position = $tableOfContentsSelectHeader.position();\n var height = $tableOfContentsSelectHeader.outerHeight();\n\n // The spacer should be the same height as the bottom of the select header\n spacerHeight = position.top + height;\n } else {\n\n // Determine the position and height of the header for the dropdown\n var $tableOfContentsSelectHeader =\n $tableOfContents.find('.table-of-contents-select-header');\n var position = $tableOfContentsSelectHeader.position();\n var height = $tableOfContentsSelectHeader.outerHeight();\n\n // Set the height of the container to be the bottom position of the header\n // position of the dropdown\n $tableOfContentsContainer.css('height', position.top + height + 'px');\n\n // The spacer should be the same height as the height of the table of contents\n spacerHeight = $tableOfContents.height();\n }\n\n // We need to re-enable the table of contents transition in the next runloop\n // so that the changes don't cancel out\n setTimeout(function () {\n\n // Set the spacer height\n $tableOfContents.nextAll('.table-of-contents-spacer').first().css({\n 'height': spacerHeight + 'px'\n });\n\n // Re-enable transitions\n $tableOfContentsContainer.first().css(\"transition\", \"\");\n },\n 0);\n },\n 0);\n } else {\n\n // Disable transitions on the container\n $tableOfContentsContainer.css(\"transition\", \"none\");\n\n // We need to wait till the next runloop to make sure that the transition is actually off\n setTimeout(function () {\n\n // Set the table of contents to non-sticky mode\n $tableOfContents.removeClass('table-of-contents-sticky');\n\n // Hide the spacer\n $tableOfContents.nextAll('.table-of-contents-spacer').css({\n 'display': 'none'\n });\n\n // Calculate the correct height of the container\n if ($tableOfContents.hasClass('table-of-contents-open')) {\n\n // Set the container height to be the height of the table of contents\n var position = $tableOfContents.find('ul').position();\n var height = $tableOfContents.find('ul').outerHeight();\n $tableOfContentsContainer.css('height', position.top + height + 'px');\n } else {\n\n // Set the container height to be the bottom of the select header\n var $tableOfContentsSelectHeader =\n $tableOfContents.find('.table-of-contents-select-header');\n var position = $tableOfContentsSelectHeader.position();\n var height = $tableOfContentsSelectHeader.outerHeight();\n $tableOfContentsContainer.css('height', position.top + height + 'px');\n }\n\n // Re-enable transitions in the next runloop to avoid cancelling the change out\n setTimeout(function () {\n $tableOfContentsContainer.first().css(\"transition\", \"\");\n },\n 0);\n },\n 0);\n }\n\n var contentSelector = '#main-content';\n\n // Locate the element which is currently at the bottom of the header, halfway across the page\n var $elem = ICF.Utils.ElementAtPointInElement($(window).width() / 2,\n 180,\n $(contentSelector));\n\n var $parents = $elem.parentsUntil(contentSelector);\n\n var $previousParent = $elem.parent().is(contentSelector)\n ? $elem\n : ($parents.length >= 2 ? $($parents[$parents.length - 2]) : $([]));\n\n // Get the select header and the previously active link\n var $tableOfContentsSelectHeader = $tableOfContents.find('.table-of-contents-select-header');\n var $oldActive = $tableOfContents.find('.table-of-contents-link-active');\n\n // If there was an element located within the content container, we'll\n // locate and select the appropriate table of contents link\n if ($previousParent.length) {\n\n // Find either the parent which is a page section header,\n // or locate the nearest one before where we are\n var $sectionHeader = $previousParent;\n if (!$previousParent.hasClass('page-section-header')) {\n $sectionHeader = $previousParent.prevAll('.page-section-header');\n }\n\n if ($sectionHeader.length) {\n // Locate the correct table of contents link\n var $tableOfContentsLink = $tableOfContents.find('[href=\"#' + $sectionHeader.attr('id') + '\"]');\n\n // Remove the active state from the previous element and make the new element\n // active\n $oldActive.removeClass('table-of-contents-link-active');\n var $active = $tableOfContentsLink.parents('li').first()\n .addClass('table-of-contents-link-active');\n\n // Set the header of the dropdown to the current link title and index\n $tableOfContentsSelectHeader.find('.table-of-contents-index')\n .text(Math.max(1, $active.index() + 1));\n $tableOfContentsSelectHeader.find('.table-of-contents-select-text').text($active.text());\n }\n }\n },\n 25);\n\n // Get a reference to the containers\n var $linksContainer = $tableOfContents.find('.table-of-contents-links-container');\n var $links = $tableOfContents.find('.table-of-contents-links');\n\n // Get the widths of the containers\n var linksContainerWidth = $linksContainer.width();\n var linksWidth = $links.width();\n\n // Calculate if we need to show the arrows still\n if (linksWidth > linksContainerWidth) {\n $linksContainer.addClass('table-of-contents-list-scroll-right');\n }\n\n // When we click a link in the table of contents, we need to scroll to the correct\n // page section\n $tableOfContents.find('a.table-of-contents-anchor').click(function (e) {\n e.preventDefault();\n\n // Get the element we're scolling to\n var $scrollElem = $($(this).attr('href'));\n\n // If we didn't find a page section, return early\n if (!$scrollElem.length) {\n return;\n }\n\n // Get the top position of the element we're scrolling to relative to the window\n var offsetTop = $scrollElem.offset().top;\n\n // Create a duplicate of the table of contents and force it to be sticky\n // so that we're able to determine the height of a sticky header. This is necessary\n // because when we scroll to the page section, we need to ensure that the header\n // isn't overlapped by the table of contents. And since we could be coming from\n // a non-sticky mode, and we're guaranteed to end up in sticky mode, we need to\n // calculate the final height of the table of contents, not the current one.\n var $duplicate = $tableOfContents.clone();\n $duplicate.css('visibility', 'hidden');\n $duplicate.addClass('table-of-contents-sticky');\n $('body').append($duplicate);\n\n // Ensure that the layout of the duplicate has completed\n setTimeout(function () {\n\n // Get the position and height of the header of the dropdown\n var heightOffset = $('.main-header').outerHeight(true);\n\n // Remove a few pixels to give us a bit more breathing room at the end of the scroll\n var tableOfContentsOffset = $tableOfContents.outerHeight(true);\n var scrollOffset = offsetTop - tableOfContentsOffset - heightOffset;\n\n // Remove the duplicate table of contents\n $duplicate.remove();\n\n // Animate a scroll to the page section\n $('html, body').animate({\n scrollTop: scrollOffset\n },\n 750);\n\n // Close the table of contents\n $tableOfContents.removeClass('table-of-contents-open');\n }, 0);\n });\n\n // Handle the opening and closing of the table of contents\n $tableOfContents.find('.table-of-contents-select-header').click(function () {\n\n // If it's already open, we'll close it\n if ($tableOfContents.hasClass('table-of-contents-open')) {\n\n // Remove the open class\n $tableOfContents.removeClass('table-of-contents-open');\n\n // Get the position and height of the dopdown header\n var $tableOfContentsSelectHeader = $tableOfContents.find('.table-of-contents-select-header');\n var position = $tableOfContentsSelectHeader.position();\n var height = $tableOfContentsSelectHeader.outerHeight();\n\n // Set the header of the container to the bottom of the dropdown header\n $tableOfContents.children('.table-of-contents__container').first().css('height', position.top + height + 'px');\n } else {\n\n // Add the open class\n $tableOfContents.addClass('table-of-contents-open');\n\n // Get the height and position of the ul containing the links\n var position = $tableOfContents.find('ul').position();\n var height = $tableOfContents.find('ul').outerHeight();\n\n // Set the height of the container to the bottom position of the links ul\n $tableOfContents.children('.table-of-contents__container').first().css('height', position.top + height + 'px');\n }\n });\n\n // Handler for the next/previous buttons in the table of contents when overflowing\n // on desktop\n var scrollClickHandler = function (direction) {\n\n // Get a reference to the containers\n var $linksContainer = $tableOfContents.find('.table-of-contents-links-container');\n var $links = $tableOfContents.find('.table-of-contents-links');\n\n // Get the container widths\n var linksContainerWidth = $linksContainer.outerWidth();\n var linksWidth = $links.outerWidth();\n\n // The logic to apply the position will be the same regardless of direction,\n // so we declare it here\n var newLeftPosition = 0;\n\n // Get the current position in the list\n var currentScrollIndex = $links.data('scrollIndex');\n\n // Next button direction\n if (direction == 1) {\n\n // Get the current left position\n var originalLeftPosition = $links.position().left;\n\n // Get the current link index (to a maximum of the number of items)\n var currentScrollIndex = Math.min($links.find('.table-of-contents-link').length,\n currentScrollIndex + 1);\n\n // Get the current link\n var $link = $($links.find('.table-of-contents-link')[currentScrollIndex]);\n\n // Get the position of the right edge relative to the inner container\n var rightPosition = -originalLeftPosition + $linksContainer.outerWidth() + 33;\n\n // Declare the computed positions\n var linkLeftPosition, linkRightPosition;\n\n // Search the links to find one that contains the right edge of the outer container\n $links.find('.table-of-contents-link').each(function () {\n\n // Calculate the positions\n linkLeftPosition = $(this).position().left;\n linkRightPosition = linkLeftPosition + $(this).outerWidth() + 32;\n\n // If we found the link, abort the loop\n if (linkLeftPosition <= rightPosition && linkRightPosition >= rightPosition) {\n return false;\n }\n });\n\n // Calculate the new left position of the inner container\n newLeftPosition = (linksContainerWidth - linkRightPosition + 12);\n\n // If we didn't move, we're at the end, so don't continue to scroll\n if (newLeftPosition == originalLeftPosition) {\n currentScrollIndex--;\n }\n }\n // For previous button click\n else {\n\n // Get the current left position of the inner container\n var originalLeftPosition = $links.position().left;\n\n // Get the current link index, with a minimum of 0\n var currentScrollIndex = Math.max(0, currentScrollIndex - 1);\n\n // Get the current link\n var $link = $($links.find('.table-of-contents-link')[currentScrollIndex]);\n\n // Get the new left position\n newLeftPosition = -$link.position().left + 12;\n\n // The inner container cannot be positive, so limit it to 0\n newLeftPosition = Math.min(0, newLeftPosition);\n\n // If we didn't move, we're at the beginning, so don't continue to scroll\n if (newLeftPosition == originalLeftPosition) {\n currentScrollIndex++;\n }\n }\n\n // Set the left position of the inner container\n $links.css('left', newLeftPosition + 'px')\n\n // Set the new link index\n $links.data('scrollIndex', currentScrollIndex);\n\n // Calculate if we need to show the arrows still\n if (linksWidth > linksContainerWidth) {\n\n // Get the right edge position\n var newLinksRightPosition = newLeftPosition + $links.outerWidth();\n\n // If we're not at the beginning (left position of 0) show the left\n // arrow, otherwise hide it\n if (newLeftPosition < 0) {\n $linksContainer.addClass('table-of-contents-list-scroll-left');\n } else {\n $linksContainer.removeClass('table-of-contents-list-scroll-left');\n }\n\n // If we're not at the end, show the right arrow, otherwise hide it\n if (newLinksRightPosition > linksContainerWidth) {\n $linksContainer.addClass('table-of-contents-list-scroll-right');\n } else {\n $linksContainer.removeClass('table-of-contents-list-scroll-right');\n }\n }\n // If the inner container isn't wider than the outer container, hide both\n // of the arrows. This shouldn't happen here, but just in case.\n else {\n $linksContainer.removeClass('table-of-contents-list-scroll-left');\n $linksContainer.removeClass('table-of-contents-list-scroll-right');\n }\n };\n\n // Bind the left button click handler\n $tableOfContents.find('.table-of-contents-left-button').click(function () {\n scrollClickHandler(0);\n });\n\n // Bind the right button click handler\n $tableOfContents.find('.table-of-contents-right-button').click(function () {\n scrollClickHandler(1);\n });\n\n // Bind the click handler for the scroll to top button\n $tableOfContents.find('.table-of-contents__scroll-to-top').click(function () {\n\n // Animate the scroll to the top of the page\n $('html, body').animate({\n scrollTop: 0\n },\n 750);\n\n // Close the table of contents\n $tableOfContents.removeClass('table-of-contents-open');\n });\n\n // Bind the click handler for the scroll to top mobile button\n $tableOfContents.find('.table-of-contents__mobile-button-scroll-to-top').click(function () {\n\n // Animate the scroll to the top of the page\n $('html, body').animate({\n scrollTop: 0\n }, 750);\n });\n\n var $progressBar = $('.table-of-contents-link').find('.progress-bar');\n\n var calculateProgressBarWidth = function ($bar) { \n var headerOffset = 80;\n var tableOfContentsOffset = $tableOfContents.outerHeight(true);\n\n var $linkItem = $bar.closest('.table-of-contents-link');\n var $link = $linkItem.find('a');\n var $target = $($link.attr('href'));\n var targetEl = $target[0];\n var targetBounds = targetEl.getBoundingClientRect();\n\n if (targetBounds.top > window.innerHeight) {\n ICF.Utils.ProgressBar.FillBar($bar, '0%');\n return;\n }\n\n var $correspondingElements = $target.nextUntil('.page-section-header').filter(function (index) { \n return (this).getBoundingClientRect().height > 0;\n });\n\n \n var lastEl = $correspondingElements.last()[0];\n var lastElBounds = lastEl.getBoundingClientRect();\n\n if (lastElBounds.bottom - headerOffset < 0) {\n ICF.Utils.ProgressBar.FillBar($bar, '100%');\n return;\n }\n\n var height = 0;\n $correspondingElements.each(function (i, el) {\n var $el = $(el);\n var elHeight = $el.outerHeight(true);\n\n height += elHeight;\n });\n\n var ratio = (height - lastElBounds.bottom + headerOffset + tableOfContentsOffset) / height;\n var percentage = (ratio * 100) + '%';\n\n ICF.Utils.ProgressBar.FillBar($bar, percentage);\n };\n\n var adjustProgressBars = function () {\n $progressBar.each(function (i, el) {\n\n var $bar = $(el);\n\n calculateProgressBarWidth($bar);\n });\n };\n\n $(window).scroll(function () {\n requestAnimationFrame(function () {\n adjustProgressBars();\n });\n });\n\n $(window).resize(function () {\n requestAnimationFrame(function () {\n adjustProgressBars();\n });\n });\n\n $('.main-header').addClass('header--with-submenu');\n }\n};","module.exports = function () {\n $('.topic-and-tag-footer-list__item-title').click(function (e) {\n e.preventDefault();\n\n if (ICF.Utils.Breakpoints.IsMobile()) {\n var $groupToToggle = $(this).siblings('.topic-and-tag-footer-list__item-content').first();\n\n var $icon = $(this).find('.circle-plus-minus-icon');\n\n if ($icon.hasClass('circle-plus-minus-icon--is-active')) {\n $icon.removeClass('circle-plus-minus-icon--is-active');\n $groupToToggle.css({\n height: '0px'\n });\n }\n else {\n var height = 0;\n $groupToToggle.find('li').each(function (i) {\n height += $(this).outerHeight(true);\n });\n\n $icon.addClass('circle-plus-minus-icon--is-active');\n $groupToToggle.css({\n height: height + 'px'\n });\n }\n\n $(this).attr('aria-expanded', function (i, attr) {\n return attr === 'true' ? 'false' : 'true'\n });\n }\n });\n\n var resetTopicAndTagHeights = function () {\n if (window.innerWidth > 767) {\n $('.topic-and-tag-footer-list__item-content').css({\n height: ''\n });\n\n $('.topic-and-tag-footer-list__item-title .circle-plus-minus-icon').removeClass('circle-plus-minus-icon--is-active');\n }\n };\n\n $(window).resize(function () {\n requestAnimationFrame(resetTopicAndTagHeights);\n });\n};","module.exports = function () {\n\n if ($('.topic-group-landing').length === 0) {\n return;\n }\n \n $('.topic-group-landing__show-more-description-toggle').click(function () { \n $(this).addClass('topic-group-landing__show-more-description-toggle--hidden');\n\n var $container = $(this).closest('.topic-group-landing__title-container');\n if ($container.length) { \n var $showMoreDescription = $container.find('.topic-group-landing__show-more-description');\n\n if ($showMoreDescription.length) {\n $showMoreDescription.removeClass('topic-group-landing__show-more-description--hidden');\n }\n }\n return false;\n });\n\n $('.topic-group-landing__show-less-description-toggle').click(function () {\n var $showMoreDescription = $(this).closest('.topic-group-landing__show-more-description');\n if ($showMoreDescription.length) {\n $showMoreDescription.addClass('topic-group-landing__show-more-description--hidden');\n }\n var $container = $(this).closest('.topic-group-landing__title-container');\n if ($container.length) {\n var $showMoreToggle = $container.find('.topic-group-landing__show-more-description-toggle');\n if ($showMoreToggle.length) {\n $showMoreToggle.removeClass('topic-group-landing__show-more-description-toggle--hidden');\n }\n }\n return false;\n });\n};","module.exports = function () {\n\n if ($('.topic-landing').length === 0) {\n return;\n }\n \n $('.topic-landing__show-more-description-toggle').click(function () { \n $(this).addClass('topic-landing__show-more-description-toggle--hidden');\n\n var $container = $(this).closest('.topic-landing__title-container');\n if ($container.length) { \n var $showMoreDescription = $container.find('.topic-landing__show-more-description');\n\n if ($showMoreDescription.length) {\n $showMoreDescription.removeClass('topic-landing__show-more-description--hidden');\n }\n }\n return false;\n });\n\n $('.topic-landing__show-less-description-toggle').click(function () {\n var $showMoreDescription = $(this).closest('.topic-landing__show-more-description');\n if ($showMoreDescription.length) {\n $showMoreDescription.addClass('topic-landing__show-more-description--hidden');\n }\n var $container = $(this).closest('.topic-landing__title-container');\n if ($container.length) {\n var $showMoreToggle = $container.find('.topic-landing__show-more-description-toggle');\n if ($showMoreToggle.length) {\n $showMoreToggle.removeClass('topic-landing__show-more-description-toggle--hidden');\n }\n }\n return false;\n });\n};","module.exports = function () {\n var selectTab = function ($tabContainer, tabId) {\n var $option = $tabContainer.find('.two-column-tabs-option[data-tab-id=\"' + tabId + '\"]');\n\n $tabContainer.find('.two-column-tabs-option-active').removeClass('two-column-tabs-option-active');\n $tabContainer.find('.two-column-tabs-tab-active').removeClass('two-column-tabs-tab-active');\n\n $option.addClass('two-column-tabs-option-active');\n\n var $tab = $tabContainer.find('.two-column-tabs-tab[data-tab-id=\"' + tabId + '\"]').first();\n $tab.addClass('two-column-tabs-tab-active');\n\n aos.refresh();\n };\n\n $('.two-column-tabs-option').click(function() {\n var $option = $(this);\n var tabId = $option.data('tabId');\n var $tabContainer = $option.parents('.two-column-tabs').first();\n\n selectTab($tabContainer, tabId);\n });\n\n $('.two-column-tabs-dropdown select').change(function() {\n var tabId = $(this).val();\n var $tabContainer = $(this).parents('.two-column-tabs').first();\n\n selectTab($tabContainer, tabId);\n });\n};","module.exports = function() {\n $('.universal-promo-card-share-icon-wrapper').on('click', function(e) {\n e.stopPropagation();\n e.preventDefault();\n $(this).toggleClass('is-active');\n \n return false;\n });\n\n $('.universal-promo-card-share-icon-wrapper').hover(function() {\n $(this).addClass('is-active');\n }, function() {\n $(this).removeClass('is-active');\n });\n};","module.exports = function() {\n if (!document.getElementsByClassName('activate-vertical-carousel')[0]) return;\n\n var isMobile = ICF.Utils.DeviceDetection.IsMobile();\n var mySwiper;\n\n var state = {\n mobileSwiper: false,\n desktopSwiper: false,\n direction: 'horizontal',\n isMobile: function () {\n return ICF.Utils.DeviceDetection.IsMobile();\n },\n\n setCurrentState: function () {\n state.mobileSwiper = isMobile;\n state.desktopSwiper = !isMobile;\n state.direction = 'horizontal';\n }\n };\n\n var swiperObj = {\n $swiperContainer: jQuery('.activate-vertical-carousel .swiper-container'),\n init: function () {\n swiperObj.swiper();\n\n if (state.isMobile()) {\n ICF.Utils.EqualHeights.SetEqualHeights(this.$swiperContainer.find('.vertical-carousel-content'));\n } else {\n this.$swiperContainer.find('.vertical-carousel-content').height('auto');\n }\n },\n\n swiper: function () {\n this.$swiperContainer.removeClass('swiper-container-vertical').addClass('swiper-container-horizontal');\n this.createSwiper();\n },\n\n createSwiper: function () {\n if (mySwiper) {\n mySwiper.destroy(true, true);\n mySwiper = undefined;\n }\n\n mySwiper = new Swiper('.activate-vertical-carousel .swiper-container', {\n direction: state.direction,\n loop: false,\n speed: 500,\n paginationClickable: true,\n navigation: {\n nextEl: '.swiper-button-next-custom',\n prevEl: '.swiper-button-prev-custom',\n },\n pagination: {\n el: '.swiper-pagination',\n clickable: true\n },\n grabCursor: true\n });\n }\n }\n\n state.setCurrentState();\n swiperObj.init();\n\n var resizePods = ICF.Utils.Debounce(function () {\n state.setCurrentState();\n swiperObj.init();\n }, 250)\n\n window.addEventListener('resize', resizePods);\n};","module.exports = function () {\n \n var $videoHeroBottom = $('.video-hero-bottom');\n\n var updateBottomMargin = function () {\n var height = $videoHeroBottom.outerHeight(true) / 2 * -1;\n\n $videoHeroBottom.find('.video-hero-bottom__container').css({\n 'margin-bottom': height + 'px'\n });\n };\n\n if ($videoHeroBottom.length) {\n updateBottomMargin();\n\n $(window).resize(function () {\n requestAnimationFrame(updateBottomMargin);\n });\n }\n};","module.exports = function () {\n var $spinner = $('.video-hero-spinner');\n var previousScrollPosition = 0;\n \n var calculateSpinnerPosition = function () {\n var currentHeight = $(window).scrollTop();\n var totalHeight = $(document).outerHeight(true);\n var currentPercent = currentHeight / totalHeight;\n var currentDegrees = (-90 * currentPercent) + 'deg';\n var transformValue = 'rotate(' + currentDegrees + ')';\n $spinner.find('svg').css({\n 'transform': transformValue\n });\n };\n\n if ($spinner.length) {\n setInterval(function () {\n var newScrollPosition = $(window).scrollTop();\n if (newScrollPosition !== previousScrollPosition) {\n calculateSpinnerPosition();\n previousScrollPosition = newScrollPosition;\n }\n }, 10);\n }\n};","module.exports = function () {\n \n var $videoHero = $('.video-hero');\n\n var resizeVideo = function () {\n var containerWidth = $videoHero.width();\n var containerHeight = $videoHero.outerHeight();\n \n var aspect = containerWidth / containerHeight;\n var sixteenNineAspect = 16 / 9;\n var width, height;\n \n if (aspect < sixteenNineAspect) {\n height = containerHeight;\n width = height * sixteenNineAspect;\n }\n else {\n width = containerWidth;\n height = width / sixteenNineAspect;\n }\n\n var $wistiaContainer = $videoHero.find('.wistia_responsive_padding');\n $wistiaContainer.css('width', width + 'px').css('height', height + 'px');\n };\n\n if ($videoHero.length) {\n resizeVideo();\n\n $(window).resize(function () {\n requestAnimationFrame(resizeVideo);\n });\n }\n};","module.exports = function () {\n var $brightCoveVideos = $('.video-modal .video-js');\n if ($brightCoveVideos.length > 0) {\n var $videoModals = $('.video-modal');\n var videoIndex = 1;\n $videoModals.each(function () {\n // instantiate video objects. The videojs() method can only take in an ID, so give an ID to each video in order to pass it in and instantiate it\n $videoFrame = $(this).find('.video-js')\n $videoFrame.attr('id', 'videoModalIndex' + videoIndex);\n var vidID = $videoFrame.attr('id');\n var videoModalPlayer = videojs(vidID);\n var $videoModalContainer = $(this);\n var $currentVideo = $videoModalContainer.find('.video');\n\n videoModalPlayer.on('play',\n function () {\n\n });\n videoModalPlayer.on('pause',\n function () {\n\n });\n videoModalPlayer.on('ended',\n function () {\n //videoModalPlayer.poster(videoModalPlayer.poster());\n });\n\n $('.video-modal').on('hidden.bs.modal',\n function (e) {\n videoModalPlayer.pause();\n })\n\n videoIndex++;\n });\n }\n\n var htmlVideos = $('video');\n if (htmlVideos.length > 0) {\n $('.video-modal').on('hidden.bs.modal',\n function (e) {\n $(this).find('video')[0].pause();\n });\n\n $('.modal').on('hidden.bs.modal', function (e) {\n $(\"video\").each(function () {\n this.pause()\n });\n });\n }\n};","module.exports = function () {\n\n $('form[data-wffm] select').each(function () {\n if (!$(this).attr('size')) {\n $(this).wrap('
');\n }\n });\n\n $('form[data-wffm] .datepicker').each(function () {\n $(this).attr('readonly', 'readyonly');\n });\n\n var originalSubmitText = '';\n var submittedData = {};\n\n $('form[data-wffm]').on('wffm.formsubmitsuccess',\n function () {\n $(this).removeClass('wffm-submitting');\n\n dataLayer.push({\n event: 'formSubmissionSuccess',\n formName: $('h1').text(),\n data: submittedData\n });\n });\n\n $('form[data-wffm]').on('wffm.formsubmiterror',\n function () {\n var $button = $(this).find('input[type=submit]');\n\n $button.val(originalSubmitText);\n $button.removeClass('btn-submitting');\n $(this).removeClass('wffm-submitting');\n\n dataLayer.push({\n event: 'formSubmissionError',\n formName: $('h1').text(),\n data: submittedData\n });\n });\n\n $('form[data-wffm]').on('wffm.formsubmitbegin',\n function () {\n var $button = $(this).find('input[type=submit]');\n\n originalSubmitText = $button.val();\n\n $button.val('Sending...');\n $button.addClass('btn-submitting');\n $(this).addClass('wffm-submitting');\n\n var initialData = $('form[data-wffm]').serializeArray();\n var dataIds = {};\n var dataValues = {};\n\n initialData.forEach(function (elem) {\n var r = /Sections\\[(\\d+)\\](.*)Fields\\[(\\d+)\\]\\.(.*)/g;\n var a = r.exec(elem.name);\n if (a) {\n var section = a[1];\n var field = a[3];\n var type = a[4];\n\n if (type === 'Id') {\n dataIds[section + ',' + field] = elem.value.toLowerCase().replace(/[^a-z0-9]/g, '');\n }\n else if (type === 'Value') {\n dataValues[section + ',' + field] = elem.value;\n }\n }\n });\n\n Object.keys(dataIds).forEach(function (key) {\n submittedData[dataIds[key]] = dataValues[key];\n });\n });\n};","module.exports = {\n 'WistiaFormSubmit': require('./wistia-form-submit')\n};","module.exports = function (form) {\n return function (values, $formContainer, followUpUrl) {\n var wistiaChannelId = Wistia.channel().hashedId();\n var wistiaListId = Wistia.channel().getListId();\n var emailAddress = values['Email'];\n var firstName = values['FirstName'];\n var lastName = values['LastName'];\n\n var submitData = {\n 'channel_id': wistiaChannelId,\n 'list_id': wistiaListId,\n 'email_address': emailAddress\n };\n\n if (firstName && firstName.length) {\n submitData['first_name'] = firstName;\n }\n\n if (lastName && lastName.length) {\n submitData['last_name'] = lastName;\n }\n\n $.post('http://app.wistia.com/subscribe', submitData);\n };\n};","module.exports = {\n 'IsMobile': require('./isMobile'),\n 'IsTablet': require('./isTablet'),\n 'IsAtLeastTablet': require('./isAtLeastTablet'),\n 'IsDesktopSm': require('./isDesktopSm'),\n 'IsAtLeastDesktopSm': require('./isAtLeastDesktopSm'),\n 'IsDesktop': require('./isDesktop')\n};","var isDesktopSm = function () {\n return window.innerWidth >= ICF.Variables.Breakpoints.DesktopSm;\n};\n\nmodule.exports = isDesktopSm;","var isAtLeastTablet = function () {\n return window.innerWidth >= ICF.Variables.Breakpoints.Tablet;\n};\n\nmodule.exports = isAtLeastTablet;","var isDesktop = function () {\n return window.innerWidth >= ICF.Variables.Breakpoints.Desktop;\n};\n\nmodule.exports = isDesktop;","var isDesktopSm = function () {\n return window.innerWidth >= ICF.Variables.Breakpoints.DesktopSm && window.innerWidth < ICF.Variables.Breakpoints.Desktop;\n};\n\nmodule.exports = isDesktopSm;","var isMobile = function () {\n return window.innerWidth < ICF.Variables.Breakpoints.Tablet;\n};\n\nmodule.exports = isMobile;","var isTablet = function () {\n return window.innerWidth >= ICF.Variables.Breakpoints.Tablet && window.innerWidth < ICF.Variables.Breakpoints.DesktopSm;\n};\n\nmodule.exports = isTablet;","var cookieContainsPattern = function (pattern) { \n return ICF.Utils.GetCookie('OptanonConsent').includes(pattern);\n};\n\nmodule.exports = cookieContainsPattern;","var hasAcceptedFunctional = function () {\n return ICF.Utils.Consent.CookieContainsPattern(ICF.Variables.ConsentGroupPatterns.AcceptedFunctional)\n};\n\nmodule.exports = hasAcceptedFunctional;","var hasAcceptedPerformance = function () {\n return ICF.Utils.Consent.CookieContainsPattern(ICF.Variables.ConsentGroupPatterns.AcceptedPerformance)\n};\n\nmodule.exports = hasAcceptedPerformance;","var hasAcceptedStrictlyNecessary = function () {\n return ICF.Utils.Consent.CookieContainsPattern(ICF.Variables.ConsentGroupPatterns.AcceptedStrictlyNecessary)\n};\n\nmodule.exports = hasAcceptedStrictlyNecessary;","var hasAcceptedTargeting = function () {\n return ICF.Utils.Consent.CookieContainsPattern(ICF.Variables.ConsentGroupPatterns.AcceptedTargeting)\n};\n\nmodule.exports = hasAcceptedTargeting;","module.exports = {\n 'CookieContainsPattern': require('./cookie-contains-pattern'),\n 'HasAcceptedFunctional': require('./has-accepted-functional'),\n 'HasAcceptedPerformance': require('./has-accepted-performance'),\n 'HasAcceptedStrictlyNecessary': require('./has-accepted-strictly-necessary'),\n 'HasAcceptedTargeting': require('./has-accepted-targeting')\n};","module.exports = function(func, wait, immediate) {\n\n var timeout;\n\n return function() {\n\n var context = this,\n args = arguments;\n\n var later = function() {\n\n timeout = null;\n\n if (!immediate) func.apply(context, args);\n\n };\n\n var callNow = immediate && !timeout;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(later, wait);\n\n if (callNow) func.apply(context, args);\n\n };\n};","var comparator = {\n\n '<': function (a, b) {\n return a < b;\n },\n\n '<=': function (a, b) {\n return a <= b;\n },\n\n '>': function (a, b) {\n return a > b;\n },\n\n '>=': function (a, b) {\n return a >= b;\n }\n\n}\n\nmodule.exports = function (version, range) {\n var string = (range + '');\n\n var n = +(string.match(/\\d+/) || NaN);\n\n var op = string.match(/^[<>]=?|/)[0];\n\n return comparator[op] ? comparator[op](version, n) : (version == n || n !== n);\n};","var isIphone = require('./is-iphone');\nvar isIpod = require('./is-ipod');\nvar isAndroidPhone = require('./is-android-phone');\nvar isBlackberry = require('./is-blackberry');\nvar isMobileSize = require('./is-mobile-size');\n\nmodule.exports = {\n 'IsIphone': isIphone,\n 'IsIpod': isIpod,\n 'IsAndroidPhone': isAndroidPhone,\n 'IsBlackberry': isBlackberry,\n 'IsMobileSize': isMobileSize,\n 'IsMobile': function() {\n return isIphone() || isIpod() || isAndroidPhone() || isBlackberry() || isMobileSize();\n }\n};","module.exports = function () {\n var userAgent = ICF.Utils.GetUserAgent();\n return /android/.test(userAgent) && /mobile/.test(userAgent);\n};","module.exports = function () {\n var userAgent = ICF.Utils.GetUserAgent();\n return /blackberry/.test(userAgent) || /bb10/.test(userAgent);\n};","var compareVersion = require('./compare-version');\n\nmodule.exports = function (range) {\n var userAgent = ICF.Utils.GetUserAgent();\n var match = userAgent.match(/iphone(?:.+?os (\\d+))?/);\n return !!match && compareVersion(match[1] || 1, range);\n};","var compareVersion = require('./compare-version');\n\nmodule.exports = function () {\n var userAgent = ICF.Utils.GetUserAgent();\n var match = userAgent.match(/ipod.+?os (\\d+)/);\n return !!match && compareVersion(match[1], range);\n};","module.exports = function() {\n return window.innerWidth < 769;\n};","module.exports = function(x, y, $elem, requiredSelector) {\n\n // Figure out the padding, because of possible negative margins, etc.\n var containerStyle = $elem[0].currentStyle || window.getComputedStyle($elem[0]);\n var containerPaddingLeft = parseFloat(containerStyle.paddingLeft);\n var containerPaddingRight = parseFloat(containerStyle.paddingRight);\n var containerPaddingTop = parseFloat(containerStyle.paddingTop);\n\n var results = [];\n\n $elem.children().filter(':visible').each(function() {\n\n var $childElem = $(this);\n\n if (requiredSelector) {\n if (!$childElem.find(requiredSelector).length) {\n return true;\n }\n }\n\n // Get the position of the element with respect to the viewport\n var childPosition = $childElem[0].getBoundingClientRect();\n\n // Compute the margins and padding\n var childStyle = $childElem[0].currentStyle || window.getComputedStyle($childElem[0]);\n var marginTop = parseFloat(childStyle.marginTop);\n var marginLeft = parseFloat(childStyle.marginLeft);\n var marginBottom = parseFloat(childStyle.marginBottom);\n var paddingBottom = parseFloat(childStyle.paddingBottom);\n\n // Figure out the true bounding box of the element, taking into consideration\n // container padding and element margin\n var childMinX = childPosition.left;\n var childMaxX = childPosition.left + $childElem.width() + containerPaddingLeft + containerPaddingRight;\n\n if (marginLeft > 0) {\n childMinX -= marginLeft;\n }\n\n var childMinY = childPosition.top;\n var childMaxY = childPosition.top + containerPaddingTop + $childElem.height() + paddingBottom + marginBottom;\n\n if (marginTop > 0) {\n childMinY -= marginTop;\n }\n\n // We need to special case this module because of the fact that it includes odd padding/margin\n // to accomodate the need for the right colum image to fall above the background color\n if ($childElem.hasClass('tabbed-content-module')) {\n childMinY += 56;\n childMaxY += 136;\n }\n\n // We store the results here instead of immediately computing the winner, because if two\n // elements both contain the point (which is possible), we want to select the one which\n // is lower on the screen\n results.push({\n elem: $childElem,\n minX: childMinX,\n maxX: childMaxX,\n minY: childMinY,\n maxY: childMaxY\n });\n });\n\n // Order the results to allow selecting the first element from the top which contains\n // the point\n results.sort(function(a, b) {\n return a.minY - b.minY;\n });\n\n // Filter to only elements which contain the point and then extract the actual element\n var filteredResults = results.filter(function(obj) {\n if (obj.minX <= x && obj.maxX >= x && obj.minY <= y && obj.maxY >= y) {\n return true;\n }\n return false;\n }).map(function(obj) {\n return obj.elem;\n });\n\n var $resultElem = $([]);\n\n // If an element contains the point, we use it, otherwise return an empty jQuery object\n if (filteredResults.length) {\n $resultElem = $(filteredResults[0]);\n }\n\n return $resultElem;\n};","module.exports = {\n 'RegisterSetEqualHeights': require('./register-set-equal-heights'),\n 'SetEqualHeights': require('./set-equal-heights')\n};","module.exports = function(query, modifier) {\n var resizeFunction = ICF.Utils.EqualHeights.SetEqualHeights(query, modifier);\n\n resizeFunction();\n\n $(window).resize(resizeFunction);\n\n $(window).on('load', resizeFunction);\n\n return resizeFunction;\n};","module.exports = function(query, modifier) {\n\n if (!modifier) {\n modifier = 0;\n }\n\n var hasInited = false;\n\n var resizeFunction = function() {\n\n if (!$(query).length) {\n return;\n }\n\n if (!hasInited) {\n $(query).find(\"img\").each(function() {\n var img = new Image();\n $(img).on('load', resizeFunction);\n img.src = $(this).attr('src');\n });\n }\n\n var currentProcessedElems = 0;\n\n var processRow = function() {\n var orderedElems = [];\n\n // Get the elements matching the query and reset their heights\n $(query).slice(currentProcessedElems).css(\"height\", \"auto\").each(function() {\n\n // Get the top position of the current element\n var newTopPosition = Math.round($(this).offset().top);\n\n orderedElems.push({\n 'elem': this,\n 'top': newTopPosition\n });\n });\n\n orderedElems.sort(function(a, b) {\n return a.top - b.top;\n });\n\n var newProcessedElems = 0;\n\n if (orderedElems.length > 0) {\n var previousTopPosition = orderedElems[0].top;\n var maxHeight = 0;\n\n for (var i = 0; i < orderedElems.length; i++) {\n if (orderedElems[i].top === previousTopPosition) {\n var height = $(orderedElems[i].elem).outerHeight();\n if (height > maxHeight) {\n maxHeight = height;\n }\n\n newProcessedElems++;\n } else {\n break;\n }\n }\n\n $(orderedElems.map(function(x) {\n return x.elem\n })).slice(0, newProcessedElems).css('height', (maxHeight + modifier) + 'px');\n\n currentProcessedElems += newProcessedElems;\n\n if (currentProcessedElems < $(query).length) {\n processRow();\n }\n }\n };\n\n processRow();\n\n hasInited = true;\n };\n\n return resizeFunction;\n};","module.exports = function (cname) {\n var name = cname + \"=\";\n var ca = decodeURIComponent(document.cookie).split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return \"\";\n};","module.exports = function (name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n var results = regex.exec(location.search);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n};","module.exports = function() {\n return (navigator && navigator.userAgent || '').toLowerCase();\n};","module.exports = {\n 'Init': require('./init'),\n 'GetUserAgent': require('./get-user-agent'),\n 'DeviceDetection': require('./device-detection'),\n 'Throttle': require('./throttle'),\n 'Debounce': require('./debounce'),\n 'EqualHeights': require('./equal-heights'),\n 'ElementAtPointInElement': require('./element-at-point-in-element'),\n 'LoadScript': require('./load-script'),\n 'GetUrlParameter': require('./get-url-parameter'),\n 'Breakpoints': require('./breakpoints'),\n 'ProgressBar': require('./progress-bar'),\n 'GetCookie': require('./get-cookie'),\n 'Consent': require('./consent')\n};","var initRecursive = function (obj, path) {\n return function () {\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (obj.hasOwnProperty(key)) {\n var val = obj[key];\n\n if (key.toLowerCase() === 'init' && path !== 'ICF.Utils' && val.length === 0) {\n try {\n val();\n } catch (err) {\n console.error(err);\n }\n }\n\n if (val != null && typeof val === 'object') {\n initRecursive(val, path + '.' + key)();\n }\n }\n }\n };\n};\n\n$(document).ready(function () {\n initRecursive(ICF, 'ICF')();\n window.ICFInitiated = true;\n});\n","// From http://stackoverflow.com/questions/12820953/asynchronous-script-loading-callback\nmodule.exports = function (u, c) {\n var d = document,\n t = 'script',\n o = d.createElement(t),\n s = d.getElementsByTagName(t)[0];\n o.src = u;\n if (c) {\n o.addEventListener('load', function(e) { c(null, e); }, false);\n }\n s.parentNode.insertBefore(o, s);\n};","module.exports = function ($bar, width) {\n if (!$bar.length) {\n return;\n }\n\n $bar.find('.progress-bar__bar').css({\n 'width': width\n });\n};","module.exports = {\n 'FillBar': require('./fill-bar')\n};","module.exports = function(delay, fn) {\n var last, deferTimer;\n\n return function() {\n\n var context = this,\n args = arguments,\n now = +new Date;\n\n if (last && now < last + delay) {\n\n clearTimeout(deferTimer);\n\n deferTimer = setTimeout(function() {\n last = now;\n fn.apply(context, args);\n },\n delay);\n\n } else {\n\n last = now;\n\n fn.apply(context, args);\n\n }\n };\n};","module.exports = {\n 'Tablet': 768,\n 'DesktopSm': 992,\n 'Desktop': 1200\n};","module.exports = {\n 'AcceptedFunctional': 'C0003:1',\n 'AcceptedPerformance': 'C0002:1',\n 'AcceptedStrictlyNecessary': 'C0001:1',\n 'AcceptedTargeting': 'C0004:1'\n};","module.exports = {\n 'Breakpoints': require('./breakpoints'),\n 'TypeAhead': require('./type-ahead'),\n 'ConsentGroupPatterns': require('./consent-group-patterns')\n};","module.exports = {\n 'Tab': 9,\n 'LeftArrow': 37,\n 'UpArrow': 38,\n 'RightArrow': 39, \n 'DownArrow': 40,\n 'MinQueryLength': 2,\n 'Esc': 27,\n 'Enter': 13\n};"]}