{"version":3,"file":"main.bundle.js","mappings":";;;;UAAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA;WACA;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCzCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WCfA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC;AACtE,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AC3cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACzBA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACTA;AACA;;AAEA;AACsC;AACQ;AACD;AAC7C;AACA;AACA,IAAI,SAAS;AACb,IAAI,mGAAyB;AAC7B;AACA;AACA,KAAK;AACL;AACA,QAAQ,4IAA+B;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,6IAA+B;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,6IAAiC;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY,mGAA6C;AACzD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,6IAAsC;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,mGAA2B;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mGAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,4IAA+B;AAC3C;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,6IAAmC;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,6IAAmC;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,6IAA2B;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mGAAkB;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA,YAAY,mGAAsB;AAClC;AACA;AACA,aAAa;AACb;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wCAAwC,yKAA8B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC","sources":["webpack://narconon-us-site/webpack/bootstrap","webpack://narconon-us-site/webpack/runtime/compat get default export","webpack://narconon-us-site/webpack/runtime/define property getters","webpack://narconon-us-site/webpack/runtime/ensure chunk","webpack://narconon-us-site/webpack/runtime/get javascript chunk filename","webpack://narconon-us-site/webpack/runtime/global","webpack://narconon-us-site/webpack/runtime/hasOwnProperty shorthand","webpack://narconon-us-site/webpack/runtime/load script","webpack://narconon-us-site/webpack/runtime/make namespace object","webpack://narconon-us-site/webpack/runtime/publicPath","webpack://narconon-us-site/webpack/runtime/jsonp chunk loading","webpack://narconon-us-site/./node_modules/@able-sbcadmin/narconon-npm/dist/structure.js","webpack://narconon-us-site/./node_modules/@able-sbcadmin/narconon-npm/dist/newsletter.js","webpack://narconon-us-site/./node_modules/@able-sbcadmin/narconon-npm/dist/print-article.js","webpack://narconon-us-site/./node_modules/@able-sbcadmin/narconon-npm/dist/index.js"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"narconon-us-site:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknarconon_us_site\"] = self[\"webpackChunknarconon_us_site\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/* \n*\n* This JS file ONLY has header and footer related JS to be loaded on every page\n* /js/structure.js\n* \n* Includes: Menu toggles, Mobile menu toggles, sticky banner, hero parallax, search toggle, language toggle\n*\n* This file has NO dependencies and is vanilla JS.\n* Author: ABLE Dev\n */\n\nexport function structure () {\n\n/* ----------------------\n NavBar flyout states\n------------------------*/\n\nconst menuTotal = document.querySelector('.menu-square');\nconst menuBtn = document.querySelector('.menu-triple-hoverable');\nconst menuFloat = document.querySelector('.second-level');\n\nif (menuTotal && menuBtn && menuFloat ) {\nmenuTotal.addEventListener('mouseenter', desktopHamburgerToggle, false); \nmenuTotal.addEventListener('mouseleave', desktopHamburgerToggle, false);\nmenuTotal.addEventListener('touchstart', desktopHamburgerToggle, false); \n}\n\nfunction desktopHamburgerToggle() {\n menuBtn.classList.toggle('open');\n menuFloat.classList.toggle('open');\n};\n\n/* ----------------------\n NavBar Search states\n------------------------*/\n\nconst searchClick = document.querySelector('.search-btn-icon');\nconst searchClose = document.querySelector('.search-cross');\nconst searchBtn = document.querySelector('.search-btn');\nconst searchModal = document.querySelector('.search-modal');\nvar searchOpen = false;\nif (searchClick) {\nsearchClick.addEventListener('click', () => {\n searchScrollToggle();\n if(!searchOpen) {\n if (megaArray) {\n megaMenuClose();\n }\n document.querySelector('.search-input').focus();\n searchOpen = true;\n } else {\n searchOpen = false;\n }\n});\n}\n\nfunction searchScrollToggle() {\n searchBtn.classList.toggle('open');\n searchModal.classList.toggle('open');\n}\n\nif (searchClose) {\nsearchClose.addEventListener('click', () => {\n document.querySelector('.search-input').value = '';\n searchScrollClose();\n});\n}\n\n\n/* ----------------------\n Desktop and mobile Searc submit listeners\n------------------------*/\n\nconst searchSubmit = document.querySelector('.search-icon');\nconst mobileSearchSubmit = document.getElementById('mobile-search-trigger');\n\n// desktop search icon\nif(searchSubmit) {\n searchSubmit.addEventListener('click', () => {\n document.getElementById('search').submit();\n });\n}\n\n// mobile search icon\nif(mobileSearchSubmit) {\n mobileSearchSubmit.addEventListener('click', () => {\n document.getElementById('mobile-search').submit();\n });\n}\n\n// See below for window scroll listener //\nfunction searchScrollClose() {\n searchBtn.classList.remove('open');\n searchModal.classList.remove('open');\n searchOpen = false\n}\n\n/* -----Footer language bar on/off states------------------------*/\n\nconst languageBtn = document.querySelector('.select-language')\nconst languageModal = document.querySelector('.list-language-container');\nconst languageCaret = document.querySelector('.language-caret');\n\nif ( languageBtn && languageModal && languageCaret ) {\n languageBtn.addEventListener('click', footerLanguageToggle);\n};\n\nfunction footerLanguageToggle() {\n languageModal.classList.toggle('open');\n languageCaret.classList.toggle('open');\n};\n\n/* -----Header language bar on/off states----*/\n\nconst hLanguageTotal = document.querySelector('.header-language-toggle')\nconst hLanguageBtn = document.querySelector('.header-lang-btn');\nconst hLanguageFloat = document.querySelector('.languages-flyout');\n\nif ( hLanguageTotal && hLanguageBtn && hLanguageFloat ) {\n hLanguageBtn.addEventListener('mouseenter', headerLanguageToggle );\n hLanguageBtn.addEventListener('mouseleave', headerLanguageToggle );\n};\n\nfunction headerLanguageToggle() {\n hLanguageBtn.classList.toggle('open');\n hLanguageFloat.classList.toggle('open');\n}\n\n/* -----Mobile Language Bar ----*/\n\nconst mLanguageBtn = document.querySelector('.mobile-language-toggle');\n\nif ( mLanguageBtn ) {\n mLanguageBtn.addEventListener('click', mobileLanguageToggle );\n};\n\nfunction mobileLanguageToggle() {\n mLanguageBtn.classList.toggle('open');\n}\n\n/*---- Mobile nav below hero toggle ----*/\n\nconst mHeroNavBtn = document.querySelector('#mobile-hero-nav-toggle')\n\nif ( mHeroNavBtn ) {\n mHeroNavBtn.addEventListener('click', mobileHeroNavToggle );\n};\n\nfunction mobileHeroNavToggle() {\n mHeroNavBtn.classList.toggle('open');\n};\n\n\n/* Mobile Search Bar --- */\n\nvar mSearchCross = null;\nif ( mSearchCross = document.querySelector('.mobile-search-cross') ) {\n let mModalSearch = document.querySelector('.mobile-modal-search');\n mSearchCross.addEventListener('click', () => {\n mModalSearch.value=\"\";\n mModalSearch.focus();\n })\n};\n\n/* ----------------------\n\nMobile toggle\n\n------------------------*/\n\nconst mobileBtnToggle = document.querySelector('.mobile-toggle');\nconst mobileBtn = document.querySelector('.mobile-bars');\nconst mobileMenu = document.getElementById('mobile-modal');\nconst mobileLogo = document.querySelector('.menu-logo');\nconst mobileBanner = document.querySelector('.header-holder');\nconst mobileBody = document.body;\n\nconst mediaQueryList = window.matchMedia('(min-width: 768px)');\n\n// Standard Toggle & if scales out while on beyond mobile size\nif (mobileBtnToggle) {\n mobileBtnToggle.addEventListener('click', mobileMenuBtnToggle);\n mediaQueryList.addEventListener('change', event => {\n if (event.matches && mobileMenu.classList.contains('open')) {\n mobileMenuBtnToggle();\n }\n })\n};\n\nfunction mobileMenuBtnToggle() {\n mobileBtn.classList.toggle('open');\n mobileMenu.classList.toggle('open');\n mobileLogo.classList.toggle('green');\n mobileBanner.classList.toggle('green');\n mobileBody.classList.toggle('no-overflow');\n}\n\n/*--- Sidebar citations toggle --- */\n\nconst citationBtn = document.getElementById('btn-sidebar-citations');\nconst citationRoot = document.getElementById('sidebar-citation-wrapper');\n\nif ( citationBtn ) {\n citationBtn.addEventListener('click', citationToggle );\n document.addEventListener('click', clickOutsideTab );\n};\n\nfunction clickOutsideTab(e) {\n if (citationBtn.classList.contains('open')) {\n var isClickInsideElement = citationRoot.contains(e.target);\n if (!isClickInsideElement) {\n citationToggle();\n }\n }\n}\n\nfunction citationToggle() {\n citationBtn.classList.toggle('open');\n};\n\nlet citationTabs = document.getElementsByClassName('btn-citation-tab');\nlet tabArray = Array.from(citationTabs);\n\nif ( tabArray ) {\n tabArray.forEach(tab => {\n tab.addEventListener('click', citationTabToggle );\n });\n};\n\nfunction citationTabToggle(e) {\n // Get Data attribute - then get element by name and change it's value while turning off the rest\n for (let i = 0; i < tabArray.length; i++) {\n tabArray[i].classList.remove('open');\n let option = tabArray[i].dataset.option;\n document.getElementById(option).classList.remove('open');\n }\n e.target.classList.add('open');\n let option = e.target.dataset.option;\n document.getElementById(option).classList.add('open');\n}\n\n\n// if Citations exist - set-up listeners for auto higlight\nlet citationTextBlocks = document.getElementsByClassName('citation-text');\nlet citationTextArray = Array.from(citationTextBlocks);\n\nif (citationTextArray) {\n citationTextArray.forEach(citation => {\n citation.addEventListener('click', selectText );\n });\n}\n\nfunction selectText(e) {\n let range = document.createRange();\n let selection = window.getSelection();\n range.selectNodeContents(e.target);\n selection.removeAllRanges();\n selection.addRange(range);\n}\n\n\nlet megaMobileButtons = document.getElementsByClassName('mobile-accordian-trigger');\nlet megaMobileArray = Array.from(megaMobileButtons);\n\nif ( megaMobileArray ) {\n megaMobileArray.forEach(button => {\n button.addEventListener('click', megaMobileToggle );\n });\n};\n\nfunction megaMobileToggle(e) {\n if (e.target.parentNode.classList.contains('open')) {\n megaMobileClose();\n } else {\n megaMobileClose();\n e.target.parentNode.classList.toggle('open');\n }\n}\n\nfunction megaMobileClose() {\n for (let i = 0; i < megaMobileArray.length; i++) {\n console.log(megaMobileArray[i]);\n megaMobileArray[i].parentNode.classList.remove('open');\n }\n}\n\n/* --------------- Mega Menu ---------*/\n\nlet megaMenuButtons = document.getElementsByClassName('mega-menu');\nlet megaArray = Array.from(megaMenuButtons);\n\nif ( megaArray ) {\n let closeDomElement = document.querySelector('.header-overall-wrapper');\n megaArray.forEach(button => {\n button.addEventListener('click', megaMenuToggle );\n });\n document.addEventListener('click', (e) => {\n if(!closeDomElement.contains(e.target)) {\n megaMenuClose();\n }\n })\n};\n\nfunction megaMenuToggle(e) {\n // Only 1 menu items open at a time with toggle option and close seach if open checks if it should delay open or not if other menu item is open\n if(searchOpen) {\n searchScrollClose()\n }\n if (e.target.classList.contains('open')) {\n megaMenuClose();\n } else {\n let isOpen = false;\n for (let i = 0; i < megaArray.length; i++) {\n if (megaArray[i].classList.contains('open')) {\n isOpen = true;\n };\n }\n megaMenuClose();\n if (isOpen) {\n let timer = setTimeout(() => {e.target.classList.toggle('open')}, 500);\n } else {\n e.target.classList.toggle('open');\n }\n \n }\n}\n\nfunction megaMenuClose() {\n for (let i = 0; i < megaArray.length; i++) {\n megaArray[i].classList.remove('open');\n }\n}\n\n/* --------------- Mobile Accordion ---------*/\n\ndocument.querySelectorAll('.nn-about-flyout').forEach(item => {\n item.onclick = function() {\n item.classList.toggle('rotated');\n item.parentNode.classList.toggle('rotated');\n }\n});\n\n/* --------------- Facet menu ---------*/\n\ndocument.querySelectorAll('.control-level').forEach(item => {\n item.onclick = function() {\n item.parentNode.classList.toggle('open');\n let controlIcon = item.getElementsByClassName('facet-control-chevron');\n if ( controlIcon ) {\n controlIcon[0].classList.toggle('open');\n }\n }\n});\n\n\n/* ======================\n\nSCROLL CONTROL\n\n======================= */\n\n\n\nif (document.getElementById('sticky-banner')) {\n var firstScroll = false;\n var header = document.getElementById('sticky-banner');\n var sticky = header.offsetTop;\n}\n\nwindow.onscroll = function() {\n\n if (!firstScroll && sticky) {\n if (window.pageYOffset > sticky) {\n stickyheaderFunction()\n firstScroll = true;\n } \n }\n \n if (firstScroll && sticky) {\n if ( window.pageYOffset < sticky ) {\n stickyheaderFunction()\n firstScroll = false;\n }\n }\n\n if(searchOpen) {\n searchScrollClose()\n }\n \n // Test if their is Parallax called for\n if(document.querySelector('.hero-parallax')) {\n bgHeroParallax()\n }\n};\n\n\n// Add the sticky class to the header when you reach its scroll position. Remove \"sticky\" when you leave the scroll position\n\nlet stickyHeaderOn = false;\nfunction stickyheaderFunction() {\n\n // Get items to change\n //const subtext = document.querySelector('.available24hours-text');\n const calltext = document.querySelector('.banner-call');\n\n if (!stickyHeaderOn) {\n header.classList.add(\"stickyon\");\n //subtext.classList.add(\"stickyoff\");\n calltext.classList.add(\"stickyformat\");\n stickyHeaderOn = true;\n } else {\n header.classList.remove(\"stickyon\");\n //subtext.classList.remove(\"stickyoff\");\n calltext.classList.remove(\"stickyformat\");\n stickyHeaderOn = false; \n }\n}; \n\n\n/*-----------------------------\n\nSearch page toggles\n\n-----------------------------*/\n\nvar searchPageClose = document.querySelector('.main-search-close');\nvar searchPageSearch = document.querySelector('.main-search-icon');;\n\nif ( document.querySelector('.main-search-input') ) {\n searchPageClose.addEventListener('click', () => {\n document.querySelector('.main-search-input').value = '';\n });\n searchPageSearch.addEventListener('click', () => {\n document.getElementById('main-search').submit();\n });\n}\n\n/*=============================\n\nPARALLAX\n\n==============================*/\n\n// CALL FOR THIS FUNCTION IS INCLUDED IN WINDOW.ONSCROLL LISTENER\n// if the class .header-background-parralax exists, onscroll will call this function. \nfunction bgHeroParallax() { \n \n var bgParallax = document.querySelector('.hero-parallax');\n\n // change the divider to change the speed of movement\n var yPos = window.pageYOffset / 10;\n // reviser the value to negative to that the image scrolls down\n yPos = -yPos\n // create a percent value\n var coords = 50 + yPos + '%';\n // move the image\n bgParallax.style.backgroundPositionY = coords;\n\n}\n};\n","/*******************************************************************************************************************\n * File: /assets/js/newsletter.js\n * This takes into account SIMPLE sendy form integration. More complex coordinated versions can and will be done in the future\n * This is limited by the Sendy auto redirect set-up. \n * To create double-opt-in simply set the Sendy list in question to double-opt-in. \n * It will then use the \"Subscribed\" page. Single opt-in uses \"Subscribe\"\n * Author: ABLE DEv \n *******************************************************************************************************************/\n\n// /more-info-professionals/ has a form with a dropdown with the option: 'other (specify)' this function allows expected UI behaviour\nexport function subscriptionPage() {\n\n // Checking if URL has search query\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n\n // This test for subscribe and then puts in email\n if (urlParams.has('email')) {\n \n const query = urlParams.get('email'); \n var newsletterEmail = query.trim();\n\n var target = document.querySelector(\"#enter-email-here\");\n target.innerHTML = newsletterEmail;\n };\n};","// Author: ABLE Dev\nexport function printTrigger(trigger) {\n const printBtn = trigger;\n printBtn.addEventListener('click', printerPage );\n}\n\nfunction printerPage(e) {\n e.preventDefault();\n window.print()\n}"," //Prevent VideoJS from adding automatic styles to header.\nwindow.VIDEOJS_NO_DYNAMIC_STYLE = true;\n\n// Import modules from local files if there are no additional dependencies\nimport {structure} from './structure';\nimport {subscriptionPage} from './newsletter';\nimport {printTrigger} from './print-article';\n// If moudule has addictional dependencies, import them here dynamically\ndocument.addEventListener(\"DOMContentLoaded\", function(event) {\n structure();\n import('./videojsimport')\n .then(module => {\n module.initPlayers();\n });\n if(document.querySelector('.components-carousel')) { \n import('./components-carousel')\n .then(module => {\n module.componentsCarousel();\n });\n };\n if(document.querySelector('.full-slide-carousel')) { \n import('./full-slide-carousel')\n .then(module => {\n module.fullSlideCarousel();\n });\n };\n if(document.querySelector('.graduates-carousel')) {\n import('./saving-lives-carousel')\n .then(module => {\n module.graduatesCarousel();\n });\n };\n if(document.querySelector('.world-class-slider')) { \n const mql = window.matchMedia('(max-width: 577px)');\n let desktopLoaded = false;\n let mobileLoaded = false;\n if (mql.matches && mobileLoaded == false ) {\n loadWorldClassMobile();\n } else if (desktopLoaded == false) {\n loadWordClassDesktop();\n }\n mql.onchange = (e) => {\n if (e.matches && mobileLoaded == false ) {\n loadWorldClassMobile();\n } else if (desktopLoaded == false ) {\n loadWordClassDesktop();\n }\n }\n function loadWorldClassMobile() {\n import('./centers-thumbnail-carousel-mobile')\n .then(module => {\n module.worldclassSliderMobile();\n });\n mobileLoaded = true;\n }\n function loadWordClassDesktop() {\n import('./centers-thumbnail-carousel')\n .then(module => {\n module.worldclassSlider();\n });\n desktopLoaded = true;\n }\n };\n if(document.getElementById('sources-reveal')) {\n import('./resources-pages')\n .then(module => {\n module.resourcesPages();\n });\n }; \n if(document.getElementById('get-help-form')) {\n import('./forms')\n .then(module => {\n if(document.getElementById('get-help-form')) {\n module.formSubmission();\n }\n if(document.getElementById('phone')) {\n module.countryCode();\n }; \n if(document.getElementById('country-code-input')) {\n module.countryCode();\n };\n });\n };\n if(document.querySelector('.video-wall-carousel')) {\n import('./video-wall-carousel')\n .then(module => {\n module.videoWallCarousel();\n });\n }\n if(document.querySelector('.news-slider')) {\n import('./news-thumbnail-carousel')\n .then(module => {\n module.newsSlider();\n });\n };\n if(document.querySelector('.article-simple-slider')) {\n import('./article-simple-carousel')\n .then(module => {\n module.articleSimpleSlider();\n }); \n };\n if(document.querySelector('.center-carousel')) {\n import('./center-carousel')\n .then(module => {\n module.centerCarousel();\n }); \n };\n if(document.querySelector('.main-search')) {\n import('./search')\n .then(module => {\n module.search();\n }); \n };\n // Imports with no dependencys\n if(document.querySelector('#print-article')) {\n const trigger = document.querySelector('#print-article');\n printTrigger(trigger);\n };\n if(document.querySelector('.newsletter-subscription')) {\n subscriptionPage();\n };\n if(document.getElementById('directions')) {\n import('./google-map')\n .then(module => {\n module.getLocation();\n })\n }\n}); \n\n//Start animated Header\ndocument.addEventListener(\"DOMContentLoaded\", async function(event) {\n // If carousel exists, load it (and the Marquee)\n if(document.querySelector('#home_anim_header')) {\n let homeanimate = await import('./animatedheaderpage');\n homeanimate.startShow(true);\n let mediaQuery = window.matchMedia('(min-width: 576px)');\n // Check if the media query is true\n if (mediaQuery.matches) {\n homeanimate.marqueeLoop(true);\n }\n };\n\n});\n\n\n\n\n"],"names":[],"sourceRoot":""}