{"version":3,"sources":["jsdelivr-header.js","/gh/ksoaresasae/asae-explore@8.29/asae-explore.js"],"names":[],"mappings":"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","file":"/gh/ksoaresasae/asae-explore@8.29/asae-explore.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /gh/ksoaresasae/asae-explore@8.29/asae-explore.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* \n******************************************************\nASAE EXPLORE\nGNU GENERAL PUBLIC LICENSE\nASAE:       https://www.asaecenter.org\nDeveloper:  Keith M. Soares - https://keithmsoares.com\n******************************************************\n\nVersion:\n------------\n8.29          2026-04-14\nNotes:\n- add !important to placeholder SVG display:none to prevent host override\n*/\n\n//////////////////////////////////////////////\n// MASTER GITVERSION\nvar gitVersion = \"v8.29\";\n\n// MASTER BASE URL\nvar thisBaseURL = \"https://cdn.jsdelivr.net/gh/ksoaresasae/asae-explore@\" + gitVersion + \"/\";\n\n//////////////////////////////////////////////\n//////////////////////////////////////////////\n// MASTER CONTROLS: true/false\nvar showPB = true;        // SHOW PROMO BAR - STILL CONTROLLED BY DATETIME AND THE alertTimer FUNCTION\nvar showSearch = true;    // SHOW SEARCH ICON\nvar showChatbot = true;  // SHOW CHATBOT ICON\n// USER ICON IS ALWAYS ON\n// BELOW ARE RELATED TO alertTimer FUNCTION\nconst alertStartDate = new Date(\"2026-04-09 00:00:01\");\nconst alertEndDate = new Date(\"2026-04-09 23:59:59\");\n//////////////////////////////////////////////\n//////////////////////////////////////////////\n\n// SEARCH RESULTS PAGE URL (used by AddSearch \"Show all results\")\nwindow.searchResultsPageUrl = \"https://www.asaecenter.org/globalsearch\";\n\n/*\nPurpose:\n--------\nAdd ASAE EXPLORE to any site on a per-page, per-site, or per-property basis, to provide navigation among ASAE sites. \n\nUsage:\n------\n<!-- ASAE Explore - CSS/JS - [GITVERSION] -->\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/ksoaresasae/asae-explore@[GITVERSION]/asae-explore.css\"/>\n<script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/gh/ksoaresasae/asae-explore@[GITVERSION]/asae-explore.js\"></script>\n\nNote: if thisBaseURL is changed, this src will change, too.\n\nInstructions:\n-------------\nSimply place the above <script> code anywhere on a page to add it to that single page, or\nplace it in a global include/widget to make the header appear on the entire site.\nThis script can also be added via Google Tag Manager to quickly add it to an entire property.\n\nNotes:\n------\nASAE EXPLORE automatically positions its contents just after the opening <BODY> tag,\nso it can be added **anywhere** in your code to function correctly.\n\nThis script also hides two legacy banners/headers:\n- id: notification-bar\n- class: sister-domains\n\nASAE EXPLORE has 3 major editable parts:\n- Edit HTML for the EXPLORE BAR (eb) component between the START and STOP comments, below\n- Edit HTML for the PROMO BAR (pb) component between the START and STOP comments, below\n- Edit CSS for all components in the asae-explore.css file\n\n**************************************************\n*/\n\n// placeholders for HTML contents\nvar asaeEB = \"\";\nvar asaePB = \"\";\nvar body = document.body;\nvar ebDiv = \"\";\nvar pbDiv = \"\";\n\n//////////////////////////////////////////////\n// READ EXTERNAL HTML FILES\n//console.log(\"READING FILES...\");\n\nfunction loadEBHTML() {\n    var ebhttp = new XMLHttpRequest();\n    ebhttp.onreadystatechange = function() {\n        if (this.readyState == 4 && this.status == 200) {\n            //ebhttp.responseText has HTML content\n            asaeEB = ebhttp.responseText + \"<!-- ASAE Explore \" + gitVersion + \" -->\";\n            //console.log(\" - EB IS OK!\");\n            parseEBHTML();\n            loadPBHTML();\n        }\n    };\n    ebhttp.open(\"GET\", thisBaseURL + \"asae-eb.html\", true);\n    ebhttp.send();\n}\n\nloadEBHTML();\n\nfunction loadPBHTML() {\n    var pbhttp = new XMLHttpRequest();\n    pbhttp.onreadystatechange = function() {\n        if (this.readyState == 4 && this.status == 200) {\n            //pbhttp.responseText has HTML content\n            asaePB = pbhttp.responseText;\n            alertTimer();\n            //console.log(\" - PB IS OK!\");\n            parsePBHTML();\n        }\n    };\n    pbhttp.open(\"GET\", thisBaseURL + \"asae-pb.html\", true);\n    pbhttp.send();    \n}\n\n/* ---------- DYNAMIC LOADING HELPERS - START ---------- */\nfunction loadCSS(href) {\n    var link = document.createElement('link');\n    link.rel = 'stylesheet';\n    link.href = href;\n    document.head.appendChild(link);\n}\n\nfunction loadScript(src, callback) {\n    var script = document.createElement('script');\n    script.src = src;\n    script.onload = callback || function(){};\n    document.head.appendChild(script);\n}\n\nfunction loadSearchDependencies() {\n    // Load CSS for AddSearch\n    loadCSS(\"https://cdn.jsdelivr.net/npm/addsearch-search-ui@0.10/dist/addsearch-search-ui.min.css\");\n    loadCSS(thisBaseURL + \"ui.min.css\");\n    // Load JS in sequence: client SDK -> UI SDK -> our config\n    loadScript(\"https://cdn.jsdelivr.net/npm/addsearch-js-client@0.8/dist/addsearch-js-client.min.js\", function() {\n        loadScript(\"https://cdn.jsdelivr.net/npm/addsearch-search-ui@0.10/dist/addsearch-search-ui.min.js\", function() {\n            loadScript(thisBaseURL + \"ui.min.js\");\n        });\n    });\n}\n/* ---------- DYNAMIC LOADING HELPERS - END ---------- */\n\n// populate HTML into divs\nfunction parseEBHTML() {\n    // add EXPLORE BAR (eb)\n    ebDiv = document.createElement('div');\n    ebDiv.id = 'asae-eb-id';\n    // hide div until loaded\n    setAttributes(ebDiv, {\"visibility\":\"hidden\"});\n    ebDiv.innerHTML = asaeEB;\n    body.insertBefore(ebDiv, body.firstChild);\n    //console.log(\" - EB HTML IS ADDED\");\n    setupEB();\n\n    setTabIndexes();\n\n    showHideButtons();\n\n    // Load AddSearch after DOM containers exist\n    if (showSearch) {\n        loadSearchDependencies();\n    }\n}\n\nfunction parsePBHTML() {\n    // add PROMO BAR (pb)\n    if (showPB == true) {\n        pbDiv = document.createElement('div');\n        pbDiv.id = 'asae-pb-id';        \n        pbDiv.innerHTML = asaePB;\n        body.insertBefore(pbDiv, ebDiv.nextSibling);    \n        //console.log(\" - PB HTML IS ADDED\");\n    }\n}\n//////////////////////////////////////////////\n\n// internal checks to see what modal is open\nvar isOpenNav = false;\nvar isOpenSearch = false;\nvar isOpenChatbot = false;\nvar isOpenUser =  false;\n\nvar directClick = false;\n\n/* ---------- CSS HELPERS - START ---------- */\n// USE: setAttributes(elem, {\"display\": \"none\", \"visibility\": \"hidden\", ...});\nfunction setAttributes(el, attrs) {\n    for(var key in attrs) {\n        el.style.setProperty(key, attrs[key]);\n    }\n}\n\n// Instantly close a modal panel without animation, then call its toggle function to reset state\nfunction closeModalInstant(modalSelector, toggleFunc) {\n    var el = document.querySelector(modalSelector);\n    el.style.transition = 'none';\n    toggleFunc();\n    el.offsetHeight; // force reflow so the instant collapse applies\n    el.style.transition = ''; // restore CSS transitions for next use\n}\n/* ---------- CSS HELPERS - END ---------- */\n\n/* ---------- TABINDEX HELPERS - START ---------- */\n// USE: setTabIndexes();\nfunction setTabIndexes() {\n    // Use 0 (natural DOM order) for visible interactive elements, -1 for hidden\n    var navTabIndex = 0;\n    var searchTabIndex = 0;\n    var chatbotTabIndex = 0;\n    var userTabIndex = 0;\n\n    document.getElementById(\"asae-eb-left-nav\").tabIndex = navTabIndex;\n    document.getElementById(\"asae-eb-mag\").tabIndex = searchTabIndex;\n    document.getElementById(\"asae-eb-chatbot\").tabIndex = chatbotTabIndex;\n    document.getElementById(\"asae-eb-user\").tabIndex = userTabIndex;\n\n    // Nav modal content: only tabbable when open\n    var navContentTabIndex = isOpenNav ? 0 : -1;\n    var links = document.getElementById('asae-eb-modal-nav').getElementsByTagName(\"a\");\n    for (var i = 0; i < links.length; i++) {\n        links[i].tabIndex = navContentTabIndex;\n    }\n\n    // Search modal: AddSearch manages its own inputs; guard legacy elements\n    var searchContentTabIndex = isOpenSearch ? 0 : -1;\n    var searchTermsEl = document.getElementById(\"asae-eb-search-terms\");\n    var searchSubmitEl = document.getElementById(\"asae-eb-search-submit\");\n    if (searchTermsEl) searchTermsEl.tabIndex = searchContentTabIndex;\n    if (searchSubmitEl) searchSubmitEl.tabIndex = searchContentTabIndex;\n    // Also manage AddSearch inputs within the search container\n    var searchContainer = document.getElementById(\"asae-eb-modal-search-container\");\n    if (searchContainer) {\n        var searchInputs = searchContainer.querySelectorAll('input, button, a');\n        for (var i = 0; i < searchInputs.length; i++) {\n            searchInputs[i].tabIndex = searchContentTabIndex;\n        }\n    }\n\n    // Chatbot modal content: only tabbable when open\n    var chatbotContentTabIndex = isOpenChatbot ? 0 : -1;\n    document.getElementById(\"asae-eb-chatbot-terms\").tabIndex = chatbotContentTabIndex;\n    var chatbotSubmitEl = document.getElementById(\"asae-eb-chatbot-submit\");\n    if (chatbotSubmitEl) chatbotSubmitEl.tabIndex = chatbotContentTabIndex;\n\n    // HIDE THE SEARCH AND CHATBOT ALERTS UNTIL USER ENTRY OCCURS\n    var searchAlert = document.getElementById(\"asae-eb-search-terms-alert\");\n    if (searchAlert) setAttributes(searchAlert, {\"display\": \"none\"});\n    var chatbotAlert = document.getElementById(\"asae-eb-chatbot-terms-alert\");\n    if (chatbotAlert) setAttributes(chatbotAlert, {\"display\": \"none\"});\n\n}\n/* ---------- TABINDEX HELPERS - END ---------- */\n\n/* ---------- SHOW/HIDE BUTTONS HELPERS - START ---------- */\n// USE: showHideButtons();\nfunction showHideButtons() {\n    searchIcon = document.getElementById(\"asae-eb-right-search\");\n    if (!showSearch) {\n        setAttributes(searchIcon, {\"display\": \"none\"});\n        searchIcon.tabIndex = -1;\n    }\n    chatbotIcon = document.getElementById(\"asae-eb-right-chatbot\");\n    if (!showChatbot) {\n        setAttributes(chatbotIcon, {\"display\": \"none\"});\n        chatbotIcon.tabIndex = -1;\n    }\n}\n/* ---------- SHOW/HIDE BUTTONS HELPERS - END ---------- */\n\n/* ---------- COOKIE HELPERS - START ----------*/\nfunction doesCookieExist(cname) {\n    var status = false;\n    if (document.cookie && document.cookie.indexOf(cname) != -1) {\n        status = true;\n    }\n    //console.log('COOKIE ' + cname + ' EXISTS? ' + status);\n    return status;\n}\n\nfunction setCookie(cname, cvalue, exdays) {\n    //console.log ('SET COOKIE: ' + cname + '|' + cvalue);\n    const d = new Date();\n    d.setTime(d.getTime() + (exdays*24*60*60*1000));\n    let expires = \"expires=\"+ d.toUTCString();\n    document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\n}\n\nfunction getCookie(cname) {\n    //console.log ('GET COOKIE: ' + cname);\n    let name = cname + \"=\";\n    let decodedCookie = decodeURIComponent(document.cookie);\n    let ca = decodedCookie.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        //console.log (' - VALUE: ' + c.substring(name.length, c.length));\n        if (c.substring(name.length, c.length) == \"true\") {\n            return true;\n        }\n        if (c.substring(name.length, c.length) == \"false\") {\n            return false;\n        }\n        return c.substring(name.length, c.length);\n      }\n    }\n    //console.log (' - VALUE: null');\n    return \"\";\n}\n/* ---------- COOKIE HELPERS - END ----------*/\n\n/* ---------- ALERT HELPER - START ---------- */\n// USE: alertTimer();\nfunction alertTimer() {\n    // console.log('Current datetime between alert datetimes?');\n    if (isCurrentDateBetween(alertStartDate,alertEndDate)) {\n        // console.log(' - YES');\n        showPB = true;\n    } else {\n        // console.log(' - NO');\n        showPB = false;\n    }\n}\nfunction isCurrentDateBetween(startDate, endDate) {\n    const currentDate = new Date();\n    // console.log('Current datetime: ' + currentDate);\n    // Check if the current date is greater than or equal to the start date\n    // and less than or equal to the end date\n    return currentDate >= startDate && currentDate <= endDate;\n}\n/* ---------- ALERT HELPER - END ---------- */\n\nfunction ebNavClickFunc() {\n\n    isOpenNav = !isOpenNav;\n    //console.log(\"isOpenNav=\"+isOpenNav);\n\n    const ebNavClick = document.querySelector(\"#asae-eb-left-nav\");\n    const ebExploreASAE = document.querySelector(\"#asae-eb-explore-asae\");\n    const ebNavModal = document.querySelector(\"#asae-eb-modal-nav-container\");\n    \n    ebNavClick.classList.toggle(\"active\");\n    ebExploreASAE.classList.toggle(\"active\");\n    ebNavModal.classList.toggle(\"active\");\n    let svgparts = document.querySelectorAll('.asae-eb-switcher-icon');\n    for (let i = 0; i < svgparts.length; i++) {\n        svgparts[i].classList.toggle(\"active\");\n    }\n\n    //set aria-expanded value as well, for a11y\n    const expanded = ebNavClick.getAttribute('aria-expanded') === 'true';\n    ebNavClick.setAttribute('aria-expanded', !expanded);\n    //\n    \n    setTimeout(function(){\n        document.getElementById(\"asae-eb-id\").scrollIntoView({ behavior: \"smooth\" });\n    }, 1000);\n\n    setTabIndexes();\n}\n\nfunction ebNavShowDescClickFunc(directClick) {\n    //console.log(\"ebNavShowDescClickFunc\");\n    var setNavShowDescCookie = false;\n    const ebNavShowDescClick = document.querySelector(\"#asae-eb-showdesc-toggle\");\n\n    // what is current state?\n    // if current state is OFF, set cookie var to TRUE\n    //console.log(\"is ShowDesc active?\");\n    if (ebNavShowDescClick.classList.contains(\"active\")) {\n        //console.log(\" - YES\");\n    } else {\n        //console.log(\" - NO\");\n        setNavShowDescCookie = true;\n    }\n\n    // toggle active style\n    ebNavShowDescClick.classList.toggle(\"active\");\n    var els = document.querySelectorAll('.asae-eb-link-desc');\n    for (var i=0; i < els.length; i++) {\n        els[i].classList.toggle(\"active\");\n    }\n\n    // if this was not a direct click on the input, handle changing the input, too\n    if (!directClick) {\n        var inputs = document.querySelectorAll('.asae-eb-showdesc-input');\n        for (var i = 0; i < inputs.length; i++) {\n            if (inputs[i].checked) {\n                //console.log(\"input - change to unchecked\");\n                inputs[i].checked = false;\n            } else {\n                //console.log(\"input - change to checked\");\n                inputs[i].checked = true;\n            }\n        }\n    }\n    setCookie('eb-nav-showdesc',setNavShowDescCookie,10000);\n}\n\nfunction ebSearchClickFunc() {\n    isOpenSearch = !isOpenSearch;\n    //console.log(\"isOpenSearch=\"+isOpenSearch);\n    \n    const ebSearchClick = document.querySelector(\"#asae-eb-right-search\");\n    const ebSearchModal = document.querySelector(\"#asae-eb-modal-search-container\");\n\n    ebSearchClick.classList.toggle(\"active\");\n    ebSearchModal.classList.toggle(\"active\");\n    let svgparts = document.querySelectorAll('.asae-eb-mag-icon');\n    for (let i = 0; i < svgparts.length; i++) {\n        svgparts[i].classList.toggle(\"active\");\n    }\n\n    if (isOpenSearch) {\n        //document.getElementById(\"asae-eb-search-terms\").focus();\n    }\n\n    //set aria-expanded value as well, for a11y\n    const expanded = document.getElementById(\"asae-eb-mag\").getAttribute('aria-expanded') === 'true';\n    document.getElementById(\"asae-eb-mag\").setAttribute('aria-expanded', !expanded);\n    //\n\n    setTimeout(function(){\n        document.getElementById(\"asae-eb-id\").scrollIntoView({ behavior: \"smooth\" });\n    }, 1000);\n    \n    setTabIndexes();\n}\n\nfunction validateSearch() {\n    let termsSearch = document.getElementById(\"asae-eb-search-terms\").value;\n    termsSearch = encodeURIComponent(termsSearch);\n    console.log(\"search query: [\" + termsSearch + \"]\");\n    //document.getElementById(\"asae-eb-search-terms\").value = termsSearch;\n    searchAlert = document.getElementById(\"asae-eb-search-terms-alert\");\n    if (termsSearch == \"\") {\n        setAttributes(searchAlert, {\"display\": \"inline-block\"});\n        return false;\n    } else {\n        setAttributes(searchAlert, {\"display\": \"none\"});\n        window.location.href = 'https://www.asaecenter.org/globalsearch?search=' + termsSearch;\n        return false;\n    }\n}\n\nfunction ebChatbotClickFunc() {\n    isOpenChatbot = !isOpenChatbot;\n    //console.log(\"isOpenChatbot=\"+isOpenChatbot);\n    \n    const ebChatbotClick = document.querySelector(\"#asae-eb-right-chatbot\");\n    const ebChatbotModal = document.querySelector(\"#asae-eb-modal-chatbot-container\");\n\n    ebChatbotClick.classList.toggle(\"active\");\n    ebChatbotModal.classList.toggle(\"active\");\n    let svgparts = document.querySelectorAll('.asae-eb-chatbot-icon');\n    for (let i = 0; i < svgparts.length; i++) {\n        svgparts[i].classList.toggle(\"active\");\n    }\n\n    if (isOpenChatbot) {\n        //document.getElementById(\"asae-eb-chatbot-terms\").focus();\n    }\n\n    //set aria-expanded value as well, for a11y\n    const expanded = document.getElementById(\"asae-eb-chatbot\").getAttribute('aria-expanded') === 'true';\n    document.getElementById(\"asae-eb-chatbot\").setAttribute('aria-expanded', !expanded);\n    //\n\n    setTimeout(function(){\n        document.getElementById(\"asae-eb-id\").scrollIntoView({ behavior: \"smooth\" });\n    }, 1000);\n\n    setTabIndexes();\n    \n}\n\nfunction validateChatbot() {\n    let termsChatbot = document.getElementById(\"asae-eb-chatbot-terms\").value;\n    termsChatbot = encodeURIComponent(termsChatbot);\n    console.log(\"chatbot query: [\" + termsChatbot + \"]\");\n    //document.getElementById(\"asae-eb-chatbot-terms\").value = termsChatbot;\n    chatbotAlert = document.getElementById(\"asae-eb-chatbot-terms-alert\");\n    if (termsChatbot == \"\") {\n        setAttributes(chatbotAlert, {\"display\": \"block\"});\n        return false;\n    } else {\n        setAttributes(chatbotAlert, {\"display\": \"none\"});\n        window.location.href = 'https://www.asaecenter.org/stellar?prompt=' + termsChatbot;\n        return false;\n    }\n}\n\nfunction ebUserClickFunc() {\n\n    isOpenUser = true; // !isOpenUser;\n    //console.log(\"isOpenUser=\"+isOpenUser);\n\n    let thisRedirectURL = window.location.href;\n    // goto https://sso.asaecenter.org/\n    if (isOpenUser) {\n        window.location.href = 'https://asae-login.wicketcloud.com/login?service=https://my.asaecenter.org/my-account/&locale=en';\n    }\n    // https://sso.asaecenter.org/sso.asaecenter.org/b2c_1a_signin_no_sign_up_aptify/oauth2/v2.0/authorize?response_type=code&scope=f64cfe0a-fef2-4cff-a059-87dc4ca71a52%20profile%20email%20address%20phone&redirect_uri=' + thisRedirectURL;\n    \n    //const ebUserClick = document.querySelector(\"#asae-eb-right-user\");\n    //const ebUserModal = document.querySelector(\"#asae-eb-modal-user-container\");\n\n    //ebUserClick.classList.toggle(\"active\");\n    //ebUserModal.classList.toggle(\"active\");\n    //let svgparts = document.querySelectorAll('.asae-eb-user-icon');\n    //for (let i = 0; i < svgparts.length; i++) {\n    //    svgparts[i].classList.toggle(\"active\");\n    //}\n\n    //setTimeout(function(){\n    //    document.getElementById(\"asae-eb-id\").scrollIntoView({ behavior: \"smooth\" });\n    //}, 1000);\n\n    setTabIndexes();\n}\n\nfunction setupEB() {\n\n    // SET INITIAL COOKIES\n    // ---------->>  ADD CHECK FOR GDPR  <<---------- //\n    //console.log('CHECKING COOKIES...');\n    // start with Link Descriptions hidden\n    if (doesCookieExist('eb-nav-showdesc')) {\n        if (getCookie('eb-nav-showdesc')) {\n            //console.log('...Show Desc is true');\n            ebNavShowDescClickFunc(false);\n        } else {\n            setCookie('eb-nav-showdesc',false,10000);\n        }\n    }\n    // start with Promo Bar shown\n    if (doesCookieExist('pb-show')) {\n        if (!getCookie('pb-show')) {\n            //console.log('...Show PB is false');\n            showPB = false;\n        } else {\n            setCookie('pb-show',true,10000);\n        }\n    }\n\n    // EXPLORE ASAE NAV (left)\n    const ebNavClick = document.querySelector(\"#asae-eb-left-nav\");\n    ebNavClick.addEventListener(\"click\", ()=>{\n        ebNavClickFunc();\n        if (isOpenSearch) {\n            closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n        }\n        if (isOpenChatbot) {\n            closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n        }\n    });\n    ebNavClick.addEventListener('keydown', function(event) {\n        if (event.key === 'Enter') {\n            ebNavClickFunc();\n            if (isOpenSearch) {\n                closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n            }\n            if (isOpenChatbot) {\n                closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n            }\n        }\n    });\n    const ebNavShowDescClick = document.querySelector(\"#asae-eb-showdesc-toggle\");\n    ebNavShowDescClick.addEventListener(\"click\", ()=>{\n        //console.log(\"CLICK: nav descriptions\");\n        ebNavShowDescClickFunc(false);\n    });\n\n    // EXPLORE ASAE SEARCH (right)\n    const ebSearchClick = document.querySelector(\"#asae-eb-right-search\");\n    ebSearchClick.addEventListener(\"click\", ()=>{\n        ebSearchClickFunc();\n        if (isOpenNav) {\n            closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n        }\n        if (isOpenChatbot) {\n            closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n        }\n    });\n    ebSearchClick.addEventListener('keydown', function(event) {\n        if (event.key === 'Enter') {\n            ebSearchClickFunc();\n            if (isOpenNav) {\n                closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n            }\n            if (isOpenChatbot) {\n                closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n            }\n        }\n    });\n\n    // EXPLORE ASAE CHATBOT (right)\n    const ebChatbotClick = document.querySelector(\"#asae-eb-right-chatbot\");\n    ebChatbotClick.addEventListener(\"click\", ()=>{\n        ebChatbotClickFunc();\n        if (isOpenNav) {\n            closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n        }\n        if (isOpenSearch) {\n            closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n        }\n    });\n    ebChatbotClick.addEventListener('keydown', function(event) {\n        if (event.key === 'Enter') {\n            ebChatbotClickFunc();\n            if (isOpenNav) {\n                closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n            }\n            if (isOpenSearch) {\n                closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n            }\n        }\n    });\n\n    // EXPLORE ASAE USER (right)\n    const ebUserClick = document.querySelector(\"#asae-eb-right-user\");\n    ebUserClick.addEventListener(\"click\", ()=>{\n        ebUserClickFunc();\n        if (isOpenNav) {\n            closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n        }\n        if (isOpenSearch) {\n            closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n        }\n        if (isOpenChatbot) {\n            closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n        }\n    });\n    ebUserClick.addEventListener('keydown', function(event) {\n        if (event.key === 'Enter') {\n            ebUserClickFunc();\n            if (isOpenNav) {\n                closeModalInstant(\"#asae-eb-modal-nav-container\", ebNavClickFunc);\n            }\n            if (isOpenSearch) {\n                closeModalInstant(\"#asae-eb-modal-search-container\", ebSearchClickFunc);\n            }\n            if (isOpenChatbot) {\n                closeModalInstant(\"#asae-eb-modal-chatbot-container\", ebChatbotClickFunc);\n            }\n        }\n    });\n\n    /* \n    **********************************************************\n    Disable links for the current website\n    IDs are:\n    eb-asae - ASAE\n    eb-foun - ASAE Research Foundation\n    eb-coll - Collaborate\n    eb-cahq - CareerHQ\n    eb-asnw - Associations Now\n    eb-absi - ASAE Business Solutions\n    eb-lear - Learning\n    eb-govn - Association Governance Institute\n    eb-solu - Soluntion Providers HQ\n    eb-mmct - MMC+Tech Conference\n    eb-annl - Annual Meeting\n    eb-join - Join\n    */\n    var thisLink = null;\n    const ebasae = document.querySelector(\"#eb-asae\");\n    const ebfoun = document.querySelector(\"#eb-foun\");\n    const ebcoll = document.querySelector(\"#eb-coll\");\n    const ebcahq = document.querySelector(\"#eb-cahq\");\n    const ebasnw = document.querySelector(\"#eb-asnw\");\n    const ebabsi = document.querySelector(\"#eb-absi\");\n    const eblear = document.querySelector(\"#eb-lear\");\n    const ebgovn = document.querySelector(\"#eb-govn\");\n    const ebsolu = document.querySelector(\"#eb-solu\");\n    const ebmmct = document.querySelector(\"#eb-mmct\");\n    const ebannl = document.querySelector(\"#eb-annl\");\n    const ebjoin = document.querySelector(\"#eb-join\");\n\n    if (window.location.href.indexOf(\"www.asaecenter.org\") != -1) {\n        //console.log(\"Current page is ASAE\");\n        thisLink = ebasae;\n    }\n    if (window.location.href.indexOf(\"foundation.asaecenter.org\") != -1) {\n        //console.log(\"Current page is FOUN\");\n        thisLink = ebfoun;\n    }\n    if (window.location.href.indexOf(\"collaborate.asaecenter.org\") != -1) {\n        //console.log(\"Current page is COLL\");\n        thisLink = ebcoll;\n    }\n    if (window.location.href.indexOf(\"careerhq.asaecenter.org\") != -1) {\n        //console.log(\"Current page is CAHQ\");\n        thisLink = ebcahq;\n    }\n    if (window.location.href.indexOf(\"associationsnow.com\") != -1) {\n        //console.log(\"Current page is ASNW\");\n        thisLink = ebasnw;\n    }\n    if (window.location.href.indexOf(\"www.asaebusinesssolutions.org\") != -1) {\n        //console.log(\"Current page is ABSI\");\n        thisLink = ebabsi;\n    }\n    if (window.location.href.indexOf(\"academy.asaecenter.org\") != -1) {\n        //console.log(\"Current page is LEAR\");\n        thisLink = eblear;\n    }\n    if (window.location.href.indexOf(\"agi.asaecenter.org\") != -1) {\n        //console.log(\"Current page is GOVN\");\n        thisLink = ebgovn;\n    }\n    if (window.location.href.indexOf(\"solutionshq.asaecenter.org\") != -1) {\n        //console.log(\"Current page is SOLU\");\n        thisLink = ebsolu;\n    }\n    if ((window.location.href.indexOf(\"mmcc.asaecenter.org\") != -1) || (window.location.href.indexOf(\"mmct.asaecenter.org\") != -1)) {\n        //console.log(\"Current page is MMCT\");\n        thisLink = ebmmct;\n    }\n    if (window.location.href.indexOf(\"annual.asaecenter.org\") != -1) {\n        //console.log(\"Current page is ANNL\");\n        thisLink = ebannl;\n    }\n    if (1 == 2) { // never turn off JOIN button\n        thisLink = ebjoin;\n    }\n\n    if (thisLink !== null) {\n        console.log(\"Disabling \" + thisLink);\n        thisLink.addEventListener(\"click\", e => {\n            e.preventDefault();\n        })\n        thisLink.style.color = \"#bd491e\";\n        thisLink.style.cursor = \"default\";    \n    }\n\n    // hide div until loaded\n    setAttributes(document.getElementById(\"asae-eb-id\"), {\"visibility\":\"visible\"});\n}\n\nfunction closePB() {\n    // close pb and set cookie to not show again until new\n    pbID = document.getElementById(\"asae-pb-id\");\n    setAttributes(pbID, {\"display\": \"none\"});\n    \n    setCookie('pb-show',false,30); // expire in days; set to 30 for production\n}\n\n/* ---------- KEYBOARD HELPERS - START ---------- */\n// Escape key closes any open modal\ndocument.addEventListener('keydown', function(event) {\n    if (event.key === 'Escape') {\n        if (isOpenNav) ebNavClickFunc();\n        if (isOpenSearch) ebSearchClickFunc();\n        if (isOpenChatbot) ebChatbotClickFunc();\n    }\n});\n/* ---------- KEYBOARD HELPERS - END ---------- */\n"]}