{"version":3,"file":"app.js","mappings":"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","sources":["webpack://cabanaboiler/webpack/runtime/chunk loaded","webpack://cabanaboiler/./src/modules/carousels/carousel__cards/carousel__cards.js","webpack://cabanaboiler/./src/modules/search-bars/autosuggestions.js","webpack://cabanaboiler/./src/modules/progressbar/progress.js","webpack://cabanaboiler/./src/modules/carousels/swiper/swiper.js","webpack://cabanaboiler/./src/modules/tabel/tabel.js","webpack://cabanaboiler/./src/modules/third-party/instagram-feed/instagram-feed.js","webpack://cabanaboiler/./src/modules/headers/header__transparent-menu/scripts/ratioCheckerPrefersWhite.js","webpack://cabanaboiler/./src/modules/headers/header__transparent-menu/scripts/header.js","webpack://cabanaboiler/./src/modules/headers/header__transparent-menu/scripts/moveNavItems.js","webpack://cabanaboiler/./src/modules/creative/parallax/parallax.js","webpack://cabanaboiler/./src/modules/table-hours/checkHolidays.js","webpack://cabanaboiler/./src/modules/headers/header__double-logo/doubleLogoMenu.js","webpack://cabanaboiler/./src/modules/headers/header__megamenu-left-aligned/leftAlignedMegamenu.js","webpack://cabanaboiler/./src/modules/dropdowns/dropdown-settings/dropdownSettings.js","webpack://cabanaboiler/./src/scripts/app.js","webpack://cabanaboiler/./src/modules/fact-box/collapseBox.js","webpack://cabanaboiler/./src/modules/cards/card__comment/card__comment.js","webpack://cabanaboiler/./src/modules/headers/header--tagged/headerTagged.js","webpack://cabanaboiler/./src/modules/headers/header__megamenu-left-aligned/headerLeftAligned.js","webpack://cabanaboiler/./src/modules/fact-box/onShowMore.js","webpack://cabanaboiler/./src/modules/accordions/accordion.js","webpack://cabanaboiler/./src/scripts/components/objectFitImages.js","webpack://cabanaboiler/./src/modules/headers/header__megamenu-extended/header__megamenu-extended.js","webpack://cabanaboiler/./src/modules/headers/header__megamenu-extended/tab-order-mobile.js","webpack://cabanaboiler/./src/modules/headers/header__megamenu-extended/focus-trap.js","webpack://cabanaboiler/./src/scripts/components/pageLogin.js","webpack://cabanaboiler/./src/modules/intranet/header__intranet/header__intranet.js","webpack://cabanaboiler/./src/modules/heros/hero__multi-box/hero__multi-box.js","webpack://cabanaboiler/./src/modules/footers/footers.js","webpack://cabanaboiler/./src/modules/watermark/watermark.js","webpack://cabanaboiler/./src/scripts/components/smooth-scroll.js","webpack://cabanaboiler/./src/scripts/components/block-media-download.js","webpack://cabanaboiler/./src/modules/modals/modal-subscription/modal-subscription.js","webpack://cabanaboiler/./src/modules/pagination/pagination.js","webpack://cabanaboiler/./src/modules/anchor-links/article-anchor-menu/article-anchor-menu.js","webpack://cabanaboiler/./src/modules/accordions/accordion--mobile/accordion--mobile.js","webpack://cabanaboiler/./src/modules/accordions/accordion--desktop-down/accordion--desktop-down.js","webpack://cabanaboiler/./src/modules/info-boxes/info-box__links__icon/info-box__links__icon.js","webpack://cabanaboiler/./src/modules/carousels/three-column-carousel/three-column-carousel.js","webpack://cabanaboiler/./src/modules/videos/video.js","webpack://cabanaboiler/./src/modules/videos/video-dreambroker.js","webpack://cabanaboiler/./src/modules/videos/video-youtube.js","webpack://cabanaboiler/./src/modules/videos/video-html.js","webpack://cabanaboiler/./src/modules/third-party/borgerDk/borgerDk.js","webpack://cabanaboiler/./src/modules/third-party/sbsys/sbsysaccordion.js","webpack://cabanaboiler/./src/scripts/components/tooltips.js","webpack://cabanaboiler/./src/scripts/components/intext-arrow-link.js","webpack://cabanaboiler/./src/modules/service-menu/service-menu.js","webpack://cabanaboiler/./src/modules/service-menu/service-menu__shareByEmail.js","webpack://cabanaboiler/./src/scripts/components/form-elements.js","webpack://cabanaboiler/./src/modules/side-menu/side-menu.js","webpack://cabanaboiler/./src/modules/side-boxes/side-boxes__counter/side-boxes__counter.js","webpack://cabanaboiler/./src/modules/modals/modal-popup/modal-popup.js","webpack://cabanaboiler/./src/modules/intranet/tab-list--scrollable/tab-list--scrollable.js","webpack://cabanaboiler/./src/scripts/components/video-backgrounds.js","webpack://cabanaboiler/./src/modules/third-party/cludo-search/cludo-search.js","webpack://cabanaboiler/./src/modules/image/image-gallery/image-gallery.js","webpack://cabanaboiler/./src/modules/intranet/chat/chat.js","webpack://cabanaboiler/./src/modules/cards/card__comment/onShowMoreCard.js","webpack://cabanaboiler/./src/modules/third-party/kultunaut/kultunaut-card/kultunaut-card.js","webpack://cabanaboiler/./src/modules/side-boxes/side-boxes__most-popular/side-boxes__most-popular.js","webpack://cabanaboiler/./src/modules/dropdowns/dropdown--md-down/dropdown--md-down.js","webpack://cabanaboiler/./src/modules/banners/banner__hours/bannerHours.js","webpack://cabanaboiler/./src/modules/breadcrumbs/breadcrumb/breadcrumb.js","webpack://cabanaboiler/./src/scripts/components/unsaveButton.js","webpack://cabanaboiler/./src/modules/table-hours/table-hours.js","webpack://cabanaboiler/./src/modules/tab-panels/tabpanel--reworked.js","webpack://cabanaboiler/./src/scripts/components/init-grayscale.js","webpack://cabanaboiler/./src/scripts/components/dark-mode.js","webpack://cabanaboiler/webpack/bootstrap","webpack://cabanaboiler/webpack/runtime/compat get default export","webpack://cabanaboiler/webpack/runtime/define property getters","webpack://cabanaboiler/webpack/runtime/global","webpack://cabanaboiler/webpack/runtime/hasOwnProperty shorthand","webpack://cabanaboiler/webpack/runtime/make namespace object","webpack://cabanaboiler/webpack/runtime/node module decorator","webpack://cabanaboiler/webpack/runtime/runtimeId","webpack://cabanaboiler/webpack/runtime/jsonp chunk loading","webpack://cabanaboiler/webpack/runtime/nonce","webpack://cabanaboiler/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\r\n * Card portrait - no image carousel\r\n * https://owlcarousel2.github.io/\r\n */\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nimport owl from '../../../../node_modules/owl.carousel/dist/owl.carousel.min'\r\n\r\nexport function carouselCards() {\r\n\r\n jQuery(function () {\r\n if (jQuery(\".owl-card-carousel\").length < 1) {\r\n return;\r\n }\r\n\r\n jQuery(\".owl-card-carousel\").each(function () {\r\n var overThreeItems = false;\r\n var $thisCardCarousel = jQuery(this);\r\n // var $dataStagepadding = jQuery(\".owl-card-carousel\").data(\"stagepadding\");\r\n\r\n if ($thisCardCarousel.children('.item').length >= 3 && jQuery(window).width() <= 991 || $thisCardCarousel.children('.item').length >= 3) {\r\n overThreeItems = true;\r\n // if($dataStagepadding >= 1) {\r\n // overThreeItems = false;\r\n // jQuery(\".owl-card-carousel\").closest(\".container\").addClass(\"container--wide__important\");\r\n // }\r\n }\r\n\r\n $thisCardCarousel.owlCarousel({\r\n\t\t\t\tstagePadding: 0,\r\n\t\t\t\titems: 3,\r\n\t\t\t\tnav: false,\r\n\t\t\t\tdots: overThreeItems,\r\n\t\t\t\tloop: overThreeItems,\r\n\t\t\t\tmargin: 25,\r\n\t\t\t\tpullDrag: true,\r\n\t\t\t\ttouchDrag: true,\r\n\t\t\t\tmouseDrag: true,\r\n\t\t\t\tresponsiveClass: true,\r\n\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n stagePadding: 40\r\n },\r\n 600: {\r\n items: 2,\r\n stagePadding: 40 * 2\r\n },\r\n 991: {\r\n items: 3\r\n }\r\n }\r\n });\r\n\r\n\t\t\tjQuery('.owl-card-carousel').find('.owl-dot').each(function(index) {\r\n\t\t\t\tjQuery(this).removeAttr('role');\r\n\t\t\t\tjQuery(this).attr('aria-label', 'slide-' + index);\r\n\t\t\t});\r\n });\r\n });\r\n\r\n}\r\n\r\nexport default carouselCards;\r\n","export function autosuggestions() {\r\n\tconst suggestionsElements = document.querySelectorAll(\".js-auto-suggestions\");\r\n\tif (suggestionsElements.length) {\r\n\r\n\t\tconst testSuggestions = [\"Apple\", \"Banana\", \"Cherry\", \"Date\", \"Elderberry\", \"Fig\", \"Grape\"];\r\n\t\tconst useTestData = false; // Set to `true` in the test environment, always set to false before committing\r\n\r\n\t\tsuggestionsElements.forEach((suggestionsElement) => {\r\n\t\t\tconst htmlElement = document.querySelector(\"html\");\r\n\t\t\tsuggestionsElement.addEventListener(\"input\", () => {\r\n\t\t\t\tconst inputValue = suggestionsElement.value;\r\n\t\t\t\tif (inputValue.length > 1) {\r\n\t\t\t\t\tif (useTestData) {\r\n\t\t\t\t\t\t// Use the test array instead of fetching from the API\r\n\t\t\t\t\t\tconst suggestionsMarkup = generateSuggestionsMarkup(testSuggestions, inputValue);\r\n\t\t\t\t\t\taddSuggestionsMarkup(suggestionsElement, suggestionsMarkup);\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst pageId = suggestionsElement.getAttribute(\"data-search-pageid\");\r\n\t\t\t\t\t\tconst useraffle = suggestionsElement.getAttribute(\"data-useraffle\");\r\n\t\t\t\t\t\tconst lang = htmlElement.getAttribute(\"lang\");\r\n\t\t\t\t\t\t// Define the API URL\r\n\t\t\t\t\t\tconst apiUrl =\r\n\t\t\t\t\t\t\t\"/umbraco/api/search/GetTypeAhead?searchTerm=\" +\r\n\t\t\t\t\t\t\tinputValue +\r\n\t\t\t\t\t\t\t\"&pageId=\" +\r\n\t\t\t\t\t\t\tpageId +\r\n\t\t\t\t\t\t\t\"&lang=\" +\r\n\t\t\t\t\t\t\tlang +\r\n\t\t\t\t\t\t\t\"&useRaffle=\" +\r\n\t\t\t\t\t\t\tuseraffle;\r\n\t\t\t\t\t\tfetch(apiUrl, {\r\n\t\t\t\t\t\t\tmethod: \"GET\",\r\n\t\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.then((response) => response.json())\r\n\t\t\t\t\t\t\t.then((data) => {\r\n\t\t\t\t\t\t\t\t// Handle the response data\r\n\t\t\t\t\t\t\t\tif (Array.isArray(data)) {\r\n\t\t\t\t\t\t\t\t\tif (data.length) {\r\n\t\t\t\t\t\t\t\t\t\tconst suggestionsMarkup = generateSuggestionsMarkup(\r\n\t\t\t\t\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\t\t\t\t\tinputValue,\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\taddSuggestionsMarkup(suggestionsElement, suggestionsMarkup);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tremoveSuggestions(suggestionsElement);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tremoveSuggestions(suggestionsElement);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\t\t// Handle any errors\r\n\t\t\t\t\t\t\t\tconsole.error(\"Error:\", error);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t}\r\n\t\t\t\tif (inputValue.length == 0) {\r\n\t\t\t\t\tremoveSuggestions(suggestionsElement);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// suggestionsElement.addEventListener(\"blur\", () => {\r\n\t\t\t// \tsetTimeout(() => {\r\n\t\t\t// \t\tremoveSuggestions(suggestionsElement);\r\n\t\t\t// \t}, 200); // Timeout to allow click on suggestion\r\n\t\t\t// });\r\n\t\t\tsuggestionsElement.addEventListener(\"click\", (event) => {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t});\r\n\r\n\t\t\tsuggestionsElement.addEventListener(\"keydown\", (event) => {\r\n\t\t\t\tconst suggestionsContainer = suggestionsElement.parentElement.parentElement.querySelector(\r\n\t\t\t\t\t\".suggestions--autocomplete ul\",\r\n\t\t\t\t);\r\n\t\t\t\tif (suggestionsContainer) {\r\n\t\t\t\t\tconst items = suggestionsContainer.querySelectorAll(\"li\");\r\n\t\t\t\t\tlet currentIndex = Array.from(items).findIndex((item) =>\r\n\t\t\t\t\t\titem.classList.contains(\"highlighted\"),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (event.key === \"ArrowDown\") {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tif (currentIndex < items.length - 1) {\r\n\t\t\t\t\t\t\tcurrentIndex++;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcurrentIndex = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thighlightItem(items, currentIndex);\r\n\t\t\t\t\t} else if (event.key === \"ArrowUp\") {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tif (currentIndex > 0) {\r\n\t\t\t\t\t\t\tcurrentIndex--;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcurrentIndex = items.length - 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thighlightItem(items, currentIndex);\r\n\t\t\t\t\t} else if (event.key === \"Enter\") {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tif (currentIndex > -1) {\r\n\t\t\t\t\t\t\tsuggestionsElement.value = items[currentIndex].innerText;\r\n\t\t\t\t\t\t\tremoveSuggestions(suggestionsElement);\r\n\r\n\t\t\t\t\t\t\tconst closestForm = suggestionsElement.closest(\"form\");\r\n\t\t\t\t\t\t\tif (closestForm) {\r\n\t\t\t\t\t\t\t\tclosestForm.submit();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst closestForm = suggestionsElement.closest(\"form\");\r\n\t\t\t\t\t\t\tif (closestForm) {\r\n\t\t\t\t\t\t\t\tclosestForm.submit();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction generateSuggestionsMarkup(suggestions, searchTerm) {\r\n\t\tlet markup = '
\";\r\n\t\treturn markup;\r\n\t}\r\n\r\n\tfunction addSuggestionsMarkup(inputElement, markup) {\r\n\t\tconst formElement = inputElement.closest(\"form\");\r\n\t\tif (formElement) {\r\n\t\t\t// Remove existing suggestions if present\r\n\t\t\tconst existingSuggestions = formElement.querySelector(\r\n\t\t\t\t\".suggestions--autocomplete\",\r\n\t\t\t);\r\n\t\t\tif (existingSuggestions) {\r\n\t\t\t\texistingSuggestions.remove();\r\n\t\t\t}\r\n\r\n\t\t\t// Insert the new suggestions\r\n\t\t\tformElement.insertAdjacentHTML(\"beforeend\", markup);\r\n\r\n\t\t\t// Add click event listener to each suggestion\r\n\t\t\tconst suggestionButtons = formElement.querySelectorAll(\".suggestions--autocomplete button\");\r\n\t\t\tsuggestionButtons.forEach(button => {\r\n\t\t\t\tbutton.addEventListener(\"click\", (event) => {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tinputElement.value = button.innerText;\r\n\t\t\t\t\tremoveSuggestions(inputElement);\r\n\t\t\t\t\tconst closestForm = inputElement.closest(\"form\");\r\n\t\t\t\t\tif (closestForm) {\r\n\t\t\t\t\t\tclosestForm.submit();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\tfunction removeSuggestions(inputElement) {\r\n\t\tconst formElement = inputElement.closest(\"form\");\r\n\t\tif (formElement) {\r\n\t\t\tconst existingSuggestions = formElement.querySelector(\r\n\t\t\t\t\".suggestions--autocomplete\",\r\n\t\t\t);\r\n\t\t\tif (existingSuggestions) {\r\n\t\t\t\texistingSuggestions.remove();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction highlightItem(items, index) {\r\n\t\titems.forEach((item, idx) => {\r\n\t\t\tif (idx === index) {\r\n\t\t\t\titem.classList.add(\"highlighted\");\r\n\t\t\t\titem.scrollIntoView({ block: \"nearest\" });\r\n\t\t\t} else {\r\n\t\t\t\titem.classList.remove(\"highlighted\");\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default autosuggestions;\r\n","import { unset } from \"lodash\";\r\n\r\nexport function progress() {\r\n\tvar progress = jQuery('progress:not(.progressbar__value)');\r\n\tif (progress.length > 0) {\r\n\t\tvar\tarticleHeight = jQuery('.article-wrapper').height(),\r\n\t\t\tprogressBar = jQuery('progress:not(.progressbar__value)'),\r\n\t\t\tmenuHeight = jQuery('header').height(),\r\n\t\t\tmax, value;\r\n\r\n\t\t/* Set the max scrollable area */\r\n\t\tmax = articleHeight + 200;\r\n\t\tprogressBar.attr('max', max);\r\n\t\tjQuery(document).on('scroll', function () {\r\n\t\t\tvalue = jQuery(window).scrollTop() - menuHeight;\r\n\t\t\tprogressBar.attr('value', value);\r\n\t\t});\r\n\r\n\t}\r\n\twindow.addEventListener('resize', () => {\r\n\t\tif(progress.length > 0 ){\r\n\t\t\tif($(window).width() < 769) {\r\n\t\t\t\tprogress[0].style.top = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n\r\n\r\n}\r\n\r\nexport default progress;\r\n","/**\r\n * Swiper carousel\r\n * https://swiperjs.com/\r\n */\r\n\r\n// import Swiper and modules styles\r\nimport Swiper from 'swiper';\r\nimport { Navigation, Pagination, Keyboard, A11y, EffectFade } from 'swiper/modules';\r\nimport 'swiper/css'\r\nimport 'swiper/css/effect-fade'\r\nimport 'swiper/css/pagination'\r\nimport 'swiper/css/navigation'\r\nimport 'swiper/css/keyboard'\r\nimport 'swiper/css/a11y';\r\n\r\nexport function swiper() {\r\n if (jQuery(\".swiper\").length === 0) {\r\n return;\r\n }\r\n\r\n function initSwipers(defaults = {}, selector = \".swiper\") {\r\n let swipers = document.querySelectorAll(selector);\r\n \r\n swipers.forEach((swiperContainer, index) => {\r\n // Create a unique class name for the swiper container\r\n let swiperClass = 'swiper-' + index;\r\n \r\n // Add the unique class to the swiper container if not already added\r\n if (!swiperContainer.classList.contains(swiperClass)) {\r\n swiperContainer.classList.add(swiperClass);\r\n \r\n // Get options\r\n let optionsData = swiperContainer.dataset.swiper\r\n ? JSON.parse(swiperContainer.dataset.swiper)\r\n : {};\r\n\r\n // Get dottext from data attribute\r\n let dottext = swiperContainer.getAttribute('data-dottext') || 'Gå til slide #';\r\n\r\n // Check if the swiper should be active only on mobile\r\n let shouldEnableSwiper = optionsData.mobileOnly && window.innerWidth <= 768;\r\n\r\n // Combine defaults and custom options\r\n let options = {\r\n ...defaults,\r\n ...optionsData,\r\n navigation: {\r\n nextEl: swiperContainer.querySelector('.swiper-button-next'),\r\n prevEl: swiperContainer.querySelector('.swiper-button-prev'),\r\n }, // Set navigation options specific to this swiper\r\n pagination: {\r\n ...defaults.pagination,\r\n el: swiperContainer.querySelector('.swiper-pagination'),\r\n renderBullet: function (index, className) {\r\n let ariaLabel = dottext.replace('#', index + 1);\r\n return `
  • \r\n \r\n
  • `;\r\n },\r\n },\r\n };\r\n \r\n // Initialize Swiper only if it should be active on the current device\r\n if (!optionsData.mobileOnly || shouldEnableSwiper) {\r\n\r\n // Initialize Swiper\r\n let swiperInstance = new Swiper(swiperContainer, options);\r\n \r\n // Check if navigation elements exist within the swiper container\r\n let navigation = swiperContainer.querySelector('.swiper-button-prev, .swiper-button-next');\r\n if (navigation) {\r\n \r\n navigation.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n \r\n if (event.target.classList.contains('swiper-button-prev')) {\r\n swiperInstance.slidePrev();\r\n } else if (event.target.classList.contains('swiper-button-next')) {\r\n swiperInstance.slideNext();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n } \r\n\r\n // Basic options for all sliders\r\n let defaults = {\r\n modules: [Navigation, Pagination, Keyboard, A11y, EffectFade],\r\n slidesPerView: 1,\r\n spaceBetween: 30,\r\n autoHeight: false,\r\n effect: \"fade\",\r\n loop: true,\r\n lazy: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n keyboard: {\r\n enabled: true,\r\n },\r\n A11y: {\r\n enabled: true\r\n },\r\n };\r\n \r\n // Call the init function\r\n initSwipers(defaults);\r\n\r\n}\r\n\r\nexport default swiper;\r\n","export function dataTabel() {\r\n // Check if any table exists\r\n if (jQuery('.table').length > 0) {\r\n\t\tvar lang_da_mod = {\r\n\t\t\t\"sProcessing\": \"Henter...\",\r\n\t\t\t\"sLengthMenu\": \"Vis _MENU_ linjer\",\r\n\t\t\t\"sZeroRecords\": \"Ingen linjer matcher søgningen\",\r\n\t\t\t\"sInfo\": \"Viser _START_ til _END_ af _TOTAL_ linjer\",\r\n\t\t\t\"sInfoEmpty\": \"Viser 0 til 0 af 0 linjer\",\r\n\t\t\t\"sInfoFiltered\": \"(filtreret fra _MAX_ linjer)\",\r\n\t\t\t\"sSearch\": \"Søg:\",\r\n\t\t\t\"sUrl\": \"\",\r\n\t\t\t\"oPaginate\": {\r\n\t\t\t\t\"sFirst\": false,\r\n\t\t\t\t\"sPrevious\": \"Forrige\",\r\n\t\t\t\t\"sNext\": \"Næste\",\r\n\t\t\t\t\"sLast\": false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Iterate through each table\r\n\t\tjQuery('.table').each(function () {\r\n\t\t\tvar table = jQuery(this);\r\n\t\t\tvar id = table.attr(\"id\"); // Ensure the table has an ID\r\n\t\t\tif (!id) {\r\n\t\t\t\tconsole.warn('Table is missing an ID and will not be initialized.');\r\n\t\t\t\treturn; // Skip this table if no ID is found\r\n\t\t\t}\r\n\r\n\t\t\tvar search = table.data('search');\r\n\t\t\tvar searchfield = table.data('searchfield');\r\n\t\t\tconsole.log(searchfield);\r\n\t\t\t// Configuration for tables with 'table--collapse' class\r\n\t\t\tif (table.hasClass('table--collapse')) {\r\n\t\t\t\tvar entries = table.data('entries');\r\n\t\t\t\tvar all = table.data('all');\r\n\t\t\t\tvar lenghMenu = table.data('lengthmenu');\r\n\t\t\t\tvar pagination = table.data('pagination');\r\n\t\t\t\tvar info = table.data('info');\r\n\r\n\t\t\t\tlang_da_mod.sLengthMenu = '';\r\n\t\t\t\tlang_da_mod.searchPlaceholder = \"\";\r\n\t\t\t\tlang_da_mod.sSearch = search;\r\n\t\t\t\tlang_da_mod.oPaginate.sNext = \"\";\r\n\t\t\t\tlang_da_mod.oPaginate.sPrevious = \"\";\r\n\t\t\t\tlang_da_mod.searchfield = searchfield;\r\n\t\t\t\t// Set pagination based on the table data attribute\r\n\t\t\t\tlang_da_mod.sPaginationType = pagination ? \"full_numbers\" : \"simple\";\r\n\r\n\t\t\t\t// Initialize the collapsed table\r\n\t\t\t\taddTable(id, lang_da_mod, pagination); // Pass pagination flag to the addTable function\r\n\t\t\t} else {\r\n\t\t\t\t// Configuration for other tables\r\n\t\t\t\tentries = table.data('entries');\r\n\t\t\t\tlenghMenu = table.data('lengthmenu');\r\n\t\t\t\tpagination = table.data('pagination');\r\n\t\t\t\tinfo = table.data('info');\r\n\r\n\t\t\t\tlang_da_mod.sLengthMenu = lenghMenu;\r\n\t\t\t\tlang_da_mod.pagination = pagination;\r\n\t\t\t\tlang_da_mod.searchfield = searchfield;\r\n\t\t\t\tlang_da_mod.searchPlaceholder = \"\";\r\n\t\t\t\tlang_da_mod.sSearch = search;\r\n\t\t\t\tlang_da_mod.info = entries;\r\n\t\t\t\tlang_da_mod.oPaginate.sNext = \"\";\r\n\t\t\t\tlang_da_mod.oPaginate.sPrevious = \"\";\r\n\r\n\t\t\t\t// Initialize the scrollable table\r\n\t\t\t\taddTableScrollable(id, lang_da_mod); // Call the addTableScrollable function for non-collapsed tables\r\n\t\t\t}\r\n\t\t});\r\n }\r\n}\r\n\r\n// Initialize DataTable for regular tables\r\nfunction addTable(id, lang_da_mod, pagination) {\r\n jQuery('#' + id).DataTable({\r\n\t\tordering: true,\r\n\t\tretrieve: true,\r\n\t\t\"info\": Boolean(lang_da_mod.info), // Explicitly cast to boolean\r\n\t\tsearching: lang_da_mod.searchfield,\r\n\t\t// searching: lang_da_mod.searchfield,\r\n\t\t\"bLengthChange\": lang_da_mod.lenghMenu,\r\n\t\t\"bPaginate\": pagination, // Use the pagination flag passed from the data attributes\r\n\t\t\"sPaginationType\": lang_da_mod.sPaginationType || \"simple\", // Use custom pagination type\r\n\t\tresponsive: {\r\n\t\t\tdetails: {\r\n\t\t\t\ttype: 'column'\r\n\t\t\t}\r\n\t\t},\r\n\t\tcolumnDefs: [{\r\n\t\t\tclassName: 'control',\r\n\t\t\torderable: false,\r\n\t\t\ttargets: 0\r\n\t\t}],\r\n\t\t\"language\": lang_da_mod\r\n });\r\n removeTabIndexFromHiddenTables();\r\n\r\n setTimeout(function () {\r\n\t\tjQuery('.table').css('opacity', 1);\r\n\t\tjQuery('.dataTables_wrapper').css('opacity', 1);\r\n\t\tjQuery('.dataTables_wrapper input').prop('required', true);\r\n\t\tjQuery('.dataTables_wrapper input').parent('label').attr('aria-label', 'Søg i tabel');\r\n }, 100);\r\n}\r\n\r\n// Initialize DataTable for scrollable tables (with fixed columns)\r\nfunction addTableScrollable(id, lang_da_mod) {\r\n let resizeTimeout;\r\n jQuery(window).on(\"load resize\", function () { // Mobile responsiveness\r\n\t\tvar table = jQuery('#' + id); // Ensure we're using the correct table ID\r\n\r\n\t\tif (table.length === 0) {\r\n\t\t\tconsole.error('Table with id ' + id + ' not found.');\r\n\t\t\treturn; // Skip if table doesn't exist\r\n\t\t}\r\n\r\n // // Find the inside the div with class 'dataTables_scrollHead'\r\n // var tableElement = document.querySelector('.dataTables_scrollHead table');\r\n\r\n // // Check if the
    element exists and has an 'id' attribute\r\n // if (tableElement && tableElement.hasAttribute('id')) {\r\n // tableElement.removeAttribute('id');\r\n // }\r\n\r\n\t\t// if (this.matchMedia(\"(max-width: 767px)\").matches) {\r\n\t\t// \t// var tableScrollableTh = table.find('th');\r\n\r\n\t\t// \t// if (tableScrollableTh.length <= 3) {\r\n\t\t// \t// \tjQuery('.table-icon-scroll').css(\"display\", \"none\");\r\n\t\t// \t// }\r\n\r\n\t\t// \t// Debounced resize event\r\n\t\t// \tclearTimeout(resizeTimeout);\r\n\t\t// \t// resizeTimeout = setTimeout(function () {\r\n\t\t// \t// \tjQuery(window).scroll(function () {\r\n\t\t// \t// \t\tvar tableOffset = table.offset();\r\n\t\t// \t// \t\tif (!tableOffset) {\r\n\t\t// \t// \t\t\tconsole.error('Table offset is undefined.');\r\n\t\t// \t// \t\t\treturn; // Skip if offset is not available\r\n\t\t// \t// \t\t}\r\n\r\n\t\t// \t// \t\t// var top_of_element = tableOffset.top;\r\n\t\t// \t// \t\t// var bottom_of_element = top_of_element + table.outerHeight();\r\n\t\t// \t// \t\t// var bottom_of_screen = jQuery(window).scrollTop() + jQuery(window).innerHeight();\r\n\t\t// \t// \t\t// var top_of_screen = jQuery(window).scrollTop();\r\n\r\n\t\t// \t// \t\t// if ((bottom_of_screen > top_of_element) && (top_of_screen < bottom_of_element)) {\r\n\t\t// \t// \t\t// \tjQuery('.table-icon-scroll').css(\"opacity\", 1);\r\n\t\t// \t// \t\t// } else {\r\n\t\t// \t// \t\t// \tjQuery('.table-icon-scroll').css(\"opacity\", 0);\r\n\t\t// \t// \t\t// }\r\n\r\n\t\t// \t// \t\t// if ((bottom_of_screen > bottom_of_element) && (top_of_screen < bottom_of_element)) {\r\n\t\t// \t// \t\t// \tjQuery('.table-icon-scroll').css(\"opacity\", 0);\r\n\t\t// \t// \t\t// }\r\n\t\t// \t// \t});\r\n\t\t// \t// }, 150); // Adjust debounce time as needed\r\n\t\t// }\r\n });\r\n\r\n jQuery('#' + id).DataTable({\r\n\t\tordering: true,\r\n\t\tretrieve: true,\r\n\t\t\"info\": lang_da_mod.info,\r\n\t\tsearching: lang_da_mod.searchfield,\r\n\t\t\"bLengthChange\": lang_da_mod.lenghMenu,\r\n\t\t\"bPaginate\": lang_da_mod.pagination,\r\n\t\tcolumnDefs: [{\r\n\t\t\tclassName: 'control',\r\n\t\t\torderable: false,\r\n\t\t\ttargets: 0\r\n\t\t}],\r\n\t\tfixedColumns: true,\r\n\t\t\"language\": lang_da_mod,\r\n\t\tscrollX: true,\r\n\t\tscrollCollapse: true,\r\n\t\tinitComplete: function () {\r\n\t\t\t// Add ARIA attributes for accessibility\r\n\t\t\tconst tableId = '#' + id;\r\n\t\t\tconst headTable = jQuery(tableId).closest('.dataTables_scroll').find('.dataTables_scrollHead table');\r\n\t\t\tconst bodyTable = jQuery(tableId).closest('.dataTables_scroll').find('.dataTables_scrollBody table');\r\n\r\n\t\t\t// Associate header table with body table\r\n\t\t\theadTable.attr('aria-hidden', true); // Indicate that it's not a separate table\r\n // headTable.attr('tabindex', -1);\r\n\t\t\t// bodyTable.attr('aria-labelledby', `${id}-header`);\r\n\t\t\t// headTable.attr('id', `${id}-header`);\r\n\r\n\t\t\t// Remove roles from `thead`, `tbody`, and `tfoot` (if added by DataTables)\r\n\t\t\theadTable.find('thead, tbody, tfoot').removeAttr('role');\r\n\t\t\tbodyTable.find('thead, tbody, tfoot').removeAttr('role');\r\n\r\n\t\t\theadTable.removeAttr('role');\r\n\t\t\tbodyTable.removeAttr('role');\r\n\r\n\t\t\t// Remove roles from rows (`role=\"row\"`) and cells (`role=\"cell\"`)\r\n\t\t\tbodyTable.find('tr, td, th').removeAttr('role');\r\n\t\t\theadTable.find('tr, td, th').removeAttr('role');\r\n\r\n\r\n // Adjust tabindex for non-interactive elements inside scrollable body\r\n bodyTable.find('td').each(function () {\r\n // If there's no interactive element (link, button, input), set tabindex=\"-1\"\r\n jQuery(this).removeAttr('tabindex');\r\n // if (!jQuery(this).find('a, button, input').length) {\r\n // jQuery(this).attr('tabindex', '-1');\r\n // }\r\n });\r\n\t\t}\r\n });\r\n removeTabIndexFromHiddenTables();\r\n\r\n setTimeout(function () {\r\n\t\tjQuery('.table').css('opacity', 1);\r\n\t\tjQuery('.dataTables_wrapper').css('opacity', 1);\r\n\t\tjQuery('.dataTables_wrapper input').prop('required', true);\r\n\t\tjQuery('.dataTables_wrapper input').parent('label').attr('aria-label', 'Søg i tabel');\r\n }, 100);\r\n}\r\n\r\nfunction removeTabIndexFromHiddenTables() {\r\n jQuery('table[aria-hidden=\"true\"]').each(function () {\r\n jQuery(this).find('[tabindex]').removeAttr('tabindex');\r\n });\r\n}\r\n\r\nexport default dataTabel;\r\n","/**\r\n * Instagram feed\r\n */\r\n\"use strict\";\r\nexport function instagramFeed() {\r\n if (jQuery(\".instagram-feed__container\").length == 0) {\r\n return;\r\n }\r\n (function(a){function b(a){return a.replace(/[&<>\"'`=\\/]/g,function(a){return f[a]})}function c(a,b){return\"undefined\"!=typeof a.node.edge_media_to_caption.edges[0]&&\"undefined\"!=typeof a.node.edge_media_to_caption.edges[0].node&&\"undefined\"!=typeof a.node.edge_media_to_caption.edges[0].node.text&&null!==a.node.edge_media_to_caption.edges[0].node.text?a.node.edge_media_to_caption.edges[0].node.text:\"undefined\"!=typeof a.node.title&&null!==a.node.title&&0!=a.node.title.length?a.node.title:\"undefined\"!=typeof a.node.accessibility_caption&&null!==a.node.accessibility_caption&&0!=a.node.accessibility_caption.length?a.node.accessibility_caption:(this.is_tag?b.name:b.username)+\" image \"}var d={host:\"https://www.instagram.com/\",username:\"\",tag:\"\",container:\"\",display_profile:!0,display_biography:!0,display_gallery:!0,display_captions:!1,display_igtv:!1,callback:null,styling:!0,items:8,items_per_row:4,margin:.5,image_size:640,lazy_load:!1,cache_time:360,on_error:console.error},e={150:0,240:1,320:2,480:3,640:4},f={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"/\":\"/\",\"`\":\"`\",\"=\":\"=\"};a.instagramFeed=function(f){function g(d){if(\"string\"==typeof d){try{d=d.split(\"window._sharedData = \")[1].split(\"\")[0]}catch(a){return void h.on_error(\"Instagram Feed: It looks like the profile you are trying to fetch is age restricted. See https://github.com/jsanahuja/InstagramFeed/issues/26\",3)}d=JSON.parse(d.substr(0,d.length-1)),d=d.entry_data.ProfilePage||d.entry_data.TagPage;var f=!1;if(\"undefined\"==typeof d){var g=localStorage.getItem(m);if(null!==g&&(d=JSON.parse(g),f=!0),h.on_error(\"Instagram Feed: Your network has been temporary banned by Instagram because of too many requests. Consider increasing your 'cache_time'. See https://github.com/jsanahuja/jquery.instagramFeed/issues/25 and https://github.com/jsanahuja/jquery.instagramFeed/issues/101\",4),!d)return}!f&&0 a[data-caption]:hover::after { content: attr(data-caption); text-align: center; font-size: 0.8rem; color: black; position: absolute; left: 0; right: 0; bottom: 0; padding: 1%; max-height: 100%; overflow-y: auto; overflow-x: hidden; background-color: hsla(0, 100%, 100%, 0.8); } \")}else k={profile_container:\"\",profile_image:\"\",profile_name:\"\",profile_biography:\"\",gallery_image:\"\",gallery_image_link:\"\"};h.display_profile&&(l+=\"
    \",l+=\"\\\"\"+(j?d.name+\"\",l+=j?\"

    #\"+h.tag+\"

    \":\"

    @\"+d.full_name+\" (@\"+h.username+\")

    \",!j&&h.display_biography&&(l+=\"

    \"+d.biography+\"

    \"),l+=\"
    \");var p=\"undefined\"==typeof e[h.image_size]?e[640]:e[h.image_size];if(h.display_gallery)if(\"undefined\"!=typeof d.is_private&&!0===d.is_private)l+=\"

    This profile is private

    \";else{var q=(d.edge_owner_to_timeline_media||d.edge_hashtag_to_media).edges;x=q.length>h.items?h.items:q.length,l+=\"\"}if(h.display_igtv&&\"undefined\"!=typeof d.edge_felix_video_timeline){var w=d.edge_felix_video_timeline.edges,x=w.length>h.items?h.items:w.length;if(0\";for(var r=0;r\",l+=\"\",l+=\"\"}l+=\"\"}}a(h.container).html(l)}null!=h.callback&&h.callback(d)}var h=a.fn.extend({},d,f);if(\"\"==h.username&&\"\"==h.tag)return h.on_error(\"Instagram Feed: Error, no username nor tag defined.\",1),!1;if(\"undefined\"!=typeof h.get_data&&console.warn(\"Instagram Feed: options.get_data is deprecated, options.callback is always called if defined\"),null==h.callback&&\"\"==h.container)return h.on_error(\"Instagram Feed: Error, neither container found nor callback defined.\",2),!1;var j=\"\"==h.username,k=j?h.host+\"explore/tags/\"+h.tag+\"/\":h.host+h.username+\"/\",l=null,m=\"instagramFeed_\"+(j?\"t_\"+h.tag:\"u_\"+h.username),n=m+\"_cached\";if(0new Date().getTime()){var p=localStorage.getItem(m);null!==p&&(l=JSON.parse(p))}}return null===l?a.get(k,g).fail(function(a){h.on_error(\"Instagram Feed: Unable to fetch the given user/tag. Instagram responded with the status code: \"+a.status,5)}):g(l),!0}})(jQuery);\r\n\r\n (function ($) {\r\n\r\n var amount = jQuery(\".instagram-feed__container\").data(\"amount\");\r\n jQuery(window).on('load', function () {\r\n var userid = jQuery(\".instagram-feed__container\").data(\"userid\");\r\n $.instagramFeed({\r\n 'username': userid,\r\n // 'container': \".instagram-feed__container\",\r\n 'display_profile': false,\r\n 'display_biography': false,\r\n 'display_gallery': true,\r\n 'display_captions': false,\r\n 'callback': null,\r\n 'cache_time': 120,\r\n 'styling': false,\r\n 'items': amount,\r\n 'items_per_row': 4,\r\n 'image_size': 480,\r\n 'margin': 1,\r\n 'lazy_load': true,\r\n 'callback': function (data) {\r\n addInstagramImages(data.edge_owner_to_timeline_media.edges.slice(0, amount))\r\n },\r\n 'on_error': console.error\r\n });\r\n });\r\n function addInstagramImages(data) {\r\n for (var i = 0; i < amount; i++) {\r\n if(data[i] != undefined) {\r\n jQuery(\".instagram-feed__container\").append(\r\n `\r\n \r\n \"`+data[i].node.edge_media_to_caption.edges[0].node.text+`\"\r\n
    \r\n \r\n Se mere på Instagram\r\n
    \r\n
    \r\n
    \r\n `\r\n );\r\n\r\n }\r\n };\r\n jQuery(\".instagram-feed\").fadeIn();\r\n }\r\n })(jQuery);\r\n\r\n}\r\n\r\nexport default instagramFeed;\r\n","export function ratioCheckerPrefersWhite(background) {\r\n\tlet TextIsBlack;\r\n\tconst textColorWhiteHex = '#ffffff';\r\n\tconst textColorBlackHex = '#000000';\r\n\r\n\t// Splits rgb() color to a js object\r\n\tconst rgbToObj = (color) => {\r\n\t\tlet colorRgb = ['r', 'g', 'b'];\r\n\r\n\t\tlet colorValuesArr = color\r\n\t\t\t.slice(background.indexOf('(') + 1, background.indexOf(')'))\r\n\t\t\t.split(', ');\r\n\r\n\t\tlet colorObject = {};\r\n\r\n\t\tcolorValuesArr.forEach((value, i) => {\r\n\t\t\tcolorObject[colorRgb[i]] = value;\r\n\t\t});\r\n\r\n\t\treturn colorObject;\r\n\t};\r\n\r\n\t// Accepts a hex-code and extract r, g, b color.\r\n\tconst hexToRgb = (hex) => {\r\n\t\tlet shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n\t\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n\t\t\treturn r + r + g + g + b + b;\r\n\t\t});\r\n\r\n\t\tlet result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n\t\treturn result\r\n\t\t\t? {\r\n\t\t\t\t\tr: parseInt(result[1], 16),\r\n\t\t\t\t\tg: parseInt(result[2], 16),\r\n\t\t\t\t\tb: parseInt(result[3], 16),\r\n\t\t\t }\r\n\t\t\t: null;\r\n\t};\r\n\r\n\tconst textColorBlackRgb = hexToRgb(textColorBlackHex);\r\n\tconst textColorWhiteRgb = hexToRgb(textColorWhiteHex);\r\n\t// js getComputedStyles returns a rgb\r\n\tlet bgc = rgbToObj(background);\r\n\r\n\t// calculate luminance of color\r\n\tfunction luminance(r, g, b) {\r\n\t\tlet a = [r, g, b].map(function (v) {\r\n\t\t\tv /= 255;\r\n\t\t\t``;\r\n\t\t\treturn v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\r\n\t\t});\r\n\t\treturn a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\r\n\t}\r\n\r\n\tconst luminanceBgc = luminance(bgc.r, bgc.g, bgc.b);\r\n\r\n\tconst luminanceTextWhite = luminance(\r\n\t\ttextColorWhiteRgb.r,\r\n\t\ttextColorWhiteRgb.g,\r\n\t\ttextColorWhiteRgb.b\r\n\t);\r\n\r\n\tconst luminanceTextBlack = luminance(\r\n\t\ttextColorBlackRgb.r,\r\n\t\ttextColorBlackRgb.g,\r\n\t\ttextColorBlackRgb.b\r\n\t);\r\n\r\n\tconst ratioBlackText =\r\n\t\tluminanceBgc > luminanceTextBlack\r\n\t\t\t? (luminanceTextBlack + 0.05) / (luminanceBgc + 0.05)\r\n\t\t\t: (luminanceBgc + 0.05) / (luminanceTextBlack + 0.05);\r\n\r\n\t// Calculate ratio between white and bg-color.\r\n\tconst ratioWhiteText =\r\n\t\tluminanceBgc > luminanceTextWhite\r\n\t\t\t? (luminanceTextWhite + 0.05) / (luminanceBgc + 0.05)\r\n\t\t\t: (luminanceBgc + 0.05) / (luminanceTextWhite + 0.05);\r\n\r\n\t// Calculate ratio between black and bg-color.\r\n\r\n\r\n\treturn ratioBlackText > ratioWhiteText\r\n\r\n\tconst setColorVarableTrue = () => {\r\n\t\tif (TextIsBlack) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tTextIsBlack = true;\r\n\t};\r\n\r\n\tconst setColorVarableFalse = () => {\r\n\t\tif (!TextIsBlack) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tTextIsBlack = false;\r\n\t};\r\n\r\n\t// the smallest ratio becomes the text-color\r\n\tratioBlackText > ratioWhiteText\r\n\t\t? setColorVarableFalse()\r\n\t\t: setColorVarableTrue();\r\n\r\n\t// add color-class to element with adaptive text-color\r\n\tif (!TextIsBlack) {\r\n\t\tdocument.documentElement.style.setProperty(\r\n\t\t\t'--changing-text-color',\r\n\t\t\t'white'\r\n\t\t);\r\n\r\n\t\tdocument.getElementById('logo-id').style.display = 'none'\r\n\t\tdocument.getElementById('inverse-logo-id').style.display = 'block'\r\n\t} else {\r\n\t\tdocument.documentElement.style.setProperty(\r\n\t\t\t'--changing-text-color',\r\n\t\t\t'black'\r\n\t\t);\r\n\t\tdocument.getElementById('logo-id').style.display = 'block'\r\n\t\tdocument.getElementById('inverse-logo-id').style.display = 'none'\r\n\t}\r\n}\r\n\r\nexport default ratioCheckerPrefersWhite;\r\n","import ratioCheckerPrefersWhite from \"./ratioCheckerPrefersWhite\";\r\nimport { throttle } from \"lodash-es\";\r\n\r\nexport function header() {\r\n\r\n\tconst headerIsFixed = document.getElementsByClassName(\"fixed\");\r\n\tconst isTransparentHeader = document.getElementsByClassName(\r\n\t\t\"header--transparent\"\r\n\t);\r\n\tconst backgroundColorProperty = \"background-color\";\r\n\tconst noBackgroundColor = \"rgba(0, 0, 0, 0)\";\r\n\r\n\tconst getElementStyle = (element, styleProperty) => {\r\n\t\treturn window\r\n\t\t\t.getComputedStyle(element)\r\n\t\t\t.getPropertyValue(styleProperty)\r\n\t\t\t.toString();\r\n\t};\r\n\r\n\tconst setDocumentColor = (target, color) => {\r\n\t\troot.style.setProperty(target, color);\r\n\t};\r\n\r\n\tconst setTextColorWhite = () => {\r\n\t\tsetDocumentColor(\"--changing-text-color\", \"white\");\r\n\t\tsetDocumentColor(\"--cta-changing-text-color\", \"black\");\r\n\t\tdocument.getElementById(\"inverse-logo-id\").style.display = \"block\";\r\n\t\tdocument.getElementById(\"logo-id\").style.display = \"none\";\r\n\t};\r\n\t\r\n\tconst setTextColorBlack = () => {\r\n\t\tsetDocumentColor(\"--changing-text-color\", \"black\");\r\n\t\tsetDocumentColor(\"--cta-changing-text-color\", \"white\");\r\n\t\tdocument.getElementById(\"inverse-logo-id\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"logo-id\").style.display = \"block\";\r\n\t};\r\n\r\n\tlet root = document.documentElement;\r\n\r\n\tconst initialSettings = (\r\n\t\tsections,\r\n\t\tnavbarListItems,\r\n\t\tnavbarBackground,\r\n\t\theaderImage,\r\n\t\tbodyBackgroundColor,\r\n\t\theaderBackgroundColor\r\n\t) => {\r\n\t\tconst main = document.getElementsByTagName(\"main\")[0];\r\n\t\tconst firstSection = sections[0] || null;\r\n\t\t/*\r\n\t\t * First section scenarios:\r\n\t\t * - Hero and banners with image\r\n\t\t * - Banner\r\n\t\t * - Section with no background color\r\n\t\t * - Section with background color\r\n\t\t * - Article pages (white body)\r\n\t\t * */\r\n\t\tif (firstSection === null) {\r\n\t\t\t// Fallback behavior when there's no first section\r\n\t\t\tdocument.getElementById(\"inverse-logo-id\").style.display = \"block\"; // Ensure the logo is displayed\r\n\t\t\tnavbarBackground.style.backgroundColor = bodyBackgroundColor; // Fallback navbar color\r\n\t\t\theaderBackgroundColor.style.display = \"block\"; // Display header background color\r\n\t\t\tsetDocumentColor(\"--navbar-bg-color\", bodyBackgroundColor);\r\n\t\t\tratioCheckerPrefersWhite(bodyBackgroundColor)\r\n\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t: setTextColorBlack();\r\n\t\t\treturn; // Exit after applying fallback settings\r\n\t\t}\r\n\r\n\t\telse if (\r\n\t\t\t(firstSection.querySelector(\"[class^='hero']\") && !Array.from(firstSection.querySelector(\"[class^='hero']\").classList).some(className => className.startsWith('bg-'))) ||\r\n\t\t\tfirstSection.querySelector(\".banner__image\") ||\r\n\t\t\tfirstSection.querySelector(\".media-box--full-width\") ||\r\n\t\t\tfirstSection.querySelector(\".image\")\r\n\t\t) {\r\n\t\t\theaderBackgroundColor.style.display = \"none\";\r\n\t\t\tfirstSection.classList.add(\"hero--transparent-header\");\r\n\r\n\t\t\t// Set the right colors\r\n\t\t\tsetDocumentColor(\"--changing-text-color\", \"white\");\r\n\t\t\tsetDocumentColor(\"--cta-changing-text-color\", \"black\");\r\n\t\t\tsetDocumentColor(\"--navbar-bg-color\", noBackgroundColor);\r\n\t\t\tdocument.getElementById(\"inverse-logo-id\").style.display = \"block\";\r\n\r\n\t\t\t/*increase height on small heros\r\n\t\t\t * to ensure that the navigation\r\n\t\t\t * bar does not conflict with\r\n\t\t\t * hero content.\r\n\t\t\t * If banner is absolute, no height is set */\r\n\t\t\tconst hasBannerAbsolute = [...firstSection.classList].some(cls => cls.includes(\"banner--absolute\"));\r\n\t\t\tif (\r\n\t\t\t\t((headerImage && headerImage.clientHeight < 500) && !hasBannerAbsolute) &&\r\n\t\t\t\twindow.matchMedia(\"(min-width: 768px)\").matches\r\n\t\t\t) {\r\n\t\t\t\theaderImage.style.height = \"500px\";\r\n\t\t\t}\r\n\r\n\t\t\t/*Remove Hero section from sections array\r\n\t\t\t * to avoid activating scroll event before\r\n\t\t\t * reaching the second section */\r\n\t\t\tsections.shift();\r\n\r\n\t\t\treturn;\r\n\r\n\t\t\t/* if first section is hero with background color */\r\n\t\t} else if (firstSection?.querySelector(\"[class^='hero']\") && Array.from(firstSection.querySelector(\"[class^='hero']\").classList).some(className => className.startsWith('bg-'))){\r\n\t\t\tconst hero = firstSection.querySelector(\"[class^='hero']\")\r\n\r\n\t\t\theaderBackgroundColor.style.backgroundColor = getElementStyle(\r\n\t\t\t\thero,\r\n\t\t\t\tbackgroundColorProperty\r\n\t\t\t\t)\r\n\t\t\theaderBackgroundColor.style.display = \"none\";\r\n\t\t\tfirstSection.classList.add(\"hero--transparent-header\");\r\n\t\t\tif (\r\n\t\t\t\t(headerImage && headerImage.clientHeight < 500) &&\r\n\t\t\t\twindow.matchMedia(\"(min-width: 768px)\").matches\r\n\t\t\t) {\r\n\t\t\t\theaderImage.style.height = \"500px\";\r\n\t\t\t}\r\n\t\t} else if (firstSection.querySelector(\"[class^='banner']\")) {\r\n\r\n\t\t\t/* We need to handle 'banner' differently because\r\n\t\t\t * the background color is not set on the section */\r\n\t\t\tconst banner = firstSection.querySelector(\"[class^='banner']\");\r\n\t\t\theaderBackgroundColor.style.backgroundColor = getElementStyle(\r\n\t\t\t\tbanner,\r\n\t\t\t\tbackgroundColorProperty\r\n\t\t\t);\r\n\t\t\theaderBackgroundColor.style.display = \"block\";\r\n\r\n\t\t} else if (main && main.classList.contains(\"bg-main--white\")) {\r\n\t\t\tsetDocumentColor(\"--navbar-bg-color\", \"#fff\");\r\n\t\t\theaderBackgroundColor.style.backgroundColor = \"#fff\";\r\n\t\t\theaderBackgroundColor.style.display = \"block\";\r\n\t\t} else {\r\n\t\t\tlet hasNoBackgroundColor =\r\n\t\t\t\tgetElementStyle(firstSection, backgroundColorProperty) ===\r\n\t\t\t\tnoBackgroundColor;\r\n\r\n\t\t\tif (hasNoBackgroundColor) {\r\n\t\t\t\tsetDocumentColor(\"--navbar-bg-color\", bodyBackgroundColor);\r\n\t\t\t\theaderBackgroundColor.style.backgroundColor = bodyBackgroundColor;\r\n\t\t\t} else {\r\n\t\t\t\tsetDocumentColor(\r\n\t\t\t\t\t\"--navbar-bg-color\",\r\n\t\t\t\t\tgetElementStyle(firstSection, backgroundColorProperty)\r\n\t\t\t\t);\r\n\t\t\t\theaderBackgroundColor.style.backgroundColor = getElementStyle(\r\n\t\t\t\t\tfirstSection,\r\n\t\t\t\t\tbackgroundColorProperty\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\theaderBackgroundColor.style.display = \"block\";\r\n\t\t}\r\n\r\n\t\t/* Display header background color\r\n\t\tto save space for the menu\r\n\t\tat the top of the page */\r\n\t\tratioCheckerPrefersWhite(\r\n\t\t\tgetElementStyle(headerBackgroundColor, backgroundColorProperty)\r\n\t\t)\r\n\t\t\t? setTextColorWhite()\r\n\t\t\t: setTextColorBlack();\r\n\t};\r\n\r\n\tconst handleScrollEvents = (\r\n\t\theaderImage,\r\n\t\tnavbarListItems,\r\n\t\tnavbarBackground,\r\n\t\theaderImageHeight,\r\n\t\tsections,\r\n\t\tbodyBackgroundColor,\r\n\t\theaderBackgroundColor,\r\n\t\tnavbar\r\n\t) => {\r\n\t\tconst mediaBox =\r\n\t\t\theaderImage && headerImage.querySelectorAll(\".container\")[0];\r\n\r\n\t\tconst mediaBoxInnerColor =\r\n\t\t\tmediaBox && mediaBox.querySelector(\".hero-inner\");\r\n\t\tconst mediaBoxOverlayColor =\r\n\t\t\tmediaBox && mediaBox.querySelector(\".hero__multi-boxes__box__overlay\");\r\n\r\n\t\twindow.onscroll = throttle(() => {\r\n\t\t\tif (document.documentElement.scrollTop === 0) {\r\n\t\t\t\tconsole.log(\"scroll top 0\");\r\n\t\t\t\tsetDocumentColor(\r\n\t\t\t\t\t\"--navbar-bg-color\",\r\n\t\t\t\t\tgetElementStyle(headerBackgroundColor, backgroundColorProperty)\r\n\t\t\t\t);\r\n\t\t\t\tratioCheckerPrefersWhite(\r\n\t\t\t\t\tgetElementStyle(headerBackgroundColor, backgroundColorProperty)\r\n\t\t\t\t)\r\n\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t}\r\n\r\n\t\t\tresizeHeader(navbar);\r\n\r\n\t\t\tmediaBox &&\r\n\t\t\t\tonMultiBox(\r\n\t\t\t\t\tmediaBox,\r\n\t\t\t\t\tnavbarListItems,\r\n\t\t\t\t\tmediaBoxInnerColor,\r\n\t\t\t\t\tmediaBoxOverlayColor\r\n\t\t\t\t);\r\n\t\t\theaderImage &&\r\n\t\t\t\tonHeaderImage(\r\n\t\t\t\t\tnavbarBackground,\r\n\t\t\t\t\tnavbarListItems,\r\n\t\t\t\t\theaderImageHeight,\r\n\t\t\t\t\tsections,\r\n\t\t\t\t\tbodyBackgroundColor\r\n\t\t\t\t);\r\n\t\t\thandleOnSections(\r\n\t\t\t\tsections,\r\n\t\t\t\tnavbarListItems,\r\n\t\t\t\tbodyBackgroundColor,\r\n\t\t\t\tnavbarBackground\r\n\t\t\t);\r\n\t\t}, 200);\r\n\t};\r\n\t\r\n\t//Burger toggle function\r\n\tif(isTransparentHeader[0] && isTransparentHeader[0].querySelector('.burger-button')){\r\n\t\tconst openBurgerButton = isTransparentHeader[0].querySelector('.burger-button');\r\n\t\tconst closeBurgerButton = isTransparentHeader[0].querySelector('.sidemenu__close');\r\n\t\tconst sidemenu = isTransparentHeader[0].querySelector('.sidemenu');\r\n\r\n\t\topenBurgerButton.addEventListener('click', () => {\r\n\t\t\tsidemenu.classList.toggle('inactive');\r\n\t\t\tsidemenu.classList.toggle('active');\r\n\t\t})\r\n\t\tcloseBurgerButton.addEventListener('click', () => {\r\n\t\t\tsidemenu.classList.toggle('inactive');\r\n\t\t\tsidemenu.classList.toggle('active');\r\n\t\t})\r\n\t}\r\n\r\n\t// Resizes header when it leaves the top\r\n\tfunction resizeHeader(navbar) {\r\n\t\tif (document.documentElement.scrollTop >= 50) {\r\n\t\t\tnavbar && navbar.classList.add(\"scroll\");\r\n\t\t} else {\r\n\t\t\tnavbar && navbar.classList.remove(\"scroll\");\r\n\t\t}\r\n\t}\r\n\r\n\t// Disable generic color on the hero Image.\r\n\tfunction onHeaderImage(navbarBackground, navbarListItems, imageHeight) {\r\n\t\tif (document.documentElement.scrollTop <= imageHeight) {\r\n\t\t\tconsole.log('onHeaderImage')\r\n\t\t\tsetDocumentColor(\"--changing-text-color\", \"white\");\r\n\t\t\tsetDocumentColor(\"--cta-changing-text-color\", \"black\");\r\n\t\t\tsetDocumentColor(\"--navbar-bg-color\", noBackgroundColor);\r\n\t\t\tdocument.getElementById(\"inverse-logo-id\").style.display = \"block\";\r\n\t\t\tdocument.getElementById(\"logo-id\").style.display = \"none\";\r\n\t\t}\r\n\t}\r\n\r\n\t/* on multiboxes when they stack under image on mobile view\r\n\t * multiboxes has bg-color in two variations: overlay and bg-color. */\r\n\tfunction onMultiBox(multiBox, navbarListItems, inner, overlay) {\r\n\t\tif (\r\n\t\t\tdocument.documentElement.scrollTop >= multiBox.offsetTop &&\r\n\t\t\tdocument.documentElement.scrollTop <=\r\n\t\t\tmultiBox.offsetTop + multiBox.clientHeight\r\n\t\t) {\r\n\t\t\tconsole.log('onMultiBox');\r\n\t\t\tif (window.matchMedia(\"(max-width: 767px)\").matches) {\r\n\t\t\t\tif (inner) {\r\n\t\t\t\t\tsetDocumentColor(\r\n\t\t\t\t\t\t\"--navbar-bg-color\",\r\n\t\t\t\t\t\tgetElementStyle(inner, backgroundColorProperty)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tratioCheckerPrefersWhite(\r\n\t\t\t\t\t\tgetElementStyle(inner, backgroundColorProperty)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (overlay) {\r\n\t\t\t\t\tsetDocumentColor(\r\n\t\t\t\t\t\t\"--navbar-bg-color\",\r\n\t\t\t\t\t\tgetElementStyle(overlay, backgroundColorProperty)\r\n\t\t\t\t\t);\r\n\t\t\t\t\tratioCheckerPrefersWhite(\r\n\t\t\t\t\t\tgetElementStyle(overlay, backgroundColorProperty)\r\n\t\t\t\t\t)\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction handleOnSections(sections, navbarListItems, bodyBackgroundColor) {\r\n\t\tfor (let i = 0; i < sections.length; i++) {\r\n\t\t\tif (\r\n\t\t\t\tdocument.documentElement.scrollTop + 55 >= sections[i].offsetTop &&\r\n\t\t\t\tdocument.documentElement.scrollTop <=\r\n\t\t\t\t\tsections[i].offsetTop + sections[i].offsetHeight\r\n\t\t\t) {\r\n\t\t\t\tlet sectionBgc = getElementStyle(sections[i], backgroundColorProperty);\r\n\t\t\t\tlet main = document.getElementsByTagName(\"main\")[0];\r\n\r\n\t\t\t\tif (main.classList.contains(\"bg-main--white\")) {\r\n\t\t\t\t\tsetDocumentColor(\"--navbar-bg-color\", \"rgb(255,255,255)\");\r\n\t\t\t\t\tratioCheckerPrefersWhite(\"rgb(255,255,255)\")\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (sections[i].querySelector(\"[class^='banner']\") !== null) {\r\n\t\t\t\t\tlet banner = sections[i].querySelector(\"[class^='banner']\");\r\n\t\t\t\t\tlet bannerBacgroundColor = getElementStyle(\r\n\t\t\t\t\t\tbanner,\r\n\t\t\t\t\t\tbackgroundColorProperty\r\n\t\t\t\t\t);\r\n\t\t\t\t\tsetDocumentColor(\"--navbar-bg-color\", bannerBacgroundColor);\r\n\t\t\t\t\tratioCheckerPrefersWhite(bannerBacgroundColor)\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else if (sectionBgc === noBackgroundColor) {\r\n\t\t\t\t\tsetDocumentColor(\"--navbar-bg-color\", bodyBackgroundColor);\r\n\t\t\t\t\tratioCheckerPrefersWhite(bodyBackgroundColor)\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetDocumentColor(\"--navbar-bg-color\", sectionBgc);\r\n\t\t\t\t\tratioCheckerPrefersWhite(sectionBgc)\r\n\t\t\t\t\t\t? setTextColorWhite()\r\n\t\t\t\t\t\t: setTextColorBlack();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst onMount = () => {\r\n\t\tconst main = document.getElementsByTagName(\"main\")[0];\r\n\t\tconst sectionsHTMLcollection = main.getElementsByTagName(\"section\") ? main.getElementsByTagName(\"section\") : [];\r\n\t\t// array of all sections on page\r\n\t\tlet sections = [].slice.call(sectionsHTMLcollection);\r\n\t\tconst navbarBackground = document.querySelector(\".nav--transparent\");\r\n\t\tconst navbarListItems = document.querySelector(\".header-items\");\r\n\t\tconst body = document.getElementsByTagName(\"body\")[0];\r\n\t\tconst bodyBackgroundColor = getElementStyle(body, backgroundColorProperty);\r\n\t\tconst headerImage = sections[0]?.querySelector(\"[data-fullwidthimage = true]\") || null;\r\n\t\tconst headerBackgroundColor = document.querySelector(\r\n\t\t\t\".header__background-color\"\r\n\t\t);\r\n\t\tconst navbar = document.querySelector(\".nav--transparent\");\r\n\r\n\t\tinitialSettings(\r\n\t\t\tsections,\r\n\t\t\tnavbarListItems,\r\n\t\t\tnavbarBackground,\r\n\t\t\theaderImage,\r\n\t\t\tbodyBackgroundColor,\r\n\t\t\theaderBackgroundColor\r\n\t\t);\r\n\r\n\t\t// select image height after initial settings.\r\n\t\t// const headerImageHeight =\r\n\t\t// \theaderImage &&\r\n\t\t// \theaderImage.querySelector(\".media__container\").clientHeight;\r\n // console.log(headerImageHeight);\r\n\r\n // select image height after initial settings.\r\n const headerImageHeight = headerImage ? headerImage.querySelector(\".media__container\").clientHeight : 0;\r\n\r\n\t\t// only run scroll events if menu is fixed\r\n\t\tif (headerIsFixed.length > 0) {\r\n\t\t\thandleScrollEvents(\r\n\t\t\t\theaderImage,\r\n\t\t\t\tnavbarListItems,\r\n\t\t\t\tnavbarBackground,\r\n\t\t\t\theaderImageHeight,\r\n\t\t\t\tsections,\r\n\t\t\t\tbodyBackgroundColor,\r\n\t\t\t\theaderBackgroundColor,\r\n\t\t\t\tnavbar\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tisTransparentHeader.length > 0 ? onMount() : \"\";\r\n}\r\n\r\nexport default header;\r\n","export function moveNavItems() {\r\n\tconst header = document.querySelector(\".header--transparent\");\r\n\r\n\tconst onMount = () => {\r\n\t\tlet topNavBar = jQuery(\".header-items__top-nav__list\")[0];\r\n\t\tconst navbarLogo = jQuery(\".navbar-brand\")[0];\r\n\t\tconst BurgerButton = jQuery(\".burger-button\");\r\n\r\n\t\t// used to calculate the width between logo and burger\r\n\t\tlet navbarRight = jQuery(navbarLogo).offset().left + jQuery(navbarLogo).outerWidth();\r\n\t\tjQuery(BurgerButton).css(\"width\", `${jQuery(navbarLogo).outerWidth()}px`);\r\n\t\tlet burgerButtonLeft = jQuery(BurgerButton).offset().left;\r\n\t\tjQuery(navbarLogo).css(\"min-width\", `${jQuery(navbarLogo).outerWidth()}px`);\r\n\r\n\t\t// allocated space for the navbar\r\n\t\tlet width;\r\n\r\n\t\twidth = Math.round(burgerButtonLeft - navbarRight - 400);\r\n\r\n\t\tlet root = document.documentElement;\r\n\r\n\t\troot.style.setProperty(\"--mid-width\", width + \"px\");\r\n\r\n\t\tif (jQuery(\".sidemenu__primary__list li\").length === 0) {\r\n\t\t\tjQuery(\".sidemenu__primary__list\").remove();\r\n\t\t}\r\n\r\n\t\tfunction checkOverflow(el) {\r\n\t\t\treturn el && el.clientWidth < el.scrollWidth;\r\n\t\t}\r\n\r\n\t\t// moves the last list item when navbar overflows the allocated width\r\n\t\tfunction moveLastItem(el) {\r\n\t\t\twhile (checkOverflow(el)) {\r\n\t\t\t\tif (jQuery(\".sidemenu__primary__list\").length === 0) {\r\n\t\t\t\t\tjQuery(\".sidemenu__primary\").prepend(\r\n\t\t\t\t\t\t'
      '\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tBurgerButton && jQuery(BurgerButton).addClass(\"active\");\r\n\t\t\t\tjQuery(\"#my-list li:last-child\").addClass(\"sidemenu__primary__list-item\");\r\n\t\t\t\tjQuery(\".sidemenu__primary__list\").prepend(jQuery(\"#my-list li:last-child\"));\r\n\t\t\t\tcheckOverflow(el);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Hide the burger when the side menu is empty\r\n\t\tfunction hideBurgerIcon() {\r\n\t\t\tconst sideMenuList = document.getElementById(\"sidemenu\");\r\n\r\n\t\t\tif (\r\n\t\t\t\tsideMenuList &&\r\n\t\t\t\tsideMenuList.getElementsByTagName(\"li\").length === 0\r\n\t\t\t) {\r\n\t\t\t\tjQuery(BurgerButton).removeClass(\"active\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Move all navbar list items into the side menu on small screens\r\n\t\tconst moveAll = () => {\r\n\t\t\tif (jQuery(\".sidemenu__primary__list\").length === 0) {\r\n\t\t\t\tjQuery(\".sidemenu__primary\").prepend(\r\n\t\t\t\t\t'
        '\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tjQuery(BurgerButton).addClass(\"active\");\r\n\t\t\tjQuery(\".sidemenu__primary__list\").prepend(jQuery(\".top-nav__list-item\"));\r\n\t\t\tjQuery(\".top-nav__list-item\").addClass(\"sidemenu__primary__list-item\");\r\n\t\t\tjQuery(\".header-items__top-nav\").remove();\r\n\t\t\tjQuery(\".search-form--transparent\").addClass(\"not-showing\");\r\n\t\t};\r\n\r\n\t\t//\r\n\t\tconst responsiveMenu = () => {\r\n\t\t\tjQuery(window).on(\"resize\", function () {\r\n\t\t\t\tconst win = jQuery(this);\r\n\r\n\t\t\t\tif (jQuery(\".sidemenu__primary__list li\").length === 0) {\r\n\t\t\t\t\tjQuery(\".sidemenu__primary__list\").remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnavbarRight = jQuery(navbarLogo).offset().left + jQuery(navbarLogo).outerWidth();\r\n\t\t\t\tburgerButtonLeft = jQuery(BurgerButton).offset().left;\r\n\t\t\t\twidth = Math.round(burgerButtonLeft - navbarRight - 400);\r\n\r\n\t\t\t\troot.style.setProperty(\"--mid-width\", width + \"px\");\r\n\r\n\t\t\t\tif (win.width() <= 768) {\r\n\t\t\t\t\tmoveAll();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery(\".search-form--transparent\").removeClass(\"not-showing\");\r\n\t\t\t\t\tlet elementExist = !!document.querySelector(\".header-items__top-nav\");\r\n\r\n\t\t\t\t\tif (!elementExist) {\r\n\t\t\t\t\t\tjQuery(\r\n\t\t\t\t\t\t\t`
          `\r\n\t\t\t\t\t\t).insertAfter(\".navbar-brand\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttopNavBar = jQuery(\".header-items__top-nav__list\")[0];\r\n\t\t\t\t\tjQuery(\".header-items__top-nav__list\").prepend(jQuery(\".top-nav__list-item\"));\r\n\t\t\t\t\tjQuery(\".top-nav__list-item\").removeClass(\"sidemenu__primary__list-item\");\r\n\t\t\t\t\tmoveLastItem(topNavBar);\r\n\r\n\t\t\t\t\thideBurgerIcon();\r\n\r\n\t\t\t\t\t//Removed 16/12 2024 - Can be deleted if no issues arise (MT)\r\n\t\t\t\t\t// move all if it only shows two list items\r\n/* \t\t\t\t\tif (\r\n\t\t\t\t\t\tdocument.getElementById(\"my-list\") &&\r\n\t\t\t\t\t\tdocument.getElementById(\"my-list\").getElementsByTagName(\"li\")\r\n\t\t\t\t\t\t\t.length <= 2\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tmoveAll();\r\n\t\t\t\t\t} */\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst onRender = () => {\r\n\t\t\tconst win = jQuery(window);\r\n\r\n\t\t\t//Removed 16/12 2024 - Can be deleted if no issues arise (MT)\r\n/* \t\t\tif (\r\n\t\t\t\tdocument.getElementById(\"my-list\") &&\r\n\t\t\t\tdocument.getElementById(\"my-list\").getElementsByTagName(\"li\").length < 3\r\n\t\t\t) {\r\n\t\t\t\tmoveAll();\r\n\t\t\t} */\r\n\t\t\tif (win.width() <= 768) {\r\n\t\t\t\tmoveAll();\r\n\t\t\t}\r\n\t\t\tresponsiveMenu();\r\n\t\t\thideBurgerIcon();\r\n\t\t\tmoveLastItem(topNavBar);\r\n\t\t};\r\n\r\n\t\tonRender();\r\n\t};\r\n\r\n\theader && onMount();\r\n}\r\n\r\nexport default moveNavItems();\r\n","export function parallax() {\r\n // console.log(\"1\")\r\n\r\n // jQuery(window).on(\"scroll\", function() {\r\n // console.log(\"scroll\")\r\n // var parallax = jQuery(\".parallax\")\r\n // var x = jQuery(this).scrollTop();\r\n // jQuery(parallax).css('background-position','center '+parseInt(-x/5)+'px');\r\n // // you can change the 0% to center ^\r\n // });\r\n}\r\n\r\nexport default parallax;\r\n","export function checkHolidays(date){\r\n/**\r\n* Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar \r\n* based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php\r\n* \r\n*/\r\n const year = date.getFullYear()\r\n let leapYear = false;\r\n\r\n if ((year % 4 == 0) && ((year % 100 != 0)) || (year % 400 == 0)) {\r\n leapYear = true;\r\n };\r\n \r\n //uderegner påskedag, month og day\r\n\tvar f = Math.floor,\r\n\t\t// Golden Number - 1\r\n\t\tG = year % 19,\r\n\t\tC = f(year / 100),\r\n\t\t// related to Epact\r\n\t\tH = (C - f(C / 4) - f((8 * C + 13)/25) + 19 * G + 15) % 30,\r\n\t\t// number of days from 21 March to the Paschal full moon\r\n\t\tI = H - f(H/28) * (1 - f(29/(H + 1)) * f((21-G)/11)),\r\n\t\t// weekday for the Paschal full moon\r\n\t\tJ = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7,\r\n\t\t// number of days from 21 March to the Sunday on or before the Paschal full moon\r\n\t\tL = I - J,\r\n\t\tmonth = 3 + f((L + 40)/44),\r\n\t\tday = L + 28 - 31 * f(month / 4);\r\n\r\n //variabel til at finde ud af hvilken nummer dag på året, påskedag er\r\n let easterSunday;\r\n\r\n //finder ud af om påskesøndag er i marts eller april, sætter dagsnummer derefter\r\n easterSunday = month == 3 ? 59 : 90;\r\n\r\n //lægger dage til.\r\n easterSunday = easterSunday + day;\r\n if(leapYear){ easterSunday += 1 }\r\n\r\n //dynamiske helligdage der lægger fast ift. easterSunday\r\n let skaerTorsdag = easterSunday - 3;\r\n let langFredag = easterSunday - 2;\r\n let andenPaaskedag = easterSunday + 1;\r\n let kristiHimmelfart = easterSunday + 39;\r\n let andenPinsedag = easterSunday + 50;\r\n \r\n //statiske helligdage\r\n let nytaarsdag = 1;\r\n let juledag = leapYear ? 360 : 359;\r\n let andenJuledag = leapYear ? 361 : 360;\r\n \r\n //andre (hellig)dage, ikke implementeret, men kan tilføjes til arrayet, hvis de også skal være lukkedage\r\n let storeBededag = easterSunday + 26; // removed 2023\r\n let foersteMaj = leapYear ? 122 : 121;\r\n let grundlovsdag = leapYear ? 157 : 156;\r\n let juleaftensdag = leapYear ? 359 : 358;\r\n let nytaarsaftensdag = leapYear ? 366 : 365;\r\n\r\n const holidays = [skaerTorsdag, langFredag, andenPaaskedag, kristiHimmelfart, andenPinsedag, nytaarsdag, juledag, andenJuledag];\r\n\r\n //get the current date number\r\n let currentDateNumber = 0;\r\n\r\n let currentMonth = date.getMonth(); \r\n let currentDay = date.getDate(); \r\n let monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\r\n\r\n // If it's a leap year, changes 28 to 29\r\n if (leapYear) { monthLength[1] = 29; }\r\n\r\n for ( let i=0; i < currentMonth; i++ ) { \r\n currentDateNumber = currentDateNumber + monthLength[i];\r\n }\r\n currentDateNumber = currentDateNumber + currentDay; // Done!\r\n\r\n let yearLength = 365;\r\n if(leapYear){ yearLength++ }\r\n let mandag = currentDateNumber - date.getDay() + 1\r\n\r\n let tirsdag = mandag + 1 <= yearLength ? mandag + 1 : 1;\r\n let onsdag = tirsdag + 1 <= yearLength ? tirsdag + 1 : 1;\r\n let torsdag = onsdag + 1 <= yearLength ? onsdag + 1 : 1;\r\n let fredag = torsdag + 1 <= yearLength ? torsdag + 1 : 1;\r\n let lørdag = fredag + 1 <= yearLength ? fredag + 1 : 1;\r\n let søndag = lørdag + 1 <= yearLength ? lørdag + 1 : 1;\r\n\r\n let næsteUgeMandag = søndag + 1 <= yearLength ? søndag + 1 : 1;\r\n let næsteUgeTirsdag = næsteUgeMandag + 1 <= yearLength ? næsteUgeMandag + 1 : 1;\r\n\r\n let days = [\r\n holidays.includes(mandag),\r\n holidays.includes(tirsdag),\r\n holidays.includes(onsdag),\r\n holidays.includes(torsdag),\r\n holidays.includes(fredag),\r\n holidays.includes(lørdag),\r\n holidays.includes(søndag)\r\n ]\r\n let holidaysNextWeek = [\r\n false,\r\n !holidays.includes(næsteUgeMandag),\r\n !holidays.includes(næsteUgeTirsdag),\r\n true\r\n ]\r\n\r\n //return\r\n return {\r\n isHoliday: holidays.includes(currentDateNumber),\r\n holidaysInCurrentWeek: days,\r\n holidaysNextWeek\r\n }\r\n}\r\n\r\nexport default checkHolidays","\r\nexport function doubleLogoMenu() {\r\n\r\n // if megamenu\r\n if(document.querySelector('#headerDoubleLogo') && document.querySelector('.list-item-left-aligned-toggle')){\r\n\r\n const toggleElements = [...document.querySelectorAll('.list-item-left-aligned-toggle')];\r\n\r\n toggleElements.forEach(item => {\r\n\r\n //toggle function for desktop\r\n if(window.innerWidth > 768){\r\n\r\n item.addEventListener('click', event => {\r\n\r\n if(true){\r\n event.preventDefault()\r\n let isVisible = item.nextElementSibling.classList.contains('visible');\r\n \r\n let activeMenus = item.closest('ul').querySelectorAll('.visible')\r\n if(activeMenus[0] != undefined){\r\n activeMenus.forEach(item => {\r\n item.classList.remove('visible')\r\n item.previousElementSibling.setAttribute('aria-expanded', 'false')\r\n item.previousElementSibling.classList.remove('active')\r\n })\r\n }\r\n if(isVisible){\r\n item.nextElementSibling.classList.remove('visible');\r\n item.setAttribute('aria-expanded', 'false')\r\n item.classList.remove('active')\r\n } else if (!isVisible) {\r\n item.nextElementSibling.classList.add('visible');\r\n item.setAttribute('aria-expanded', true) \r\n item.classList.add('active')\r\n }\r\n } else {\r\n return\r\n }\r\n \r\n\r\n })\r\n\r\n //toggle function for mobile\r\n } else if (window.innerWidth < 769) {\r\n\r\n item.addEventListener('click', () => {\r\n item.nextElementSibling.classList.toggle('visible');\r\n\r\n if(item.getAttribute('aria-expanded') == 'false'){\r\n item.setAttribute('aria-expanded', true)\r\n item.querySelector('.list-item-megamenu-toggle-icon').style.transform = 'translateY(0%) rotate(315deg)'\r\n } else {\r\n item.setAttribute('aria-expanded', 'false')\r\n item.querySelector('.list-item-megamenu-toggle-icon').style.transform = 'translateY(-50%) rotate(135deg)'\r\n }\r\n })\r\n }\r\n })\r\n\r\n //hover intent for desktop\r\n if(window.innerWidth > 768){\r\n // Store a reference to the timeout\r\n let hoverIntentTimeout;\r\n\r\n // Function to be executed when hover intent is triggered\r\n function handleHoverIntent(element) {\r\n listElements.forEach(element => {\r\n element.classList.remove('visible')\r\n })\r\n element.classList.add(\"visible\");\r\n }\r\n\r\n // Function to be executed when hover intent is not triggered\r\n function handleHoverOut(element) {\r\n hoverIntentTimeout = setTimeout(() => {\r\n listElements.forEach(element => {\r\n element.classList.remove('visible')\r\n })\r\n //element.classList.remove(\"visible\");\r\n }, 300); // Delay removal in milliseconds\r\n }\r\n\r\n // Add event listeners to all list elements\r\n const listElements = document.querySelectorAll(\".sidemenu-list-item\");\r\n listElements.forEach(element => {\r\n element.addEventListener(\"mouseenter\", () => {\r\n // Clear previous timeout (if any)\r\n clearTimeout(hoverIntentTimeout);\r\n\r\n // Set a new timeout to trigger hover intent after a delay\r\n hoverIntentTimeout = setTimeout(() => {\r\n handleHoverIntent(element);\r\n }, 300); // Delay in milliseconds\r\n });\r\n\r\n element.addEventListener(\"mouseleave\", () => {\r\n // Clear the timeout when leaving the element\r\n clearTimeout(hoverIntentTimeout);\r\n\r\n // Handle hover out\r\n handleHoverOut(element);\r\n });\r\n });\r\n }\r\n }\r\n if(document.querySelector('#headerDoubleLogo')){\r\n //variables that need to be declared in global scope\r\n const menuElement = document.querySelector('#headerDoubleLogo')\r\n let oldScrollHeight;\r\n let height;\r\n \r\n //set variables whether collapsed menu or not (should refire on resize)\r\n function setScrollValues(){\r\n //reference variable\r\n oldScrollHeight = window.scrollY;\r\n height = menuElement.offsetHeight;\r\n if(window.innerWidth > 768){\r\n document.querySelector('main').style.paddingTop = 0;\r\n }\r\n }\r\n setScrollValues();\r\n window.addEventListener('resize', () => setScrollValues())\r\n \r\n //window.onscroll function. Should be one function for both desktop and mobile\r\n \r\n window.addEventListener('scroll', () => {\r\n\r\n //if desktop menu\r\n if(window.innerWidth > 768){\r\n\r\n \r\n let newScrollHeight = window.scrollY;\r\n //if scrolling up, menu appears\r\n if(newScrollHeight < oldScrollHeight && newScrollHeight > height){\r\n\r\n menuElement.parentElement.style.position = 'sticky';\r\n menuElement.parentElement.style.top = '0px';\r\n \r\n //if scrolling down and scrollheight is higher than menu height, menu disappears\r\n } else if (newScrollHeight > oldScrollHeight && newScrollHeight > height){\r\n menuElement.parentElement.style.top = '-' + height + 'px'\r\n setTimeout(() => menuElement.parentElement.style.position = 'relative', 200)\r\n \r\n //if scroll height is less than height of menu, fix it to the top\r\n } else if (newScrollHeight < height){\r\n menuElement.parentElement.style.top = '0px';\r\n }\r\n \r\n //set reference variable to current scroll height\r\n oldScrollHeight = newScrollHeight;\r\n \r\n \r\n \r\n //if mobile (collapsed) menu\r\n } else if(window.innerWidth < 769){\r\n //const menuElement = document.querySelector('#headerDoubleLogo')\r\n let newScrollHeight = window.scrollY;\r\n const headerDoubleLogoTopBar = document.querySelector('.header--double-logo-top-bar');\r\n \r\n document.querySelector('main').style.paddingTop = menuElement.offsetHeight + 'px'\r\n menuElement.parentElement.style.position = 'fixed';\r\n menuElement.parentElement.style.top = '0'\r\n // ---- Scroll hide menu function ---- //\r\n \r\n if (headerDoubleLogoTopBar) { \r\n //reference variable\r\n let height = document.querySelector('.header--double-logo-top-bar').offsetHeight;\r\n\r\n //if scrolling up but not at top\r\n if(newScrollHeight < oldScrollHeight && newScrollHeight > height){\r\n menuElement.parentElement.style.position = 'fixed';\r\n menuElement.parentElement.style.top = '-' + (height + 1) + 'px';\r\n \r\n //if scrolling down and scrollheight is higher than menu height, menu disappears\r\n } else if (newScrollHeight > oldScrollHeight && newScrollHeight > height){\r\n // console.log('scrolling down')\r\n menuElement.parentElement.style.top = '-' + (height + 1) + 'px'\r\n menuElement.parentElement.style.position = 'fixed'\r\n \r\n //if scroll height is less than height of menu, fix it to the top\r\n } else if (newScrollHeight < height){\r\n menuElement.parentElement.style.top = '0px';\r\n }\r\n \r\n //set reference variable to current scroll height\r\n oldScrollHeight = newScrollHeight;\r\n \r\n }\r\n \r\n }\r\n }\r\n )\r\n }\r\n\r\n // ---- Scroll hide menu function ---- //\r\n/* if(document.querySelector('#headerDoubleLogo') && window.innerWidth > 769){\r\n\r\n console.log(document.querySelector('.collapsed-menu'))\r\n\r\n\r\n window.onscroll = function(){\r\n\r\n }\r\n\r\n } else if (document.querySelector('#headerDoubleLogo') && window.innerWidth < 769){\r\n\r\n\r\n } */\r\n}\r\n\r\nexport default doubleLogoMenu;","export function leftAlignedMegamenu() {\r\n // if megamenu\r\n if(document.querySelector('#headerLeftAligned') && document.querySelector('.list-item-left-aligned-toggle')){\r\n\r\n\t\tconst toggleElements = [...document.querySelectorAll('.list-item-left-aligned-toggle')];\r\n\r\n\r\n\t\t\tconst isCollapsed = document.querySelector('.collapsed-menu');\r\n\t\r\n\t\t\ttoggleElements.forEach(item => {\r\n\t\r\n\t\t\t//toggle function for desktop\r\n\t\t\tif(window.innerWidth > 768 && !isCollapsed){\r\n\t\t\t\titem.addEventListener('click', event => {\r\n\t\t\t\t\tif(true){\r\n\t\t\t\t\t\tevent.preventDefault()\r\n\t\t\t\t\t\tlet isVisible = item.nextElementSibling.classList.contains('visible');\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tlet activeMenus = item.closest('ul').querySelectorAll('.visible')\r\n\t\t\t\t\t\tif(activeMenus[0] != undefined){\r\n\t\t\t\t\t\t\tactiveMenus.forEach(item => {\r\n\t\t\t\t\t\t\t\titem.classList.remove('visible')\r\n\t\t\t\t\t\t\t\titem.previousElementSibling.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\t\t\titem.previousElementSibling.classList.remove('active')\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(isVisible){\r\n\t\t\t\t\t\t\titem.nextElementSibling.classList.remove('visible');\r\n\t\t\t\t\t\t\titem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\t\titem.classList.remove('active')\r\n\t\t\t\t\t\t} else if (!isVisible) {\r\n\t\t\t\t\t\t\titem.nextElementSibling.classList.add('visible');\r\n\t\t\t\t\t\t\titem.setAttribute('aria-expanded', true) \r\n\t\t\t\t\t\t\titem.classList.add('active')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\r\n\t\t\t\t//toggle function for mobile\r\n\t\t\t\t} else if (window.innerWidth < 769 || isCollapsed){\r\n\t\t\t\t\titem.addEventListener('click', () => {\r\n\t\t\t\t\t\titem.nextElementSibling.classList.toggle('visible')\r\n\t\t\t\t\t\tif(item.getAttribute('aria-expanded') == 'false'){\r\n\t\t\t\t\t\t\titem.setAttribute('aria-expanded', true)\r\n\t\t\t\t\t\t\titem.querySelector('.list-item-megamenu-toggle-icon').style.transform = 'translateY(0%) rotate(315deg)'\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\titem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\t\titem.querySelector('.list-item-megamenu-toggle-icon').style.transform = 'translateY(-50%) rotate(135deg)'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\r\n\t\t\t//hover intent for desktop\r\n\t\t\tif(window.innerWidth > 768 && !isCollapsed){\r\n\t\t\t\t// Store a reference to the timeout\r\n\t\t\t\tlet hoverIntentTimeout;\r\n\t\r\n\t\t\t\t// Function to be executed when hover intent is triggered\r\n\t\t\t\tfunction handleHoverIntent(element) {\r\n\t\t\t\t\tlistElements.forEach(element => {\r\n\t\t\t\t\t\telement.classList.remove('visible')\r\n\t\t\t\t\t})\r\n\t\t\t\t\telement.classList.add(\"visible\");\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\t// Function to be executed when hover intent is not triggered\r\n\t\t\t\tfunction handleHoverOut(element) {\r\n\t\t\t\t\thoverIntentTimeout = setTimeout(() => {\r\n\t\t\t\t\t\tlistElements.forEach(element => {\r\n\t\t\t\t\t\t\telement.classList.remove('visible')\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t//element.classList.remove(\"visible\");\r\n\t\t\t\t\t}, 300); // Delay removal in milliseconds\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\t// Add event listeners to all list elements\r\n\t\t\t\tconst listElements = document.querySelectorAll(\".sidemenu-list-item\");\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\tlistElements.forEach(element => {\r\n\t\t\t\t\telement.addEventListener(\"mouseenter\", () => {\r\n\t\t\t\t\t\t//Only hover if not collapsed menu\r\n\t\t\t\t\t\tif(!document.querySelector('.collapsed-menu')){\r\n\t\t\t\t\t\t\t// Clear previous timeout (if any)\r\n\t\t\t\t\t\t\tclearTimeout(hoverIntentTimeout);\r\n\t\t\r\n\t\t\t\t\t\t\t// Set a new timeout to trigger hover intent after a delay\r\n\t\t\t\t\t\t\thoverIntentTimeout = setTimeout(() => {\r\n\t\t\t\t\t\t\t\thandleHoverIntent(element);\r\n\t\t\t\t\t\t\t}, 300); // Delay in milliseconds\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\r\n\t\t\t\t\telement.addEventListener(\"mouseleave\", () => {\r\n\t\t\t\t\t\t//Only hover effect if no collapsed menu\r\n\t\t\t\t\t\tif(!document.querySelector('.collapsed-menu')){\r\n\t\t\t\t\t\t\t// Clear the timeout when leaving the element\r\n\t\t\t\t\t\t\tclearTimeout(hoverIntentTimeout);\r\n\t\t\r\n\t\t\t\t\t\t\t// Handle hover out\r\n\t\t\t\t\t\t\thandleHoverOut(element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t \r\n\t\r\n\t\t\t\r\n\t\t}\r\n\tif(document.querySelector('#headerLeftAligned')){\r\n\t\t// ---- Scroll hide menu function ---- //\r\n\t\tconst menuElement = document.querySelector('.header--left-aligned-container')\r\n\r\n\t\t//reference variable\r\n\t\tlet oldScrollHeight;\r\n\t\tlet height;\r\n\r\n\t\tfunction setVariables(){\r\n\t\t\tif(document.querySelector('.collapsed-menu')){\r\n\t\t\t\theight = menuElement.querySelector('.header--left-aligned-top-bar').offsetHeight\r\n\t\t\t} else {\r\n\t\t\t\theight = document.querySelector('.header--left-aligned-container').offsetHeight;\t\r\n\t\t\t}\r\n\t\t\toldScrollHeight = window.scrollY;\r\n\t\t}\r\n\t\tsetVariables();\r\n\r\n\t\twindow.addEventListener('resize', () => {\r\n\t\t\tsetVariables()\r\n\t\t})\r\n\r\n\t\twindow.addEventListener('scroll', () => {\r\n\t\t\tif(document.querySelector('#headerLeftAligned') && window.innerWidth > 768){\r\n\t\t\tlet newScrollHeight = window.scrollY;\r\n\t\t\t//if scrolling up, menu appears\r\n\t\t\tif(newScrollHeight < oldScrollHeight && newScrollHeight > height){\r\n\t\t\t\tif(menuElement.classList.contains('suggestions-hidden')){\r\n\t\t\t\t\tmenuElement.classList.remove('suggestions-hidden')\r\n\t\t\t\t}\r\n\t\t\t\tmenuElement.style.position = 'fixed';\r\n\t\t\t\tmenuElement.style.top = '0px';\r\n\t\t\r\n\t\t\t//if scrolling down and scrollheight is higher than menu height, menu disappears\r\n\t\t\t} else if (newScrollHeight > oldScrollHeight && newScrollHeight > height){\r\n\t\t\t\tif(!menuElement.classList.contains('suggestions-hidden')){\r\n\t\t\t\t\tmenuElement.classList.add('suggestions-hidden')\r\n\t\t\t\t}\r\n\t\t\t\tmenuElement.style.top = '-' + height + 'px'\r\n\t\t\t\t//setTimeout(() => menuElement.style.position = 'fixed', 200)\r\n\t\t\t//if scroll height is less than height of menu, fix it to the top\r\n\t\t\t} else if (newScrollHeight == 0){\r\n\t\t\t\tif(menuElement.classList.contains('suggestions-hidden')){\r\n\t\t\t\t\tmenuElement.classList.remove('suggestions-hidden')\r\n\t\t\t\t}\r\n\t\t\t\tmenuElement.style.top = '0px';\r\n\t\t\t\tmenuElement.style.position = 'relative'\r\n\r\n\t\t\t\t//document.querySelector('main').style.paddingTop = document.querySelector('.header--left-aligned-top-bar').offsetHeight + 'px'\r\n\t\t\t}\r\n\t\t\r\n\t\t\t//set reference variable to current scroll height\r\n\t\t\toldScrollHeight = newScrollHeight;\r\n\t\t\t \r\n\t\t\t} else if (document.querySelector('#headerLeftAligned') && window.innerWidth < 769){\r\n\t\t\t\tif(menuElement.classList.contains('suggestions-hidden')){\r\n\t\t\t\t\tmenuElement.classList.remove('suggestions-hidden')\r\n\t\t\t\t}\r\n\t\t\t const menuElement = document.querySelector('.header--left-aligned-container')\r\n\t\t\t document.querySelector('main').style.paddingTop = document.querySelector('.header--left-aligned-top-bar').offsetHeight + 'px'\r\n\t\t\t menuElement.style.position = 'fixed'\r\n\t\t\t menuElement.style.top = 0\r\n\t\t\t}\r\n\r\n\t\t})\r\n\r\n\r\n\t\t//if resizing from mobile to desktop, but menu is still collapsed, reset padding\r\n\t\twindow.addEventListener('resize', () => {\r\n\t\t\tif(document.querySelector('#headerLeftAligned') && document.querySelector('#headerLeftAligned').classList.contains('collapsed-menu')){\r\n\t\t\t\t//if mobile\r\n\t\t\t\tif(window.innerWidth < 769){\r\n\t\t\t\t\tconst menuElement = document.querySelector('.header--left-aligned')\r\n\t\t\t\t\tmenuElement.style.position = 'relative'\r\n\t\t\t\t\tdocument.querySelector('main').style.paddingTop = 0\r\n\t\t\t\t}\r\n\t\t\t\t//if desktop\r\n\t\t\t\telse if (window.innerWidth > 769){\r\n\t\t\t\t\tconst menuElement = document.querySelector('.header--left-aligned')\r\n\t\t\t\t\tmenuElement.style.position = 'relative'\r\n\t\t\t\t\tdocument.querySelector('main').style.paddingTop = 0\r\n\t\t\t\t\t//document.querySelector('main').style.paddingTop = 0\r\n\t\t\t\t}\r\n\t\t\t} \r\n\t\t})\r\n\t}\r\n\t\t\r\n}\r\n\r\nexport default leftAlignedMegamenu;\r\n","export function dropdownSettings() {\r\n if (document.querySelector('.dropdownSettingsJs')) {\r\n const buttons = document.querySelectorAll('.dropdown-settings__toggle');\r\n\r\n const handleClick = (button) => {\r\n const dropdown = button.parentNode.querySelector('.dropdown-settings__container');\r\n dropdown.classList.toggle('hidden');\r\n button.classList.toggle('active');\r\n\r\n // Adjust dropdown position to prevent overflow\r\n adjustDropdownPosition(dropdown, button);\r\n };\r\n\r\n const adjustDropdownPosition = (dropdown, button) => {\r\n const rect = dropdown.getBoundingClientRect();\r\n\r\n // Check if dropdown is overflowing the bottom of the page\r\n if (rect.bottom > window.innerHeight) {\r\n dropdown.style.top = 'auto';\r\n dropdown.style.bottom = `${button.offsetHeight}px`;\r\n } else {\r\n dropdown.style.top = `${button.offsetHeight}px`;\r\n dropdown.style.bottom = 'auto';\r\n }\r\n };\r\n\r\n const closeAllDropdowns = (exceptionButton = null) => {\r\n const openDropdowns = document.querySelectorAll('.dropdown-settings__container:not(.hidden)');\r\n openDropdowns.forEach(dropdown => {\r\n const associatedButton = dropdown.parentNode.querySelector('.dropdown-settings__toggle');\r\n if (associatedButton !== exceptionButton) {\r\n dropdown.classList.add('hidden');\r\n associatedButton.classList.remove('active');\r\n }\r\n });\r\n };\r\n\r\n buttons.forEach(button => {\r\n button.addEventListener('click', (event) => {\r\n event.stopPropagation();\r\n const isActive = button.classList.contains('active');\r\n closeAllDropdowns(isActive ? button : null); // If the button is already active, don't close its dropdown\r\n handleClick(button);\r\n });\r\n });\r\n\r\n // Close dropdown when clicking outside\r\n document.addEventListener('click', (event) => {\r\n if (!event.target.closest('.dropdown-settings')) {\r\n closeAllDropdowns();\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default dropdownSettings;","/*\r\n * @title App\r\n * @description Application entry point\r\n */\r\n\r\n// Modules\r\nimport Alpine from 'alpinejs';\r\nimport intersect from '@alpinejs/intersect'\r\nimport focus from '@alpinejs/focus'\r\nimport headerMegamenuExtended from '../modules/headers/header__megamenu-extended/header__megamenu-extended';\r\nimport headerMegamenuTabOrderMobile from '../modules/headers/header__megamenu-extended/tab-order-mobile';\r\nimport '../../node_modules/lazysizes/plugins/parent-fit/ls.parent-fit';\r\nimport login from './components/pageLogin';\r\nimport objectFitImages from './components/objectFitImages';\r\nimport blockMediaDownload from './components/block-media-download';\r\nimport headerIntranet from '../modules/intranet/header__intranet/header__intranet';\r\nimport footers from '../modules/footers/footers';\r\nimport watermark from '../modules/watermark/watermark';\r\nimport subscriptionModal from '../modules/modals/modal-subscription/modal-subscription';\r\nimport pagination from '../modules/pagination/pagination';\r\nimport carouselCards from '../modules/carousels/carousel__cards/carousel__cards';\r\nimport articleAnchorMenu from '../modules/anchor-links/article-anchor-menu/article-anchor-menu';\r\nimport accordion from '../modules/accordions/accordion';\r\nimport autosuggestions from '../modules/search-bars/autosuggestions.js';\r\nimport accordionMobile from '../modules/accordions/accordion--mobile/accordion--mobile';\r\nimport accordionDesktopDown from '../modules/accordions/accordion--desktop-down/accordion--desktop-down';\r\nimport infoboxLinksIcon from '../modules/info-boxes/info-box__links__icon/info-box__links__icon';\r\nimport threeColumnCarousel from '../modules/carousels/three-column-carousel/three-column-carousel';\r\nimport progress from '../modules/progressbar/progress';\r\nimport swiper from '../modules/carousels/swiper/swiper';\r\nimport heroMultiBox from '../modules/heros/hero__multi-box/hero__multi-box';\r\nimport video from '../modules/videos/video';\r\nimport videoDreambroker from '../modules/videos/video-dreambroker';\r\nimport videoYoutube from '../modules/videos/video-youtube';\r\nimport BorgerDk from '../modules/third-party/borgerDk/borgerDk';\r\nimport SBSYS from '../modules/third-party/sbsys/sbsysaccordion.js';\r\nimport smoothScroll from './components/smooth-scroll.js';\r\nimport pageLoader from './components/page-loader.js';\r\nimport cssVars from 'css-vars-ponyfill';\r\nimport tooltips from './components/tooltips';\r\nimport intextArrowLink from './components/intext-arrow-link';\r\nimport serviceMenu from '../modules/service-menu/service-menu';\r\nimport serviceMenuShareByEmail from '../modules/service-menu/service-menu__shareByEmail';\r\nimport dataTabel from '../modules/tabel/tabel';\r\nimport dataTabelScrollable from '../modules/tabel/tabel';\r\nimport formElements from './components/form-elements';\r\nimport sideMenu from '../modules/side-menu/side-menu';\r\nimport instagramFeed from '../modules/third-party/instagram-feed/instagram-feed';\r\nimport counterAnimation from '../modules/side-boxes/side-boxes__counter/side-boxes__counter';\r\nimport kultunaut from '../modules/third-party/kultunaut/kultunaut-card/kultunaut-card';\r\nimport kultunautPopularEvent from '../modules/side-boxes/side-boxes__most-popular/side-boxes__most-popular';\r\nimport modalPopup from '../modules/modals/modal-popup/modal-popup';\r\nimport tabListScrollable from '../modules/intranet/tab-list--scrollable/tab-list--scrollable';\r\nimport videoBackground from './components/video-backgrounds';\r\nimport cludoSearch from '../modules/third-party/cludo-search/cludo-search';\r\nimport imageGallery from '../modules/image/image-gallery/image-gallery';\r\nimport chat from '../modules/intranet/chat/chat';\r\nimport onShowMore from '../modules/fact-box/onShowMore';\r\nimport collapseBox from '../modules/fact-box/collapseBox';\r\nimport onShowMoreCard from '../modules/cards/card__comment/onShowMoreCard';\r\nimport card__comment from '../modules/cards/card__comment/card__comment';\r\nimport header from '../modules/headers/header__transparent-menu/scripts/header';\r\n//import cardHoursStatus from '../modules/cards/card__hours/cardHoursStatus';\r\nimport { moveNavItems } from '../modules/headers/header__transparent-menu/scripts/moveNavItems';\r\nimport parallax from '../modules/creative/parallax/parallax';\r\nimport dropdownMdDown from '../modules/dropdowns/dropdown--md-down/dropdown--md-down';\r\nimport bannerHours from '../modules/banners/banner__hours/bannerHours';\r\nimport videoHTML from '../modules/videos/video-html';\r\nimport breadcrumb from '../modules/breadcrumbs/breadcrumb/breadcrumb';\r\nimport headerTagged from \"../modules/headers/header--tagged/headerTagged\";\r\n//import tabpanel from \"../modules/tab-panels/tabpanel\";\r\nimport headerLeftAligned from '../modules/headers/header__megamenu-left-aligned/headerLeftAligned';\r\nimport doubleLogoMenu from '../modules/headers/header__double-logo/doubleLogoMenu';\r\nimport collapse from '@alpinejs/collapse';\r\nimport leftAlignedMegamenu from '../modules/headers/header__megamenu-left-aligned/leftAlignedMegamenu';\r\nimport unsaveButton from './components/unsaveButton';\r\nimport dropdownSettings from '../modules/dropdowns/dropdown-settings/dropdownSettings';\r\nimport tableHours from '../modules/table-hours/table-hours.js';\r\nimport tabpanelReworked from '../modules/tab-panels/tabpanel--reworked.js';\r\n\r\nimport greyScale from './components/grayscale';\r\nimport greyScaleInit from './components/init-grayscale';\r\nimport darkmodeScale from './components/dark-mode.js';\r\nimport headerMegamenuFocusTrap from '../modules/headers/header__megamenu-extended/focus-trap.js';\r\n//import tabPanelPreload from '../modules/tab-panel/tabpanel--preload.js';\r\n\r\nwindow.Alpine = Alpine;\r\n\r\nAlpine.plugin(collapse);\r\nAlpine.plugin(focus)\r\nAlpine.plugin(intersect)\r\nAlpine.data('collapseBox', collapseBox);\r\nAlpine.data('card__comment', card__comment);\r\nAlpine.data('headerTagged', headerTagged);\r\nAlpine.data('headerLeftAligned', headerLeftAligned);\r\n//Alpine.data('tabpanel', tabpanel);\r\nAlpine.start();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\theaderMegamenuExtended();\r\n headerMegamenuTabOrderMobile();\r\n headerMegamenuFocusTrap();\r\n\tleftAlignedMegamenu()\r\n\tdoubleLogoMenu();\r\n\tlogin();\r\n\theaderIntranet();\r\n\theroMultiBox();\r\n\tfooters();\r\n\t// watermark();\r\n watermark('.footer');\r\n\tpageLoader();\r\n\tsmoothScroll();\r\n\tblockMediaDownload();\r\n\tobjectFitImages();\r\n\tsubscriptionModal();\r\n\tpagination();\r\n\tcarouselCards();\r\n swiper();\r\n\tarticleAnchorMenu();\r\n\taccordion();\r\n\taccordionMobile();\r\n accordionDesktopDown();\r\n\tinfoboxLinksIcon();\r\n\tthreeColumnCarousel();\r\n\tprogress();\r\n\tvideo();\r\n\tvideoDreambroker();\r\n\tvideoYoutube();\r\n\tvideoHTML();\r\n\tBorgerDk();\r\n\tSBSYS();\r\n\ttooltips();\r\n\tintextArrowLink();\r\n\tserviceMenu();\r\n serviceMenuShareByEmail();\r\n\tdataTabel();\r\n\tdataTabelScrollable();\r\n\tformElements();\r\n\tsideMenu();\r\n\tinstagramFeed();\r\n\tcounterAnimation();\r\n\tmodalPopup();\r\n\ttabListScrollable();\r\n\tvideoBackground();\r\n\tcludoSearch();\r\n\timageGallery();\r\n\tchat();\r\n\tonShowMore();\r\n onShowMoreCard();\r\n\theader();\r\n\t// cardHoursStatus();\r\n\tkultunaut();\r\n\tkultunautPopularEvent();\r\n\tmoveNavItems();\r\n\tparallax();\r\n\tdropdownMdDown();\r\n\tbannerHours();\r\n\tbreadcrumb();\r\n\tdropdownSettings();\r\n\tunsaveButton();\r\n\tautosuggestions();\r\n\ttableHours();\r\n\t//tabPanelPreload();\r\n\ttabpanelReworked();\r\n\r\n\tgreyScale();\r\n\tgreyScaleInit();\r\n\tdarkmodeScale();\r\n\tcssVars({\r\n\t\trootElement: document, // default\r\n\t});\r\n});\r\n","import { throttle } from 'lodash-es';\r\n\r\nexport default () => ({\r\n\topen: false,\r\n\tdesktop: false,\r\n\r\n\tinit() {\r\n\t\tconst collapseOn = this.$el.getAttribute('data-collapse-on') ? this.$el.getAttribute('data-collapse-on') : false;\r\n\r\n\t\t//check if fact box should collapse on all screen sizes\r\n\t\tif(collapseOn == 'all'){\r\n\t\t\tthis.open == false;\r\n\t\t}\r\n\t\t//else, collapse depending on screen size\r\n\t\telse {\r\n\t\t\tthis.desktop = window.matchMedia('(min-width: 767px)').matches;\r\n\t\t\tthis.open = this.desktop;\r\n\t\t\tif(window.matchMedia('(min-width: 767px)').matches){\r\n\t\t\t\tthis.$el.classList.add('fact-box--no-collapse-desktop')\r\n\t\t\t}\r\n\t\t}\r\n \r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tthrottle(() => {\r\n\t\t\t\t//only change visibility of fact box if collapse is NOT \"all\"\r\n\t\t\t\tif(collapseOn !== 'all') {\r\n\t\t\t\t\tthis.desktop = window.matchMedia('(min-width: 767px)').matches;\r\n\t\t\t\t\tthis.open = this.desktop;\r\n\t\t\t\t\tif(this.$el.classList.contains('fact-box--no-collapse-desktop') && window.matchMedia('(max-width: 766px)').matches){\r\n\t\t\t\t\t\tthis.$el.classList.remove('fact-box--no-collapse-desktop')\r\n\t\t\t\t\t} else if (!this.$el.classList.contains('fact-box--no-collapse-desktop') && window.matchMedia('(min-width: 767px)').matches) {\r\n\t\t\t\t\t\tthis.$el.classList.add('fact-box--no-collapse-desktop')\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}, 200)\r\n\t\t);\r\n\t},\r\n});\r\n","export default () => ({\r\n\topen: false,\r\n\tshouldHideButton: false, // Initially assume the button should be shown\r\n\r\n\tinit() {\r\n\t\tthis.updateButtonVisibility();\r\n\t\tthis.updateAriaLabel(); // Initialize the aria-label\r\n\t},\r\n\r\n\tupdateButtonVisibility() {\r\n\t\tconst content = this.$refs.commentContent;\r\n\r\n\t\tif (content.clientHeight < 130) {\r\n\t\t\tthis.shouldHideButton = true;\r\n\t\t\tthis.open = true; // Ensure that content is open if button is hidden\r\n\t\t} else {\r\n\t\t\tthis.shouldHideButton = false;\r\n\t\t\tthis.open = false; // Ensure that content is closed if button is visible\r\n\t\t}\r\n\t\tthis.updateAriaLabel(); // Update the aria-label after visibility is set\r\n\t},\r\n\r\n\ttoggleContent() {\r\n\t\tif (!this.shouldHideButton) {\r\n\t\t\tthis.open = !this.open;\r\n\t\t\tthis.updateAriaLabel(); // Update the aria-label on toggle\r\n\t\t}\r\n\t},\r\n\r\n\tupdateAriaLabel() {\r\n\t\tconst button = this.$refs.btnToggle;\r\n\t\tconst ariaOpen = button.getAttribute('data-aria-open');\r\n\t\tconst ariaClose = button.getAttribute('data-aria-close');\r\n\r\n\t\t// Update the aria-label based on the state of `open`\r\n\t\tbutton.setAttribute('aria-label', this.open ? `${ariaClose}` : `${ariaOpen}`);\r\n\t}\r\n});\r\n","export default () => ({\r\n mobileSearch: false,\r\n mobileSideMenu: false,\r\n focusTrap: true,\r\n desktopSearch: false,\r\n mobileInputFocused: false,\r\n mobileInputValue: \"\",\r\n\r\n init() {\r\n const updateWindowProperties = () => {\r\n if (!window.matchMedia(\"(max-width: 991px)\").matches) { \r\n this.mobileSideMenu = true;\r\n this.focusTrap = false;\r\n } else {\r\n this.mobileSideMenu = false;\r\n this.focusTrap = true;\r\n }\r\n };\r\n\r\n // Initial update\r\n updateWindowProperties();\r\n\r\n // Add window resize event listener\r\n window.addEventListener(\"resize\", updateWindowProperties);\r\n },\r\n\r\n toggleMobileMenu() {\r\n this.mobileSideMenu = !this.mobileSideMenu;\r\n this.mobileSearch = false;\r\n }\r\n});","export default () => ({\r\n\tmobileSearch: false,\r\n\tmobileSideMenu: false,\r\n\tfocusTrap: true,\r\n\tdesktopSearch: false,\r\n\tmobileInputFocused: false,\r\n\tmobileInputValue: \"\",\r\n\tisMobile: true,\r\n\r\n\tinit() {\r\n\t\tlet isMenuTooWide = false;\r\n\t\tlet doubleLogoMenuElement = false;\r\n\t\tlet leftAlignedMenuElement = false;\r\n\t\t\r\n\t\tlet doubleLogoMaxWidth;\r\n\t\tlet headerLeftAlignedMaxWidth;\r\n\r\n\t\tconst updateWindowProperties = () => {\r\n\t\t\t//if load is on tablet or mobile, keep as is for all subsequent resizes\r\n\t\t\tif(doubleLogoMaxWidth === 0 ){\r\n\t\t\t\tthis.mobileSideMenu = false;\r\n\t\t\t\tthis.focusTrap = true;\r\n\t\t\t\tthis.isMobile = true;\r\n\t\t\t} else if (headerLeftAlignedMaxWidth === 0) {\r\n\t\t\t\tthis.mobileSideMenu = false;\r\n\t\t\t\tthis.focusTrap = true;\r\n\t\t\t\tthis.isMobile = true;\r\n\r\n\t\t\t} else if (isMenuTooWide && doubleLogoMenuElement) {\r\n\t\t\t\tthis.mobileSideMenu = false;\r\n\t\t\t\tthis.focusTrap = false;\r\n\t\t\t\tthis.isMobile = true;\r\n\t\t\t} else if (isMenuTooWide && leftAlignedMenuElement){\r\n\t\t\t\tthis.mobileSearch = false;\r\n\t\t\t\tthis.mobileSideMenu = false;\r\n\t\t\t\tthis.focusTrap = true;\r\n\t\t\t\tthis.isMobile = true;\r\n\t\t\t} else if (!window.matchMedia(\"(max-width: 991px)\").matches) {\r\n\t\t\t\tthis.mobileSearch = false;\r\n\t\t\t\tthis.mobileSideMenu = true;\r\n\t\t\t\tthis.focusTrap = false;\r\n\t\t\t\tthis.isMobile = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.mobileSearch = false;\r\n\t\t\t\tthis.mobileSideMenu = false;\r\n\t\t\t\tthis.focusTrap = true;\r\n\t\t\t\tthis.isMobile = true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Initial update\r\n\t\tupdateWindowProperties();\r\n\r\n\t\t// Add window resize event listener\r\n\t\twindow.addEventListener(\"resize\", () => checkMenuWidth());\r\n\r\n\t\t// function to check if menus are too long to fit on screen (on desktop)\r\n\t\tconst checkMenuWidth = () => {\r\n\t\t\tdoubleLogoMenuElement = document.querySelector('#headerDoubleLogo') ? document.querySelector('#headerDoubleLogo') : false;\r\n\t\t\tleftAlignedMenuElement = document.querySelector('.header--left-aligned-container') ? document.querySelector('.header--left-aligned-container') : false;\r\n\r\n\t\t\t//check double logo menu\r\n\t\t\tif(doubleLogoMenuElement && !window.matchMedia(\"(max-width: 991px)\").matches){\r\n\r\n\t\t\t\tconst width = doubleLogoMenuElement.querySelector('.header--double-logo-sidemenu').clientWidth - 40 - 40;\r\n\t\t\t\tconst sidemenu = document.querySelector('.header--double-logo-sidemenu');\r\n\t\t\t\tconst logoWidth = sidemenu.querySelector('.nav-brand').clientWidth;\r\n\r\n\t\t\t\tconst searchbarWidth = 400;\t\t\r\n\t\t\t\tconst combinedWidth = doubleLogoMaxWidth + searchbarWidth + logoWidth;\r\n\r\n\t\t\t\t//if sidemenu width is 0 (page was loaded on tablet for example), keep tablet menu\r\n\t\t\t\tif(doubleLogoMaxWidth == 0){\r\n\t\t\t\t\tisMenuTooWide = true;\r\n\t\t\t\t\r\n\t\t\t\t//collapse if width too large to fit\r\n\t\t\t \t} else if(combinedWidth > width){\r\n\t\t\t\t\tisMenuTooWide = true;\r\n\t\t\t\t\tupdateWindowProperties();\t\t\t\r\n\t\t\t\t\tdocument.querySelector('.mobile-actions-burger-btn').addEventListener('click', () => {\r\n\t\t\t\t\t\tdocument.querySelector('html').style.overflow = 'visible'\r\n\t\t\t\t\t})\r\n\t\t\t\t//expand if there is space for the menu\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisMenuTooWide = false;\r\n\t\t\t\t\tif(doubleLogoMenuElement.classList.contains('header__collapsed')) {doubleLogoMenuElement.classList.remove('header__collapsed')}\r\n\t\t\t\t\tupdateWindowProperties();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//check left aligned menu\r\n\t\t\tif(leftAlignedMenuElement && !window.matchMedia(\"(max-width: 991px)\").matches){\r\n\r\n\t\t\t\t//const sidemenuWidth = leftAlignedMenuElement.querySelector('.header--left-aligned-sidemenu-list').scrollWidth;\r\n\t\t\t\tconst width = leftAlignedMenuElement.clientWidth - 40 - 40;\r\n\t\t\t\tconst searchBar = leftAlignedMenuElement.querySelector('.header--left-aligned-sidemenu').querySelector('.desktop-searchbar') ? true : false;\r\n\t\t\t\tconst searhbarWidth = searchBar ? 300 : 0;\r\n\t\t\t\tconst combinedWidth = headerLeftAlignedMaxWidth + searhbarWidth;\r\n\t\t\t\t// console.log('width:' + width)\r\n\t\t\t\t// console.log('max width: ' + headerLeftAlignedMaxWidth)\r\n\r\n\t\t\t\t//is width is 0 (loaded on tablet for example), keep collapsed menu\r\n\t\t\t\tif(headerLeftAlignedMaxWidth === 0 ){\r\n\t\t\t\t\tisMenuTooWide = true;\r\n\t\t\t\t\t// if menu items are too wide, collapse\r\n\t\t\t\t} else if(combinedWidth > width){\r\n\t\t\t\t\tisMenuTooWide = true;\r\n\t\t\t\t\tupdateWindowProperties();\r\n\t\t\t\t\t\r\n\t\t\t\t\tdocument.querySelector('.mobile-actions-burger-btn').addEventListener('click', () => {\r\n\t\t\t\t\t\tdocument.querySelector('html').style.overflow = 'visible'\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t//if menu is not too wide, keep as is\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisMenuTooWide = false;\r\n\t\t\t\t\tif(leftAlignedMenuElement.classList.contains('header__collapsed')) {leftAlignedMenuElement.classList.remove('header__collapsed')}\r\n\t\t\t\t\tupdateWindowProperties();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tupdateWindowProperties();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Check if menu is too large to contain all items\r\n\t\tdocument.addEventListener('DOMContentLoaded', () => {\r\n\t\t\tdoubleLogoMaxWidth = document.querySelector('.header--double-logo-sidemenu-list') ? document.querySelector('.header--double-logo-sidemenu-list').scrollWidth : false;\r\n\t\t\theaderLeftAlignedMaxWidth = document.querySelector('.header--left-aligned-sidemenu-list') ? document.querySelector('.header--left-aligned-sidemenu-list').clientWidth : false;\r\n\t\t\tcheckMenuWidth();\r\n\t\t})\r\n\t},\r\n});\r\n","export default function onShowMore() {\r\n\tconst factBox = document.querySelectorAll('.fact-box--collapsible');\r\n\r\n\tconst disableFocusable = (element) => {\r\n\t\telement.setAttribute('tabindex', '-1');\r\n\t};\r\n\r\n\tconst enableFocusable = (element) => {\r\n\t\telement.removeAttribute('tabindex');\r\n\t};\r\n\r\n\tconst handleFocusables = (focusables, richText) => {\r\n\t\tlet isCollapsed = richText.classList.contains('closed');\r\n\r\n\t\tfocusables.forEach((focusable) => {\r\n\t\t\tisCollapsed ? disableFocusable(focusable) : enableFocusable(focusable);\r\n\t\t});\r\n\t};\r\n\r\n\tfactBox.forEach((box) => {\r\n\t\tconst elementButton = box.querySelector('.read-more-button');\r\n\t\tconst richText = box.querySelector('.js_fact-box');\r\n\t\tconst focusables = Array.from(box.getElementsByTagName('a'));\r\n\r\n\t\thandleFocusables(focusables, richText);\r\n\r\n\t\telementButton.addEventListener('click', () => {\r\n\t\t\thandleFocusables(focusables, richText);\r\n\t\t});\r\n\r\n\t});\r\n}\r\n","import dataTabel from '../../modules/tabel/tabel.js';\r\n\r\nexport function accordion() {\r\n\tvar accordion = jQuery(\".js-accordion\");\r\n\r\n\tif (accordion.length > 0) {\r\n\t\taccordion = (function () {\r\n\t\t\t// default settings\r\n\t\t\tvar settings = {\r\n\t\t\t\tspeed: 400,\r\n\t\t\t\toneOpen: false,\r\n\t\t\t};\r\n\r\n\t\t\t// Site improve disable all accordions\r\n\t\t\tfunction isSiteImproveAccordionDisabled() {\r\n\t\t\t\tconst disableValue = localStorage.getItem(\"siteImproveAccordionDisable\");\r\n\t\t\t\treturn disableValue === null || disableValue.toLowerCase() !== \"false\";\r\n\t\t\t}\r\n\r\n\t\t\tif (!isSiteImproveAccordionDisabled()) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinit: function () {\r\n\t\t\t\t\t\tjQuery(\".js-accordion-body\").css(\"display\", \"block\");\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tinit: function ($settings) {\r\n\t\t\t\t\tjQuery(document).on(\"click\", \".js-accordion-header\", function (e) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\tif (jQuery(this).attr(\"aria-expanded\") == \"false\") {\r\n\t\t\t\t\t\t\tvar iframes = jQuery(this)\r\n\t\t\t\t\t\t\t\t.siblings(\".accordion-body\")\r\n\t\t\t\t\t\t\t\t.find(\"iframe\");\r\n\t\t\t\t\t\t\tiframes.each(function (index, element) {\r\n\t\t\t\t\t\t\t\telement.style.maxHeight = \"\";\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\taccordion.toggle(jQuery(this));\r\n\r\n\t\t\t\t\t\tvar queryString = window.location.search;\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tjQuery(this).parent().hasClass(\"active\") &&\r\n\t\t\t\t\t\t\tjQuery(this).parent().attr(\"id\") != undefined\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\twindow.history.replaceState(\r\n\t\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\t\t\"\",\r\n\t\t\t\t\t\t\t\twindow.location.pathname + queryString + \"#\" + jQuery(this).parent().attr(\"id\")\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.history.replaceState({}, \"\", window.location.pathname + queryString);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tjQuery(document).on(\"click\", \".js-accordion-toggle-all\", function () {\r\n\t\t\t\t\t\tvar $this = jQuery(this).parents(\".accordion\");\r\n\t\t\t\t\t\tvar $accordionToggleBtn = $this.find(\".js-accordion-toggle-all\");\r\n\t\t\t\t\t\tvar $textOpen = $accordionToggleBtn.attr(\"data-textOpen\");\r\n\t\t\t\t\t\tvar $textClose = $accordionToggleBtn.attr(\"data-textClose\");\r\n\r\n\t\t\t\t\t\tif ($accordionToggleBtn.hasClass(\"active\")) {\r\n\t\t\t\t\t\t\t$accordionToggleBtn.attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t\t\t\t$accordionToggleBtn.find(\"span\").html($textOpen);\r\n\t\t\t\t\t\t\t$accordionToggleBtn.removeClass(\"active\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-header\").attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-item\").removeClass(\"active\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-body\").stop().slideUp(400);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$accordionToggleBtn.attr(\"aria-expanded\", \"true\");\r\n\t\t\t\t\t\t\t$accordionToggleBtn.find(\"span\").html($textClose);\r\n\t\t\t\t\t\t\t$accordionToggleBtn.addClass(\"active\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-item\").addClass(\"active\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-header\").attr(\"aria-expanded\", \"true\");\r\n\t\t\t\t\t\t\t$this.find(\".js-accordion-body\").stop().slideDown(400);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$.extend(settings, $settings);\r\n\r\n\t\t\t\t\tjQuery(\".js-accordion-item.active\")\r\n\t\t\t\t\t\t.find(\"> .js-accordion-body\")\r\n\t\t\t\t\t\t.show();\r\n\t\t\t\t},\r\n\r\n\t\t\t\ttoggle: function ($this) {\r\n\t\t\t\t\t$this.attr(\"aria-expanded\", \"false\");\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tsettings.oneOpen &&\r\n\t\t\t\t\t\t$this[0] !=\r\n\t\t\t\t\t\t\t$this.closest(\".js-accordion\")\r\n\t\t\t\t\t\t\t\t.find(\"> .js-accordion-item.active > .js-accordion-header\")[0]\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\t$this.closest(\".js-accordion\")\r\n\t\t\t\t\t\t\t.find(\"> .js-accordion-item\")\r\n\t\t\t\t\t\t\t.find(\".js-accordion-body\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$this.closest(\".js-accordion-item\").toggleClass(\"active\");\r\n\t\t\t\t\t$this.next().stop().slideToggle(settings.speed);\r\n\r\n\t\t\t\t\tif ($this.closest(\".js-accordion-item\").hasClass(\"active\")) {\r\n\t\t\t\t\t\t$this.attr(\"aria-expanded\", \"true\");\r\n\r\n\t\t\t\t\t\t// Initialize DataTable when the accordion item is opened\r\n\t\t\t\t\t\tvar table = $this.closest(\".js-accordion-item\").find(\".dataTable\");\r\n\t\t\t\t\t\tif (table.length) {\r\n\t\t\t\t\t\t\t// Ensure the table is only initialized once\r\n\t\t\t\t\t\t\tif (!$.fn.dataTable.isDataTable(table)) {\r\n\t\t\t\t\t\t\t\ttable.DataTable({\r\n\t\t\t\t\t\t\t\t\tresponsive: true,\r\n\t\t\t\t\t\t\t\t\tpageLength: 10,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Trigger a resize of the DataTable columns\r\n\t\t\t\t\t\t\t\ttable.DataTable().columns.adjust().draw();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tjQuery(document).ready(function () {\r\n\t\t\taccordion.init({ speed: 300, oneOpen: true });\r\n\t\t});\r\n\r\n\t\t// Function to open accordion item and scroll to it\r\n\t\tfunction openAccordionAndScroll(accordionItem) {\r\n\t\t\taccordionItem\r\n\t\t\t\t.addClass(\"active\")\r\n\t\t\t\t.find(\".js-accordion-body\")\r\n\t\t\t\t.addClass(\"active\")\r\n\t\t\t\t.show();\r\n\t\t\tvar accordionContainer = accordionItem.closest(\".js-accordion\");\r\n\t\t\tif (accordionContainer.length > 0) {\r\n\t\t\t\taccordionContainer.addClass(\"active\");\r\n\t\t\t\taccordionContainer.find(\"iframe\").css({ maxHeight: \"none\" });\r\n\t\t\t}\r\n\t\t\tjQuery(\"html, body\").animate(\r\n\t\t\t\t{\r\n\t\t\t\t\tscrollTop: accordionItem.offset().top,\r\n\t\t\t\t},\r\n\t\t\t\t700\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// Open accordion based on URL fragment\r\n\t\tjQuery(window).on(\"load\", function () {\r\n\t\t\tvar urlHash = window.location.hash.substring(1);\r\n\r\n\t\t\tif (urlHash) {\r\n\t\t\t\tvar targetAccordionItem = jQuery(\".js-accordion-item#\" + urlHash).not(\".js-accordion-item-agenda\");\r\n\t\t\t\tif (targetAccordionItem.length > 0) {\r\n\t\t\t\t\topenAccordionAndScroll(targetAccordionItem);\r\n\t\t\t\t\t// Trigger DataTable resize after opening accordion\r\n\t\t\t\t\tvar table = targetAccordionItem.find(\".dataTable\");\r\n\t\t\t\t\tif (table.length && $.fn.dataTable.isDataTable(table)) {\r\n\t\t\t\t\t\ttable.DataTable().columns.adjust().draw();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Handle anchor links that link to sections within the accordion\r\n\t\tjQuery('.article-anchor-menu a[href^=\"#\"]').on(\"click\", function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tvar targetId = jQuery(this).attr(\"href\").substring(1);\r\n\t\t\tvar accordionSection = findAccordionSection(targetId);\r\n\r\n\t\t\tif (accordionSection) {\r\n\t\t\t\t// Open the accordion if found\r\n\t\t\t\taccordionSection.addClass(\"active\");\r\n\t\t\t\taccordionSection.find(\".js-accordion-body\").addClass(\"active\").show();\r\n\t\t\t\t// Scroll to the accordion\r\n\t\t\t\tjQuery(\"html,body\").animate(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tscrollTop: accordionSection.offset().top,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t700\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Trigger DataTable resize after opening the accordion\r\n\t\t\t\tvar table = accordionSection.find(\".dataTable\");\r\n\t\t\t\tif (table.length && $.fn.dataTable.isDataTable(table)) {\r\n\t\t\t\t\ttable.DataTable().columns.adjust().draw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction findAccordionSection(anchorId) {\r\n\tvar accordionSection = null;\r\n\tjQuery(\".js-accordion-item\").each(function () {\r\n\t\tif (jQuery(this).find(\"#\" + anchorId).length > 0) {\r\n\t\t\taccordionSection = jQuery(this);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\treturn accordionSection;\r\n}\r\n\r\nexport default accordion;\r\n","/*\r\n** Polyfill for browsers that don't support object-fit\r\n** https://www.npmjs.com/package/object-fit-images\r\n**\r\n** Usage: img {font-family: $font-object-fit-cover;}\r\n*/\r\n\r\nexport function objectFitImages() {\r\n\r\n var objectFitImages = require('object-fit-images');\r\n jQuery(document).ready(function () {\r\n objectFitImages();\r\n });\r\n}\r\n\r\nexport default objectFitImages;\r\n","import hoverIntent from \"../../../../node_modules/superfish/dist/js/hoverintent\";\r\nimport Headroom from \"headroom.js\";\r\nimport superfish from \"../../../../node_modules/superfish/dist/js/superfish.min\";\r\nimport { set } from \"lodash-es\";\r\n\r\n// Navbar\r\nexport function headerMegamenuExtended() {\r\n if (jQuery(\".header__megamenu-extended\").length < 0) {\r\n return;\r\n }\r\n\r\n if (jQuery(\"header\").hasClass(\"header__megamenu-extended\")) {\r\n // Variables\r\n const $body = jQuery(\"body\");\r\n const $navbar = jQuery(\".header__megamenu-extended\");\r\n const $dropdown = jQuery(\".header__megamenu-extended .nav-item.dropdown\");\r\n const $dropdownSubmenu = jQuery(\".header__megamenu-extended .dropdown-submenu__ul\");\r\n const $navLink = jQuery(\".header__megamenu-extended .nav-link\");\r\n const $dropdownToggle = jQuery(\".header__megamenu-extended .dropdown-toggle\");\r\n const $dropdownMenu = jQuery(\".header__megamenu-extended .dropdown-menu\");\r\n const $searchbar = jQuery(\".header__megamenu-extended__search-bar\");\r\n const $searchbarToggle = jQuery(\".navbar__search-toggle\");\r\n const $navBackLink = jQuery(\".header__megamenu-extended .nav-back-link\");\r\n const showClass = \"sfHover\";\r\n const header = jQuery(\".header__megamenu-extended\");\r\n const $dropdownToggleTab = jQuery(\".header__megamenu-extended .dropdown-toggle__tab\");\r\n const $submenuDropdownToggle = jQuery(\".header__megamenu-extended .dropdown-submenu__button\");\r\n let $textOpen = $searchbarToggle.attr(\"data-textOpen\");\r\n let $textClose = $searchbarToggle.attr(\"data-textClose\");\r\n let isMenuOpen = false;\r\n let ignoreScroll = false;\r\n\r\n const bodyScrollLock = require(\"body-scroll-lock\");\r\n const { disableBodyScroll, enableBodyScroll } = bodyScrollLock;\r\n\r\n // sets the top padding to the height of the header. Not in use right now\r\n const setPaddingMain = () => {\r\n const headerHeight = header.outerHeight();\r\n document.documentElement.style.setProperty(\"--header-height-lg\", `${headerHeight}px`);\r\n header[0].style.position = \"fixed\";\r\n };\r\n\r\n const handleHoverIntent = (element) => {\r\n const listElements = document.querySelectorAll(\".nav-item\");\r\n listElements.forEach((el) => el.classList.remove(\"visible\"));\r\n element.classList.add(\"visible\");\r\n };\r\n\r\n const handleHoverOut = (element) => {\r\n element.classList.remove(\"visible\");\r\n };\r\n\r\n const onScroll = () => {\r\n\r\n if(ignoreScroll) return\r\n const isMobile = jQuery(window).width() < 991;\r\n const headerElement = document.querySelector(\".header__megamenu-extended\");\r\n const height = headerElement.offsetHeight;\r\n const newScrollHeight = window.scrollY;\r\n\r\n if (newScrollHeight > height) {\r\n headerElement.style.position = \"sticky\";\r\n headerElement.style.top = \"0px\";\r\n } else {\r\n headerElement.style.position = \"relative\";\r\n }\r\n\r\n // Update position based on scroll direction (scroll up or down)\r\n if (newScrollHeight < window.oldScrollHeight && newScrollHeight > height) {\r\n // Scrolling up\r\n headerElement.style.position = \"sticky\";\r\n headerElement.style.top = \"0px\";\r\n } else if (newScrollHeight > window.oldScrollHeight && newScrollHeight > height && !isMenuOpen) {\r\n // Scrolling down\r\n headerElement.style.position = \"sticky\";\r\n headerElement.style.top = `-${height}px`;\r\n } else if (newScrollHeight < height) {\r\n headerElement.style.position = \"sticky\";\r\n headerElement.style.top = \"0px\";\r\n }\r\n\r\n window.oldScrollHeight = newScrollHeight;\r\n };\r\n\r\n const onLoad = () => {\r\n //Reset all menus on load and resize\r\n $navbar.removeClass(\"show-mobile-menu\");\r\n $('.navbar-collapse').removeClass('show');\r\n $('.navbar-toggler-icon ').removeClass('open');\r\n $('.navbar-toggler').attr('aria-expanded', 'false');\r\n \r\n const resetDropdowns = () => {\r\n jQuery(\".header__megamenu-extended .dropdown-menu__megamenu, .header__megamenu-extended .dropdown-submenu__button\").removeClass(\"show\");\r\n jQuery(\".header__megamenu-extended .dropdown-menu__megamenu, .header__megamenu-extended .dropdown-submenu__ul\").removeClass(\"show\");\r\n jQuery(\".dropdown-submenu__ul\").slideUp();\r\n };\r\n //Hide dropdowns on load\r\n $dropdownMenu.removeClass(\"show\"); \r\n\r\n jQuery(\".header__megamenu-extended .dropdown-menu__megamenu\").removeClass('show');\r\n //resetDropdowns();\r\n // Position sticky if scrolled down page, otheerwise relative\r\n jQuery(\"main\").css(\"padding-top\", 0);\r\n const headerElement = document.querySelector(\".header__megamenu-extended\");\r\n const height = headerElement.offsetHeight;\r\n const scrollHeight = window.scrollY;\r\n if(scrollHeight > height){\r\n headerElement.style.position = 'sticky';\r\n headerElement.style.top = '0px';\r\n } else {\r\n headerElement.style.position = 'relative';\r\n }\r\n\r\n // Show submenu dropdowns for desktop view\r\n jQuery(\".header__megamenu-extended .dropdown-submenu .dropdown-menu\").show();\r\n jQuery(\"nav\").removeClass(\"show-mobile-menu\");\r\n\r\n $navBackLink.off(\"click\").on(\"click\", function () {\r\n const $this = jQuery(this);\r\n const $dropdown = $this.closest(\".dropdown\");\r\n $dropdown.find('.dropdown-toggle__tab').attr(\"aria-expanded\", \"false\");\r\n \r\n setTimeout(() => {$dropdown.find('.dropdown-toggle__tab').get(0).focus();}, 10);\r\n console.log($dropdown.find('.dropdown-toggle__tab').get(0));\r\n\r\n });\r\n\r\n $dropdownToggleTab.off('click').on(\"click\", function () {\r\n //Toggle current dropdown\r\n const $this = jQuery(this);\r\n $this.closest($dropdown).toggleClass(\"show\");\r\n $this.attr(\"aria-expanded\", $this.closest($dropdown).hasClass(\"show\"));\r\n $this.closest($dropdown).find($dropdownMenu).toggleClass(\"show\");\r\n });\r\n\r\n $submenuDropdownToggle.off('click').on(\"click\", function () {\r\n const $this = jQuery(this);\r\n $this.toggleClass(\"show\");\r\n $this.attr(\"aria-expanded\", $this.hasClass(\"show\"));\r\n $this.closest('.dropdown-submenu').find('.dropdown-submenu__ul').toggleClass(\"show\");\r\n })\r\n \r\n $dropdownToggle.off('focus').on('focus', function() {\r\n const $this = jQuery(this);\r\n $this.closest($dropdown).removeClass(\"sfHover\");\r\n })\r\n\r\n $dropdownMenu.off('focusout').on('focusout', function(event){\r\n\r\n // Only on desktop\r\n if((jQuery(window).width() > 990)){\r\n const $this = jQuery(this);\r\n const $navItem = $this.closest(\".nav-item.dropdown\");\r\n \r\n // Check if the newly focused element is outside the dropdown menu\r\n if (!$this.is(event.relatedTarget) && !$this.has(event.relatedTarget).length) {\r\n $this.removeClass(\"show\");\r\n $navItem.removeClass(\"show\");\r\n // Update the aria-expanded attributes\r\n $navItem.find(\".dropdown-toggle\").attr(\"aria-expanded\", \"false\");\r\n $navItem.find(\".dropdown-toggle__tab\").attr(\"aria-expanded\", \"false\");\r\n }\r\n }\r\n })\r\n\r\n // Mobile-specific behavior\r\n if (jQuery(window).width() < 991) {\r\n // Destroy Superfish on mobile to prevent hover issues\r\n jQuery(\".header__megamenu-extended ul.navbar-nav__primary\").superfish(\"destroy\");\r\n\r\n jQuery(\".navbar-toggler\").off(\"click\").on(\"click\", function () {\r\n $body.toggleClass(\"burger-open\").toggleClass(\"burger-closed\");\r\n jQuery(\"nav\").toggleClass(\"show-mobile-menu\");\r\n jQuery(\".navbar-toggler-icon\").toggleClass(\"open\");\r\n\r\n // Close search bar if it's open when burger menu is clicked\r\n $searchbar.slideUp();\r\n $searchbarToggle.attr(\"aria-expanded\", \"false\").attr(\"aria-label\", $textOpen);\r\n\r\n //Reset dropdowns\r\n if(!jQuery(\".navbar-toggler-icon\").hasClass(\"open\")){\r\n resetDropdowns();\r\n }\r\n });\r\n\r\n // Ensure the search toggle works properly on initial load for mobile\r\n $searchbarToggle.off(\"click\").on(\"click\", function () {\r\n ignoreScroll = true;\r\n const $this = jQuery(this);\r\n const isOpen = $this.attr(\"aria-expanded\") === \"true\";\r\n $searchbar.slideToggle();\r\n $this.attr(\"aria-expanded\", !isOpen).attr(\"aria-label\", isOpen ? $textOpen : $textClose);\r\n setTimeout(() => ignoreScroll = false, 800);\r\n });\r\n\r\n\r\n jQuery(document).off(\"click\", \".nav-back-link\").on(\"click\", \".nav-back-link\", function () {\r\n resetDropdowns();\r\n });\r\n } else {\r\n\r\n // Initialize Superfish on Desktop\r\n jQuery(\".header__megamenu-extended ul.navbar-nav__primary\").superfish({\r\n popUpSelector: \"ul, .dropdown-menu__megamenu\",\r\n speed: 200,\r\n delay: 500,\r\n disableHI: false,\r\n onInit: function() {\r\n jQuery(this).find(\"ul\").removeAttr(\"style\"); // Remove all inline styles after init\r\n },\r\n onBeforeShow: function() {\r\n jQuery(this).removeAttr(\"style\"); // Ensure inline styles are not re-added when showing\r\n },\r\n onHide: function() {\r\n jQuery(this).removeAttr(\"style\"); // Ensure inline styles are not re-added when hiding\r\n }\r\n });\r\n // Desktop-specific behavior: Initialize aria-expanded properly\r\n if ($searchbarToggle.length) {\r\n // Ensure aria-expanded is set correctly on desktop initial load\r\n const isSearchbarVisible = $searchbar.is(\":visible\");\r\n $searchbarToggle.attr(\"aria-expanded\", isSearchbarVisible ? \"true\" : \"false\");\r\n }\r\n\r\n // Handle the click for opening/closing the search bar on desktop\r\n $searchbarToggle.off(\"click\").on(\"click\", function () {\r\n ignoreScroll = true; //prevent menu from disappearing when opening search bar\r\n const $this = jQuery(this);\r\n const isOpen = $this.attr(\"aria-expanded\") === \"true\"; // Check if it was already opened\r\n $searchbar.slideToggle(); // Toggle the visibility of the search bar\r\n $this.attr(\"aria-expanded\", !isOpen); // Update the aria-expanded state\r\n $this.attr(\"aria-label\", isOpen ? $textOpen : $textClose); // Update the aria-label\r\n setTimeout(() => ignoreScroll = false, 800); //reinstate scroll after opening search bar\r\n });\r\n }\r\n };\r\n\r\n // Trigger the onLoad function on initial load and on resize\r\n jQuery(window).on(\"load resize\", onLoad);\r\n\r\n // Bind scroll event to update header position\r\n window.addEventListener(\"scroll\", onScroll);\r\n }\r\n}\r\n\r\nexport default headerMegamenuExtended;\r\n","export function headerMegamenuTabOrderMobile() {\r\n const megamenu = document.querySelector('.header__megamenu-extended');\r\n\r\n if (!megamenu) {\r\n return;\r\n }\r\n\r\n function reorderNav() {\r\n const navbarCollapse = document.querySelector('.navbar-collapse');\r\n const primaryContainer = document.querySelector('.navbar-nav__primary-container');\r\n const secondaryContainer = document.querySelector('.navbar-nav__secondary-container');\r\n\r\n // Check if both containers exist\r\n const containersExist = primaryContainer && secondaryContainer;\r\n\r\n // Check if viewport is mobile\r\n const isMobile = window.matchMedia('(max-width: 991px)').matches;\r\n\r\n if (isMobile) {\r\n // Ensure primary is first\r\n if (containersExist && secondaryContainer.nextElementSibling == primaryContainer) {\r\n navbarCollapse.insertBefore(primaryContainer, secondaryContainer);\r\n }\r\n } else {\r\n // Restore original order on desktop\r\n if (containersExist && primaryContainer.nextElementSibling == secondaryContainer) {\r\n navbarCollapse.insertBefore(secondaryContainer, primaryContainer);\r\n }\r\n }\r\n }\r\n\r\n // Run on page load and on window resize\r\n window.addEventListener('DOMContentLoaded', reorderNav);\r\n window.addEventListener('resize', reorderNav);\r\n\r\n}\r\n\r\nexport default headerMegamenuTabOrderMobile;","export function headerMegamenuFocusTrap() {\r\n if(document.querySelector('.header__megamenu-extended')) {\r\n const navbarToggler = document.querySelector('.navbar-toggler');\r\n const navbarCollapse = document.querySelector('.navbar-collapse');\r\n const dropdownMegamenu = document.querySelectorAll('.dropdown-menu__megamenu') ? document.querySelectorAll('.dropdown-menu__megamenu') : false;\r\n\r\n if(navbarCollapse){\r\n navbarCollapse.addEventListener('focusout', (e) => {\r\n if(!navbarCollapse.contains(e.relatedTarget)){\r\n navbarToggler.focus();\r\n }\r\n }) \r\n }\r\n if(dropdownMegamenu){\r\n dropdownMegamenu.forEach(element => {\r\n element.addEventListener('focusout', (e) => {\r\n if(!element.contains(e.relatedTarget)){\r\n element.querySelector('.nav-back-link').focus();\r\n }\r\n }) \r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default headerMegamenuFocusTrap;","/*\r\n** Usage: Login if page are locked\r\n*/\r\n\r\nexport function Login() {\r\n\r\n if (jQuery('.page-login').length == 0) {\r\n\t\treturn;\r\n }\r\n\r\n}\r\n\r\nexport default Login;\r\n","import hoverIntent from '../../../../node_modules/superfish/dist/js/hoverintent'\r\nimport superfish from '../../../../node_modules/superfish/dist/js/superfish.min'\r\nimport Headroom from 'headroom.js';\r\n\r\n// Navbar\r\nexport function headerIntranet() {\r\n\tvar navigationHandler = {\r\n\t\tnavbarDesktop: function () {\r\n\t\t\treturn jQuery('.navbar-collapse .navbar-nav')[0]\r\n\t\t},\r\n\t\tnavbarDesktopItems: function () {\r\n\t\t\treturn jQuery('.navbar-nav__desktop .nav-item:not(.nav-back-link)')\r\n\t\t},\r\n\t\tnavbarMobileMenu: function () {\r\n\t\t\treturn jQuery('.navbar-collapse .navbar-nav')\r\n\t\t},\r\n\t\tsearchBar: function () {\r\n\t\t\treturn jQuery('.nav-item__search-input')\r\n\t\t},\r\n\t\tnavbarProfile: function () {\r\n\t\t\treturn jQuery('.profile-info')[0]\r\n\t\t},\r\n\t\tensureMobileMenu: function () {\r\n\t\t\tvar navbarDesktopItems = this.navbarDesktopItems();\r\n\t\t\tvar navbarMobileMenu = this.navbarMobileMenu();\r\n\t\t\tvar searchBar = this.searchBar();\r\n\t\t\tnavbarMobileMenu.append(navbarDesktopItems);\r\n\t\t\tnavbarMobileMenu.append(searchBar);\r\n\r\n\t\t\t//remove desktop UL for accessability\r\n\t\t\tjQuery('.navbar-nav__desktop').remove();\r\n\t\t},\r\n\t\tensureDesktopMenu: function () {\r\n\t\t\t//add desktop UL for accessability\r\n\t\t\tif (jQuery('.navbar-collapse--desktop').find('.navbar-nav__desktop').length === 0) {\r\n\t\t\t\tjQuery('.navbar-collapse--desktop').append('
            ');\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.navbarDesktop().children[this.navbarDesktop().children.length - 1].classList.contains('nav-item-profile')) {\r\n\t\t\t\tthis.navbarDesktop().append(this.navbarProfile());\r\n\t\t\t}\r\n\t\t},\r\n\t\tcheckItemsInBurger: function () {\r\n\t\t\t// eslint-disable-next-line no-inner-declarations\r\n\t\t\tif (jQuery('.navbar-nav__desktop li.nav-item').length >= 1) {\r\n\t\t\t\tjQuery('.header__intranet').addClass('has-burger-desktop')\r\n\t\t\t} else {\r\n\t\t\t\tjQuery('.header__intranet').removeClass('has-burger-desktop')\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tcheckForSpace: function (space, index, navItems, navItemBurgerList, burgerNavItems, burgerNavLastItem, navbarBrandWidth) {\r\n\t\t\t// eslint-disable-next-line no-inner-declarations\r\n\t\t\tif (space <= 0) {\r\n\t\t\t\tnavItems = jQuery('.navbar-nav li.nav-item');\r\n\t\t\t\tnavItemBurgerList.append(navItems[navItems.length - 1]);\r\n\t\t\t\tspace = jQuery('.header__intranet').outerWidth(true) - jQuery('.navbar-nav').outerWidth(true) - jQuery('.navbar-brand').outerWidth(true);\r\n\r\n\t\t\t\tthis.checkItemsInBurger();\r\n\r\n\t\t\t} else if (space > burgerNavLastItem.data(\"nav-item-width\")) {\r\n\t\t\t\tburgerNavItems = jQuery('.navbar-nav__desktop li.nav-item');\r\n\t\t\t\tjQuery('.navbar-nav li.nav-item:last').after(burgerNavItems[burgerNavItems.length - 1]);\r\n\t\t\t\tspace = jQuery('.header__intranet').outerWidth(true) - jQuery('.navbar-nav').outerWidth(true) - navbarBrandWidth;\r\n\r\n\t\t\t\tthis.checkItemsInBurger();\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (index > 5) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tindex++\r\n\t\t\tthis.checkForSpace(space, index, navItems, navItemBurgerList, burgerNavItems, burgerNavLastItem, navbarBrandWidth);\r\n\t\t}\r\n\t}\r\n\r\n\tif (jQuery(\".header__intranet\").length < 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (jQuery(\"header\").hasClass(\"header__intranet\")) {\r\n\t\t// Variables\r\n\t\tconst $dropdown = jQuery(\".header__intranet .nav-item.dropdown\");\r\n\t\tconst $navLink = jQuery(\".header__intranet .nav-link\");\r\n\t\tconst $dropdownToggle = jQuery(\".header__intranet .dropdown-toggle\");\r\n\t\tconst $dropdownMenu = jQuery(\".header__intranet .dropdown-menu\");\r\n\t\tconst showClass = \"sfHover\";\r\n\t\tconst header = jQuery(\".header__intranet\");\r\n\r\n \t\t// sets the top padding to the height of the header.\r\n\t\tconst setPaddingMain = () => {\r\n\t\t\tlet headerHeight = header.outerHeight();\r\n\t\t\tjQuery(\"main\").css(\"padding-top\", headerHeight);\r\n\r\n document.documentElement.style.setProperty('--header-height-lg', headerHeight + 'px');\r\n\t\t}\r\n\r\n setPaddingMain()\r\n\r\n jQuery(window).on(\"resize\", function () {\r\n var $window = jQuery(this);\r\n\r\n if ($window.width() >= 991) {\r\n setPaddingMain()\r\n }\r\n });\r\n\r\n\t\t// Profile menu\r\n\t\tjQuery(document).off('click', '.dropdown-toggle__profile');\r\n\t\tjQuery(document).on('click', '.dropdown-toggle__profile', function () {\r\n\t\t\tjQuery(this).attr(\"aria-expanded\", \"false\");\r\n\t\t\tjQuery(this).siblings('.dropdown-menu').toggleClass('show');\r\n\r\n\t\t\tif (jQuery(this).siblings('.dropdown-menu').hasClass(\"show\")) {\r\n\t\t\t\tjQuery(this).attr(\"aria-expanded\", \"true\");\r\n\r\n\t\t\t\tjQuery('body').on('click', function (e) {\r\n\t\t\t\t\tif (!jQuery('.dropdown-toggle__profile').is(e.target) && jQuery('.dropdown-toggle__profile').has(e.target).length === 0 && jQuery('.show').has(e.target).length === 0) {\r\n\t\t\t\t\t\tjQuery('.dropdown-toggle__profile').siblings('.dropdown-menu').removeClass(\"show\");\r\n\t\t\t\t\t\tjQuery('.dropdown-toggle__profile').attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Hide Profile menu on scroll\r\n\t\tjQuery(window).scroll(function () {\r\n\t\t\tif (jQuery('.navbar-profile .dropdown-menu').hasClass('show')) {\r\n\t\t\t\tjQuery('.navbar-profile .dropdown-menu').removeClass(\"show\");\r\n\t\t\t\tjQuery('.navbar-profile .dropdown-toggle__profile').attr(\"aria-expanded\", \"false\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Start - with burger desktop\r\n\t\tjQuery(document).on('click', '.navbar-toggler--desktop', function (e) {\r\n\t\t\tvar $sidemenu = jQuery(\".header__intranet .side-menu\");\r\n\t\t\tvar $sidemenuToggle = jQuery(\".header__intranet .side-menu .side-menu__toggle-mobile\");\r\n\r\n\t\t\t// If sidemenu is open\r\n\t\t\tif ($sidemenu.hasClass('show')) {\r\n\t\t\t\t$sidemenu.removeClass('show');\r\n\t\t\t\t$sidemenuToggle.removeClass('show');\r\n\t\t\t\tjQuery(\"body\").removeClass(\"position-fixed\");\r\n\r\n\t\t\t\tif ($sidemenuToggle.hasClass('show')) {\r\n\t\t\t\t\t$sidemenuToggle.attr(\"aria-expanded\", \"true\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$sidemenuToggle.attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tjQuery('nav').toggleClass(\"show-burger-desktop\");\r\n\t\t\tjQuery('.navbar-toggler-icon').toggleClass('open');\r\n\t\t\tjQuery('.navbar-collapse--desktop').toggleClass('show');\r\n\t\t\tjQuery('body').toggleClass('burger-open');\r\n\t\t\tjQuery(\".header__megamenu-extended__search-bar\").slideUp();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif (jQuery('.navbar-toggler-icon').hasClass('open')) {\r\n\t\t\t\tjQuery('.navbar__search-toggle').hide();\r\n\t\t\t\t// disableBodyScroll(navbar);\r\n\t\t\t} else {\r\n\t\t\t\tjQuery('.navbar__search-toggle').show();\r\n\t\t\t\t// enableBodyScroll(navbar);\r\n\t\t\t}\r\n\r\n\t\t\t// Return dropdown menu to original state\r\n\t\t\tjQuery('.header__intranet .navbar-collapse--desktop .dropdown-menu__megamenu').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse--desktop .dropdown-submenu').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse--desktop .dropdown-submenu').children('.nav-link').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse--desktop .dropdown-submenu').children('.dropdown-menu').slideUp('show');\r\n\t\t});\r\n\r\n\t\t// Return to first level menu\r\n\t\tjQuery(document).on('click', '.nav-back-link', function () {\r\n\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tcloseAccordions()\r\n\t\t\t\t}, 200)\r\n\t\t\t\tgoBack()\r\n\t\t\t}, 200)\r\n\r\n\t\t\t// Go back function\r\n\t\t\tfunction goBack() {\r\n\t\t\t\tjQuery('.nav-back-link').closest('.dropdown-menu__megamenu').removeClass('show');\r\n\t\t\t}\r\n\r\n\t\t\t// Mobile 2nd level dropdowns\r\n\t\t\tjQuery(document).off('click', '.header__intranet .navbar-collapse--desktop .dropdown-submenu .nav-link');\r\n\t\t\tjQuery(document).on('click', '.header__intranet .navbar-collapse--desktop .dropdown-submenu .nav-link', function () {\r\n\t\t\t\tjQuery(this).toggleClass('show');\r\n\t\t\t\tjQuery(this).parents('.header__intranet .navbar-collapse--desktop .dropdown-submenu').toggleClass('show');\r\n\t\t\t\tjQuery(this).siblings('.header__intranet .navbar-collapse--desktop .dropdown-menu').slideToggle('show');\r\n\t\t\t});\r\n\r\n\t\t\t// Close all accordions when returing to 1st level menu - to keep height of menu\r\n\t\t\tfunction closeAccordions() {\r\n\t\t\t\tjQuery('.header__intranet .dropdown-submenu').removeClass('show');\r\n\t\t\t\tjQuery('.header__intranet .dropdown-submenu').children('.nav-link').removeClass('show');\r\n\t\t\t\tjQuery('.header__intranet .dropdown-submenu').children('.dropdown-menu').slideUp('show');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//Mobile Menu toggler\r\n\t\tjQuery(document).on('click', '.navbar-toggler', function (e) {\r\n\t\t\tvar $sidemenu = jQuery(\".header__intranet .side-menu\");\r\n\t\t\tvar $sidemenuToggle = jQuery(\".header__intranet .side-menu .side-menu__toggle-mobile\");\r\n\r\n\t\t\t// If sidemenu is open\r\n\t\t\tif ($sidemenu.hasClass('show')) {\r\n\t\t\t\t$sidemenu.removeClass('show');\r\n\t\t\t\t$sidemenuToggle.removeClass('show');\r\n\t\t\t\tjQuery(\"body\").removeClass(\"position-fixed\");\r\n\r\n\t\t\t\tif ($sidemenuToggle.hasClass('show')) {\r\n\t\t\t\t\t$sidemenuToggle.attr(\"aria-expanded\", \"true\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$sidemenuToggle.attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tjQuery('nav').toggleClass(\"show-mobile-menu\");\r\n\t\t\tjQuery('.navbar-toggler-icon').toggleClass('open');\r\n\t\t\tjQuery('body').toggleClass('burger-open');\r\n\t\t\tjQuery(\".header__megamenu-extended__search-bar\").slideUp();\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tif (jQuery('.navbar-toggler-icon').hasClass('open')) {\r\n\t\t\t\tjQuery('.navbar__search-toggle').hide();\r\n\t\t\t\t// disableBodyScroll(navbar);\r\n\t\t\t} else {\r\n\t\t\t\tjQuery('.navbar__search-toggle').show();\r\n\t\t\t\t// enableBodyScroll(navbar);\r\n\t\t\t}\r\n\r\n\t\t\t// Return dropdown menu to original state\r\n\t\t\tjQuery('.header__intranet .navbar-collapse .dropdown-menu__megamenu').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse .dropdown-submenu').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse .dropdown-submenu').children('.nav-link').removeClass('show');\r\n\t\t\tjQuery('.header__intranet .navbar-collapse .dropdown-submenu').children('.dropdown-menu').slideUp('show');\r\n\t\t});\r\n\r\n\t\tjQuery(window).on(\"load resize\", function () {\r\n\r\n\t\t\t// Desktop menu\r\n\t\t\tif (this.matchMedia(\"(min-width: 991px)\").matches) {\r\n\r\n\t\t\t\tnavigationHandler.ensureDesktopMenu();\r\n\t\t\t\tvar headerWidth = jQuery('.header__intranet').outerWidth(true);\r\n\t\t\t\tvar navbarWidth = jQuery('.navbar-nav').outerWidth(true);\r\n\t\t\t\tvar navbarBrandWidth = jQuery('.navbar-brand').outerWidth(true);\r\n\t\t\t\tvar emptyspace = headerWidth - navbarWidth - navbarBrandWidth;\r\n\r\n\t\t\t\tvar navItems = jQuery('.navbar-nav li.nav-item');\r\n\t\t\t\tvar navItemBurgerList = jQuery('.navbar-nav__desktop')\r\n\t\t\t\tvar burgerNavItems = jQuery('.navbar-collapse--desktop li.nav-item');\r\n\t\t\t\tvar burgerNavLastItem = jQuery('.navbar-collapse--desktop li.nav-item:last');\r\n\t\t\t\tvar index = 0;\r\n\r\n\t\t\t\tjQuery(navItems).each(function (i, item) {\r\n\t\t\t\t\tvar itemWidth = parseInt(jQuery(this).width());\r\n\t\t\t\t\tjQuery(item).attr('data-nav-item-width', itemWidth);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tjQuery(\".dropdown-toggle__mobile\").click(function () {\r\n\t\t\t\t\tjQuery(this).siblings('.nav-link.dropdown-toggle').removeAttr('data-toggle', 'dropdown');\r\n\t\t\t\t\tjQuery(this).parent().siblings('.dropdown-menu__megamenu').addClass('show');\r\n\t\t\t\t\tjQuery('.navbar__megamenu-extended.show-mobile-menu').scrollTop(0);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tnavigationHandler.checkForSpace(emptyspace, index, navItems, navItemBurgerList, burgerNavItems, burgerNavLastItem, navbarBrandWidth);\r\n\r\n\t\t\t\t// End - with burger desktop\r\n\r\n\t\t\t\t// Sicky menu - Headroom\r\n\t\t\t\tvar headerHeadroom = document.querySelector(\".header__intranet\");\r\n\r\n\t\t\t\tvar options = {\r\n\t\t\t\t\t// vertical offset in px before element is first unpinned\r\n\t\t\t\t\toffset: 100,\r\n\t\t\t\t\t// callback when pinned, `this` is headroom object\r\n\t\t\t\t\tonPin: function () {\r\n\t\t\t\t\t\tvar currentHeaderHeight = jQuery(header).outerHeight();\r\n\t\t\t\t\t\tjQuery('progress:not(.progressbar__value)').css('margin-top', currentHeaderHeight);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// callback when unpinned, `this` is headroom object\r\n\t\t\t\t\tonUnpin: function () {\r\n\t\t\t\t\t\tjQuery('progress:not(.progressbar__value)').css('margin-top', '0');\r\n\t\t\t\t\t\tjQuery('.nav-item.dropdown').removeClass('sfHover');\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// construct an instance of Headroom, passing the element\r\n\t\t\t\tvar headroom = new Headroom(headerHeadroom, options);\r\n\t\t\t\t// initialise\r\n\t\t\t\theadroom.init();\r\n\r\n\t\t\t\t// Hover aim - SuperFish\r\n\t\t\t\tjQuery('.header__intranet ul.navbar-nav__primary').superfish({\r\n\t\t\t\t\tpopUpSelector: 'ul, .dropdown-menu__megamenu',\r\n\t\t\t\t\t// delay: 500, // mouseout delay, ms\r\n\t\t\t\t\tspeed: 200, // ms, cref jquery animate()\r\n\t\t\t\t\t//disableHI: true, // disabled because it only works properly if the megamenu is a ul\r\n\t\t\t\t});\r\n\r\n\t\t\t\tjQuery('.header__intranet .dropdown-submenu .dropdown-menu').show();\r\n\t\t\t\tjQuery('nav').removeClass(\"show-mobile-menu\");\r\n\r\n\t\t\t\t// Remove focus on all menu items\r\n\t\t\t\t$navLink.focus(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\t$navLink.closest($dropdown).removeClass(showClass);\r\n\t\t\t\t\t\t$navLink.find($dropdownToggle).attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t\t\t$navLink.closest($dropdown).find($dropdownMenu).removeClass(showClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Focus on menu items - for web accessibility\r\n\t\t\t\t$dropdownToggle.focus(\r\n\t\t\t\t\tfunction () {\r\n\t\t\t\t\t\tconst $this = jQuery(this);\r\n\t\t\t\t\t\t$this.closest($dropdown).addClass(showClass);\r\n\t\t\t\t\t\t$this.attr(\"aria-expanded\", \"true\");\r\n\t\t\t\t\t\t$this.closest($dropdown).find($dropdownMenu).addClass(showClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// Mobile menu\r\n\t\t\tif (this.matchMedia(\"(max-width: 991px)\").matches) {\r\n\t\t\t\tnavigationHandler.ensureMobileMenu();\r\n\r\n\t\t\t\t// Mobile 2nd level dropdowns\r\n\t\t\t\tjQuery(document).off('click', '.header__intranet .navbar-collapse .dropdown-submenu .nav-link');\r\n\t\t\t\tjQuery(document).on('click', '.header__intranet .navbar-collapse .dropdown-submenu .nav-link', function () {\r\n\t\t\t\t\tjQuery(this).toggleClass('show');\r\n\t\t\t\t\tjQuery(this).parents('.header__intranet .navbar-collapse .dropdown-submenu').toggleClass('show');\r\n\t\t\t\t\tjQuery(this).siblings('.header__intranet .navbar-collapse .dropdown-menu').slideToggle('show');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Return to first level menu\r\n\t\t\t\tjQuery(document).on('click', '.nav-back-link', function () {\r\n\r\n\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\tcloseAccordions()\r\n\t\t\t\t\t\t}, 200)\r\n\t\t\t\t\t\tgoBack()\r\n\t\t\t\t\t}, 200)\r\n\r\n\t\t\t\t\t// Go back function\r\n\t\t\t\t\tfunction goBack() {\r\n\t\t\t\t\t\tjQuery('.nav-back-link').closest('.dropdown-menu__megamenu').removeClass('show');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Close all accordions when returing to 1st level menu - to keep height of menu\r\n\t\t\t\t\tfunction closeAccordions() {\r\n\t\t\t\t\t\tjQuery('.header__intranet .dropdown-submenu').removeClass('show');\r\n\t\t\t\t\t\tjQuery('.header__intranet .dropdown-submenu').children('.nav-link').removeClass('show');\r\n\t\t\t\t\t\tjQuery('.header__intranet .dropdown-submenu').children('.dropdown-menu').slideUp('show');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Disable bootstrap dropdown functionality\r\n\t\t\t\tjQuery(\".dropdown-toggle__mobile\").click(function () {\r\n\t\t\t\t\tjQuery(this).siblings('.nav-link.dropdown-toggle').removeAttr('data-toggle', 'dropdown');\r\n\t\t\t\t\tjQuery(this).parent().siblings('.dropdown-menu__megamenu').addClass('show');\r\n\t\t\t\t\tjQuery('.navbar__megamenu-extended.show-mobile-menu').scrollTop(0);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// setTimeout(function () {\r\n\t\t\t// \tvar headerHeight = jQuery('header').outerHeight();\r\n\t\t\t// \tjQuery('main').css(\"padding-top\", headerHeight);\r\n\t\t\t// }, 200)\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\r\n\r\nexport default headerIntranet;\r\n","/**\r\n * Hero Multi Box\r\n *\r\n */\r\n\r\nexport function heroMultiBox() {\r\n if (jQuery('.hero__multi-boxes').length < 1) {\r\n return;\r\n }\r\n\r\n jQuery(function() {\r\n jQuery(window).on('load', function() {\r\n if (jQuery(window).width() > 768) {\r\n masonryGrid();\r\n }\r\n });\r\n\r\n // if (jQuery(window).width() > 768) {\r\n // masonryGrid();\r\n // }\r\n\r\n jQuery(window).on(\"resize\", function () {\r\n if (jQuery(window).width() > 768) {\r\n masonryGrid();\r\n }\r\n });\r\n });\r\n\r\n function masonryGrid() {\r\n jQuery('.hero__multi-boxes__grid.hero__multi-boxes__grid--vertical.hero__multi-boxes__grid__two').masonry({\r\n itemSelector: '.hero__multi-boxes__box',\r\n columnWidth: '.grid-column-one',\r\n percentPosition: true,\r\n originTop: false\r\n });\r\n\r\n jQuery('.hero__multi-boxes__grid.hero__multi-boxes__grid--horizontal.hero__multi-boxes__grid__two').masonry({\r\n itemSelector: '.hero__multi-boxes__box',\r\n columnWidth: '.grid-column-two',\r\n percentPosition: true,\r\n originTop: false\r\n });\r\n\r\n jQuery('.hero__multi-boxes__grid.hero__multi-boxes__grid--vertical').masonry({\r\n itemSelector: '.hero__multi-boxes__box',\r\n columnWidth: '.grid-column-two',\r\n percentPosition: true,\r\n originTop: false\r\n });\r\n\r\n jQuery('.hero__multi-boxes__grid.hero__multi-boxes__grid--horizontal').masonry({\r\n itemSelector: '.hero__multi-boxes__box',\r\n columnWidth: '.grid-column-two',\r\n horizontalOrder: true,\r\n percentPosition: true,\r\n });\r\n }\r\n}\r\n\r\nexport default heroMultiBox;\r\n","export function footers() {\r\n\r\n\tif (jQuery(\".footer\").length < 0) {\r\n\t\treturn;\r\n }\r\n\r\n jQuery(window).on(\"load resize\", function () {\r\n var $dropdownToggle = jQuery(\".footer__content .dropdown-toggle\");\r\n var $dropdownMenu = jQuery('.footer__content .dropdown-menu');\r\n\r\n // Mobile menu (Tablet down)\r\n if (this.matchMedia(\"(max-width: 767px)\").matches) {\r\n $dropdownToggle.removeAttr(\"disabled\");\r\n $dropdownToggle.removeAttr(\"role\");\r\n $dropdownToggle.removeClass(\"show\");\r\n $dropdownToggle.removeAttr(\"aria-level\");\r\n $dropdownToggle.attr(\"aria-expanded\", \"false\");\r\n\r\n // Mobile 2nd level dropdowns\r\n jQuery(document).off('click', '.footer__content .dropdown-toggle');\r\n jQuery(document).on('click', '.footer__content .dropdown-toggle', function () {\r\n jQuery(this).attr(\"aria-expanded\", \"true\");\r\n jQuery(this).toggleClass('show');\r\n jQuery(this).parents('.footer__content').toggleClass('show');\r\n jQuery(this).siblings('.dropdown-menu').slideToggle('show');\r\n });\r\n\r\n // Mobile: if submenu menu item is open and it is clicked --> close it\r\n jQuery(document).off('click', '.footer__content .show');\r\n jQuery(document).on('click', '.footer__content .show', function () {\r\n jQuery(this).attr(\"aria-expanded\", \"false\");\r\n jQuery(this).removeClass('show');\r\n jQuery(this).children('.dropdown-toggle').removeClass('show');\r\n jQuery(this).children('.dropdown-menu').removeClass('show');\r\n });\r\n } else {\r\n $dropdownToggle.attr(\"disabled\");\r\n\r\n // Mobile 2nd level dropdowns\r\n jQuery(document).off('click', '.footer__content .dropdown-toggle');\r\n\r\n // Mobile: if submenu menu item is open and it is clicked --> close it\r\n jQuery(document).off('click', '.footer__content .show');\r\n }\r\n\r\n if (this.matchMedia(\"(min-width: 768px)\").matches) {\r\n $dropdownToggle.attr(\"disabled\", \"disabled\");\r\n $dropdownToggle.attr(\"aria-level\", \"2\");\r\n $dropdownToggle.attr(\"role\", \"heading\");\r\n $dropdownToggle.removeAttr(\"aria-expanded\");\r\n $dropdownMenu.css(\"display\", \"\");\r\n\r\n if (jQuery('.footer__content').hasClass('.show')) {\r\n $dropdownToggle.removeClass('show');\r\n $dropdownMenu.removeClass('show');\r\n }\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default footers;\r\n","import cssVars from \"css-vars-ponyfill\";\r\n\r\nexport function watermark(selector) {\r\n // Check if the provided selector has any matching elements\r\n if (jQuery(selector).length === 0) {\r\n return;\r\n }\r\n\r\n // Select all watermark images within the specified selector\r\n const watermarks = jQuery(`${selector} .watermark img`);\r\n\r\n // Function to set the appropriate watermark based on the viewport size\r\n function updateWatermark(item) {\r\n const watermarkmobile = item.getAttribute(\"data-watermarkmobile\");\r\n const watermarkdesktop = item.getAttribute(\"data-watermarkdesktop\");\r\n\r\n // Only proceed if the mobile watermark exists\r\n if (watermarkmobile) {\r\n // Determine the current viewport size\r\n const isMobile = window.matchMedia(\"(max-width: 991px)\").matches;\r\n\r\n // Set the watermark based on the viewport size\r\n if (isMobile && watermarkmobile) {\r\n item.setAttribute(\"src\", watermarkmobile);\r\n item.setAttribute(\"data-src\", watermarkmobile);\r\n } else if (watermarkdesktop) {\r\n item.setAttribute(\"src\", watermarkdesktop);\r\n item.setAttribute(\"data-src\", watermarkdesktop);\r\n }\r\n }\r\n }\r\n\r\n // Update watermarks on load and resize events\r\n jQuery(window).on(\"load resize\", function () {\r\n watermarks.each(function (i, item) {\r\n updateWatermark(item);\r\n });\r\n });\r\n\r\n // Initial call to set watermarks correctly on page load\r\n watermarks.each(function (i, item) {\r\n updateWatermark(item);\r\n });\r\n}\r\n\r\nexport default watermark;\r\n\r\n// export function footer__watermark() {\r\n\r\n// \tif (jQuery(\".footer\").length < 0) {\r\n// \t\treturn;\r\n// }\r\n\r\n// const watermark = jQuery(\".footer .watermark img\");\r\n\r\n// jQuery(watermark).each(function (i, item) {\r\n// var watermarkmobile = item.getAttribute(\"data-watermarkmobile\");\r\n// var watermarkdesktop = item.getAttribute(\"data-watermarkdesktop\");\r\n\r\n// // If has watermark mobile\r\n// if(item.hasAttribute(\"data-watermarkmobile\")) {\r\n// jQuery(window).on(\"load resize\", function () {\r\n\r\n// if ((typeof watermarkmobile !== 'undefined' && watermarkmobile !== false) && (typeof watermarkmobile !== 'undefined' && watermarkmobile !== false) || (typeof watermarkmobile !== 'undefined' && watermarkmobile !== false)) {\r\n// // Mobile (Tablet down)\r\n// if (window.matchMedia(\"(max-width: 991px)\").matches) {\r\n// function setMobileWatermark() {\r\n// item.setAttribute(\"data-src\", watermarkmobile);\r\n// item.setAttribute(\"src\", watermarkmobile);\r\n// }\r\n// setMobileWatermark();\r\n// }\r\n\r\n// // Desktop (Tablet up)\r\n// if (window.matchMedia(\"(min-width: 991px)\").matches) {\r\n// function setDesktopWatermark() {\r\n// item.setAttribute(\"data-src\", watermarkdesktop);\r\n// item.setAttribute(\"src\", watermarkdesktop);\r\n// }\r\n// setDesktopWatermark();\r\n// }\r\n// } else {\r\n// return;\r\n// }\r\n\r\n// });\r\n\r\n// } else {\r\n// return;\r\n// }\r\n\r\n// });\r\n\r\n// }\r\n\r\n// export default footer__watermark;\r\n","/*\r\n** Smooth scroll\r\n*/\r\n\r\nexport function smoothScroll() {\r\n\tjQuery(document).on(\"click\", \"a[href^='#']:not(a[href^='#!']):not(a[href^='#tab'])\", function (e) {\r\n e.preventDefault();\r\n\t\tvar position = jQuery(jQuery(this).attr(\"href\")).offset().top - 50;\r\n\t\tjQuery(\"body, html\").animate({\r\n scrollTop: position\r\n\t\t}, 800);\r\n window.location.hash = jQuery(this).attr(\"href\");\r\n // console.log(window.location)\r\n var id = jQuery(this).attr(\"href\");\r\n if (jQuery(id).hasClass(\"js-accordion-item\")) {\r\n jQuery(id).addClass('active')\r\n jQuery('.js-accordion-item.active').find('> .js-accordion-body').show();\r\n }\r\n\t});\r\n\r\n jQuery(window).on(\"load\", function () {\r\n var urlHash = window.location.hash.substr(1);\r\n if(/^[a-zA-Z0-9- ]*$/.test(urlHash) == true) {\r\n if (urlHash != \"\" && urlHash != undefined && jQuery('#' + urlHash).length > 0) {\r\n jQuery('html,body').animate({\r\n scrollTop: jQuery('#' + urlHash).offset().top - 50\r\n }, 700);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport default smoothScroll;\r\n","/*\r\n** Block media download elements\r\n** Optional data-attribute\r\n*/\r\n\r\nexport function blockMediaDownload() {\r\n\r\n if (jQuery('body[data-block-media-download]').length) {\r\n jQuery('img').each(function() {\r\n // Check if the image is NOT inside a div with the class 'image-gallery'\r\n if (!jQuery(this).closest('.image-gallery').length) {\r\n \r\n // Add the class to block media download\r\n jQuery(this).addClass(\"pointer-events-none\");\r\n }\r\n });\r\n } else {\r\n return;\r\n }\r\n\r\n}\r\n\r\nexport default blockMediaDownload;\r\n","/**\r\n * Subscription modal\r\n */\r\n\r\nexport function subscriptionModal() {\r\n\tif (jQuery(\"#subscribForm\").length == 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tjQuery('#subscribForm').validator();\r\n\r\n\t// - Prevent pop-up if form is invalid\r\n\tjQuery(\".btn__modal\").on(\"click\", function (e) {\r\n\t\te.preventDefault();\r\n\t\tjQuery('#subscriptionModal').modal(\"show\");\r\n\t});\r\n\r\n\tjQuery(document).on('input', '#signupEmail', function () {\r\n\t\tvar email = jQuery('#signupEmail').val();\r\n\t\tjQuery('.btn__submit').prop('disabled', true);\r\n\t\tif (isValidEmail(email)) {\r\n\t\t\t//enable the submit button\r\n\t\t\tjQuery('.btn__submit').prop('disabled', false);\r\n\t\t} else {\r\n\t\t\t//disable the submit button\r\n\t\t\tjQuery('.btn__submit').prop('disabled', true);\r\n\t\t}\r\n\t}),\r\n\t\t// - Change modal view when send btn is clicked\r\n\t\tjQuery(document).on(\"click\", \"#submitSubscription\", function (e) {\r\n\r\n\t\t\te.preventDefault()\r\n\t\t\tvar form = jQuery(\"#subscribForm\");\r\n\t\t\tvar topics = jQuery(\"#subscribForm\")[0].querySelectorAll('input[name=\"topic\"]:checked');\r\n\t\t\tvar areaKey = jQuery(\"#subscribForm\")[0].querySelector('input[name=\"area\"]:checked');\r\n\r\n\t\t\t//get the titles of the checked topics\r\n\t\t\tvar topicsTitles = topics != null ? Array.prototype.map.call(topics, function (checkbox) {\r\n\t\t\t\treturn checkbox.getAttribute(\"data-title\");\r\n\t\t\t}) : [];\r\n\t\t\t//get the titles of the checked areas\r\n\t\t\tvar areasTitles = areaKey != null ? areaKey.getAttribute(\"data-title\") : [];\r\n\r\n\t\t\tvar onestring = [];\r\n\t\t\tif (topicsTitles.length > 0) {\r\n\t\t\t\t//append the topics and areas to the same array\r\n\t\t\t\tonestring = topicsTitles.concat(areasTitles);\r\n\t\t\t} else if (areasTitles != null) {\r\n\t\t\t\t//add the area to the array\r\n\t\t\t\tonestring.push(areasTitles);\r\n\t\t\t}\r\n\r\n\t\t\tvar topicsKeys = topics != null ? Array.prototype.map.call(topics, function (checkbox) {\r\n\t\t\t\treturn checkbox.value;\r\n\t\t\t}) : [];\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: \"/umbraco/api/Subscribe/SubscribeToPage\",\r\n\t\t\t\tcontentType: \"application/json\",\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tareaKey: areaKey != null ? areaKey.value : \"\",\r\n\t\t\t\t\ttopicKeys: topicsKeys.join(\",\"),\r\n\t\t\t\t\tmemberPageId: form.data(\"memberpageid\"),\r\n\t\t\t\t\temail: jQuery(\"#signupEmail\").val(),\r\n\t\t\t\t\tlang: document.documentElement.getAttribute('lang')\r\n\r\n\t\t\t\t},\r\n\t\t\t\terror: function (data) { // eslint-disable-next-line no-console\r\n\t\t\t\t\tconsole.log(\"Error: \", data)\r\n\t\t\t\t\tshowMessage(false)\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function (data) {\r\n\t\t\t\t\tshowMessage(data, onestring)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t);\r\n\r\n\t//TODO UMB9 Success with small s !!\r\n\tfunction showMessage(response, areas) { // - If success\r\n\t\tvar form = jQuery(\"#subscribForm\").parent().parent();\r\n\t\tif ((response.success && response.isNew) || (response.success && !response.isApproved)) {\r\n\r\n\t\t\tform.find(\".message-body__conformation\").find(\"#area-list-conformation\").html(areas.join(\", \"));\r\n\t\t\tform.find(\".message-body__error\").hide();\r\n\t\t\tform.find(\".message-body__isMember\").hide();\r\n\t\t\tform.find(\".message-body__conformation\").show();\r\n\t\t} else if (response.success && response.isApproved) {\r\n\r\n\t\t\tform.find(\".message-body__isMember\").find(\"#area-list-ismember\").html(areas.join(\", \"));\r\n\t\t\tform.find(\".message-body__error\").hide();\r\n\t\t\tform.find(\".message-body__conformation\").hide();\r\n\t\t\tform.find(\".message-body__isMember\").show();\r\n\t\t} else {\r\n\t\t\tform.find(\".message-body__isMember\").hide();\r\n\t\t\tform.find(\".message-body__conformation\").hide();\r\n\t\t\tform.find(\".message-body__error\").show();\r\n\t\t\t// - Run animate function\r\n\t\t}\r\n\t\tanimate();\r\n\t}\r\n\r\n\t// - Animate modal slide\r\n\tfunction animate() {\r\n\t\tjQuery('.modal-content').animate({\r\n\t\t\theight: jQuery('.modal-content').outerHeight()\r\n\t\t}, 600);\r\n\r\n\t\tjQuery('.message-body').removeClass(\"modal-body__hidden\");\r\n\r\n\t\tjQuery('.subscription-body').animate({\r\n\t\t\t\"margin-top\": \"-\" + jQuery('.subscription-body').outerHeight() + \"px\"\r\n\t\t}, 600, function () {\r\n\t\t\tjQuery('.subscription-body').addClass(\"modal-body__hidden\")\r\n\t\t});\r\n\t}\r\n\r\n\t// Close modal when close btns are clicked\r\n\tjQuery(\"button.close\").on(\"click\", function () {\r\n\t\tsetTimeout(function () {\r\n\t\t\tjQuery('.subscription-body').css(\"margin-top\", \"0px\");\r\n\t\t\tjQuery('.subscription-body').removeClass(\"modal-body__hidden\");\r\n\t\t\tjQuery('.message-body').addClass(\"modal-body__hidden\")\r\n\t\t}, 1000);\r\n\t});\r\n\r\n\t// Return to previous modal when error btn is clicked\r\n\tjQuery(\".message-body__error button\").on(\"click\", function () {\r\n\t\tjQuery('.modal-content').animate({\r\n\t\t\theight: jQuery('.modal-content').outerHeight()\r\n\t\t}, 600);\r\n\r\n\t\tjQuery('.subscription-body').removeClass(\"modal-body__hidden\");\r\n\r\n\t\tjQuery('.subscription-body').animate({\r\n\t\t\t\"margin-top\": \"0px\"\r\n\t\t}, 600, function () {\r\n\t\t\tjQuery('.message-body.error').addClass(\"modal-body__hidden\")\r\n\t\t});\r\n\t});\r\n\r\n\tjQuery(document).on('input', '#emailInput', function () {\r\n\r\n\t\tvalidateForm();\r\n\t})\r\n\tfunction validateForm() {\r\n\t\tvar email = jQuery('#emailInput').val();\r\n\t\tjQuery('.btn__submit').prop('disabled', true);\r\n\t\tif (isValidEmail(email) && jQuery('#consent').is(':checked')) {\r\n\t\t\t//enable the submit button\r\n\t\t\tjQuery('.btn__submit').prop('disabled', false);\r\n\t\t} else {\r\n\t\t\t//disable the submit button\r\n\t\t\tjQuery('.btn__submit').prop('disabled', true);\r\n\t\t\t//turn off hover effects\r\n\t\t}\r\n\t}\r\n\tfunction isValidEmail(email) {\r\n\t\tconst emailRegex = /^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$/;\r\n\t\treturn emailRegex.test(email);\r\n\t}\r\n}\r\n\r\nexport default subscriptionModal;\r\n","/**\r\n * Pagination\r\n * https://codepen.io/robertcooper_rc/pen/XeabLa\r\n */\r\n\r\nexport function pagination() {\r\n\r\n window.onload = function(){\r\n var paginationPage = parseInt(jQuery('.pagination').attr('actpage'), 10);\r\n jQuery(document).on(\"click\",\".pagination__item button\",function() {\r\n var go = jQuery(this).attr('data-button');\r\n\r\n if (go === '+1') {\r\n paginationPage++;\r\n } else if (go === '-1') {\r\n paginationPage--;\r\n } else {\r\n paginationPage = parseInt(go, 10);\r\n }\r\n jQuery('.pagination').attr('actpage', paginationPage);\r\n jQuery('.arrow-next').attr(\"data-page\", paginationPage+1);\r\n jQuery('.arrow-prev').attr(\"data-page\", paginationPage-1);\r\n\r\n });\r\n };\r\n}\r\n\r\nexport default pagination;\r\n","export function articleAnchorMenu() {\r\n\r\n\t// If headlines have an .article-anchor, create anchor menu\r\n\tif (jQuery('.rich-text').length > 0) {\r\n\t\tvar links = jQuery('.rich-text a[id]');\r\n\r\n\t\tif(links.length > 0) {\r\n\t\t\taddSection(links);\r\n\t\t\tjQuery('.article-anchor-menu').show();\r\n\t\t} else {\r\n\t\t\tjQuery('.article-anchor-menu').remove();\r\n\t\t}\r\n\t} else {\r\n\t\tjQuery('.article-anchor-menu').remove();\r\n\t}\r\n\r\n\t// add id to link en headline\r\n\tfunction addSection(links) {\r\n\t\tlinks.each(function () {\r\n\t\t\tvar name = jQuery(this).parent().text();\r\n\t\t\tvar anchor = cleanText(jQuery(this).attr(\"id\").toLocaleLowerCase());\r\n\t\t\tjQuery(this).attr('id', anchor);\r\n\t\t\tjQuery(\".article-anchor-menu ol\").append(\"
          • \"+ name +\"
          • \");\r\n\t\t});\r\n\t}\r\n\r\n\tfunction cleanText(text) {\r\n\t\tvar cleanText = text.replace('æ', 'ae').replace('ø', 'oe').replace('å', 'aa').replace(/[^a-z0-9\\s]/gi, '').replace(/[_\\s]/g, '-').toLowerCase();\r\n\t\treturn cleanText;\r\n\t}\r\n function addSpaceToText(text) {\r\n\t\tvar fixedText = text.toLowerCase().replace(/_/g, \" \").replace('aa', 'å').replace('oe', 'ø').replace('ae', 'æ');\r\n\t\treturn fixedText;\r\n\t}\r\n}\r\n\r\nexport default articleAnchorMenu;\r\n","export function accordionMobile() {\r\n var accordion = jQuery('.accordion--mobile');\r\n\r\n if (accordion.length > 0) {\r\n var accordionInstance = (function() {\r\n var settings = {\r\n speed: 400,\r\n oneOpen: false\r\n };\r\n\r\n return {\r\n init: function($settings) {\r\n jQuery(document).on(\"click\", \".accordion--mobile__toggle\", function(e) {\r\n e.preventDefault();\r\n accordionInstance.toggle(jQuery(this));\r\n });\r\n\r\n $.extend(settings, $settings);\r\n\r\n jQuery('.accordion--mobile.active').find('> .accordion--mobile__body').show();\r\n },\r\n toggle: function($this) {\r\n $this.attr(\"aria-expanded\", function(_, attr) {\r\n return attr === \"true\" ? \"false\" : \"true\";\r\n });\r\n\r\n if (settings.oneOpen) {\r\n var activeAccordion = $this.closest('.accordion--mobile.active');\r\n if (activeAccordion.length && !$this.closest('.accordion--mobile').hasClass('active')) {\r\n activeAccordion.removeClass('active').find('.accordion--mobile__body').slideUp(settings.speed);\r\n }\r\n }\r\n\r\n $this.closest('.accordion--mobile').toggleClass('active').find('.accordion--mobile__body').stop().slideToggle(settings.speed);\r\n },\r\n destroy: function() {\r\n // Remove event listeners\r\n // jQuery(document).off(\"click\", \".accordion--mobile__toggle\");\r\n jQuery('.accordion--mobile').find('.accordion--mobile__toggle').removeAttr('aria-expanded');\r\n // Reset accordion state\r\n jQuery('.accordion--mobile').removeClass('active').find('.accordion--mobile__body').removeAttr('style');\r\n }\r\n };\r\n })();\r\n\r\n // Initialize accordion\r\n accordionInstance.init({ speed: 300, oneOpen: true });\r\n\r\n // Function to handle accordion destruction and reinitialization on window resize\r\n function handleAccordionState() {\r\n if (window.matchMedia(\"(min-width: 768px)\").matches) {\r\n // Disable toggle button\r\n jQuery('.accordion--mobile__toggle').prop('disabled', true);\r\n // Check if accordion is initialized\r\n if (accordionInstance && !accordion.hasClass('active')) {\r\n accordionInstance.destroy();\r\n }\r\n } else {\r\n // Enable toggle button\r\n jQuery('.accordion--mobile__toggle').prop('disabled', false);\r\n // Check if accordion is not initialized\r\n if (!accordionInstance) {\r\n // Initialize accordion\r\n accordionInstance.init({ speed: 300, oneOpen: true });\r\n } else {\r\n // Remove inline style attribute from accordion body\r\n // jQuery('.accordion--mobile__body').removeAttr('style');\r\n // Set aria-expanded attribute based on accordion state\r\n jQuery('.accordion--mobile__toggle').attr('aria-expanded', function() {\r\n return jQuery(this).closest('.accordion--mobile').hasClass('active') ? 'true' : 'false';\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Handle accordion state on window resize\r\n jQuery(window).on('load resize', handleAccordionState);\r\n }\r\n}\r\n\r\nexport default accordionMobile;","export function accordionDesktopDown() {\r\n var accordion = jQuery('.accordion--desktop-down');\r\n\r\n if (accordion.length > 0) {\r\n var accordionInstance = (function() {\r\n var settings = {\r\n speed: 400,\r\n oneOpen: false\r\n };\r\n\r\n return {\r\n init: function($settings) {\r\n jQuery(document).on(\"click\", \".accordion--desktop-down__toggle\", function(e) {\r\n e.preventDefault();\r\n accordionInstance.toggle(jQuery(this));\r\n });\r\n\r\n $.extend(settings, $settings);\r\n\r\n jQuery('.accordion--desktop-down.active').find('> .accordion--desktop-down__body').show();\r\n },\r\n toggle: function($this) {\r\n $this.attr(\"aria-expanded\", function(_, attr) {\r\n return attr === \"true\" ? \"false\" : \"true\";\r\n });\r\n\r\n if (settings.oneOpen) {\r\n var activeAccordion = $this.closest('.accordion--desktop-down.active');\r\n if (activeAccordion.length && !$this.closest('.accordion--desktop-down').hasClass('active')) {\r\n activeAccordion.removeClass('active').find('.accordion--desktop-down__body').slideUp(settings.speed);\r\n }\r\n }\r\n\r\n $this.closest('.accordion--desktop-down').toggleClass('active').find('.accordion--desktop-down__body').stop().slideToggle(settings.speed);\r\n },\r\n destroy: function() {\r\n jQuery('.accordion--desktop-down').find('.accordion--desktop-down__toggle').removeAttr('aria-expanded');\r\n jQuery('.accordion--desktop-down').removeClass('active').find('.accordion--desktop-down__body').removeAttr('style');\r\n }\r\n };\r\n })();\r\n\r\n // Initialize accordion\r\n accordionInstance.init({ speed: 300, oneOpen: true });\r\n\r\n // Function to handle accordion destruction and reinitialization on window resize\r\n function handleAccordionState() {\r\n // if (window.matchMedia(\"(min-width: 768px)\").matches) {\r\n // jQuery('.accordion--desktop-down__toggle').prop('disabled', true);\r\n\r\n // if (accordionInstance && !accordion.hasClass('active')) {\r\n // accordionInstance.destroy();\r\n // }\r\n // } else {\r\n jQuery('.accordion--desktop-down__toggle').prop('disabled', false);\r\n\r\n if (!accordionInstance) {\r\n accordionInstance.init({ speed: 300, oneOpen: true });\r\n } else {\r\n jQuery('.accordion--desktop-down__toggle').attr('aria-expanded', function() {\r\n return jQuery(this).closest('.accordion--desktop-down').hasClass('active') ? 'true' : 'false';\r\n });\r\n }\r\n // }\r\n }\r\n\r\n jQuery(window).on('load resize', handleAccordionState);\r\n }\r\n}\r\n\r\nexport default accordionDesktopDown;","export function infoboxLinksIcon() {\r\n var accordion = jQuery('.info-box__links__icon');\r\n\r\n if (accordion.length > 0) {\r\n accordion = (function () {\r\n var $accordion = jQuery('.js-info-box__links__icon');\r\n var $accordion_item = $accordion.find('.js-info-box__links__icon__item');\r\n var $accordion_toggle = $accordion.find('.js-toggle');\r\n var $accordion_body = $accordion.find('.js-info-box__links__icon__item__body');\r\n\r\n // default settings\r\n var settings = {\r\n speed: 400,\r\n oneOpen: false\r\n };\r\n\r\n return {\r\n init: function ($settings) {\r\n // Enable the buttons\r\n $accordion_toggle.attr('disabled', false);\r\n\r\n // Remove existing click event and add a new one\r\n $accordion_toggle.off('click').on('click', function (e) {\r\n e.preventDefault();\r\n\r\n // Pass the toggle button to the toggle function\r\n accordion.toggle(jQuery(this));\r\n });\r\n\r\n // Extend default settings with any provided settings\r\n $.extend(settings, $settings);\r\n\r\n // Show active accordion bodies by default\r\n jQuery('.js-info-box__links__icon__item.active')\r\n .find('> .js-info-box__links__icon__item__body')\r\n .show();\r\n },\r\n\r\n toggle: function ($toggleBtn) {\r\n // Toggle aria-expanded attribute for accessibility\r\n var currentAriaExpanded = $toggleBtn.attr(\"aria-expanded\");\r\n var newAriaExpanded = currentAriaExpanded === \"true\" ? \"false\" : \"true\";\r\n $toggleBtn.attr(\"aria-expanded\", newAriaExpanded);\r\n\r\n // Find the corresponding accordion item and toggle its 'active' class\r\n var $accordionItem = $toggleBtn.closest($accordion_item);\r\n $accordionItem.toggleClass('active');\r\n\r\n // Slide toggle the body associated with this item\r\n var $body = $accordionItem.find('> .js-info-box__links__icon__item__body');\r\n $body.stop().slideToggle(settings.speed);\r\n\r\n // If only one item should be open at a time, close others\r\n if (settings.oneOpen) {\r\n $accordion_item.not($accordionItem).removeClass('active');\r\n $accordion_item.not($accordionItem)\r\n .find('> .js-info-box__links__icon__item__body')\r\n .stop()\r\n .slideUp(settings.speed);\r\n }\r\n },\r\n\r\n destroy: function () {\r\n // Disable the buttons on larger screens\r\n $accordion_toggle.off('click').attr('disabled', true); // Disable the buttons\r\n\r\n // Reset the accordion items\r\n $accordion_item.find('> .js-info-box__links__icon__item__body').hide();\r\n $accordion_item.removeClass('active');\r\n $accordion_item.find('> .js-info-box__links__icon__item__body').css({ height: \"auto\", display: \"\" });\r\n $accordion_item.find('> .js-info-box__links__icon__item__body').show();\r\n }\r\n };\r\n })();\r\n\r\n jQuery(window).on(\"load resize\", function () {\r\n if (this.matchMedia(\"(max-width: 991px)\").matches) {\r\n accordion.init({\r\n speed: 300,\r\n oneOpen: true\r\n });\r\n }\r\n\r\n if (this.matchMedia(\"(min-width: 991px)\").matches) {\r\n accordion.destroy();\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default infoboxLinksIcon;\r\n","/**\r\n * Three column carousel - carousel on tablet down\r\n * https://owlcarousel2.github.io/\r\n */\r\n\r\nimport jquery from \"jquery\";\r\n\r\n// eslint-disable-next-line no-unused-vars\r\n// import owl from '../../../../node_modules/owl.carousel/dist/owl.carousel.min'\r\n\r\nexport function threeColumnCarousel() {\r\n jQuery(function () {\r\n var carousels = jQuery('.three-column-carousel');\r\n\r\n if (carousels.length < 1) {\r\n return;\r\n }\r\n\r\n jQuery(document).ready(function () {\r\n if (jQuery(window).width() <= 991) {\r\n carousels.each(function() {\r\n startCarousel(jQuery(this));\r\n });\r\n } else {\r\n carousels.each(function() {\r\n jQuery(this).addClass('off');\r\n });\r\n }\r\n });\r\n\r\n let resizeTimeout;\r\n\r\n jQuery(window).resize(function () {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(function () {\r\n if (jQuery(window).width() <= 991) {\r\n carousels.each(function() {\r\n startCarousel(jQuery(this));\r\n });\r\n } else {\r\n carousels.each(function() {\r\n stopCarousel(jQuery(this));\r\n });\r\n }\r\n }, 500); // Adjust the delay as needed\r\n });\r\n\r\n function startCarousel(carousel) {\r\n if (carousel.hasClass('owl-loaded')) return; // Check if already initialized\r\n\r\n // var $dataStagepadding = carousel.data(\"stagepadding\");\r\n\r\n // if ($dataStagepadding >= 1) {\r\n // carousel.closest(\".container\").addClass(\"container--wide__important\");\r\n // }\r\n\r\n carousel.closest(\".container\").addClass(\"container--wide__important\");\r\n\r\n carousel.owlCarousel({\r\n stagePadding: 40,\r\n items: 3,\r\n nav: false,\r\n dots: true,\r\n pullDrag: true,\r\n touchDrag: true,\r\n mouseDrag: true,\r\n responsiveClass: true,\r\n center: true,\r\n responsive: {\r\n 0: {\r\n items: 1,\r\n dots: true,\r\n stagePadding: 40\r\n },\r\n 600: {\r\n items: 2,\r\n dots: true,\r\n stagePadding: 40 * 2\r\n },\r\n 991: {\r\n items: 2\r\n }\r\n }\r\n });\r\n\r\n carousel.find('.owl-dots').each(function () {\r\n var $this = jQuery(this);\r\n var $ul = jQuery('
              ');\r\n $this.children().each(function(index) {\r\n var $dot = jQuery(this);\r\n var $li = jQuery('
            • ');\r\n var $button = jQuery('');\r\n \r\n if ($dot.hasClass('active')) {\r\n $button.addClass('active');\r\n }\r\n\r\n $button.on('click', function() {\r\n carousel.trigger('to.owl.carousel', [index, 300]);\r\n });\r\n\r\n $button.append('');\r\n $li.append($button);\r\n $ul.append($li);\r\n });\r\n $this.replaceWith($ul);\r\n });\r\n\r\n carousel.on('changed.owl.carousel', function(event) {\r\n var index = event.item.index;\r\n carousel.find('.owl-dot').removeClass('active');\r\n carousel.find('.owl-dot').eq(index).addClass('active');\r\n });\r\n\r\n carousel.find('.owl-item').on('focusin', function () {\r\n var desiredItem = jQuery(this);\r\n var desiredItemIndex = carousel.find('.owl-item').index(desiredItem);\r\n carousel.trigger('to.owl.carousel', [desiredItemIndex, 300, true]);\r\n });\r\n }\r\n\r\n function stopCarousel(carousel) {\r\n carousel.trigger('destroy.owl.carousel');\r\n carousel.addClass('off');\r\n }\r\n\r\n });\r\n}\r\n\r\nexport default threeColumnCarousel;\r\n","// Video\r\nexport function video() {\r\n\r\n if (jQuery(\".video\").length === 0) {\r\n return;\r\n }\r\n\r\n jQuery( \".video\" ).each(function() {\r\n jQuery(this).find(\".video__overlay__button\").click(function() {\r\n jQuery(this).parent('.video__overlay').addClass(\"hide\");\r\n let video = jQuery(this).closest(\".video\").find('video').get(0);\r\n\r\n if (!video) {\r\n console.error(\"Video element not found\");\r\n return;\r\n }\r\n\r\n video.style.visibility = \"visible\";\r\n\r\n if (video.paused) {\r\n video.play();\r\n } else {\r\n video.pause();\r\n }\r\n\t\t})\r\n });\r\n}\r\n\r\nexport default video;\r\n","export function videoDreambroker() {\r\n if (jQuery(\".video__dreambroker\").length === 0) {\r\n return;\r\n }\r\n\r\n jQuery(\".video__dreambroker\").each(function(index, element) {\r\n let video = document.createElement(\"video\");\r\n let src = jQuery(element).data(\"embed\");\r\n\r\n try {\r\n // Parse the Dreambroker video URL\r\n const parsedUrl = new URL(src);\r\n const searchParams = parsedUrl.searchParams;\r\n\r\n const loop = searchParams.get(\"loop\");\r\n const quality = searchParams.get(\"quality\");\r\n const autoplay = searchParams.get(\"autoplay\");\r\n const lang = searchParams.get(\"lang\") || 'da'; // Default to 'da' if no lang parameter is present\r\n const baseUrl = `${parsedUrl.origin}${parsedUrl.pathname}`;\r\n\r\n // Set video attributes\r\n video.setAttribute(\"tabindex\", \"0\");\r\n video.setAttribute(\"aria-roledescription\", \"video\");\r\n\r\n // Ensure controls are available\r\n video.setAttribute(\"controls\", \"\"); // Ensure the controls appear\r\n if (autoplay === \"true\") {\r\n video.setAttribute('autoplay', \"\");\r\n }\r\n\r\n video.setAttribute('loop', loop === \"true\" ? 'true' : 'false');\r\n video.setAttribute('preload', 'none'); // As per the iframe example\r\n\r\n // Set the video poster (thumbnail image)\r\n video.poster = `${baseUrl}/get/poster?etag=1716383491000`;\r\n\r\n // Set the video sources\r\n video.src = `${baseUrl}/get/normal.mp4?lang=${lang}`;\r\n \r\n // Add additional sources for different quality levels (fullhd, hd, etc.)\r\n const sourceFullHd = document.createElement('source');\r\n sourceFullHd.setAttribute('src', `${baseUrl}/get/fullhd.mp4`);\r\n sourceFullHd.setAttribute('type', 'video/mp4');\r\n sourceFullHd.setAttribute('data-fullhd', `${baseUrl}/get/fullhd.mp4`);\r\n video.appendChild(sourceFullHd);\r\n\r\n const sourceHd = document.createElement('source');\r\n sourceHd.setAttribute('src', `${baseUrl}/get/hd.mp4`);\r\n sourceHd.setAttribute('type', 'video/mp4');\r\n sourceHd.setAttribute('data-hd', `${baseUrl}/get/hd.mp4`);\r\n video.appendChild(sourceHd);\r\n\r\n const sourceNormal = document.createElement('source');\r\n sourceNormal.setAttribute('src', `${baseUrl}/get/normal.mp4`);\r\n sourceNormal.setAttribute('type', 'video/mp4');\r\n sourceNormal.setAttribute('data-normal', `${baseUrl}/get/normal.mp4`);\r\n video.appendChild(sourceNormal);\r\n\r\n const sourceMobile = document.createElement('source');\r\n sourceMobile.setAttribute('src', `${baseUrl}/get/mobile.mp4`);\r\n sourceMobile.setAttribute('type', 'video/mp4');\r\n sourceMobile.setAttribute('data-mobile', `${baseUrl}/get/mobile.mp4`);\r\n video.appendChild(sourceMobile);\r\n\r\n // Create and add the subtitle track element\r\n const track = document.createElement('track');\r\n track.setAttribute('kind', 'subtitles');\r\n track.setAttribute('label', 'Dansk'); // Set the label as 'Dansk' (or based on lang)\r\n track.setAttribute('src', `${baseUrl}/subtitle/get/${lang}.vtt`); // Dynamic subtitle URL\r\n track.setAttribute('srclang', lang); // Language code (e.g., 'da' for Danish)\r\n track.setAttribute('default', 'true'); // Make this subtitle track the default\r\n video.appendChild(track); \r\n\r\n // Append the video element to the container without removing the overlay\r\n jQuery(element).append(video);\r\n\r\n } catch (e) {\r\n console.error(\"Error parsing Dreambroker URL: \", e);\r\n }\r\n });\r\n}\r\n\r\nexport default videoDreambroker;\r\n","export function videoYoutube() {\r\n\r\n if ( jQuery( \".video-youtube\" ).length < 0 ) {\r\n return;\r\n }\r\n\r\n jQuery('.video__youtube').click(function() {\r\n var embedId = jQuery(this).data(\"embed\");\r\n embedId += \"?autoplay=1&rel=0\";\r\n var iframe = document.createElement( \"iframe\" );\r\n iframe.setAttribute( \"class\", \"video__youtube__iframe\" );\r\n iframe.setAttribute( \"frameborder\", \"0\" );\r\n iframe.setAttribute( \"allowfullscreen\", \"\" );\r\n iframe.setAttribute( \"src\", \"https://www.youtube.com/embed/\" + embedId);\r\n iframe.setAttribute(\"allow\", \"autoplay; encrypted-media\");\r\n jQuery(iframe).appendTo(jQuery(this));\r\n });\r\n\r\n}\r\n\r\nexport default videoYoutube;\r\n","export function videoHTML(){\r\n\r\n\tif(document.querySelector('.video__html')){\r\n\t\tconst videos = document.querySelectorAll('.video__html')\r\n\r\n\t\tvideos.forEach(element => {\r\n\t\t\tlet video = element.querySelector('video')\r\n\t\t\tlet playButton = element.querySelector('.video__overlay__button')\r\n\r\n\t\t\tplayButton.addEventListener('click', () => {\r\n\t\t\t\tvideo.setAttribute('controls', true)\r\n\t\t\t\t// console.log(video.paused)\r\n\t\t\t\t// if(video.paused){\r\n\t\t\t\t// \tvideo.play()\r\n\t\t\t\t// } else if(!video.paused) {\r\n\t\t\t\t// \tvideo.pause()\r\n\t\t\t\t// }\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n}\r\n\r\nexport default videoHTML;\r\n","export function borgerDk() {\r\n if (jQuery(\".js-borgerdk-accordion\").length > 0) {\r\n CheckArticle();\r\n }\r\n if(jQuery(\".borgerdk--accordion\").length > 0){\r\n updateLinks();\r\n }\r\n}\r\n\r\nfunction CheckArticle(){\r\n var accordion = jQuery(\".js-borgerdk-accordion\");\r\n var pageId = accordion.data(\"pageid\");\r\n var articleId = accordion.data(\"articleid\");\r\n var lastupdated = accordion.data(\"lastupdated\");\r\n var url = \"/umbraco/api/BorgerDkArticle/CheckForUpdates?articleId=\" + articleId + \"&date=\" + lastupdated + \"&pageId=\" + pageId + \"&municipalityCode=147\";\r\n\r\n $.ajax({\r\n url: url,\r\n contentType: \"application/json\",\r\n type: 'GET',\r\n dataType: 'json',\r\n data: {\r\n },\r\n error: function (data) {\r\n // eslint-disable-next-line no-console\r\n console.log(\"Error: \", data)\r\n },\r\n success: function (data) {\r\n }\r\n });\r\n}\r\n\r\nfunction updateLinks() {\r\n jQuery(\".borgerdk--accordion\").find(\"a\").each(function () {\r\n var href = jQuery(this).attr(\"href\");\r\n if (href.indexOf(\"borger.dk\") > -1) {\r\n jQuery(this).attr(\"target\", \"_blank\");\r\n }\r\n });\r\n}\r\nexport default borgerDk;\r\n","export function sbsysaccordion() {\r\n\tif (jQuery(\".js-accordion-item-agenda\").length == 0) {\r\n\t\treturn;\r\n\t}\r\n\tjQuery(document).on(\"click\", \".js-accordion-item-agenda\", function (e) {\r\n\t\tvar folderId = jQuery(this).data(\"listid\");\r\n\t\tvar pageUrl = jQuery(this).data(\"pageurl\");\r\n\t\tvar elementId = jQuery(this).data(\"elementid\");\r\n\t\tvar accordionBodyContents = jQuery(this)\r\n\t\t\t.closest(\".js-accordion-item\")\r\n\t\t\t.find(\".accordion-body__contents\");\r\n\t\tvar hasList = accordionBodyContents.find(\".list__links\");\r\n\t\tif (hasList.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar loadingSpinner = accordionBodyContents.find(\".lds-default\");\r\n\t\tif (loadingSpinner) {\r\n\t\t\tloadingSpinner.css(\"display\", \"inline-block\");\r\n\t\t}\r\n\t\tvar requestData = {\r\n\t\t\tfolderId: folderId,\r\n\t\t\tpageUrl: pageUrl,\r\n\t\t\telementId: elementId,\r\n\t\t};\r\n\t\tconsole.log(requestData);\r\n\t\tfetch(\r\n\t\t\t\"/umbraco/surface/AgendaSurface/GetAgendaList?\" +\r\n\t\t\t\tnew URLSearchParams(requestData),\r\n\t\t)\r\n\t\t\t.then(function (response) {\r\n\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\tthrow new Error(\"Network response was not ok\");\r\n\t\t\t\t}\r\n\t\t\t\treturn response.text();\r\n\t\t\t})\r\n\t\t\t.then(function (data) {\r\n\t\t\t\tvar newData = data.trim();\r\n\t\t\t\tif (loadingSpinner) {\r\n\t\t\t\t\tloadingSpinner.css(\"display\", \"none\");\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log(\"data:\", newData);\r\n\t\t\t\taccordionBodyContents.html(newData);\r\n\t\t\t\taccordionBodyContents.css(\"display\", \"block\");\r\n\t\t\t})\r\n\t\t\t.catch(function () {\r\n\t\t\t\tconsole.log(\"Error in loaded comments\");\r\n\t\t\t\tif (loadingSpinner) {\r\n\t\t\t\t\tloadingSpinner.css(\"display\", \"none\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t});\r\n}\r\nexport default sbsysaccordion;\r\n","/*\r\n** Tooltips\r\n*/\r\nimport tippy from 'tippy.js';\r\nimport 'tippy.js/dist/tippy.css';\r\n\r\nexport function tooltips() {\r\n\r\n if (jQuery('.intext-tooltip').length == 0) {\r\n return;\r\n }\r\n tippy('.intext-tooltip', {\r\n theme: 'custom',\r\n arrow: true,\r\n maxWidth: 385,\r\n placement: 'auto',\r\n delay: 5,\r\n hideOnClick: false,\r\n onShow(instance) {\r\n var content = instance.reference.attributes[\"data-tippy-content\"].value;\r\n instance.setContent(content);\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default tooltips;\r\n","/*\r\n** In text arrow link\r\n**\r\n** .arrow can be added to a p tag, to hightlight the p text.\r\n** When link is present inside p tag, the arrow moves on link hover.\r\n*/\r\n\r\n\r\nexport function intextArrowLink() {\r\n\r\n if (jQuery('.intext-arrow-link').length < 0) {\r\n\t\treturn;\r\n }\r\n\r\n // In .rich-text component\r\n jQuery(\".intext-arrow-link a\").on({mouseenter: function () {\r\n jQuery(this).parent('.intext-arrow-link').addClass('onHoverJS');\r\n },\r\n mouseleave: function () {\r\n jQuery(this).parent('.intext-arrow-link').removeClass('onHoverJS');\r\n }\r\n });\r\n\r\n // In .intext-arrow-link component\r\n jQuery(\".intext-arrow-link p a\").on({mouseenter: function () {\r\n var parent = jQuery(this).parents('p');\r\n jQuery(parent).parent('.intext-arrow-link').addClass('onHoverJS');\r\n },\r\n mouseleave: function () {\r\n var parent = jQuery(this).parents('p');\r\n jQuery(parent).parent('.intext-arrow-link').removeClass('onHoverJS');\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default intextArrowLink;\r\n","/**\r\n * Service menu\r\n */\r\n\r\nimport 'js-cookie';\r\nimport Cookies from 'js-cookie'\r\n\r\nexport function serviceMenu() {\r\n if (jQuery(\".service-menu\").length === 0) {\r\n return;\r\n }\r\n\r\n if (jQuery(\".service-menu .dropdown-toggle__enlarge-text\").length > 0) {\r\n var $fontsizeParent = jQuery(\".service-menu .dropdown-toggle__enlarge-text\").parents('.service-menu__item');\r\n var $fontsizeTextContainer = $fontsizeParent.find('.service-menu__item__text');\r\n var $fontsizeText = $fontsizeTextContainer.text();\r\n var selectedProcentage = jQuery('.dropdown-menu .fontsize li.selected-size').text();\r\n jQuery('button.dropdown-toggle__enlarge-text').attr(\"aria-label\", $fontsizeText+ \" er sat til \" +selectedProcentage+ \". Du kan ændre procenten her.\");\r\n }\r\n\r\n jQuery('.dropdown-menu .fontsize li').on('click',function(){\r\n jQuery('.dropdown-menu .fontsize li').removeClass('selected-size');\r\n jQuery('.dropdown-menu .fontsize button').attr(\"aria-pressed\", \"false\");\r\n jQuery(this).addClass('selected-size');\r\n jQuery(this).find('button').attr('aria-pressed', 'true');\r\n var selectedSize = parseInt(jQuery(this).text().replace('%',''))/100;\r\n var selectedProcentage = jQuery(this).text();\r\n jQuery('.article-wrapper').css({'font-size': selectedSize+'em','line-height': selectedSize+'em'});\r\n jQuery('button.dropdown-toggle__enlarge-text').attr(\"aria-label\", $fontsizeText+ \" er sat til \" +selectedProcentage+ \". Du kan ændre procenten her.\");\r\n });\r\n\r\n jQuery(document).off('click', '.dropdown-toggle__share');\r\n jQuery(document).on('click', '.dropdown-toggle__share', function () {\r\n jQuery('.btn-tooltip').removeClass(\"show\");\r\n jQuery(this).attr(\"aria-expanded\", \"false\");\r\n jQuery(this).siblings('.dropdown-menu').toggleClass('show');\r\n\r\n if (jQuery(this).siblings('.dropdown-menu').hasClass(\"show\")) {\r\n jQuery(this).attr(\"aria-expanded\", \"true\");\r\n\r\n jQuery('body').on('click', function (e) {\r\n if (!jQuery('.dropdown-toggle__share').is(e.target) && jQuery('.dropdown-toggle__share').has(e.target).length === 0 && jQuery('.show').has(e.target).length === 0) {\r\n jQuery('.dropdown-toggle__share').siblings('.dropdown-menu').removeClass(\"show\");\r\n jQuery('.dropdown-toggle__share').attr(\"aria-expanded\", \"false\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n jQuery(document).off('click', '.shareLinkJs');\r\n jQuery(document).on('click', '.shareLinkJs', function () {\r\n copyText();\r\n });\r\n\r\n function copyText() {\r\n /* Get the text field */\r\n var copyText = jQuery(\"#copiedText\").val();\r\n copyTextToClipboard(copyText)\r\n jQuery('.btn-tooltip').addClass(\"show\");\r\n }\r\n\r\n function fallbackCopyTextToClipboard(text) {\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.value = text;\r\n\r\n // Avoid scrolling to bottom\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"fixed\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n // var successful = document.execCommand('copy');\r\n // var msg = successful ? 'successful' : 'unsuccessful';\r\n } catch (err) {\r\n console.error('Fallback: Oops, unable to copy', err);\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n }\r\n\r\n function copyTextToClipboard(text) {\r\n if (!navigator.clipboard) {\r\n fallbackCopyTextToClipboard(text);\r\n return;\r\n }\r\n navigator.clipboard.writeText(text).then(function() {\r\n console.log('Async: Copying to clipboard was successful!');\r\n }, function(err) {\r\n console.error('Async: Could not copy text: ', err);\r\n });\r\n }\r\n\r\n //removed 5/1 2023. If it works after deploy, this can be deleted\r\n/* // Adgang med tegn\r\n if(document.querySelector('#adgangMedTegn')){\r\n //remove existing Cookie\r\n let url = window.location.pathname;\r\n let path = url.substring(0, url.lastIndexOf('/'));\r\n Cookies.remove('SignIsActive', { path: path})\r\n } */\r\n\r\n //Save function\r\n if(document.querySelector('.js-save-button')){\r\n let savedPages = localStorage.getItem('savedPages') ? JSON.parse(localStorage.getItem('savedPages')) : [];\r\n const saveButtons = document.querySelectorAll('.js-save-button')\r\n\r\n //set buttons as active if page is already saved\r\n if(savedPages.includes(saveButtons[0].getAttribute('data-page-id'))){\r\n saveButtons.forEach(button => button.classList.remove('inactive'))\r\n }\r\n\r\n //add click event to save button\r\n saveButtons.forEach(button => {\r\n button.addEventListener('click', () => {\r\n\r\n let pageId = button.getAttribute('data-page-id')\r\n\r\n //delete page from saved pages if already saved / unsave\r\n if(savedPages.includes(pageId)){\r\n savedPages.splice(savedPages.indexOf(pageId), 1)\r\n localStorage.setItem('savedPages', JSON.stringify(savedPages))\r\n button.classList.toggle('inactive')\r\n }\r\n\r\n //save page to saved pages if not already saved / save\r\n else {\r\n savedPages.push(pageId)\r\n localStorage.setItem('savedPages', JSON.stringify(savedPages))\r\n button.classList.toggle('inactive')\r\n }\r\n\r\n })\r\n })\r\n }\r\n\r\n}\r\n\r\nexport default serviceMenu;\r\n","/**\r\n * Service menu\r\n * Share by email\r\n */\r\n\r\nexport function serviceMenuShareByEmail() {\r\n // Check if the service menu exists before proceeding\r\n if (jQuery(\".service-menu\").length === 0) {\r\n return;\r\n }\r\n\r\n // Handle email share by link (mailto link)\r\n const emailShareButtons = document.querySelectorAll('.email-share-btn');\r\n\r\n if (emailShareButtons.length > 0) {\r\n emailShareButtons.forEach(button => {\r\n button.addEventListener(\"click\", () => {\r\n // Access the data attributes\r\n const subject = button.dataset.emailSubject || \"\"; // No default subject\r\n const linkText = button.dataset.emailLinkText || \"\"; // No default link text\r\n const body = button.dataset.emailBody || \"\"; // No default body text\r\n\r\n const pageUrl = window.location.href;\r\n\r\n // Construct the email body\r\n const fullBody = `${body}${body ? \"\\n\\n\" : \"\"}${linkText ? `${linkText} ` : \"\"}${pageUrl}`;\r\n\r\n // Open the default email client with subject and body pre-filled\r\n window.location.href = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(fullBody)}`;\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default serviceMenuShareByEmail;\r\n","/*\r\n ** Form elements\r\n ** JS help for custom form elements\r\n */\r\n\r\nexport function formElements() {\r\n\r\n\t// Select-checkboxes\r\n jQuery('.select-checkboxes.dropdown .dropdown-toggle').on('click', function (event) {\r\n console.log('click dropdown-toggle');\r\n var $dropdown = jQuery(this).parent('.dropdown');\r\n var $menu = jQuery(this).siblings('.dropdown-menu');\r\n var isExpanded = jQuery(this).attr('aria-expanded') === 'true';\r\n\r\n // Toggle dropdown visibility\r\n if (isExpanded) {\r\n jQuery(this).attr('aria-expanded', 'false');\r\n $dropdown.removeClass('show');\r\n $menu.removeClass('show');\r\n } else {\r\n jQuery(this).attr('aria-expanded', 'true');\r\n $dropdown.addClass('show');\r\n $menu.addClass('show');\r\n \r\n // Check if dropdown needs to open downward on desktop\r\n if (!isMobileView()) {\r\n // Adjust position if it's too close to the top\r\n var menuOffset = $menu.offset().top;\r\n var viewportHeight = jQuery(window).height();\r\n var dropdownHeight = $menu.outerHeight();\r\n if (menuOffset + dropdownHeight > viewportHeight) {\r\n // $menu.css('top', 'auto'); // Reset top positioning\r\n // $menu.css('bottom', '0'); // Align the dropdown at the bottom\r\n } else {\r\n // $menu.css('bottom', ''); // Reset bottom positioning if enough space\r\n }\r\n }\r\n }\r\n\r\n // Prevent the event from bubbling\r\n event.stopPropagation();\r\n });\r\n\r\n // Close dropdown when clicking outside\r\n jQuery(document).on('click', function (event) {\r\n if (!jQuery(event.target).closest('.select-checkboxes.dropdown').length) {\r\n jQuery('.select-checkboxes.dropdown').each(function () {\r\n jQuery(this).removeClass('show');\r\n jQuery(this).find('.dropdown-menu').removeClass('show');\r\n jQuery(this).find('.dropdown-toggle').attr('aria-expanded', 'false');\r\n });\r\n }\r\n });\r\n\r\n // Mobile view check function\r\n function isMobileView() {\r\n return window.innerWidth <= 768; // You can adjust the breakpoint as needed\r\n }\r\n\r\n\tjQuery('.textarea.with-counterJS textarea').on('input', function () {\r\n\t\tvar maxlength = jQuery(this).attr('maxlength');\r\n\t\tvar currentLength = jQuery(this).val().length;\r\n\t\tlet minLength = jQuery(this).attr('minlength');\r\n\r\n\t\t// disable button and show warning for min length\r\nif (minLength !== undefined) {\r\n\tif (currentLength >= minLength) {\r\n\t\tjQuery(this).parent('.textarea.with-counterJS').find(jQuery('.invalid-feedback')).css('visibility', 'hidden');\r\n\t\tjQuery(this).parents('.feedback-banner__message').find(jQuery('.send-response')).removeAttr('disabled')\r\n\t} else {\r\n\t\tjQuery(this).parent('.textarea.with-counterJS').find(jQuery('.invalid-feedback')).css('visibility', 'visible');\r\n\t\tjQuery(this).parents('.feedback-banner__message').find(jQuery('.send-response')).attr('disabled', 'true')\r\n\t}\r\n}\r\n\r\n\r\n\t\tif (currentLength >= maxlength) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tvar textareaContainer = jQuery(this).parent('.textarea.with-counterJS');\r\n\t\tvar currentLenghtContainer = textareaContainer.find(\r\n\t\t\t'.textarea-counter__currentlength p'\r\n\t\t);\r\n\t\tcurrentLenghtContainer.text(currentLength);\r\n\t});\r\n}\r\n\r\nexport default formElements;\r\n","/**\r\n * Service menu\r\n */\r\n\r\nexport function sideMenu() {\r\n if (jQuery('.side-menu').length < 0) {\r\n return;\r\n }\r\n\r\n //clone sidemenu into header - removed\r\n/* jQuery(window).on(\"load\", function () {\r\n if (this.matchMedia(\"(max-width: 991px)\").matches) {\r\n //const header = jQuery(\".header__megamenu-extended\");\r\n\r\n // Side menu is cloned into the header on mobile\r\n //jQuery(\".side-menu\").clone().insertAfter(\"header .navbar__megamenu-extended\");\r\n\r\n // Main padding same size as header - This overrides the padding set in the header.js file\r\n //var headerHeight = header.outerHeight();\r\n //jQuery('main').css(\"padding-top\", headerHeight);\r\n }\r\n }); */\r\n\r\n jQuery(document).off('click', '.sidemenu__dropdown .dropdown__togglers .dropdown-toggle');\r\n jQuery(document).on('click', '.sidemenu__dropdown .dropdown__togglers .dropdown-toggle', function (e) {\r\n\r\n var $this = jQuery(this);\r\n var $thisDropdown = $this.parent('.dropdown__togglers').parent('.dropdown__list-item');\r\n\r\n if($this.hasClass('show')) {\r\n\r\n $this.removeClass(\"show\");\r\n // $this.attr(\"aria-expanded\", \"false\");\r\n\r\n $thisDropdown.removeClass('show');\r\n $this.siblings('.side-menu__toggle').removeClass('show');\r\n\r\n // $thisDropdown.children('.dropdown-menu').stop().slideUp('show');\r\n $thisDropdown.children('.dropdown-menu').removeClass('show');\r\n } else {\r\n\r\n $this.addClass(\"show\");\r\n // $this.attr(\"aria-expanded\", \"true\");\r\n\r\n $thisDropdown.addClass('show');\r\n $this.siblings('.side-menu__toggle').addClass('show');\r\n\r\n // $thisDropdown.children('.dropdown-menu').stop().slideDown('show');\r\n $thisDropdown.children('.dropdown-menu').addClass('show');\r\n\r\n }\r\n });\r\n\r\n function toggleMobileMenu(e) {\r\n e.preventDefault();\r\n\r\n jQuery('.header__megamenu-extended__search-bar').slideUp();\r\n jQuery('.side-menu').toggleClass('show');\r\n jQuery(this).toggleClass('show');\r\n // jQuery(\"body\").toggleClass(\"position-fixed\");\r\n\r\n if (jQuery(this).hasClass('show')) {\r\n jQuery(this).attr(\"aria-expanded\", \"true\");\r\n } else {\r\n jQuery(this).attr(\"aria-expanded\", \"false\");\r\n }\r\n }\r\n\r\n jQuery(window).on(\"load\", function () {\r\n // Mobile\r\n if (window.matchMedia(\"(max-width: 991px)\").matches) {\r\n jQuery('.side-menu__toggle-mobile').on('click', toggleMobileMenu);\r\n }\r\n });\r\n\r\n jQuery(window).on(\"resize\", function () {\r\n // Mobile\r\n if (window.matchMedia(\"(max-width: 991px)\").matches) {\r\n jQuery('.side-menu__toggle-mobile').off('click', toggleMobileMenu);\r\n jQuery('.side-menu__toggle-mobile').on('click', toggleMobileMenu);\r\n } else {\r\n // If not in mobile mode, remove the event listener\r\n jQuery('.side-menu__toggle-mobile').off('click', toggleMobileMenu);\r\n }\r\n });\r\n}\r\n\r\nexport default sideMenu;\r\n","/**\r\n * Side box counter animation\r\n */\r\n\r\nexport function counterAnimation() {\r\n if (jQuery('.side-boxes__counter').length < 0) {\r\n return;\r\n }\r\n\r\n //each, prop, animate, math, text\r\n\r\n// .animate( properties [, duration ] [, easing ] [, callback ] )\r\n// \"swing\" - moves slower at the beginning/end, but faster in the middle\r\n// \"linear\" - moves in a constant speed\r\n// step : A function to be called after each step of the animation. step takes: now and fx.\r\n// jQuery(selector).prop(name,value)\r\n\r\n // jQuery('.count').each(function() {\r\n\r\n // jQuery(this).prop('counter', -1).animate({\r\n\r\n // counter: jQuery(this).text()\r\n\r\n // }, {\r\n\r\n // duration: 2500,\r\n\r\n // easing: 'swing',\r\n\r\n // step: function(now) {\r\n\r\n // jQuery(this).text(Math.ceil(now));\r\n // }\r\n // });\r\n // });\r\n\r\n\r\n}\r\n\r\nexport default counterAnimation;\r\n","/**\r\n * Modal edit\r\n */\r\n\r\nexport function modalPopup() {\r\n if (jQuery(\".modal-popup\").length == 0) {\r\n\t\treturn;\r\n }\r\n\r\n jQuery('#editLinksForm').validator();\r\n\r\n jQuery(\".btn__modal-popup\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n var $dataId = jQuery(this).attr(\"data-id\");\r\n\r\n jQuery('.modal-popup').each(function (i, item) {\r\n var $id = jQuery(item).attr(\"id\");\r\n\r\n if ($dataId === $id) {\r\n jQuery('#' + $dataId).modal(\"show\");\r\n }\r\n })\r\n\t});\r\n\r\n // Close modal when close btns are clicked\r\n // jQuery(\"button.close\").on(\"click\", function () {\r\n // setTimeout(function () {\r\n\t// \t\tjQuery('.subscription-body').css(\"margin-top\", \"0px\");\r\n\t// \t\tjQuery('.subscription-body').removeClass(\"modal-body__hidden\");\r\n\t// \t\tjQuery('.message-body').addClass(\"modal-body__hidden\")\r\n // }, 1000);\r\n // });\r\n\r\n}\r\n\r\nexport default modalPopup;\r\n","/**\r\n * Tab list scrollable\r\n */\r\n\r\nexport function tabListScrollable() {\r\n if (jQuery('.tab-list--scrollable').length < 0) {\r\n return;\r\n }\r\n\r\n // Web accessibility\r\n jQuery(document).off('click', '.tab-list--scrollable .js-tabs a');\r\n jQuery(document).on('click', '.tab-list--scrollable .js-tabs a', function (e) {\r\n jQuery('.tab-list--scrollable .js-tabs a').attr(\"aria-expanded\", \"false\");\r\n\r\n if (jQuery(this).hasClass(\"active\")) {\r\n jQuery(this).attr(\"aria-expanded\", \"true\");\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default tabListScrollable;\r\n","/*\r\n** Video background\r\n*/\r\n\r\nexport function videoBackground() {\r\n // jQuery(\".background-video video\").controls = false;\r\n\r\n jQuery(\".background-video video, button.background-video__btn\").click(function () {\r\n\r\n if (!jQuery(this).hasClass('background-video__btn')) {\r\n var video = this;\r\n var playBtn = jQuery(this).siblings('button.background-video__btn');\r\n\r\n if (video.paused) {\r\n video.play();\r\n playBtn.removeClass('paused');\r\n playBtn.attr('aria-label', 'Stop afspilning af decorativ video');\r\n } else {\r\n video.pause();\r\n playBtn.addClass('paused');\r\n playBtn.attr('aria-label', 'Start afspilning af decorativ video');\r\n }\r\n } else {\r\n video = jQuery(this).siblings('video');\r\n jQuery(this).addClass('paused');\r\n\r\n if (video[0].paused) {\r\n video[0].play();\r\n jQuery(this).removeClass('paused');\r\n playBtn.attr('aria-label', 'Stop afspilning af decorativ video');\r\n } else {\r\n video[0].pause();\r\n jQuery(this).addClass('paused');\r\n playBtn.attr('aria-label', 'Start afspilning af decorativ video');\r\n }\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default videoBackground;\r\n","export function cludoSearch() {\r\n var accordion = jQuery('.cludo__filter-list');\r\n\r\n // Mobile only\r\n if (window.matchMedia(\"(max-width: 991px)\").matches) {\r\n\r\n if (accordion.length > 0) {\r\n accordion = (function () {\r\n // var $accordion = jQuery('.js-info-box__links__icon');\r\n var $accordion_item = jQuery('.cludo__filter-list');\r\n var $accordion_header = jQuery('.cludo__filter-list__title__toggle');\r\n var $accordion_body = jQuery('.cludo__filter-list__content');\r\n\r\n // default settings\r\n var settings = {\r\n // animation speed\r\n speed: 400,\r\n // close all other accordion items if true\r\n oneOpen: false\r\n };\r\n\r\n return {\r\n // pass configurable object literal\r\n init: function ($settings) {\r\n $accordion_header.off('click');\r\n $accordion_header.on('click', function (e) {\r\n e.preventDefault();\r\n accordion.toggle(jQuery(this));\r\n });\r\n\r\n $.extend(settings, $settings);\r\n\r\n // reveal the active accordion bodies\r\n jQuery('.cludo__filter-list.active').find('> .cludo__filter-list__content').show();\r\n },\r\n\r\n toggle: function ($this) {\r\n // show/hide the clicked accordion item\r\n $this.attr(\"aria-expanded\", \"false\");\r\n $this.closest($accordion_item).toggleClass('active');\r\n $this.closest($accordion_item).find($accordion_body).stop().slideToggle(settings.speed);\r\n\r\n if ($this.closest($accordion_item).hasClass('active')) {\r\n $this.attr(\"aria-expanded\", \"true\");\r\n }\r\n },\r\n\r\n destroy: function () {\r\n $accordion_header.off('click');\r\n\r\n // styling\r\n $accordion_item.find('> .cludo__filter-list__content').hide();\r\n $accordion_item.removeClass('active');\r\n $accordion_item.find('> .cludo__filter-list__content').css(\"height\", \"auto\");\r\n $accordion_item.find('> .cludo__filter-list__content').show();\r\n }\r\n }\r\n })();\r\n\r\n var viewportWidth = jQuery(window).width();\r\n\r\n jQuery(window).on(\"load resize\", function () {\r\n\r\n if (this.matchMedia(\"(max-width: 991px)\").matches) {\r\n accordion.init({\r\n speed: 300,\r\n oneOpen: true\r\n });\r\n }\r\n\r\n if (this.matchMedia(\"(min-width: 991px)\").matches) {\r\n accordion.destroy();\r\n }\r\n\r\n });\r\n\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default cludoSearch;\r\n","/**\r\n * Three column carousel - carousel on tablet down\r\n * https://owlcarousel2.github.io/\r\n */\r\n\r\nimport 'imagesloaded';\r\nimport 'masonry-layout/masonry.js';\r\nimport 'viewerjs/dist/viewer.css';\r\nimport Viewer from 'viewerjs';\r\n\r\nexport function imageGallery() {\r\n\r\n if (jQuery(\".image-gallery\").length == 0) {\r\n\t\treturn;\r\n }\r\n\r\n jQuery('.image-gallery').imagesLoaded(function(){\r\n jQuery('.image-gallery').masonry({\r\n itemSelector: '.image-gallery__item',\r\n horizontalOrder: true,\r\n percentPosition: true\r\n });\r\n });\r\n\r\n var imageGallery = jQuery(\".image-gallery\");\r\n imageGallery.each(function(index, element) {\r\n\r\n new Viewer(element, {\r\n backdrop: true,\r\n button:true,\r\n inheritedAttributes: ['data-caption'],\r\n title: function(image) {\r\n var imgCaption = image.getAttribute('data-caption')\r\n return imgCaption;\r\n },\r\n url: function(image){\r\n return image.getAttribute('data-src-viewer');\r\n },\r\n toolbar: {\r\n zoomIn: 0,\r\n zoomOut: 0,\r\n oneToOne: 0,\r\n reset: 0,\r\n prev: 1,\r\n play: {\r\n show: 0,\r\n },\r\n next: 1,\r\n rotateLeft: 0,\r\n rotateRight: 0,\r\n flipHorizontal: 0,\r\n flipVertical: 0,\r\n },\r\n transition: false\r\n })\r\n });\r\n}\r\n\r\nexport default imageGallery;\r\n","/**\r\n * Chat\r\n */\r\n\r\nexport function chat() {\r\n\tif(document.querySelector('.chat')) {\r\n\t\tconst maxHeightContainer = jQuery(\".chat-wall--max-height-container\");\r\n\t\tconst windowInnerHeight = window.innerHeight;\r\n\t\tconst header = jQuery(\".header__megamenu-extended\");\r\n\t\tconst headerHeight = header.outerHeight();\r\n\r\n\t\t//Toggle comments\r\n\t\t//Comment button\r\n\t\tconst commentBtnElements = document.querySelectorAll('.js-button-comment');\r\n\t\tcommentBtnElements.forEach((btn) => {\r\n\t\t\tconst commentsContainer = btn.parentNode.parentNode.querySelector('.chat__feed__item__comments');\r\n\r\n\t\t\tbtn.addEventListener('click', () => {\r\n\t\t\t\tif(commentsContainer.classList.contains('collapsed')){\r\n\t\t\t\t\tcommentsContainer.classList.remove('collapsed')\r\n\t\t\t\t\tcommentsContainer.querySelectorAll('input')[Array.length - 1].focus();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcommentsContainer.classList.add('collapsed')\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t})\r\n\r\n\t\t// Get the content editable

              element\r\n\t\tconst editorContainer = document.querySelector('#editor-container');\r\n\t\tconst chatPostContainer = document.querySelector('.chat__post__form--container')\r\n\r\n\t\t// Add a focus event listener to the

              element\r\n\t\teditorContainer.addEventListener('focusin', function() {\r\n\t\t\tchatPostContainer.classList.remove('collapsed')\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tchatPostContainer.style.overflow = 'visible'\r\n\t\t\t}, 200)\r\n\r\n\t\t});\r\n\r\n\t\t//add close functionality to button\r\n\t\tconst closeBtnEelement = document.querySelector('.chat__post__form--close-btn')\r\n\t\t// console.log(closeBtnEelement)\r\n\t\tif(closeBtnEelement != undefined) {\r\n\t\t\tcloseBtnEelement.addEventListener('click', function(){\r\n\t\t\t\tchatPostContainer.classList.add('collapsed')\r\n\t\t\t\tchatPostContainer.style.overflow = 'hidden'\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tjQuery(document).ready(function () {\r\n\t\t\tjQuery('button.chat-dropdown-toggle').on('click', function () {\r\n\t\t\t\tjQuery(this).toggleClass('show');\r\n\t\t\t\tjQuery(this).siblings(' .chat-dropdown-menu').toggleClass('show');\r\n\t\t\t});\r\n\r\n\t\t\t// Close filter selection on click outside toggle selection\r\n\t\t\tjQuery(document).mouseup(function(e) {\r\n\t\t\t\tvar container = jQuery(\".chat-dropdown\");\r\n\r\n\t\t\t\t// if the target of the click isn't the container\r\n\t\t\t\tif (!container.is(e.target) && container.has(e.target).length === 0) {\r\n\t\t\t\t\tif(jQuery('.chat-dropdown .chat-dropdown-toggle').hasClass('show')) {\r\n\t\t\t\t\t\tjQuery('.chat-dropdown .chat-dropdown-toggle').removeClass('show');\r\n\t\t\t\t\t\tjQuery('.chat-dropdown .chat-dropdown-menu').removeClass('show');\r\n\t\t\t\t\t\tjQuery('.chat-dropdown .chat-dropdown-toggle').attr(\"aria-expanded\", \"false\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Chat-wall measure height for 'max-height-container'\r\n\t\t\tif (window.matchMedia('(min-width: 1200px)').matches) {\r\n\t\t\t\tsetMaxHeightContainer();\r\n\t\t\t}\r\n\r\n\t\t\tfunction setMaxHeightContainer() {\r\n\t\t\t\tif(maxHeightContainer.length > 0) {\r\n\t\t\t\t\tjQuery(window).on( 'scroll', function(){\r\n\t\t\t\t\t\tif (jQuery(window).scrollTop() < 800){\r\n\t\t\t\t\t\t\tvar scrollTop = jQuery(window).scrollTop(),\r\n\t\t\t\t\t\t\t\t\telementOffset = maxHeightContainer.offset().top,\r\n\t\t\t\t\t\t\t\t\tdistance = (elementOffset - scrollTop);\r\n\r\n\t\t\t\t\t\t\tmaxHeightContainer.css({\"maxHeight\": windowInnerHeight - distance - 30+\"px\"});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default chat;\r\n","export default function onShowMoreCard() {\r\n\tconst cardComment = document.querySelectorAll('.js-card__comment');\r\n\r\n\tconst disableFocusable = (element) => {\r\n\t\telement.setAttribute('tabindex', '-1');\r\n\t};\r\n\r\n\tconst enableFocusable = (element) => {\r\n\t\telement.removeAttribute('tabindex');\r\n\t};\r\n\r\n\tconst handleFocusables = (focusables, content) => {\r\n\t\tlet isCollapsed = content.classList.contains('closed');\r\n\r\n\t\tfocusables.forEach((focusable) => {\r\n\t\t\tisCollapsed ? disableFocusable(focusable) : enableFocusable(focusable);\r\n\t\t});\r\n\t};\r\n\r\n\tcardComment.forEach((card) => {\r\n\t\tconst elementButton = card.querySelector('.btn-toggle');\r\n\t\tconst content = card.querySelector('.js-card__comment__content');\r\n\t\tconst focusables = Array.from(card.getElementsByTagName('a'));\r\n\r\n\t\thandleFocusables(focusables, content);\r\n\r\n\t\telementButton.addEventListener('click', () => {\r\n\t\t\thandleFocusables(focusables, content);\r\n\t\t});\r\n\r\n\t});\r\n}\r\n","// var moment = require('moment'); // require\r\nexport function kultunaut() {\r\n if (jQuery(\".kultur-detailedevents\").length > 0) {\r\n getdetailedevents();\r\n }\r\n\r\n if (jQuery(\".kultur-events\").length > 0) {\r\n getevents();\r\n }\r\n}\r\n\r\nfunction getevents() {\r\n var feedList = jQuery(\".kultur-events\");\r\n\r\n feedList.each(function (index) {\r\n var current = jQuery(this).data(\"eventlist\");\r\n var requestData = {\r\n \"feed\": jQuery(this).data(\"feed\"),\r\n \"amount\": jQuery(this).data(\"amount\")\r\n }\r\n\r\n $.get('/umbraco/surface/Kultunaut/GetEvents', requestData, function (data) {\r\n var newData = data.trim();\r\n jQuery(\".kultur-events[data-eventlist='\" + current + \"']\").prepend(newData).hide().fadeIn(600);\r\n\r\n }).fail(function () {\r\n console.log(\"Error in loaded comments\")\r\n });\r\n });\r\n}\r\n\r\nfunction getdetailedevents() {\r\n var feedList = jQuery(\".kultur-detailedevents\");\r\n feedList.each(function (index) {\r\n var current = jQuery(this).data(\"eventlist\");\r\n var requestData = {\r\n \"feed\": jQuery(this).data(\"feed\"),\r\n \"amount\": jQuery(this).data(\"amount\")\r\n }\r\n \r\n $.get('/umbraco/surface/Kultunaut/GetDetailedEvents', requestData, function (data) {\r\n var newData = data.trim();\r\n jQuery(\".kultur-detailedevents[data-eventlist='\" + current + \"']\").prepend(newData).hide().fadeIn(600);\r\n\r\n }).fail(function () {\r\n console.log(\"Error in loaded comments\")\r\n });\r\n });\r\n}\r\n\r\nexport default kultunaut;\r\n","export function kultunautMostPopular() {\r\n\tif (jQuery(\".kultur-popularevents\").length > 0) {\r\n\t\tgetPopularEvents();\r\n\t}\r\n}\r\n\r\nfunction getPopularEvents() {\r\n\tvar feedList = jQuery(\".kultur-popularevents\");\r\n\tfeedList.each(function (index) {\r\n\t\tvar current = jQuery(this).data(\"eventlist\");\r\n\t\tvar requestData = {\r\n\t\t\t\"feed\": jQuery(this).data(\"feed\"),\r\n\t\t}\r\n\t\t$.get('/umbraco/surface/Kultunaut/GetTopEvent', requestData, function (data) {\r\n\t\t\tvar newData = data.trim();\r\n\t\t\tjQuery(\".kultur-popularevents[data-eventlist='\" + current + \"']\").html(newData).hide().fadeIn(600);\r\n\t\t}).fail(function () {\r\n\t\t\tconsole.log(\"Error in loaded events\")\r\n\t\t});\r\n\t});\r\n\r\n}\r\n\r\n\r\nexport default kultunautMostPopular;\r\n","export function dropdownMdDown() {\r\n\r\n\tif (jQuery(\".dropdown--md-down\").length < 0) {\r\n\t\treturn;\r\n }\r\n\r\n jQuery(window).on(\"load resize\", function () {\r\n var $dropdownToggle = jQuery(\".dropdown--md-down .dropdown--md-down-toggle\");\r\n var $dropdownMenu = jQuery('.dropdown--md-down .dropdown--md-down-menu');\r\n\r\n // Tablet down\r\n if (this.matchMedia(\"(max-width: 991.98px)\").matches) {\r\n $dropdownToggle.removeAttr(\"disabled\");\r\n $dropdownToggle.attr(\"aria-expanded\", \"false\");\r\n\r\n // Tablet dropdowns - show\r\n jQuery(document).off('click', '.dropdown--md-down .dropdown--md-down-toggle');\r\n jQuery(document).on('click', '.dropdown--md-down .dropdown--md-down-toggle', function () {\r\n jQuery(this).attr(\"aria-expanded\", \"true\");\r\n jQuery(this).toggleClass('show');\r\n jQuery(this).parents('.dropdown--md-down').toggleClass('show');\r\n jQuery(this).siblings('.dropdown--md-down-menu').slideToggle('show');\r\n // jQuery('body').toggleClass('dropdown--md-down--open');\r\n });\r\n\r\n // Tablet dropdowns - close\r\n jQuery(document).off('click', '.dropdown--md-down .show');\r\n jQuery(document).on('click', '.dropdown--md-down .show', function () {\r\n jQuery(this).attr(\"aria-expanded\", \"false\");\r\n jQuery(this).removeClass('show');\r\n jQuery(this).children('.dropdown--md-down-toggle').removeClass('show');\r\n jQuery(this).children('.dropdown--md-down-menu').removeClass('show');\r\n // jQuery('body').removeClass('dropdown--md-down--open');\r\n });\r\n\r\n // Tablet down - disable dropdowns on click outside\r\n // document.addEventListener(\r\n // \"click\",\r\n // (event) => {\r\n // let target = event.target;\r\n // // diable button, ready to open input on click.\r\n // if (!target.closest(\".dropdown--md-down\")) {\r\n // $dropdownToggle.removeClass('show');\r\n // $dropdownMenu.removeClass('show');\r\n // $dropdownToggle.removeAttr(\"aria-expanded\");\r\n // $dropdownMenu.css(\"display\", \"\");\r\n // // jQuery('body').removeClass('dropdown--md-down--open');\r\n // }\r\n // },\r\n // false\r\n // );\r\n } else {\r\n $dropdownToggle.attr(\"disabled\");\r\n jQuery(document).off('click', '.dropdown--md-down .dropdown--md-down-toggle');\r\n jQuery(document).off('click', '.dropdown--md-down .show');\r\n }\r\n\r\n if (this.matchMedia(\"(min-width: 991.98px)\").matches) {\r\n // Tablet up - disable dropdowns\r\n $dropdownToggle.attr(\"disabled\", \"disabled\");\r\n $dropdownToggle.removeAttr(\"aria-expanded\");\r\n $dropdownMenu.css(\"display\", \"\");\r\n $dropdownToggle.removeClass('show');\r\n\r\n if (jQuery('.dropdown--md-down').hasClass('.show')) {\r\n $dropdownToggle.removeClass('show');\r\n $dropdownMenu.removeClass('show');\r\n // jQuery('body').removeClass('dropdown--md-down--open');\r\n }\r\n }\r\n });\r\n\r\n}\r\n\r\nexport default dropdownMdDown;\r\n","import checkHolidays from \"../../table-hours/checkHolidays\";\r\n\r\nexport function bannerHours(){\r\n var currentday = new Date();//\"2022-12-25 12:00:00\"\r\n if(document.querySelector('.banner__hours')){\r\n let dayCols = document.querySelectorAll('.js-banner__hours__days')\r\n const date = new Date(currentday);\r\n const dayNumber = date.getDay();\r\n const holidays = checkHolidays(date)\r\n\r\n //function that returns true or false to whether current day is within the custom closing period. Takes two dates as argument in format YYYY-MM-DD\r\n function checkCustomCloseDays(start, end){\r\n let startDay = new Date(`${start}T00:00:01`)\r\n let endDay = new Date(`${end}T23:59:59`)\r\n let today = new Date();\r\n let startTimestamp = startDay.getTime()\r\n let endTimestamp = endDay.getTime()\r\n let currentTimestamp = today.getTime()\r\n if (currentTimestamp >= startTimestamp && currentTimestamp <= endTimestamp){ return true\r\n } else { return false }\r\n }\r\n\r\n //function that sets the strings for custom closed days\r\n function customCloseDays(day, start, end, indicator){\r\n let months = [' jan.', ' feb.', ' mar.', ' apr.', ' maj', ' jun.', ' jul.', ' aug.', ' sep.', ' okt.', ' nov.', ' dec.'];\r\n let endDate = new Date(end);\r\n let startDate = new Date(start);\r\n let spans = day.children;\r\n\r\n let endDateFormatted = `${endDate.getDate()}. ${months[endDate.getMonth()]} ${endDate.getFullYear()}`\r\n let startDateFormatted = `${startDate.getDate()}. ${months[startDate.getMonth()]} ${startDate.getFullYear()}`\r\n\r\n spans[0].textContent = 'Lukket'\r\n spans[0].classList.add('closed');\r\n if(spans[1]){\r\n for(let i = 1; i < spans.length; i++){\r\n spans[i].classList.add('hidden')\r\n }\r\n }\r\n indicator.classList.add('hidden')\r\n day.parentElement.querySelector('.js-info-close-dates').classList.remove('hidden');\r\n //check if only closed on one day\r\n if(start == end || !end){\r\n let spans = day.parentElement.querySelector('.js-info-close-dates').children\r\n spans[1].classList.add('hidden')\r\n spans[2].classList.add('hidden')\r\n }\r\n day.parentElement.querySelector('.js-close-start').textContent = startDateFormatted\r\n day.parentElement.querySelector('.js-close-end').textContent = endDateFormatted\r\n }\r\n\r\n //function that returns next open day and time as a string. Returns false if next open day is a custom closed day\r\n function FindNextOpenDay(day, dayNumber, closedDay){\r\n let weekdays = ['Søndag','Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']\r\n let nextOpenDay;\r\n let nextOpenDayNumber;\r\n let i = dayNumber;\r\n let tomorrowStatus;\r\n let counter = 0\r\n let nextOpenDayDate = false\r\n let today = new Date(currentday)\r\n\r\n //finds next open day\r\n i++\r\n if(i > 6){i = 0}\r\n //run loop while day is holiday or day contains 'closed' class (and counter is less than 7, to prevent infinite loop)\r\n while((checkHolidays(today).isHoliday || day.parentNode.querySelector(`.js-day-${i}`).getElementsByTagName('span')[0].classList.contains('closed')) && counter <= 7){\r\n today.setDate(today.getDate() + 1);\r\n i++;\r\n counter++;\r\n if(i > 6){\r\n i = 0\r\n }\r\n }\r\n\r\n //check if next open day is custom close day\r\n if(counter == 0){\r\n today.setDate(today.getDate() + 1);\r\n nextOpenDayDate = today.toISOString().substring(0, 10);\r\n } else {\r\n nextOpenDayDate = today.toISOString().substring(0, 10);\r\n }\r\n let isClosedDay = nextOpenDayDate == closedDay\r\n\r\n \r\n //construct strings with default next open day and time\r\n\r\n nextOpenDay = day.parentNode.querySelector(`.js-day-${i}`)\r\n nextOpenDayNumber = parseInt(nextOpenDay.classList[1].replace('js-day-', ''))\r\n\r\n //if no open times are set, return blank string (prevent infinite loop)\r\n if(counter > 6){ return ' '}\r\n\r\n //if next open day is a custom closed day\r\n if(isClosedDay){\r\n return false\r\n }\r\n\r\n //default, return next open day and time\r\n return `${weekdays[nextOpenDayNumber]} kl. ${nextOpenDay.getElementsByTagName('span')[0].textContent}`\r\n }\r\n \r\n dayCols.forEach((col) => {\r\n let days = col.querySelectorAll('.info-time');\r\n \r\n days.forEach(day => {\r\n if(day.classList.contains(`js-day-${dayNumber}`)){\r\n day.classList.remove('hidden')\r\n \r\n if(day.getElementsByTagName('span')[0].classList){\r\n \r\n let statusIndicatorText = day.parentElement.querySelector('.info-status')\r\n let statusIndicator = day.parentElement.querySelector('.info-status-indicator')\r\n \r\n let currentDayOpenTime = day.querySelector('.open') ? parseFloat(day.querySelector('.open').textContent.replace(\":\",\".\")) : false;\r\n let currentDayClosingTime = day.querySelector('.close') ? parseFloat(day.querySelector('.close').textContent.replace(\":\",\".\")) : false;\r\n let currentDayOpenTimeTwo = day.querySelector('.openTwo') ? parseFloat(day.querySelector('.openTwo').textContent.replace(\":\",\".\")) : false;\r\n let currentDayClosingTimeTwo = day.querySelector('.closeTwo') ? parseFloat(day.querySelector('.closeTwo').textContent.replace(\":\",\".\")) : false;\r\n let busyTimeStart = day.querySelector('.js-busy-start') ? parseFloat(day.querySelector('.js-busy-start').textContent.replace(\":\",\".\")) : false;\r\n let busyTimeEnd = day.querySelector('.js-busy-end') ? parseFloat(day.querySelector('.js-busy-end').textContent.replace(\":\",\".\")) : false;\r\n \r\n let closedDayStart = day.parentElement.querySelector('.js-close-start') ? day.parentElement.querySelector('.js-close-start').textContent.replace(\":\",\".\") : false\r\n let closedDayEnd = day.parentElement.querySelector('.js-close-end') ? day.parentElement.querySelector('.js-close-end').textContent.replace(\":\",\".\") : false\r\n \r\n let currentTime = parseFloat(`${date.getHours()}.${date.getMinutes()}`)\r\n\r\n //check if within custom close days\r\n if(closedDayStart && checkCustomCloseDays(closedDayStart, closedDayEnd)){\r\n customCloseDays(day, closedDayStart, closedDayEnd, statusIndicatorText)\r\n }\r\n \r\n //check if closed\r\n else if(day.getElementsByTagName('span')[0].classList.contains('closed')){\r\n var NextOpenDay = FindNextOpenDay(day, dayNumber, closedDayStart)\r\n statusIndicator.classList.add('hidden')\r\n if(!NextOpenDay){ customCloseDays(day, closedDayStart, closedDayEnd, statusIndicatorText) }\r\n else {\r\n statusIndicatorText.textContent = NextOpenDay;\r\n }\r\n if(NextOpenDay == \" \") {\r\n statusIndicatorText.classList.add('hidden')\r\n busyTimeEnd.classList.add('hidden')\r\n }\r\n } \r\n //check if holiday\r\n else if(holidays.isHoliday){\r\n let spans = day.children;\r\n spans[1].classList.add('closed');\r\n spans[1].textContent = 'Lukket pga. helligdag, åbner igen'\r\n \r\n if(spans[1]){\r\n spans[0].classList.add('hidden')\r\n spans[2].classList.add('hidden')\r\n }\r\n if(currentDayOpenTimeTwo){\r\n spans[3].classList.add('hidden')\r\n spans[4].classList.add('hidden')\r\n spans[5].classList.add('hidden')\r\n spans[6].classList.add('hidden')\r\n }\r\n\r\n statusIndicator.classList.add('hidden')\r\n if(FindNextOpenDay(day, dayNumber, closedDayStart)){\r\n statusIndicatorText.textContent = FindNextOpenDay(day, dayNumber, closedDayStart)\r\n } else { FindNextOpenDay(day, dayNumber, closedDayStart) } \r\n } \r\n \r\n //check if current time is within first opening hours\r\n else if(currentDayOpenTime && (currentTime > currentDayOpenTime && currentTime < currentDayClosingTime)){\r\n \r\n //check if within busy time\r\n if(busyTimeStart && (currentTime > busyTimeStart && currentTime < busyTimeEnd)){\r\n statusIndicator.classList.add('busy')\r\n statusIndicatorText.classList.add('busy')\r\n day.parentElement.querySelector('.info-status-text').textContent = 'Åbent,'\r\n day.parentElement.querySelector('.info-status-busy').textContent = ` men travlt indtil kl. ${busyTimeEnd}`\r\n } else {\r\n\r\n //if open, outside busy time\r\n if(busyTimeStart){\r\n day.parentElement.querySelector('.info-status-busy').classList.add('hidden')\r\n //day.parentElement.querySelector('.js-busy-end').classList.add('hidden')\r\n statusIndicator.classList.add('open')\r\n\r\n //if no busy time set\r\n } else {\r\n day.parentElement.querySelector('.info-status-busy').classList.add('hidden')\r\n }\r\n statusIndicator.classList.add('open')\r\n statusIndicatorText.classList.add('open')\r\n }\r\n } \r\n\r\n // check if current time is within second opening hours \r\n else if(currentDayOpenTimeTwo && (currentTime > currentDayOpenTimeTwo && currentTime < currentDayClosingTimeTwo)){\r\n //check if within busy time\r\n if(busyTimeStart && (currentTime > busyTimeStart && currentTime < busyTimeEnd)){\r\n statusIndicator.classList.add('busy')\r\n statusIndicatorText.classList.add('busy')\r\n day.parentElement.querySelector('.info-status-text').textContent = 'Åbent,'\r\n day.parentElement.querySelector('.info-status-busy').textContent = ` men travlt indtil kl. ${busyTimeEnd}`\r\n } else {\r\n\r\n //if open, outside busy time\r\n if(busyTimeStart){\r\n day.parentElement.querySelector('.info-status-busy').classList.add('hidden')\r\n //day.parentElement.querySelector('.js-busy-end').classList.add('hidden')\r\n statusIndicator.classList.add('open')\r\n\r\n //if no busy time set\r\n } else {\r\n day.parentElement.querySelector('.info-status-busy').classList.add('hidden')\r\n }\r\n statusIndicator.classList.add('open')\r\n statusIndicatorText.classList.add('open')\r\n }\r\n }\r\n \r\n //check if before opening hours (opens later today)\r\n else if (currentDayOpenTime && (currentTime < currentDayOpenTime)) {\r\n statusIndicator.classList.add('closed')\r\n day.parentElement.querySelector('.info-status-text').textContent = `Lukket `\r\n day.parentElement.querySelector('.info-status-busy').textContent = `| Åbner kl. ${day.querySelector('.open').textContent}`\r\n day.parentElement.querySelector('.info-status-text').classList.add('closed')\r\n day.parentElement.querySelector('.info-status-busy').classList.add('closed')\r\n //day.parentElement.querySelector('.js-busy-end').classList.add('hidden')\r\n }\r\n //check if before second opening hours (opens later today)\r\n else if (currentDayOpenTimeTwo && (currentTime < currentDayOpenTimeTwo)) {\r\n statusIndicator.classList.add('closed')\r\n day.parentElement.querySelector('.info-status-text').textContent = `Lukket `\r\n day.parentElement.querySelector('.info-status-busy').textContent = `| Åbner kl. ${day.querySelector('.openTwo').textContent}`\r\n day.parentElement.querySelector('.info-status-text').classList.add('closed')\r\n day.parentElement.querySelector('.info-status-busy').classList.add('closed')\r\n //day.parentElement.querySelector('.js-busy-end').classList.add('hidden')\r\n }\r\n // else, closed\r\n else {\r\n\r\n let spans = day.children;\r\n let nextOpenDay = FindNextOpenDay(day, dayNumber, closedDayStart)\r\n if(nextOpenDay){\r\n spans[1].classList.add('closed');\r\n spans[1].textContent = 'Lukket, åbner igen'\r\n statusIndicatorText.textContent = nextOpenDay;\r\n if(spans[1]){\r\n spans[0].classList.add('hidden')\r\n spans[2].classList.add('hidden')\r\n }\r\n if(currentDayOpenTimeTwo){\r\n spans[3].classList.add('hidden')\r\n spans[4].classList.add('hidden')\r\n spans[5].classList.add('hidden')\r\n spans[6].classList.add('hidden')\r\n }\r\n } else {\r\n customCloseDays(day, closedDayStart, closedDayEnd, statusIndicatorText)\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n })\r\n\r\n })\r\n\r\n }\r\n}\r\n\r\nexport default bannerHours\r\n","function breadcrumb() {\r\n\r\n\tif (jQuery('.dynamic-service-menu').length === 0) {\r\n\t\treturn\r\n\t}\r\n\r\n\tconst breadcrumbContainer = jQuery('.breadcrumb-container');\r\n\tconst articleWrapper = jQuery('.article-wrapper');\r\n\tconst serviceMenuElement = '

                ';\r\n\tlet noArticleServiceMenu;\r\n\tlet noBreadcrumbServiceMenu;\r\n\tlet breadcrumbServiceMenu = jQuery(breadcrumbContainer).find('.service-menu')[0];\r\n\tlet articleServiceMenu = jQuery(articleWrapper).find('.service-menu')[0];\r\n\r\n\tconst initialBreadcrumbServiceMenuItems = jQuery(breadcrumbServiceMenu).find(\r\n\t\t'.service-menu__item'\r\n\t);\r\n\tconst initialArticleServiceMenuItems = jQuery(articleServiceMenu).find(\r\n\t\t'.service-menu__item'\r\n\t);\r\n\r\n\t// used to insert a DOM element in relation to another element\r\n\tconst insertElement = (position, relationalElement, element) => {\r\n\t\tswitch (position) {\r\n\t\t\tcase 'before':\r\n\t\t\t\tjQuery(element).insertBefore(jQuery(relationalElement));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'after':\r\n\t\t\t\tjQuery(element).insertAfter(jQuery(relationalElement));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'append':\r\n\t\t\t\tjQuery(relationalElement).append(element);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'prepend':\r\n\t\t\t\tjQuery(relationalElement).prepend(element);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t// Creates a breadcrumb service menu if it does not exist\r\n\tconst createBreadcumbServiceMenu = () => {\r\n\t\tnoBreadcrumbServiceMenu =\r\n\t\t\tjQuery(breadcrumbContainer).find('.service-menu')[0] === undefined;\r\n\r\n\t\tif (noBreadcrumbServiceMenu) {\r\n\t\t\tinsertElement('append', '.breadcrumb-container', serviceMenuElement);\r\n\r\n\t\t\t// Change variable to newly added element\r\n\t\t\tbreadcrumbServiceMenu = jQuery(breadcrumbContainer).find('.service-menu')[0];\r\n\t\t}\r\n\t};\r\n\r\n\t// Creates an article service menu if it does not exist\r\n\tconst createArticleServiceMenu = () => {\r\n\t\tnoArticleServiceMenu =\r\n\t\t\tjQuery(articleWrapper).find('.service-menu')[0] === undefined;\r\n\r\n\t\tif (noArticleServiceMenu) {\r\n\t\t\tinsertElement('append', '.service-menu-container', serviceMenuElement);\r\n\r\n\t\t\t// Change variable to newly added element\r\n\t\t\tarticleServiceMenu = jQuery(articleWrapper).find('.service-menu')[0];\r\n\t\t}\r\n\t};\r\n\r\n\tconst moveBreadCrumb = () => {\r\n\t\t//if tablet or mobile\r\n\t\tif (window.matchMedia('(max-width: 767px)').matches) {\r\n\t\t\tcreateArticleServiceMenu();\r\n\r\n\t\t\t// Gets the new service menu items of the article\r\n\t\t\tconst currentArticleServiceMenuItem = jQuery(articleServiceMenu).find(\r\n\t\t\t\t'.service-menu__item'\r\n\t\t\t);\r\n\r\n\t\t\t// If the service menu items length is unchanged, add the initial\r\n\t\t\t// breadcrumb items and remove the empty list\r\n\t\t\tif (\r\n\t\t\t\tcurrentArticleServiceMenuItem.length ===\r\n\t\t\t\tinitialArticleServiceMenuItems.length\r\n\t\t\t) {\r\n\t\t\t\tjQuery(articleServiceMenu).append(jQuery(initialBreadcrumbServiceMenuItems));\r\n\t\t\t\tjQuery(breadcrumbServiceMenu).remove();\r\n\t\t\t}\r\n\t\t//if desktop\r\n\t\t} else {\r\n\t\t\tcreateBreadcumbServiceMenu();\r\n\r\n\t\t\t// Gets the new service menu items of the breadcrumb\r\n\t\t\tconst currentBreadcrumbServiceMenuItem = jQuery(breadcrumbServiceMenu).find(\r\n\t\t\t\t'.service-menu__item'\r\n\t\t\t);\r\n\r\n\t\t\t// If the service menu list is empty, add the initial breadcrumb items\r\n\t\t\t// and remove service menu list, if it was initial empty\r\n\t\t\tif (currentBreadcrumbServiceMenuItem.length === 0) {\r\n\t\t\t\t//remove breadcrumb if init breadcrumb length is 0\r\n\t\t\t\tif(jQuery(initialBreadcrumbServiceMenuItems.length === 0)){\r\n\t\t\t\t\tjQuery(breadcrumbServiceMenu).remove()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tjQuery(breadcrumbServiceMenu).append(jQuery(initialBreadcrumbServiceMenuItems));\r\n\t\t\t\t}\r\n\t\t\t\t//jQuery(breadcrumbServiceMenu).append(jQuery(initialBreadcrumbServiceMenuItems));\r\n\r\n\t\t\t\tif (initialArticleServiceMenuItems.length === 0) {\r\n\t\t\t\t\tjQuery(articleServiceMenu).remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tmoveBreadCrumb();\r\n\r\n\tjQuery(window).resize(function () {\r\n\t\tmoveBreadCrumb();\r\n\t});\r\n}\r\n\r\nexport default breadcrumb;\r\n","export function unsaveButton(){\r\n if(document.querySelector(\".js-unsave-button\")){\r\n\r\n const unsaveButtonElements = document.querySelectorAll('.js-unsave-button');\r\n\r\n unsaveButtonElements.forEach(button => {\r\n button.addEventListener('click', () => {\r\n //remove page from local storage array\r\n let savedPages = JSON.parse(localStorage.getItem('savedPages'));\r\n let pageId = button.getAttribute('data-page-id');\r\n savedPages.splice(savedPages.indexOf(pageId), 1)\r\n localStorage.setItem('savedPages', JSON.stringify(savedPages))\r\n\r\n //remove card from page\r\n let card = button.closest('.card__list--title-link');\r\n card.parentNode.removeChild(card);\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport default unsaveButton;\r\n","import checkHolidays from \"./checkHolidays\";\r\n\r\nexport function tableHours() {\r\n if(document.querySelector('.js-table-hours')){\r\n \r\n const tablesNodelist = document.querySelectorAll('.js-table-hours')\r\n\t\tconst date = new Date();\r\n\t\tconst dayNumber = date.getDay();\r\n let counter = 0;\r\n const holidays = checkHolidays(date)\r\n\r\n //function that returns true or false to whether current day is within the custom closing period. Takes two dates as argument in format YYYY-MM-DD\r\n function checkCustomCloseDays(start, end){\r\n let startDay = new Date(`${start}T00:00:01`)\r\n let endDay = new Date(`${end}T23:59:59`)\r\n let today = new Date();\r\n let startTimestamp = startDay.getTime()\r\n let endTimestamp = endDay.getTime()\r\n let currentTimestamp = today.getTime()\r\n if (currentTimestamp >= startTimestamp && currentTimestamp <= endTimestamp){ return true\r\n } else { return false }\r\n }\r\n\r\n //function that sets the strings for custom closed days\r\n function customCloseDays(day, start, end, indicator){\r\n let months = [' jan.', ' feb.', ' mar.', ' apr.', ' maj', ' jun.', ' jul.', ' aug.', ' sep.', ' okt.', ' nov.', ' dec.'];\r\n let endDate = new Date(end);\r\n let startDate = new Date(start);\r\n\r\n let endDateFormatted = `${endDate.getDate()}. ${months[endDate.getMonth()]} ${endDate.getFullYear()}`\r\n let startDateFormatted = `${startDate.getDate()}. ${months[startDate.getMonth()]} ${startDate.getFullYear()}`\r\n\r\n //hides normal status message and displays closed status message\r\n day.parentNode.querySelector('.status').classList.add('hidden')\r\n indicator.classList.remove('hidden')\r\n\r\n day.parentElement.querySelector('.js-close-start').textContent = startDateFormatted\r\n day.parentElement.querySelector('.js-close-end').textContent = endDateFormatted\r\n\r\n //check if only closed on one day\r\n if(start == end || !end){\r\n let spans = day.parentElement.querySelector('.js-info-close-dates').children\r\n spans[3].classList.add('hidden')\r\n spans[4].classList.add('hidden')\r\n day.parentElement.querySelector('.js-close-start').textContent = `den ${startDateFormatted}`\r\n }\r\n }\r\n\r\n //Find next open day function, returns a string with day and opening time\r\n function FindNextOpenDay(day, dayNumber, closedDay){\r\n\r\n let weekdays = ['mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag']\r\n let nextOpenDay;\r\n let nextOpenDayNumber;\r\n let i = dayNumber;\r\n let tomorrowStatus;\r\n let counter = 0;\r\n let nextOpenDayDate\r\n \r\n // get next open day\r\n const today = new Date()\r\n today.setDate(today.getDate() + 1)\r\n i++\r\n if(i > 6){i = 0}\r\n \r\n while((checkHolidays(today).isHoliday || day.parentNode.parentNode.querySelector(`.js-day-${i}`).parentNode.classList.contains('inactive')) && counter < 7){\r\n today.setDate(today.getDate() + 1);\r\n i++;\r\n counter++;\r\n if(i > 6){\r\n i = 0\r\n }\r\n } \r\n //check if next open day is custom close day\r\n nextOpenDayDate = today.toISOString().substring(0, 10);\r\n let isClosedDay = nextOpenDayDate == closedDay\r\n \r\n //if no holidays, find next open day\r\n/* else {\r\n do {\r\n i++;\r\n if(i >= 6){\r\n i = 1\r\n }\r\n counter++;\r\n tomorrowStatus = day.parentNode.parentNode.querySelector(`.js-day-${i}`).parentNode.classList\r\n }\r\n while(tomorrowStatus[0].includes('inactive') && counter < 7) \r\n } */\r\n \r\n nextOpenDay = day.parentNode.parentNode.querySelector(`.js-day-${i}`)\r\n nextOpenDayNumber = parseInt(nextOpenDay.classList[1].replace('js-day-', ''))\r\n if(nextOpenDayNumber == 0){ nextOpenDayNumber = 7 }\r\n if(counter > 6){ return ' ' }\r\n if(isClosedDay) { return false }\r\n return `Åbner ${weekdays[nextOpenDayNumber - 1]} kl. ${nextOpenDay.parentNode.querySelector('.open').textContent}`\r\n }\r\n\r\n // An array of each table with opening hours (corresponds to each week-overview/card)\r\n\r\n let tables = Array.prototype.slice.call(tablesNodelist,0)\r\n //loop over each table\r\n tables.forEach(table => {\r\n let tableDays = table.querySelectorAll('.day')\r\n //update table if there are holidays in the week (and day is not otherwise a closed day)\r\n if(holidays.holidaysInCurrentWeek.includes(true)){\r\n holidays.holidaysInCurrentWeek.forEach((item, index) => {\r\n if(item && tableDays[index].parentNode.classList.contains('active')){\r\n tableDays[index].parentElement.classList.add('inactive')\r\n tableDays[index].parentElement.classList.remove('active')\r\n tableDays[index].parentElement.querySelector('td').textContent = 'Helligdag'\r\n }\r\n })\r\n }\r\n \r\n //find which day is current day and set status message depending on time and parameters\r\n tableDays.forEach(day => {\r\n\r\n if(day.classList.contains(`js-day-${dayNumber}`) && table.parentNode.querySelector('.status')){\r\n //Time variables\r\n let currentDayOpenTime = day.parentNode.querySelector('.open') ? parseFloat(day.parentNode.querySelector('.open').textContent.replace(\":\", \".\")) : false;\r\n let currentDayClosingTime = day.parentNode.querySelector('.close') ? parseFloat(day.parentNode.querySelector('.close').textContent.replace(\":\", \".\")) : false;\r\n let currentDayOpenTimeTwo = day.parentNode.querySelector('.openTwo') ? parseFloat(day.parentNode.querySelector('.openTwo').textContent.replace(\":\", \".\")) : false;\r\n let currentDayClosingTimeTwo = day.parentNode.querySelector('.closeTwo') ? parseFloat(day.parentNode.querySelector('.closeTwo').textContent.replace(\":\", \".\")) : false;\r\n let busyTimeStart = day.parentNode.querySelector('.js-busy-start')? parseFloat(day.parentNode.querySelector('.js-busy-start').textContent.replace(\":\", \".\")) : false;\r\n let busyTimeEnd = day.parentNode.querySelector('.js-busy-end') ? parseFloat(day.parentNode.querySelector('.js-busy-end').textContent.replace(\":\", \".\")) : false;\r\n let currentTime = parseFloat(`${date.getHours()}.${date.getMinutes()}`)\r\n\r\n //Element variables\r\n let statusIndicatorElement = table.parentNode.querySelector('.status-indicator')\r\n let statusTextElement = table.parentNode.querySelector('.status-text')\r\n let statusClosedElement = table.parentNode.querySelector('.status-indicator-closed')\r\n let statusOpenElement = table.parentNode.querySelector('.status-indicator-open')\r\n //let busyTimeEndElement = table.parentNode.querySelector('.js-busy-end')\r\n\r\n //Custom closed day variables\r\n let closedDayIndicator = table.parentElement.querySelector('.js-info-close-dates') ? table.parentElement.querySelector('.js-info-close-dates') : false;\r\n let closedDayStart = table.parentElement.querySelector('.js-close-start') ? table.parentElement.querySelector('.js-close-start').textContent : false\r\n let closedDayEnd = table.parentElement.querySelector('.js-close-end') ? table.parentElement.querySelector('.js-close-end').textContent : false\r\n\r\n //Formatted start date\r\n let months = [' jan.', ' feb.', ' mar.', ' apr.', ' maj', ' jun.', ' jul.', ' aug.', ' sep.', ' okt.', ' nov.', ' dec.'];\r\n let startDate = new Date(closedDayStart);\r\n let startDateFormatted = `den ${startDate.getDate()}. ${months[startDate.getMonth()]} ${startDate.getFullYear()}`\r\n\r\n //check if custom closed day\r\n if(closedDayStart && checkCustomCloseDays(closedDayStart, closedDayEnd)){\r\n customCloseDays(table, closedDayStart, closedDayEnd, closedDayIndicator)\r\n }\r\n\r\n //check if closed today\r\n else if(day.parentNode.classList[0].includes('inactive')){\r\n\r\n if(FindNextOpenDay(day, dayNumber, closedDayStart)){\r\n statusTextElement.textContent = FindNextOpenDay(day, dayNumber, closedDayStart)\r\n statusTextElement.classList.remove('hidden')\r\n } else {\r\n statusTextElement.textContent = startDateFormatted\r\n }\r\n statusIndicatorElement.classList.add('closed-fill')\r\n statusOpenElement.classList.add('hidden')\r\n if(FindNextOpenDay(day, dayNumber, closedDayStart) == \" \"){\r\n statusTextElement.classList.add('hidden')\r\n }\r\n } \r\n\r\n //check if holiday\r\n else if(holidays.isHoliday){\r\n statusIndicatorElement.classList.add('closed-fill')\r\n if(FindNextOpenDay(day, dayNumber, closedDayStart)){\r\n statusTextElement.textContent= `Helligdag. Åbner ${FindNextOpenDay(day, dayNumber, closedDayStart)}`\r\n statusTextElement.classList.remove('hidden')\r\n statusOpenElement.classList.add('hidden')\r\n } else {\r\n statusTextElement.textContent= startDateFormatted\r\n }\r\n } \r\n\r\n //check if open (current time is within opening hours)\r\n else if(currentDayOpenTime && (currentTime >= currentDayOpenTime && currentTime < currentDayClosingTime)){\r\n \r\n //check if within busy time\r\n if(busyTimeStart && (currentTime >= busyTimeStart && currentTime < busyTimeEnd)){\r\n statusIndicatorElement.classList.add('busy-fill')\r\n statusClosedElement.classList.add('hidden')\r\n statusOpenElement.classList.add('busy')\r\n statusOpenElement.classList.remove('opened')\r\n statusTextElement.textContent = `Travlt indtil kl. ${busyTimeEnd}`\r\n } else {\r\n //if open and outside busy time\r\n statusIndicatorElement.classList.add('open-fill')\r\n statusClosedElement.classList.add('hidden')\r\n statusTextElement.textContent = `Lukker kl. ${day.parentNode.querySelector('.close').textContent}`\r\n }\r\n } \r\n\r\n //check if open in second open period (current time is within second opening hours)\r\n else if(currentDayOpenTimeTwo && (currentTime >= currentDayOpenTimeTwo && currentTime < currentDayClosingTimeTwo)){\r\n //check if within busy time\r\n if(busyTimeStart && (currentTime >= busyTimeStart && currentTime < busyTimeEnd)){\r\n statusIndicatorElement.classList.add('busy-fill')\r\n statusClosedElement.classList.add('hidden')\r\n statusOpenElement.classList.add('busy')\r\n statusOpenElement.classList.remove('opened')\r\n statusTextElement.textContent = `Travlt indtil kl. ${busyTimeEnd}`\r\n } else {\r\n //if open and outside busy time\r\n statusIndicatorElement.classList.add('open-fill')\r\n statusClosedElement.classList.add('hidden')\r\n statusTextElement.textContent = `Lukker kl. ${day.parentNode.querySelector('.closeTwo').textContent}`\r\n }\r\n } \r\n\r\n\r\n //check if before opening hours (opens later today)\r\n else if (currentDayOpenTime && (currentTime < currentDayOpenTime)) {\r\n statusIndicatorElement.classList.add('closed-fill')\r\n statusOpenElement.classList.add('hidden')\r\n statusTextElement.textContent = `Åbner kl. ${day.parentNode.querySelector('.open').textContent}`\r\n }\r\n //check if between opening hours (opens again later today)\r\n else if (currentDayOpenTimeTwo && (currentTime < currentDayOpenTimeTwo)) {\r\n statusIndicatorElement.classList.add('closed-fill')\r\n statusOpenElement.classList.add('hidden')\r\n statusTextElement.textContent = `Åbner kl. ${day.parentNode.querySelector('.openTwo').textContent}`\r\n }\r\n //else, closed\r\n else {\r\n statusIndicatorElement.classList.add('closed-fill')\r\n if(FindNextOpenDay(day, dayNumber, closedDayStart)){\r\n statusTextElement.textContent = `${FindNextOpenDay(day, dayNumber, closedDayStart)}`\r\n } else {\r\n statusTextElement.textContent = startDateFormatted\r\n }\r\n statusOpenElement.classList.add('hidden')\r\n }\r\n }\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport default tableHours;","import { debounce } from 'lodash-es';\r\n\r\nexport function tabpanelReworked() {\r\n const ACTIVE_CLASS = \"active\";\r\n const IS_OPEN_CLASS = \"is-open\"; // New class for the container\r\n const TAB_PANEL_SELECTOR = \".tab-panel--container\";\r\n const TAB_CONTROL_SELECTOR = \".tab-control\";\r\n const DESKTOP_PANEL_SELECTOR = \".tab-panel--desktop\";\r\n const MOBILE_PANEL_SELECTOR = \".tab-panel--mobile\";\r\n\r\n if (!document.querySelector(TAB_PANEL_SELECTOR)) return;\r\n\r\n // Helper: Get Active Tab from URL\r\n function getActiveTabFromUrl(id) {\r\n const url = new URL(window.location.href);\r\n const fragment = url.hash.slice(1).split(\"?\")[0]; // Extract fragment before '?'\r\n const queryParams = new URLSearchParams(url.search);\r\n\r\n if (fragment === id) {\r\n const activeTab = queryParams.get(\"activeTab\");\r\n return activeTab !== null ? parseInt(activeTab, 10) : null;\r\n }\r\n return null;\r\n }\r\n\r\n // Helper: Set Active State for Tabs\r\n function setActiveTab(tabPanel, index, isDesktop, allowToggle = true) {\r\n const controls = tabPanel.querySelectorAll(TAB_CONTROL_SELECTOR);\r\n const desktopPanels = tabPanel.querySelectorAll(DESKTOP_PANEL_SELECTOR);\r\n const mobilePanels = tabPanel.querySelectorAll(MOBILE_PANEL_SELECTOR);\r\n\r\n const isAlreadyActive = controls[index]?.classList.contains(ACTIVE_CLASS);\r\n\r\n // Allow toggling if the tab is already active\r\n if (allowToggle && isAlreadyActive) {\r\n controls[index].classList.remove(ACTIVE_CLASS);\r\n controls[index].setAttribute(\"aria-expanded\", \"false\");\r\n if (isDesktop) {\r\n desktopPanels[index]?.classList.remove(ACTIVE_CLASS);\r\n } else {\r\n mobilePanels[index]?.classList.remove(ACTIVE_CLASS);\r\n }\r\n\r\n // Check if no tabs are active and remove the `is-open` class from the container\r\n // const hasActiveTabs = Array.from(controls).some((control) => control.classList.contains(ACTIVE_CLASS));\r\n // tabPanel.classList.toggle(IS_OPEN_CLASS, hasActiveTabs);\r\n\r\n return;\r\n }\r\n\r\n // Loop through all tabs to apply the active class\r\n controls.forEach((control, idx) => {\r\n const isActive = idx === index && (!allowToggle || !isAlreadyActive);\r\n control.classList.toggle(ACTIVE_CLASS, isActive);\r\n control.setAttribute(\"aria-expanded\", isActive ? \"true\" : \"false\");\r\n });\r\n\r\n // Update the panels based on whether it's desktop or mobile\r\n if (isDesktop) {\r\n desktopPanels.forEach((panel, idx) => panel.classList.toggle(ACTIVE_CLASS, idx === index && (!allowToggle || !isAlreadyActive)));\r\n } else {\r\n mobilePanels.forEach((panel, idx) => panel.classList.toggle(ACTIVE_CLASS, idx === index && (!allowToggle || !isAlreadyActive)));\r\n }\r\n\r\n // Check if at least one tab is active and add/remove the `is-open` class\r\n // const hasActiveTabs = Array.from(controls).some((control) => control.classList.contains(ACTIVE_CLASS));\r\n // tabPanel.classList.toggle(IS_OPEN_CLASS, hasActiveTabs);\r\n }\r\n\r\n // Initialize Tabs\r\n document.querySelectorAll(TAB_PANEL_SELECTOR).forEach((tabPanel) => {\r\n const id = tabPanel.id;\r\n const activeTabFromUrl = getActiveTabFromUrl(id); // Get activeTab from URL\r\n const controls = Array.from(tabPanel.querySelectorAll(TAB_CONTROL_SELECTOR));\r\n const isDesktop = window.innerWidth >= 992;\r\n\r\n let initialActiveTab = null;\r\n\r\n // If there's an activeTab in the URL, use that as the initial active tab\r\n if (activeTabFromUrl !== null && activeTabFromUrl < controls.length) {\r\n initialActiveTab = activeTabFromUrl;\r\n } else {\r\n // If no activeTab in the URL, check for the active class in the HTML\r\n const htmlActiveIndex = controls.findIndex((tab) => tab.classList.contains(ACTIVE_CLASS));\r\n\r\n // If the active class is found in the HTML, use that index\r\n if (htmlActiveIndex !== -1) {\r\n initialActiveTab = htmlActiveIndex;\r\n }\r\n }\r\n\r\n // If there's no activeTab defined in the URL or HTML, don't set any tab as active.\r\n if (initialActiveTab !== null) {\r\n setActiveTab(tabPanel, initialActiveTab, isDesktop, false);\r\n }\r\n\r\n // Add event listeners for tab changes\r\n controls.forEach((tab, index) => {\r\n tab.addEventListener(\"click\", () => {\r\n const isDesktop = window.innerWidth >= 992;\r\n setActiveTab(tabPanel, index, isDesktop);\r\n\r\n if (id) {\r\n // Update the URL to reflect the active tab if a tab is active\r\n const url = new URL(window.location.href);\r\n const isTabActive = controls[index].classList.contains(ACTIVE_CLASS);\r\n\r\n if (isTabActive) {\r\n url.hash = `${id}`; // Add the hash fragment to the URL\r\n url.searchParams.set(\"idTab\", `${id}`); // Update the activeTab query parameter\r\n url.searchParams.set(\"activeTab\", index); // Update the activeTab query parameter\r\n } else {\r\n url.hash = \"\"; // Clear the hash fragment\r\n url.searchParams.delete(\"idTab\"); // Update the activeTab query parameter\r\n url.searchParams.delete(\"activeTab\"); // Remove the activeTab query parameter\r\n }\r\n\r\n window.history.replaceState(null, \"\", url.toString()); // Replace history without reload\r\n }\r\n });\r\n });\r\n });\r\n\r\n // Handle Resize Events\r\n let windowSize = window.innerWidth;\r\n window.addEventListener(\r\n \"resize\",\r\n debounce(() => {\r\n const isDesktop = window.innerWidth >= 992;\r\n if ((isDesktop && windowSize < 992) || (!isDesktop && windowSize >= 992)) {\r\n document.querySelectorAll(TAB_PANEL_SELECTOR).forEach((tabPanel) => {\r\n const activeIndex = Array.from(\r\n tabPanel.querySelectorAll(TAB_CONTROL_SELECTOR)\r\n ).findIndex((tab) => tab.classList.contains(ACTIVE_CLASS));\r\n setActiveTab(tabPanel, activeIndex >= 0 ? activeIndex : null, isDesktop, false);\r\n });\r\n windowSize = window.innerWidth;\r\n }\r\n }, 200)\r\n );\r\n}\r\n\r\nexport default tabpanelReworked;\r\n","// Grayscale Script\r\n\r\nexport function greyScaleInit() {\r\n\tconst grayscaleBtnElements = document.querySelectorAll(\".jsGrayscaleToggle\");\r\n\tif (grayscaleBtnElements.length === 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst grayscaleClass = \"grayscale\";\r\n\tconst grayscaleOnClass = \"grayscale--on\";\r\n\tconst grayscaleFilterClass = \"js-grayscale--filter\";\r\n\tconst grayscaleStorageKey = \"colorThemeGrayscale\"; // Unique storage key for grayscale\r\n\r\n\tconst getSelectedGrayscaleTheme = () =>\r\n\t\tlocalStorage.getItem(grayscaleStorageKey);\r\n\r\n\tconst setGrayscaleTheme = (theme) =>\r\n\t\tlocalStorage.setItem(grayscaleStorageKey, theme);\r\n\r\n\t// Target specific elements for the JS functionality\r\n\tconst targetElements = [document.querySelector('header'), document.querySelector('main'), document.querySelector('footer')];\r\n\r\n\tconst updateGrayscaleState = (isGrayscaleActive) => {\r\n\t\t// Apply or remove the filter class from header, main, and footer\r\n\t\ttargetElements.forEach(element => {\r\n\t\t\tif (element) {\r\n\t\t\t\tif (isGrayscaleActive) {\r\n\t\t\t\t\telement.classList.add(grayscaleFilterClass);\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement.classList.remove(grayscaleFilterClass);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Update all buttons to reflect the current state\r\n\t\tgrayscaleBtnElements.forEach((item) => {\r\n\t\t\tif (isGrayscaleActive) {\r\n\t\t\t\titem.classList.add(grayscaleOnClass);\r\n\t\t\t\titem.classList.add(\"active\");\r\n\t\t\t} else {\r\n\t\t\t\titem.classList.remove(grayscaleOnClass);\r\n\t\t\t\titem.classList.remove(\"active\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Update the theme in local storage\r\n\t\tsetGrayscaleTheme(isGrayscaleActive ? grayscaleClass : \"regular\");\r\n\t};\r\n\r\n\tconst grayscaleInitState = () => {\r\n\t\tconst isGrayscaleActive = getSelectedGrayscaleTheme() === grayscaleClass;\r\n\t\tdocument.body.classList.toggle(grayscaleOnClass, isGrayscaleActive);\r\n\t\tupdateGrayscaleState(isGrayscaleActive);\r\n\t};\r\n\r\n\tgrayscaleInitState();\r\n\r\n\t// Ensure only one event listener is added per button\r\n\tconst handleClick = (event) => {\r\n\t\t// console.log('Button clicked:', event.currentTarget);\r\n\t\t// Determine if grayscale is currently active\r\n\t\tconst isGrayscaleActive = !document.body.classList.contains(grayscaleOnClass);\r\n\r\n\t\t// Toggle the grayscale state\r\n\t\tdocument.body.classList.toggle(grayscaleOnClass, isGrayscaleActive);\r\n\t\tupdateGrayscaleState(isGrayscaleActive);\r\n\t};\r\n\r\n\t// Remove any existing event listeners to prevent duplication\r\n\tgrayscaleBtnElements.forEach((button) => {\r\n\t\tbutton.removeEventListener(\"click\", handleClick); // Ensure previous listeners are removed\r\n\t\tbutton.addEventListener(\"click\", handleClick);\r\n\t});\r\n}\r\n\r\nexport default greyScaleInit;","export function darkmodeScale() {\r\n\t\t// Constants\r\n\t\tconst themeSelectors = document.querySelectorAll(\".jsDarkmodeToggle\");\r\n\t\tif (themeSelectors.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst storageKey = \"colorThemeDarkMode\";\r\n\t\tconst lightThemeClass = \"light-theme\";\r\n\t\tconst darkThemeClass = \"dark-theme\";\r\n\t\tconst isDarkSystemTheme =\r\n\t\t\twindow.matchMedia &&\r\n\t\t\twindow.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n\r\n\t\tconst navbrandImg = jQuery(\r\n\t\t\t\".header__megamenu-extended .navbar__megamenu-extended .navbar__megamenu__header .navbar-brand img\",\r\n\t\t);\r\n\t\tconst footerbrandImg = jQuery(\"footer .logo img\");\r\n\t\tconst footerSubbrandImg = jQuery(\"footer .logo img[data-defaultSubLogo]\");\r\n\t\tconst favicon = jQuery(\"link[rel='icon']\");\r\n\t\t// Get the theme preference (dark-theme, light-theme, or null)\r\n\t\tconst getSelectedTheme = () => localStorage.getItem(storageKey);\r\n\r\n\t\t// Set theme helper\r\n\t\tconst setSelectedTheme = (theme) => localStorage.setItem(storageKey, theme);\r\n\r\n\t\t// Functions to add/remove dark/light theme classes\r\n\t\tconst applyDarkModeClasses = () => {\r\n\t\t\tdocument.body.classList.add(darkThemeClass);\r\n\t\t\tdocument.body.classList.remove(lightThemeClass);\r\n\t\t\tsetDarkmodeLogo();\r\n\t\t};\r\n\r\n\t\tconst applyLightModeClasses = () => {\r\n\t\t\tdocument.body.classList.add(lightThemeClass);\r\n\t\t\tdocument.body.classList.remove(darkThemeClass);\r\n\t\t\tsetDefaultLogo();\r\n\t\t};\r\n\r\n\t\t// Handle theme toggle\r\n\t\tconst handleThemeToggle = () => {\r\n\t\t\tconst isDarkModeActive = document.body.classList.toggle(darkThemeClass);\r\n\r\n\t\t\tif (isDarkModeActive) {\r\n\t\t\t\tapplyDarkModeClasses();\r\n\t\t\t\tsetSelectedTheme(darkThemeClass);\r\n\t\t\t} else {\r\n\t\t\t\tapplyLightModeClasses();\r\n\t\t\t\tsetSelectedTheme(lightThemeClass);\r\n\t\t\t}\r\n\r\n\t\t\tthemeSelectors.forEach((item) =>\r\n\t\t\t\titem.classList.toggle(\"active\", isDarkModeActive),\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\t// Initialize the theme on mount\r\n\t\tconst initializeTheme = () => {\r\n\t\t\tconst selectedTheme = getSelectedTheme();\r\n\t\t\tif (selectedTheme === darkThemeClass) {\r\n\t\t\t\tapplyDarkModeClasses();\r\n\t\t\t\tthemeSelectors.forEach((item) => item.classList.add(\"active\"));\r\n\t\t\t} else {\r\n\t\t\t\tapplyLightModeClasses();\r\n\t\t\t}\r\n\r\n\t\t\t// Set favicon based on system dark mode preference\r\n\t\t\tsetFaviconBasedOnSystemTheme();\r\n\t\t};\r\n\r\n\t\t// Set logos and favicon for dark mode\r\n\t\tfunction setDarkmodeLogo() {\r\n\t\t\tconst darkmodeNavLogo = navbrandImg.attr(\"data-darkmodeLogo\");\r\n\t\t\tnavbrandImg.attr(\"src\", darkmodeNavLogo);\r\n\r\n\t\t\tconst darkmodeFooterLogo = footerbrandImg.attr(\"data-darkmodeLogo\");\r\n\t\t\tfooterbrandImg.attr(\"src\", darkmodeFooterLogo);\r\n\r\n\t\t\tconst darkmodeSubFooterLogo = footerSubbrandImg.attr(\r\n\t\t\t\t\"data-darkmodeSubLogo\",\r\n\t\t\t);\r\n\t\t\tfooterSubbrandImg.attr(\"src\", darkmodeSubFooterLogo);\r\n\t\t}\r\n\r\n\t\t// Set logos and favicon for light mode (default)\r\n\t\tfunction setDefaultLogo() {\r\n\t\t\tconst defaultNavLogo = navbrandImg.attr(\"data-defaultLogo\");\r\n\t\t\tnavbrandImg.attr(\"src\", defaultNavLogo);\r\n\r\n\t\t\tconst defaultFooterLogo = footerbrandImg.attr(\"data-defaultLogo\");\r\n\t\t\tfooterbrandImg.attr(\"src\", defaultFooterLogo);\r\n\r\n\t\t\tconst subFooterLogo = footerSubbrandImg.attr(\"data-defaultSubLogo\");\r\n\t\t\tfooterSubbrandImg.attr(\"src\", subFooterLogo);\r\n\t\t}\r\n\r\n\t\t// Set favicon based on system theme preference\r\n\t\tfunction setFaviconBasedOnSystemTheme() {\r\n\t\t\tif (isDarkSystemTheme) {\r\n\t\t\t\tconst darkmodeFavicon = favicon.attr(\"data-darkmode\");\r\n\t\t\t\tfavicon.attr(\"href\", darkmodeFavicon);\r\n\t\t\t} else {\r\n\t\t\t\tconst defaultFavicon = favicon.attr(\"data-default\");\r\n\t\t\t\tfavicon.attr(\"href\", defaultFavicon);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Event listener setup\r\n\t\tthemeSelectors.forEach((button) => {\r\n\t\t\tbutton.addEventListener(\"click\", handleThemeToggle);\r\n\t\t});\r\n\r\n\t\tinitializeTheme();\r\n\t// Initialize on page load\r\n}\r\n\r\nexport default darkmodeScale;\r\n","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\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 = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 524;","__webpack_require__.b = document.baseURI || self.location.href;\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\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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(function(id) { return 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\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcabanaboiler\"] = self[\"webpackChunkcabanaboiler\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], function() { return __webpack_require__(7422); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","suggestionsElements","document","querySelectorAll","removeSuggestions","inputElement","formElement","closest","existingSuggestions","querySelector","remove","highlightItem","items","index","forEach","item","idx","classList","add","scrollIntoView","block","length","suggestionsElement","htmlElement","addEventListener","inputValue","value","pageId","getAttribute","useraffle","lang","fetch","method","headers","then","response","json","data","Array","isArray","suggestionsMarkup","suggestions","markup","searchTermRegex","RegExp","concat","suggestion","highlightedSuggestion","replace","insertAdjacentHTML","button","event","preventDefault","innerText","closestForm","submit","addSuggestionsMarkup","catch","error","console","suggestionsContainer","parentElement","currentIndex","from","findIndex","contains","key","removeTabIndexFromHiddenTables","jQuery","each","this","find","removeAttr","lang_da_mod","table","id","attr","search","searchfield","log","hasClass","entries","all","lenghMenu","pagination","sLengthMenu","searchPlaceholder","sSearch","oPaginate","sNext","sPrevious","sPaginationType","DataTable","ordering","retrieve","Boolean","info","searching","responsive","details","type","columnDefs","className","orderable","targets","setTimeout","css","prop","parent","addTable","window","on","fixedColumns","scrollX","scrollCollapse","initComplete","tableId","headTable","bodyTable","addTableScrollable","warn","_typeof","o","Symbol","iterator","constructor","prototype","_defineProperty","e","r","t","i","toPrimitive","call","TypeError","String","_toPrimitive","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","background","colorRgb","colorValuesArr","colorObject","hexToRgb","hex","m","g","b","result","exec","parseInt","textColorBlackRgb","textColorWhiteRgb","bgc","slice","indexOf","split","luminance","a","map","v","Math","pow","luminanceBgc","luminanceTextWhite","luminanceTextBlack","headerIsFixed","getElementsByClassName","isTransparentHeader","backgroundColorProperty","noBackgroundColor","getElementStyle","element","styleProperty","getComputedStyle","getPropertyValue","toString","setDocumentColor","target","color","root","style","setProperty","setTextColorWhite","getElementById","display","setTextColorBlack","documentElement","openBurgerButton","closeBurgerButton","sidemenu","toggle","_sections$","main","getElementsByTagName","sectionsHTMLcollection","sections","navbarBackground","body","bodyBackgroundColor","headerImage","headerBackgroundColor","navbar","navbarListItems","firstSection","backgroundColor","ratioCheckerPrefersWhite","some","startsWith","hasBannerAbsolute","cls","includes","clientHeight","matchMedia","matches","height","shift","hero","banner","initialSettings","headerImageHeight","mediaBox","mediaBoxInnerColor","mediaBoxOverlayColor","onscroll","throttle","multiBox","inner","overlay","imageHeight","scrollTop","resizeHeader","offsetTop","offsetHeight","sectionBgc","bannerBacgroundColor","handleOnSections","handleScrollEvents","onMount","moveNavItems","topNavBar","navbarLogo","BurgerButton","navbarRight","offset","left","outerWidth","width","burgerButtonLeft","round","checkOverflow","el","clientWidth","scrollWidth","moveLastItem","prepend","addClass","hideBurgerIcon","sideMenuList","removeClass","moveAll","win","insertAfter","date","year","getFullYear","leapYear","easterSunday","f","floor","G","C","H","I","L","month","holidays","currentDateNumber","currentMonth","getMonth","currentDay","getDate","monthLength","yearLength","mandag","getDay","tirsdag","onsdag","torsdag","fredag","lørdag","søndag","næsteUgeMandag","næsteUgeTirsdag","days","holidaysNextWeek","isHoliday","holidaysInCurrentWeek","innerWidth","isVisible","nextElementSibling","activeMenus","undefined","previousElementSibling","setAttribute","transform","hoverIntentTimeout","listElements","clearTimeout","handleHoverIntent","oldScrollHeight","setScrollValues","scrollY","menuElement","paddingTop","newScrollHeight","position","top","headerDoubleLogoTopBar","toggleElements","isCollapsed","setVariables","buttons","closeAllDropdowns","exceptionButton","arguments","dropdown","associatedButton","parentNode","stopPropagation","isActive","getBoundingClientRect","bottom","innerHeight","adjustDropdownPosition","handleClick","Alpine","plugin","collapse","focus","intersect","open","desktop","init","_this","collapseOn","$el","shouldHideButton","updateButtonVisibility","updateAriaLabel","$refs","commentContent","toggleContent","btnToggle","ariaOpen","ariaClose","mobileSearch","mobileSideMenu","focusTrap","desktopSearch","mobileInputFocused","mobileInputValue","updateWindowProperties","toggleMobileMenu","isMobile","doubleLogoMaxWidth","headerLeftAlignedMaxWidth","isMenuTooWide","doubleLogoMenuElement","leftAlignedMenuElement","checkMenuWidth","logoWidth","overflow","searchBar","start","factBox","handleFocusables","disableValue","settings","accordion","objectFitImages","$body","$navbar","$dropdown","$dropdownToggle","$dropdownMenu","$searchbar","$searchbarToggle","$navBackLink","$dropdownToggleTab","$submenuDropdownToggle","$textOpen","$textClose","ignoreScroll","bodyScrollLock","require","disableBodyScroll","enableBodyScroll","$","resetDropdowns","slideUp","headerElement","show","off","get","$this","toggleClass","$navItem","is","relatedTarget","has","superfish","isOpen","slideToggle","popUpSelector","speed","delay","disableHI","onInit","onBeforeShow","onHide","isSearchbarVisible","headerMegamenuExtended","reorderNav","navbarCollapse","primaryContainer","secondaryContainer","containersExist","insertBefore","headerMegamenuTabOrderMobile","navbarToggler","dropdownMegamenu","headerMegamenuFocusTrap","leftAlignedMegamenu","doubleLogoMenu","navigationHandler","navbarDesktop","navbarDesktopItems","navbarMobileMenu","navbarProfile","ensureMobileMenu","append","ensureDesktopMenu","children","checkItemsInBurger","checkForSpace","space","navItems","navItemBurgerList","burgerNavItems","burgerNavLastItem","navbarBrandWidth","after","$navLink","showClass","header","setPaddingMain","headerHeight","outerHeight","siblings","scroll","$sidemenu","$sidemenuToggle","hide","parents","headerWidth","navbarWidth","emptyspace","itemWidth","click","headerHeadroom","options","onPin","currentHeaderHeight","onUnpin","Headroom","headerIntranet","masonryGrid","masonry","itemSelector","columnWidth","percentPosition","originTop","horizontalOrder","heroMultiBox","selector","watermarks","updateWatermark","watermarkmobile","watermarkdesktop","watermark","animate","location","hash","urlHash","substr","test","ready","showMessage","areas","form","success","isNew","isApproved","html","join","isValidEmail","email","validator","modal","val","topics","areaKey","topicsTitles","checkbox","areasTitles","onestring","push","topicsKeys","ajax","url","contentType","dataType","topicKeys","memberPageId","subscriptionModal","onload","paginationPage","go","overThreeItems","$thisCardCarousel","owlCarousel","stagePadding","nav","dots","loop","margin","pullDrag","touchDrag","mouseDrag","responsiveClass","defaults","swiperContainer","swiperClass","optionsData","dataset","swiper","JSON","parse","dottext","shouldEnableSwiper","mobileOnly","_objectSpread","navigation","nextEl","prevEl","renderBullet","ariaLabel","swiperInstance","Swiper","slidePrev","slideNext","initSwipers","modules","Navigation","Pagination","Keyboard","A11y","EffectFade","slidesPerView","spaceBetween","autoHeight","effect","lazy","clickable","keyboard","enabled","links","name","text","anchor","toLocaleLowerCase","toLowerCase","addSection","articleAnchorMenu","oneOpen","localStorage","getItem","$settings","maxHeight","queryString","history","replaceState","pathname","$accordionToggleBtn","stop","slideDown","extend","next","fn","dataTable","isDataTable","columns","adjust","draw","pageLength","substring","targetAccordionItem","not","accordionItem","accordionContainer","openAccordionAndScroll","accordionSection","anchorId","findAccordionSection","accordionInstance","_","activeAccordion","destroy","accordionMobile","accordionDesktopDown","$accordion","$accordion_item","$accordion_toggle","$toggleBtn","newAriaExpanded","$accordionItem","infoboxLinksIcon","resizeTimeout","carousels","startCarousel","carousel","center","$ul","$dot","$li","$button","trigger","replaceWith","eq","desiredItem","desiredItemIndex","resize","progress","max","articleHeight","progressBar","menuHeight","video","visibility","paused","play","pause","createElement","src","parsedUrl","URL","searchParams","autoplay","baseUrl","origin","poster","sourceFullHd","appendChild","sourceHd","sourceNormal","sourceMobile","track","embedId","iframe","appendTo","BorgerDk","folderId","pageUrl","elementId","accordionBodyContents","loadingSpinner","requestData","URLSearchParams","ok","Error","newData","trim","tippy","theme","arrow","maxWidth","placement","hideOnClick","onShow","instance","content","reference","attributes","setContent","mouseenter","mouseleave","$fontsizeText","selectedProcentage","selectedSize","navigator","clipboard","writeText","err","textArea","select","removeChild","fallbackCopyTextToClipboard","savedPages","saveButtons","splice","setItem","stringify","serviceMenu","emailShareButtons","subject","emailSubject","linkText","emailLinkText","emailBody","href","fullBody","encodeURIComponent","serviceMenuShareByEmail","dataTabel","dataTabelScrollable","$menu","maxlength","currentLength","minLength","$thisDropdown","sideMenu","c","node","edge_media_to_caption","edges","title","accessibility_caption","is_tag","username","d","host","tag","container","display_profile","display_biography","display_gallery","display_captions","display_igtv","callback","styling","items_per_row","image_size","lazy_load","cache_time","on_error","instagramFeed","h","entry_data","ProfilePage","TagPage","n","Date","getTime","graphql","user","hashtag","k","l","profile_container","profile_image","profile_name","profile_biography","gallery_image","gallery_image_link","profile_pic_url","j","full_name","biography","p","is_private","q","edge_owner_to_timeline_media","edge_hashtag_to_media","x","s","u","shortcode","__typename","thumbnail_resources","thumbnail_src","edge_felix_video_timeline","w","get_data","fail","status","amount","userid","fadeIn","addInstagramImages","$dataId","$id","playBtn","$accordion_header","$accordion_body","cludoSearch","imagesLoaded","Viewer","backdrop","inheritedAttributes","image","toolbar","zoomIn","zoomOut","oneToOne","reset","prev","rotateLeft","rotateRight","flipHorizontal","flipVertical","transition","maxHeightContainer","windowInnerHeight","btn","commentsContainer","editorContainer","chatPostContainer","closeBtnEelement","mouseup","distance","chat","focusables","richText","focusable","removeAttribute","box","elementButton","cardComment","card","onShowMoreCard","current","currentday","customCloseDays","day","end","indicator","months","endDate","startDate","spans","endDateFormatted","startDateFormatted","textContent","FindNextOpenDay","dayNumber","closedDay","nextOpenDay","nextOpenDayNumber","counter","nextOpenDayDate","today","checkHolidays","setDate","toISOString","isClosedDay","dayCols","col","statusIndicatorText","statusIndicator","currentDayOpenTime","parseFloat","currentDayClosingTime","currentDayOpenTimeTwo","currentDayClosingTimeTwo","busyTimeStart","busyTimeEnd","closedDayStart","closedDayEnd","currentTime","getHours","getMinutes","startDay","endDay","startTimestamp","endTimestamp","currentTimestamp","NextOpenDay","bannerHours","breadcrumbContainer","articleWrapper","serviceMenuElement","breadcrumbServiceMenu","articleServiceMenu","initialBreadcrumbServiceMenuItems","initialArticleServiceMenuItems","insertElement","relationalElement","moveBreadCrumb","breadcrumb","dropdownSettings","autosuggestions","tablesNodelist","tableDays","statusIndicatorElement","statusTextElement","statusClosedElement","statusOpenElement","closedDayIndicator","tableHours","ACTIVE_CLASS","TAB_PANEL_SELECTOR","TAB_CONTROL_SELECTOR","tabPanel","activeTabFromUrl","fragment","queryParams","activeTab","getActiveTabFromUrl","controls","isDesktop","initialActiveTab","htmlActiveIndex","tab","setActiveTab","set","delete","windowSize","debounce","activeIndex","_controls$index","_desktopPanels$index","_mobilePanels$index","allowToggle","desktopPanels","mobilePanels","isAlreadyActive","control","panel","tabpanelReworked","grayscaleBtnElements","isGrayscaleActive","grayscaleClass","grayscaleOnClass","grayscaleFilterClass","grayscaleStorageKey","targetElements","updateGrayscaleState","removeEventListener","greyScaleInit","themeSelectors","storageKey","lightThemeClass","darkThemeClass","isDarkSystemTheme","navbrandImg","footerbrandImg","footerSubbrandImg","favicon","setSelectedTheme","applyDarkModeClasses","darkmodeNavLogo","darkmodeFooterLogo","darkmodeSubFooterLogo","setDarkmodeLogo","applyLightModeClasses","defaultNavLogo","defaultFooterLogo","subFooterLogo","setDefaultLogo","handleThemeToggle","isDarkModeActive","darkmodeFavicon","defaultFavicon","setFaviconBasedOnSystemTheme","darkmodeScale","cssVars","rootElement","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","keys","every","getter","__esModule","definition","globalThis","Function","obj","hasOwnProperty","toStringTag","nmd","paths","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}