{"version":3,"sources":["global.js","backbutton.js","spamproof.js","jquery.spamproof.js"],"names":["doHeadSiteSearch","searchText","$","val","replace","searchUrl","decodeURIComponent","window","location","getUrlParameter","name","results","RegExp","exec","search","Array","prototype","indexOf","searchElement","fromIndex","k","this","TypeError","O","Object","len","length","n","Math","abs","Infinity","max","each","_this","tabs","find","tabContents","on","e","isProgrammatic","preventDefault","index","removeClass","eq","addClass","trigger","pathname","attr","$mobileTrigger","$mainNavigation","ev","hasClass","$globalBody","$modalWrapper","$globalSearch","$searchTrigger","$accordionSingle","$accordionContent","_self","accordionContentData","data","next","toggleClass","stop","slideToggle","accordionSingleInit","$accordionMultiple","closeAll","$navTriggers","$navMenus","slideUp","$currentItem","clickedIndex","navItem","navIndex","slideDown","openNavItem","accordionMultipleInit","jQuery","routerBase","push","history","pushState","state","urlFragment","console","log","pop","back","stateObject","stateObjectCopy","extend","value","isArray","join","param","servicesRouter","type","service","init","initialType","onpopstate","popState","stateFromURL","setIndustryOrPractice","setService","replaceState","newsRouter","initialSearchState","isEmptySearch","keywords","industries","practices","filterManager","handlePopstate","split","filter","String","page","parseInt","isNaN","intelligenceRouter","resultsRouter","peopleRouter","keyword","letter","offices","level","license","language","gender","minority","handlePeoplePopstate","sort","SPMail","SendEmail","address","domain","document","href","UpdateDisplayText","matches","querySelectorAll","i","match","content","createTextNode","parentNode","replaceChild","onreadystatechange","readyState","factory","define","amd","el","mailto","replaceWith"],"mappings":"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","file":"main.js","sourcesContent":["// Production steps of ECMA-262, Edition 5, 15.4.4.14\r\n// Reference: http://es5.github.io/#x15.4.4.14\r\nif (!Array.prototype.indexOf) {\r\n Array.prototype.indexOf = function (searchElement, fromIndex) {\r\n\r\n var k;\r\n\r\n // 1. Let O be the result of calling ToObject passing\r\n // the this value as the argument.\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var O = Object(this);\r\n\r\n // 2. Let lenValue be the result of calling the Get\r\n // internal method of O with the argument \"length\".\r\n // 3. Let len be ToUint32(lenValue).\r\n var len = O.length >>> 0;\r\n\r\n // 4. If len is 0, return -1.\r\n if (len === 0) {\r\n return -1;\r\n }\r\n\r\n // 5. If argument fromIndex was passed let n be\r\n // ToInteger(fromIndex); else let n be 0.\r\n var n = +fromIndex || 0;\r\n\r\n if (Math.abs(n) === Infinity) {\r\n n = 0;\r\n }\r\n\r\n // 6. If n >= len, return -1.\r\n if (n >= len) {\r\n return -1;\r\n }\r\n\r\n // 7. If n >= 0, then Let k be n.\r\n // 8. Else, n<0, Let k be len - abs(n).\r\n // If k is less than 0, then let k be 0.\r\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n\r\n // 9. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ToString(k).\r\n // This is implicit for LHS operands of the in operator\r\n // b. Let kPresent be the result of calling the\r\n // HasProperty internal method of O with argument Pk.\r\n // This step can be combined with c\r\n // c. If kPresent is true, then\r\n // i. Let elementK be the result of calling the Get\r\n // internal method of O with the argument ToString(k).\r\n // ii. Let same be the result of applying the\r\n // Strict Equality Comparison Algorithm to\r\n // searchElement and elementK.\r\n // iii. If same is true, return k.\r\n if (k in O && O[k] === searchElement) {\r\n return k;\r\n }\r\n k++;\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\nfunction doHeadSiteSearch() {\r\n var searchText = $(\"#inputSearchKeywords\").val();\r\n searchText = searchText.replace(\"‘\", \"%27\");\r\n searchText = searchText.replace(\"’\", \"%27\");\r\n var searchUrl = \"/search?qu=\" + decodeURIComponent(searchText);\r\n window.location.replace(searchUrl);\r\n}\r\n\r\n$(function () {\r\n $(\".global-tabs\").each(function () {\r\n var _this = $(this),\r\n tabs = _this.find(\".global-tab\"),\r\n tabContents = _this.find(\".global-tab-content\");\r\n\r\n tabs.on(\"click\", function (e, isProgrammatic) {\r\n e.preventDefault();\r\n\r\n var index = tabs.index(this);\r\n tabs.removeClass(\"is-active\");\r\n tabContents.removeClass(\"is-active\");\r\n tabs.eq(index).addClass(\"is-active\");\r\n tabContents.eq(index).addClass(\"is-active\");\r\n _this.trigger(\"globalTabSwitched\", [index, isProgrammatic]);\r\n });\r\n });\r\n});\r\n\r\n(function ($) {\r\n 'use strict';\r\n\r\n //On DOM Ready\r\n $(function () {\r\n\r\n $(\".global-nav-link\").each(function () {\r\n var _this = $(this);\r\n if (window.location.pathname.indexOf(_this.attr('href')) > -1) {\r\n _this.addClass('active');\r\n return false;\r\n } else {\r\n _this.removeClass('active');\r\n }\r\n });\r\n\r\n\r\n //Mobile Trigger\r\n var $mobileTrigger = $('.nav-mobile-toggle'),\r\n $mainNavigation = $('.global-site-nav');\r\n\r\n $mobileTrigger.on('click.mobileTrigger', function (ev) {\r\n ev.preventDefault();\r\n\r\n\r\n if ($mobileTrigger.hasClass('is-active')) {\r\n $mobileTrigger.removeClass('is-active');\r\n $mainNavigation.removeClass('is-active-mobilenav');\r\n }\r\n\r\n else {\r\n $mobileTrigger.addClass('is-active');\r\n $mainNavigation.addClass('is-active-mobilenav');\r\n\r\n //Close SearchBox if opened\r\n $globalBody.removeClass('js-global-search-active');\r\n $modalWrapper.removeClass('is-active');\r\n $globalSearch.removeClass('is-active');\r\n }\r\n\r\n });\r\n\r\n\r\n //Global Search Trigger\r\n var $globalSearch = $('.site-search'),\r\n $searchTrigger = $('.js-global-search'),\r\n $globalBody = $('body'),\r\n $modalWrapper = $('.modal-overlay');\r\n\r\n $searchTrigger.on('click.globalSearch', function (ev) {\r\n\r\n ev.preventDefault();\r\n\r\n if ($globalBody.hasClass('js-global-search-active')) {\r\n //Close Mobile Navigation if it's opened\r\n $globalBody.removeClass('js-global-search-active');\r\n $modalWrapper.removeClass('is-active');\r\n $globalSearch.removeClass('is-active');\r\n }\r\n\r\n else {\r\n $globalBody.addClass('js-global-search-active');\r\n $modalWrapper.addClass('is-active');\r\n $globalSearch.addClass('is-active');\r\n\r\n $mobileTrigger.removeClass('is-active');\r\n $mainNavigation.removeClass('is-active-mobilenav');\r\n }\r\n });\r\n\r\n $modalWrapper.on('click', function () {\r\n $globalBody.removeClass('js-global-search-active');\r\n $modalWrapper.removeClass('is-active');\r\n $globalSearch.removeClass('is-active');\r\n });\r\n\r\n\r\n //Find All Toggle Components and attach event handler\r\n var $accordionSingle = $('[data-accordion-single]');\r\n\r\n\r\n //check to see if we have any accordions on the page, if so attach event handler\r\n if ($accordionSingle.length > 0) {\r\n accordionSingleInit($accordionSingle);\r\n }\r\n\r\n function accordionSingleInit($accordionSingle) {\r\n\r\n $accordionSingle.each(function () {\r\n\r\n var _self = $(this),\r\n $accordionContent,\r\n accordionContentData = _self.data('accordion-single');\r\n\r\n (typeof (accordionContentData) === 'string') ? (\r\n $accordionContent = $(accordionContentData)\r\n\r\n ) : (\r\n\r\n $accordionContent = _self.next()\r\n );\r\n\r\n\r\n _self.on('click.accordion', function () {\r\n _self.toggleClass('is-active');\r\n $accordionContent.stop().slideToggle();\r\n });\r\n\r\n });\r\n }\r\n\r\n\r\n //AccordionMultple Module\r\n\r\n var $accordionMultiple = $('[data-accordion-multiple]');\r\n\r\n //check to see if we have any accordions on the page, if so attach event handler\r\n if ($accordionMultiple.length > 0) {\r\n accordionMultipleInit($accordionMultiple);\r\n }\r\n\r\n\r\n function accordionMultipleInit($accordionMultiple) {\r\n $accordionMultiple.each(function () {\r\n\r\n var _self = $(this),\r\n $navTriggers = _self.find('.js-accordion-trigger'),\r\n $navMenus = _self.find('.js-accordion-menu'),\r\n clickedIndex;\r\n\r\n $navTriggers.on('click', function () {\r\n\r\n var $currentItem = $(this),\r\n\r\n clickedIndex = $navTriggers.index($currentItem);\r\n\r\n\r\n if ($currentItem.hasClass('is-active-menu')) {\r\n $currentItem.removeClass('is-active-menu');\r\n\r\n closeAll($navTriggers, $navMenus);\r\n }\r\n\r\n else {\r\n closeAll($navTriggers, $navMenus);\r\n openNavItem($currentItem, clickedIndex, $navMenus);\r\n }\r\n\r\n });\r\n });\r\n }\r\n\r\n function closeAll($navTriggers, $navMenus) {\r\n\r\n $navTriggers.removeClass('is-active-menu');\r\n\r\n $navMenus.slideUp();\r\n }\r\n\r\n function openNavItem(navItem, navIndex, $navMenus) {\r\n\r\n navItem.addClass('is-active-menu');\r\n\r\n $navMenus.eq(navIndex).slideDown();\r\n }\r\n\r\n });\r\n\r\n})(jQuery);\r\n\r\n//https://davidwalsh.name/query-string-javascript\r\nfunction getUrlParameter(name) {\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n var results = regex.exec(location.search);\r\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n};\r\n\r\nrouterBase = {\r\n\r\n push: function () {\r\n if (!history.pushState) {\r\n console.log('history api not supported');\r\n return;\r\n }\r\n\r\n history.pushState(this.state, \"\", this.urlFragment(this.state));\r\n },\r\n\r\n pop: function () {\r\n history.back();\r\n },\r\n\r\n urlFragment: function (stateObject) {\r\n var url = \"?\";\r\n var stateObjectCopy = $.extend({}, stateObject);\r\n\r\n //convert arrays to CSV to improve the appearance of the url\r\n //remove empty parameters\r\n $.each(stateObjectCopy, function (index, value) {\r\n if (Array.isArray(value)) {\r\n if (!value.length)\r\n delete stateObjectCopy[index];\r\n else\r\n stateObjectCopy[index] = value.join(\"~\");\r\n }\r\n else {\r\n if (value !== 0 && !value) {\r\n delete stateObjectCopy[index];\r\n }\r\n }\r\n });\r\n\r\n return url + $.param(stateObjectCopy);\r\n }\r\n}","servicesRouter = $.extend({}, routerBase);\r\n\r\nservicesRouter.state = {\r\n type: \"\",\r\n //actual industry/practice of focus\r\n service: \"\",\r\n}\r\n\r\nservicesRouter.init = function (initialType) {\r\n window.onpopstate = this.popState;\r\n var stateFromURL = {\r\n type: getUrlParameter('type'),\r\n service: getUrlParameter('service'),\r\n }\r\n if (stateFromURL.type) {\r\n setIndustryOrPractice(stateFromURL.type);\r\n }\r\n else {\r\n stateFromURL.type = initialType;\r\n }\r\n if (stateFromURL.service) {\r\n setService(stateFromURL.service);\r\n }\r\n history.replaceState(stateFromURL, \"\");\r\n console.log('servicesRouter initialized');\r\n}\r\n\r\nservicesRouter.popState = function (ev) {\r\n if (ev.state) {\r\n if (ev.state.type != servicesRouter.state.type) {\r\n console.log('industry/practice changed');\r\n setIndustryOrPractice(ev.state.type);\r\n }\r\n //set service after type so setting type doesn't blow away service\r\n if (ev.state.service != servicesRouter.state.service) {\r\n console.log('service changed');\r\n setService(ev.state.service)\r\n }\r\n servicesRouter.state = ev.state;\r\n }\r\n};\r\n\r\n//************** News page (search) *********/\r\n\r\nnewsRouter = $.extend({}, routerBase);\r\nnewsRouter.state = {};\r\n//the init call later on checks if this is set. if a search state comes in the url, it will initialize with the parameters in here\r\nwindow.initialSearchState;\r\n\r\n//ignores page number\r\nnewsRouter.isEmptySearch = function (stateObject) {\r\n return !(stateObject.keywords || stateObject.industries.length || stateObject.practices.length || stateObject.type);\r\n}\r\n\r\nnewsRouter.popState = function (ev) {\r\n if (!ev.state) {\r\n console.log('got nothing');\r\n return;\r\n }\r\n $.filterManager.handlePopstate(ev.state, newsRouter.isEmptySearch(ev.state));\r\n}\r\n\r\nnewsRouter.init = function () {\r\n window.onpopstate = this.popState;\r\n\r\n var stateFromURL = {\r\n keywords: getUrlParameter('keywords'),\r\n industries: getUrlParameter('industries').split(\"~\").filter(String),\r\n practices: getUrlParameter('practices').split(\"~\").filter(String),\r\n type: getUrlParameter('type'),\r\n page: parseInt(getUrlParameter('page')),\r\n }\r\n\r\n if (isNaN(stateFromURL.page)) stateFromURL.page = -1;\r\n\r\n //replace existing state so we have something to go back to\r\n history.replaceState(stateFromURL, \"\");\r\n if (!newsRouter.isEmptySearch(stateFromURL)) {\r\n console.log('setting initial state from url');\r\n window.initialSearchState = stateFromURL;\r\n }\r\n console.log('newsRouter initialized');\r\n}\r\n\r\n//************** intelligence page ********/\r\nintelligenceRouter = $.extend({}, routerBase);\r\nintelligenceRouter.state = {};\r\n\r\nintelligenceRouter.isEmptySearch = function (stateObject) {\r\n return !(stateObject.keywords || stateObject.industries.length || stateObject.practices.length || stateObject.type || stateObject.page != -1);\r\n}\r\n\r\nintelligenceRouter.popState = function (ev) {\r\n if (!ev.state) {\r\n console.log('got nothing');\r\n return;\r\n }\r\n $.filterManager.handlePopstate(ev.state, intelligenceRouter.isEmptySearch(ev.state));\r\n}\r\n\r\nintelligenceRouter.init = function () {\r\n window.onpopstate = this.popState;\r\n\r\n //get state (if any) from url\r\n var stateFromURL = {\r\n keywords: getUrlParameter('keywords'),\r\n industries: getUrlParameter('industries').split(\"~\").filter(String),\r\n practices: getUrlParameter('practices').split(\"~\").filter(String),\r\n type: getUrlParameter('type'),\r\n page: parseInt(getUrlParameter('page')),\r\n };\r\n\r\n if (isNaN(stateFromURL.page)) stateFromURL.page = -1;\r\n\r\n //replace existing state so we have something to go back to\r\n history.replaceState(stateFromURL, \"\");\r\n if (!intelligenceRouter.isEmptySearch(stateFromURL)) {\r\n console.log('setting initial state from url');\r\n window.initialSearchState = stateFromURL;\r\n }\r\n console.log('intelligenceRouter initialized');\r\n}\r\n\r\n//************** results page ********/\r\nresultsRouter = $.extend({}, routerBase);\r\nresultsRouter.state = {};\r\n\r\nresultsRouter.isEmptySearch = function (stateObject) {\r\n return !(stateObject.keywords || stateObject.industries.length || stateObject.practices.length || stateObject.type || stateObject.page != -1);\r\n}\r\n\r\nresultsRouter.popState = function (ev) {\r\n if (!ev.state) {\r\n console.log('got nothing');\r\n return;\r\n }\r\n $.filterManager.handlePopstate(ev.state, resultsRouter.isEmptySearch(ev.state));\r\n}\r\n\r\nresultsRouter.init = function () {\r\n window.onpopstate = this.popState;\r\n\r\n //get state (if any) from url\r\n var stateFromURL = {\r\n keywords: getUrlParameter('keywords'),\r\n industries: getUrlParameter('industries').split(\"~\").filter(String),\r\n practices: getUrlParameter('practices').split(\"~\").filter(String),\r\n type: getUrlParameter('type'),\r\n page: parseInt(getUrlParameter('page')),\r\n };\r\n\r\n if (isNaN(stateFromURL.page)) stateFromURL.page = -1;\r\n\r\n //replace existing state so we have something to go back to\r\n history.replaceState(stateFromURL, \"\");\r\n if (!resultsRouter.isEmptySearch(stateFromURL)) {\r\n console.log('setting initial state from url');\r\n window.initialSearchState = stateFromURL;\r\n }\r\n console.log('resultsRouter initialized');\r\n}\r\n\r\n\r\n//************** people search page ********/\r\npeopleRouter = $.extend({}, routerBase);\r\npeopleRouter.state = {};\r\n\r\n//TODO: sort? page? \r\npeopleRouter.isEmptySearch = function (stateObject) {\r\n return !(stateObject.keyword || stateObject.letter || stateObject.industries.length || stateObject.practices.length || stateObject.offices.length || stateObject.level || stateObject.license || stateObject.language || stateObject.gender || stateObject.minority)\r\n}\r\n\r\npeopleRouter.popState = function (ev) {\r\n if (!ev.state) {\r\n console.log('got nothing');\r\n return;\r\n }\r\n console.log(ev.state);\r\n peopleRouter.state = ev.state;\r\n handlePeoplePopstate(ev.state, peopleRouter.isEmptySearch(ev.state), true);\r\n}\r\n\r\npeopleRouter.init = function () {\r\n window.onpopstate = this.popState;\r\n\r\n\r\n var stateFromURL = {\r\n keyword: getUrlParameter('keyword'),\r\n letter: getUrlParameter('letter'),\r\n industries: getUrlParameter('industries').split(\"~\").filter(String),\r\n practices: getUrlParameter('practices').split(\"~\").filter(String),\r\n offices: getUrlParameter('offices').split(\"~\").filter(String),\r\n level: getUrlParameter('level'),\r\n license: getUrlParameter('license'),\r\n language: getUrlParameter('language'),\r\n gender: getUrlParameter('gender'),\r\n minority: getUrlParameter('minority'),\r\n sort: getUrlParameter('sort'),\r\n page: getUrlParameter('page')\r\n };\r\n if (isNaN(stateFromURL.page)) stateFromURL.page = 0;\r\n\r\n //replace existing state so we have something to go back to\r\n history.replaceState(stateFromURL, \"\");\r\n\r\n if (!peopleRouter.isEmptySearch(stateFromURL)) {\r\n console.log('setting initial state from url');\r\n window.initialSearchState = stateFromURL;\r\n }\r\n}","var SPMail = (function () {\r\n /* Spam Mail prevention */\r\n return {\r\n SendEmail: function (address, domain) {\r\n document.location.href = \"mailto:\" + address.replace(/##/g, \"'\") + \"@\" + domain.replace(/##/g, \"'\");\r\n },\r\n\r\n // replaces the specially crafted span with the @ sign\r\n UpdateDisplayText: function () {\r\n var matches = document.querySelectorAll(\"span.spamproof_insert\");\r\n for (var i = 0; i < matches.length; i++) {\r\n var match = matches[i];\r\n var content = document.createTextNode(\"@\");\r\n match.parentNode.replaceChild(content, match);\r\n }\r\n }\r\n };\r\n})();\r\n\r\ndocument.onreadystatechange = function () {\r\n if (document.readyState == \"complete\") {\r\n SPMail.UpdateDisplayText();\r\n }\r\n};\r\n","(function (factory) {\r\n 'use strict';\r\n\r\n // AMD\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n }\r\n else\r\n // browser globals\r\n {\r\n factory(jQuery);\r\n }\r\n\r\n}(function ($) {\r\n\r\n $('a[data-mailto-domain]').each(function (i, el) {\r\n var mailto = \"mailto:\" + $(el).data('mailto-name').replace(/##/g, \"'\") + \"@\" + $(el).data('mailto-domain').replace(/##/g, \"'\");\r\n $(el).attr('href', mailto);\r\n });\r\n\r\n $(\"span.spamproof_insert\").replaceWith(\"@\");\r\n\r\n}));"]}