{"version":3,"sources":["components.blog-filter.js","components.circle-word.js","components.cookiesetter.js","components.expand-list.js","components.hero.js","components.in-view.js","components.iphone.js","components.language-selector.js","components.load-more.js","components.logo-wall.js","components.pricing-table.js","components.quote-slider.js","components.sidebar-columns.js","components.site-header.js","components.site-nav.js","components.testimonials.js","components.youtube-player.js","master.js"],"names":["svgBlue","svgLime","svgOlive","twentyninetimes","circlWord","init","document","querySelectorAll","forEach","blueCircle","insertAdjacentHTML","limeCircle","oliveCircle","cookieSetter","generateSecureCookieValue","callback","window","crypto","subtle","generateKey","name","length","then","key","exportKey","keyBuffer","buffer","hexKey","Array","prototype","map","call","Uint8Array","x","toString","padStart","join","err","console","error","warn","fallbackRandomValue","substring","Math","random","checkAndSetCookie","cookieName","localStorage","getItem","secureValue","value","setItem","expandLists","expandList","i","expandItems","expandListShowAllTrigger","parentNode","querySelector","threeItemsHeight","currentItem","currentItemHeight","getBoundingClientRect","height","getAttribute","style","maxHeight","addEventListener","classList","contains","remove","add","scrollHeight","setupExpandList","hero","inView","items","itemFunction","inAdvance","itemObserver","active","IntersectionObserver","entries","observer","entry","isIntersecting","item","target","unobserve","rootMargin","concat","observe","itemsInView","setTimeout","filter","removeEventListener","productsContainer","iphone","Swiper","direction","loop","autoplay","allowSlidePrev","allowSlideNext","allowTouchMove","languageSelector","toggle","loadMore","btn_text","btn_load_text","posts_list","btn","load_more_btn","getElementById","btn_wrapper","innerHTML","previousElementSibling","e","xhr","method","action","page","stopPropagation","XMLHttpRequest","load_more_params","ajaxurl","posts","query","current_page","count_elm","open","setRequestHeader","onload","status","responseText","new_posts","listHeight","clientHeight","overflow","listHeightNew","inViewItems","test","childElementCount","post_counter","removeChild","log","response","onerror","alert","logowall","logowalls","block","leftBtn","scrollContainer","rightBtn","scrollBy","left","behavior","pricingtable","pricingTables","currentView","URLSearchParams","location","search","get","table","optionMonthly","switchOptions","switcher","pricelines","option","dataset","url","URL","searchParams","set","history","pushState","price","quotes","el","pagination","clickable","slidesPerView","centeredSlides","delay","nextEl","prevEl","sidebarColumns","copyButton","navigator","clipboard","writeText","siteHeader","_document","curScroll","site_body","body","doc","documentElement","w","prevScroll","scrollY","scrollTop","prevDirection","header","header_height","toggleButtons","overlay","closeButton","overlayToggle","keyPress","closeOverlay","button","onclick","focusField","focus","checkScroll","toggleHeader","navigation","site_header","megaMenuToggles","megaMenuGroups","nav_toggle","depth1","site_nav","parentToggles","setAttribute","event","bodyScrollLock","enableBodyScroll","allSubOpens","openSubMenus","depth0","current_open","site_nav_item","_site_nav_item_timeout","current","site_nav_inner","site_nav_item_timeout","site_nav_timeout","disableBodyScroll","sub_menu_checkbox","label","checked","sub_menu_toggle","getElementsByClassName","sub_menu_checkbox_label","nav_item","visibles","subMenuItems","parentElement","isExpanded","testimonials","setBackground","setCount","slides","index","backgroundContainer","bgUrl","updateSlideOpacity","countEl","setTranslateX","offsetWidth","setActiveSlideClass","slide","checkSlideEnd","prevBtn","nextBtn","slideIndex","countCurrent","countTotal","dialog","slideInfo","playButton","videoFrame","showModal","escListener","close","slideContainer","textContent","youtubePlayer","videoBlocks","videoId","iframe","createElement","appendChild","svg4everybody","circledWords","inViewItems2"],"mappings":"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","file":"master.min.js","sourcesContent":["// \"use strict\";\n// var twentyninetimes = twentyninetimes || {};\n\n// twentyninetimes.blogFilter =\n// twentyninetimes.blogFilter ||\n// (function () {\n// function init() {\n// let filterItems = document.querySelectorAll(\".blog-filter__item\");\n// let postItems = document.querySelectorAll(\".item-post\");\n\n// if (filterItems) {\n// postItems.forEach((item, i) => {\n// setTimeout(() => {\n// item.classList.add(\"reveal-post\");\n// }, i * 50);\n// });\n// filterItems.forEach((item) => {\n// item.addEventListener(\"click\", function () {\n// const catId = this.getAttribute(\"data-cat-id\");\n// history.pushState({}, \"\", `?cat_id=${catId}`);\n\n// postItems.forEach((item, i) => {\n// setTimeout(() => {\n// item.classList.remove(\"reveal-post\");\n// }, i * 50);\n// });\n\n\n// if (catId === null) {\n// fetch(ajaxurl, {\n// method: \"POST\",\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded\",\n// },\n// body: `action=filter_posts_by_category&cat_id=`,\n// })\n// .then((response) => response.text())\n// .then((data) => {\n// document.querySelector(\".loop__inner.row\").innerHTML = data;\n// postItems = document.querySelectorAll(\".item-post\");\n\n// postItems.forEach((item, i) => {\n// setTimeout(() => {\n// item.classList.add(\"reveal-post\");\n// }, i * 50);\n// });\n// })\n// .catch((error) => console.error(\"Error:\", error));\n// } else {\n// fetch(ajaxurl, {\n// method: \"POST\",\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded\",\n// },\n// body: `action=filter_posts_by_category&cat_id=${catId}`,\n// })\n// .then((response) => response.text())\n// .then((data) => {\n// document.querySelector(\".loop__inner.row\").innerHTML = data;\n// postItems = document.querySelectorAll(\".item-post\");\n\n// postItems.forEach((item, i) => {\n// setTimeout(() => {\n// item.classList.add(\"reveal-post\");\n// }, i * 50);\n// });\n// })\n// .catch((error) => console.error(\"Error:\", error));\n// }\n// }\n// );\n// });\n// }\n// }\n\n\n// // Tjek om url params eksisterer\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// let initialCatId = getQueryParam(\"cat_id\");\n// if (initialCatId) {\n// fetch(ajaxurl, {\n// method: \"POST\",\n// headers: {\n// \"Content-Type\": \"application/x-www-form-urlencoded\",\n// },\n// body: `action=filter_posts_by_category&cat_id=${initialCatId}`,\n// })\n// .then((response) => response.text())\n// .then((data) => {\n// document.querySelector(\".loop__inner.row\").innerHTML = data;\n\n// let postItems = document.querySelectorAll(\".item-post\");\n\n// postItems.forEach((item, i) => {\n// setTimeout(() => {\n// item.classList.add(\"reveal-post\");\n// }, i * 50);\n// });\n// })\n// .catch((error) => console.error(\"Error:\", error));\n// }\n// });\n\n// function getQueryParam(name) {\n// let urlParams = new URLSearchParams(window.location.search);\n// return urlParams.get(name);\n// }\n\n// return {\n// // init: init,\n// };\n// })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\nconst svgBlue =\n '
';\nconst svgLime =\n '
';\nconst svgOlive =\n '
';\n\ntwentyninetimes.circlWord =\n twentyninetimes.circlWord ||\n (function () {\n function init() {\n var blueCircles = document.querySelectorAll(\".circle-word-blue\");\n blueCircles.forEach(function (blueCircle) {\n blueCircle.insertAdjacentHTML(\"beforeend\", svgBlue);\n });\n\n var limeCircles = document.querySelectorAll(\".circle-word-lime\");\n limeCircles.forEach(function (limeCircle) {\n limeCircle.insertAdjacentHTML(\"beforeend\", svgLime);\n });\n\n var oliveCircles = document.querySelectorAll(\".circle-word-olive\");\n oliveCircles.forEach(function (oliveCircle) {\n oliveCircle.insertAdjacentHTML(\"beforeend\", svgOlive);\n });\n }\n\n return {\n init: init,\n };\n })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.cookieSetter = \n twentyninetimes.cookieSetter ||\n (function () {\n function setCookie(name, value, days) {\n var expires = \"\";\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toUTCString();\n }\n document.cookie = name + \"=\" + (value || \"\") + expires + \"; path=/\";\n }\n\n function setLocalStorageItem(name, value) {\n localStorage.setItem(name, value);\n }\n\n function checkLocalStorageItem(name) {\n return localStorage.getItem(name) !== null;\n }\n\n function arrayBufferToHex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), x => x.toString(16).padStart(2, '0')).join('');\n }\n \nfunction generateSecureCookieValue(callback) {\n if (window.crypto && crypto.subtle) {\n window.crypto.subtle.generateKey(\n { name: \"AES-GCM\", length: 256 },\n true,\n [\"encrypt\", \"decrypt\"]\n )\n .then(key => window.crypto.subtle.exportKey(\"raw\", key))\n .then(keyBuffer => {\n var hexKey = arrayBufferToHex(keyBuffer);\n callback(hexKey);\n })\n .catch(err => console.error(err));\n } else {\n // Fallback method if crypto.subtle is not available\n console.warn('Web Cryptography API not available. Using less secure random value.');\n callback(fallbackRandomValue());\n }\n}\n\nfunction fallbackRandomValue() {\n return Math.random().toString(36).substring(2, 15) + \n Math.random().toString(36).substring(2, 15);\n}\n\nfunction checkAndSetCookie() {\n var cookieName = '_sbp';\n if (!checkLocalStorageItem(cookieName)) {\n generateSecureCookieValue((secureValue) => {\n setLocalStorageItem(cookieName, secureValue)\n });\n }\n\n }\n\n return {\n checkAndSetCookie: checkAndSetCookie,\n };\n })();","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\nconst expandLists = document.querySelectorAll('.js-block-expand-list')\n\ntwentyninetimes.expandList =\n twentyninetimes.expandList ||\n (function () {\n function init() {\n if (expandLists && expandLists.length > 0) {\n for (let i = 0; i < expandLists.length; i++) {\n setupExpandList(expandLists[i])\n }\n }\n }\n\n function setupExpandList(expandList) {\n if (expandList) {\n const expandItems = expandList.querySelectorAll(\n '.js-block-expand-list-item'\n )\n const expandListShowAllTrigger = expandList.parentNode.querySelector(\n '.js-block-expand-list-show-all'\n )\n\n let threeItemsHeight = 0\n\n if (!expandListShowAllTrigger || !expandItems) return null\n\n for (let i = 0; i < expandItems.length; i++) {\n const currentItem = expandItems[i]\n const currentItemHeight = currentItem.getBoundingClientRect().height\n const item = currentItem.getAttribute('data-item')\n\n if (item <= 2) {\n threeItemsHeight = threeItemsHeight + currentItemHeight\n }\n }\n\n expandList.style.maxHeight = threeItemsHeight + 'px'\n\n expandListShowAllTrigger.addEventListener('click', function () {\n if (expandList.classList.contains('open')) {\n expandList.classList.remove('open')\n expandListShowAllTrigger.classList.remove('open')\n expandList.style.maxHeight = threeItemsHeight + 'px'\n } else {\n expandList.classList.add('open')\n expandListShowAllTrigger.classList.add('open')\n expandList.style.maxHeight = expandList.scrollHeight + 'px'\n }\n })\n }\n }\n\n return {\n init: init,\n }\n })()\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.hero =\n twentyninetimes.hero ||\n (function () {\n function init() {\n\n }\n\n return {\n init: init,\n };\n })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.inView =\n twentyninetimes.inView ||\n (function () {\n function init(items, itemFunction, inAdvance) {\n if (!items) return;\n if (!inAdvance) var inAdvance = 100;\n\n // Check if browser supports IntersectionObserver\n if (\"IntersectionObserver\" in window) {\n let itemObserver = new IntersectionObserver(\n function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let item = entry.target;\n\n itemFunction(item);\n\n itemObserver.unobserve(item);\n }\n });\n },\n {\n // Load image when 100px above bo\n rootMargin: `0px 0px ${inAdvance}px 0px`,\n },\n );\n\n items.forEach(function (item) {\n itemObserver.observe(item);\n });\n\n // Fallback if browser doesn't support IntersectionObserver\n } else {\n let active = false;\n\n const itemsInView = function () {\n if (active === false) {\n active = true;\n\n setTimeout(function () {\n items.forEach(function (item) {\n let element_img = item.getElementsByTagName(\"img\")[0];\n\n if (\n item.getBoundingClientRect().top <=\n window.innerHeight - inAdvance &&\n item.getBoundingClientRect().bottom >= 0 &&\n getComputedStyle(item).display !== \"none\"\n ) {\n itemFunction(item);\n\n items = items.filter(function (map) {\n return map !== item;\n });\n\n if (items.length === 0) {\n document.removeEventListener(\"scroll\", itemsInView);\n window.removeEventListener(\"resize\", itemsInView);\n window.removeEventListener(\n \"orientationchange\",\n itemsInView,\n );\n }\n }\n });\n\n active = false;\n }, 200);\n }\n };\n\n itemsInView();\n document.addEventListener(\"scroll\", itemsInView);\n window.addEventListener(\"resize\", itemsInView);\n window.addEventListener(\"orientationchange\", itemsInView);\n }\n }\n\n return {\n init: init,\n };\n })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\nconst productsContainer = document.querySelector(\".block-iphone__products\");\n\ntwentyninetimes.iphone =\n twentyninetimes.iphone ||\n (function () {\n function init() {\n if (!productsContainer) return;\n\n const swiper = new Swiper(\".swiper\", {\n // Optional parameters\n direction: \"vertical\",\n loop: true,\n autoplay: {\n delay: 3000,\n },\n allowSlidePrev: true,\n allowSlideNext: true,\n allowTouchMove: true,\n grabCursor: true,\n // spaceBetween: 30,\n });\n\n\n }\n\n return {\n init: init,\n };\n })();","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.languageSelector =\n twentyninetimes.languageSelector ||\n (function () {\n function init() {\n const languageSelector = document.querySelector(\".language-action\");\n\n if(languageSelector) {\n languageSelector.addEventListener(\"click\", function() {\n const languageSelector = document.querySelector(\".language-action\");\n languageSelector.classList.toggle(\"active\");\n });\n }\n }\n\n return {\n init: init,\n };\n })();","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.loadMore =\n twentyninetimes.loadMore ||\n (function () {\n function init() {\n let load_more_btn = document.getElementById(\"js-load-more-btn\");\n\n if (load_more_btn) load_more(load_more_btn);\n }\n\n function load_more(btn_wrapper) {\n var btn = btn_wrapper.querySelector(\"button\");\n if (!btn) return;\n\n var btn_text = btn.innerHTML,\n btn_load_text = btn.getAttribute(\"data-load-text\"),\n posts_list = btn_wrapper.previousElementSibling;\n\n btn.addEventListener(\"click\", function (e) {\n e.stopPropagation;\n\n if (!btn.classList.contains(\"ready\")) return;\n btn.classList.remove(\"ready\");\n\n btn.innerHTML = `${btn_load_text}`;\n\n request_new_posts(btn, btn_text, posts_list);\n });\n }\n\n function request_new_posts(btn, btn_text, posts_list) {\n // https://getbutterfly.com/how-to-replace-jquery-ajax-with-vanilla-javascript-in-wordpress/\n var xhr = new XMLHttpRequest(),\n method = \"POST\",\n url = load_more_params.ajaxurl,\n action = \"load_more_posts\",\n query = load_more_params.posts,\n page = load_more_params.current_page,\n count_elm = btn.parentNode.querySelector(\".js-load-more-counter\");\n\n xhr.open(method, url, true);\n xhr.setRequestHeader(\n \"Content-Type\",\n \"application/x-www-form-urlencoded;\",\n );\n xhr.send(\"action=\" + action + \"&query=\" + query + \"&page=\" + page);\n\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n // If successful\n let new_posts = xhr.responseText,\n posts = posts_list.innerHTML;\n\n // Add new posts to existing post array\n posts += new_posts;\n\n var listHeight = posts_list.clientHeight;\n posts_list.style.height = listHeight + \"px\";\n posts_list.style.overflow = \"hidden\";\n\n // Insert all posts\n posts_list.innerHTML = posts;\n\n posts_list.style.height = \"auto\";\n var listHeightNew = posts_list.clientHeight;\n posts_list.style.height = listHeight + \"px\";\n\n setTimeout(() => {\n posts_list.style.height = listHeightNew + \"px\";\n\n setTimeout(() => {\n posts_list.style.height = \"auto\";\n posts_list.style.overflow = \"visible\";\n }, 600);\n }, 10);\n\n setTimeout(() => {\n var inViewItems = posts_list.querySelectorAll(\n \".in-view-item:not(.visible)\",\n );\n if (inViewItems) {\n inViewItems.forEach((item) => {\n item.classList.add(\"reveal-post\");\n })\n var test = (item) => {\n if (!item.classList.contains(\"visible\")) {\n item.classList.add(\"visible\");\n }\n };\n twentyninetimes.inView.init(inViewItems, test, -100);\n }\n }, 300);\n\n // Change WP Query page\n load_more_params.current_page++;\n\n // Update the counter after new posts are loaded\n let post_counter = posts_list.childElementCount;\n if(count_elm && post_counter){\n\n count_elm.innerHTML = post_counter;\n }\n\n // If more pages keep button visible else hide it\n if (load_more_params.current_page < load_more_params.max_num_pages) {\n setTimeout(() => {\n btn.innerHTML = btn_text;\n btn.classList.add(\"ready\");\n }, 610);\n } else {\n setTimeout(() => {\n btn.parentNode.removeChild(btn);\n }, 610);\n }\n } else {\n // If fail\n console.log(xhr.response);\n }\n };\n\n xhr.onerror = function () {\n alert(\"Something went wrong... Please try again later\");\n };\n }\n\n return {\n init: init,\n };\n })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.logowall =\n twentyninetimes.logowall ||\n (function () {\n function init() {\n\n const logowalls = document.querySelectorAll(\".block-logo-wall-wrapper\");\n\n if (logowalls) {\n logowalls.forEach((block) => {\n const scrollContainer = block.querySelector('.block-logo-wall');\n const navigation = block.querySelector('.logo-wall-navigation')\n\n if (navigation) {\n const leftBtn = block.querySelector('.scroll-left')\n const rightBtn = block.querySelector('.scroll-right')\n\n leftBtn.addEventListener('click', function () {\n scrollContainer.scrollBy({ left: -100, behavior: 'smooth' }); // Scrolls left by 100px\n\n });\n\n rightBtn.addEventListener('click', function () {\n scrollContainer.scrollBy({ left: 100, behavior: 'smooth' }); // Scrolls right by 100px\n\n });\n }\n\n }\n\n )\n }\n\n }\n\n return {\n init: init,\n };\n })();\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.pricingtable =\n twentyninetimes.pricingtable ||\n (function () {\n function init() {\n const pricingTables = document.querySelectorAll(\".block-pricing-table\");\n\n const currentView = getQueryParam(\"priceview\");\n\n if (pricingTables) {\n pricingTables.forEach((table) => {\n const switcher = table.querySelector(\".block-pricing-table-switcher\");\n const pricelines = table.querySelectorAll(\".price\");\n \n if(switcher) {\n const optionMonthly = switcher.querySelector(\n '[data-option=\"monthly\"',\n );\n const optionYearly = switcher.querySelector('[data-option=\"yearly\"');\n const switchOptions = switcher.querySelectorAll(\".switcher-option\");\n switchOptions.forEach((option) => {\n if (currentView && option.dataset.option == currentView) {\n option.classList.add(\"current-view\");\n } else if (!currentView) {\n optionMonthly.classList.add(\"current-view\");\n }\n \n option.addEventListener(\"click\", () => {\n switchOptions.forEach((option) => {\n option.classList.remove(\"current-view\");\n });\n \n option.classList.add(\"current-view\");\n \n setPriceView(option.dataset.option);\n \n pricelines.forEach((price, i) => {\n setTimeout(() => {\n price.classList.toggle(\"active\");\n }, 50);\n });\n });\n });\n }\n\n });\n }\n }\n\n function getQueryParam(name) {\n let urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(name);\n }\n\n function setPriceView(value) {\n const url = new URL(location);\n url.searchParams.set(\"priceview\", value);\n history.pushState({}, \"\", url);\n }\n\n return {\n init: init,\n };\n })();\n","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\ntwentyninetimes.quotes =\n twentyninetimes.quotes ||\n (function () {\n function init() {\n const quotes = document.querySelectorAll('.quotes')\n\n if (quotes) {\n const swiper = new Swiper('.quotes-swiper', {\n // Optional parameters\n direction: 'horizontal',\n loop: true,\n\n // If we need pagination\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n centeredSlides: true,\n\n slidesPerView: 1,\n autoplay: {\n delay: 5000,\n },\n\n // Navigation arrows\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n })\n }\n }\n\n return {\n init: init,\n }\n })()\n","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\ntwentyninetimes.sidebarColumns =\n twentyninetimes.sidebarColumns ||\n (function () {\n const copyButton = document.querySelector('#copyLink')\n\n function init() {\n if (!copyButton) return\n copyButton.addEventListener('click', () => {\n navigator.clipboard.writeText(copyButton.getAttribute('data-url')).then(\n function () {\n copyButton.classList.add('copied')\n setTimeout(() => {\n copyButton.classList.remove('copied')\n }, 1000)\n console.log('Link copied to clipboard')\n },\n function (err) {\n console.error('Could not copy text: ', err)\n }\n )\n })\n }\n\n return {\n init: init,\n }\n })()\n","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\ntwentyninetimes.siteHeader =\n twentyninetimes.siteHeader ||\n (function () {\n var site_body = document.body\n var doc = document.documentElement\n var w = window\n\n var prevScroll = w.scrollY || doc.scrollTop\n var curScroll\n var direction = 0\n var prevDirection = 0\n\n var header = document.getElementById('js-site-header'),\n header_height = header?.clientHeight\n const toggleButtons = document.querySelectorAll('.action-toggle')\n const overlay = document?.querySelector('.overlay')\n const closeButton = overlay?.querySelector('.close-button > div')\n\n function init() {\n if (header) {\n // toggleHeader(header);\n overlayToggle(toggleButtons)\n }\n }\n\n function overlayToggle(toggleButtons) {\n function keyPress(e) {\n if (e.key === 'Escape' || e.key === 'Esc') {\n closeOverlay()\n }\n }\n\n function closeOverlay() {\n const items = document.querySelectorAll('.item-open')\n\n items?.forEach((item, i) => {\n setTimeout(() => {\n item.classList.remove('item-open')\n }, i * 100)\n })\n\n overlay.classList = 'overlay'\n site_body.classList.remove('no-scroll')\n\n // clean up\n document.removeEventListener('keydown', keyPress)\n }\n\n closeButton.onclick = () => {\n closeOverlay()\n }\n\n // actions loades to gange, så nødvendigt at loope over\n toggleButtons.forEach((button) => {\n button.onclick = () => {\n document.addEventListener('keydown', keyPress)\n\n site_body.classList.add('no-scroll')\n\n overlay.classList = 'overlay open'\n let items\n let focusField\n\n if (button.title == 'search') {\n overlay.classList.add('overlay__search')\n items = document.querySelectorAll('.search-form *')\n focusField = overlay.querySelector(\n \".search-form input[type='search']\"\n )\n window.setTimeout(() => focusField.focus(), 300)\n // focusField.focus();\n console.log(focusField)\n }\n\n if (button.title == 'language') {\n // overlay.classList.add(\"overlay__language\");\n items = document.querySelectorAll('.language-selector *')\n }\n\n items.forEach((item, i) => {\n setTimeout(() => {\n item.classList.add('item-open')\n }, i * 200)\n })\n\n if (site_body.classList.contains('nav-active')) {\n site_body.classList.remove('nav-active')\n }\n }\n })\n }\n\n function checkScroll() {\n /*\n ** Find the direction of scroll\n ** 0 - initial, 1 - up, 2 - down\n */\n\n curScroll = w.scrollY || doc.scrollTop\n\n curScroll > header_height\n ? header.classList.add('scrolled')\n : header.classList.remove('scrolled')\n\n if (curScroll > prevScroll) {\n //scrolled up\n direction = 2\n } else if (curScroll < prevScroll) {\n //scrolled down\n direction = 1\n }\n\n if (direction !== prevDirection) {\n toggleHeader(direction, curScroll)\n }\n\n prevScroll = curScroll\n }\n\n function toggleHeader(direction, curScroll) {\n if (direction === 2 && curScroll > header_height) {\n // site_body.classList.add('hide');\n header.classList.add('hide')\n prevDirection = direction\n } else if (direction === 1) {\n // site_body.classList.remove('hide');\n header.classList.remove('hide')\n prevDirection = direction\n }\n }\n\n return {\n init: init,\n checkScroll: checkScroll,\n }\n })()\n","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\ntwentyninetimes.navigation =\n twentyninetimes.navigation ||\n (function () {\n function init() {\n const site_nav = document.getElementById('js-site-nav')\n\n if (site_nav) {\n siteNav(site_nav)\n sub_menu_toggle(site_nav)\n mega_menu_toggles()\n }\n }\n\n function mega_menu_toggles() {\n const site_header = document.getElementById('js-site-header')\n const megaMenuToggles = document.querySelectorAll('.mega-menu-toggle')\n const megaMenuGroups = document.querySelectorAll('.mega-menu-group')\n\n megaMenuToggles.forEach((item) => {\n item.addEventListener('click', function () {\n // Remove aria-expanded from all mega-menu-toggles\n megaMenuToggles.forEach((toggle) => {\n if (toggle !== item) toggle.setAttribute('aria-expanded', false)\n })\n // Toggle the aria-expanded attribute\n const isExpanded = item.getAttribute('aria-expanded') === 'true'\n item.setAttribute('aria-expanded', !isExpanded)\n\n // Target submenu based on item.dataset.menu\n const targetMenu = document.getElementById(item.dataset.menu)\n\n // Remove mega-menu-open class from all mega-menu-groups and\n megaMenuGroups.forEach((group) => {\n group.classList.remove('mega-menu-open')\n })\n\n // Toggle the mega-menu-open class on the target menu\n targetMenu.classList.toggle('mega-menu-open', !isExpanded)\n })\n })\n\n // Close mega menu when clicking outside of it\n document.body.addEventListener('click', function (event) {\n if (!site_header.contains(event.target)) {\n megaMenuGroups.forEach((group) => {\n group.classList.remove('mega-menu-open')\n })\n megaMenuToggles.forEach((toggle) => {\n toggle.setAttribute('aria-expanded', false)\n })\n }\n })\n }\n\n function siteNav(site_nav) {\n var site_body = document.body\n let nav_toggle = document.getElementById('js-mobile-nav-toggle')\n\n const depth0 = site_nav.querySelector('.depth-0')\n const depth1 = site_nav.querySelector('.depth-1')\n\n const parentToggles = site_nav.querySelectorAll('.menu-item-has-children')\n\n parentToggles.forEach((item) => {\n item.addEventListener('click', function () {\n item.classList.toggle('show-sub-menu')\n })\n })\n\n // // click outside of nav to close\n site_body.addEventListener('click', function (event) {\n if (!site_nav.contains(event.target)) {\n nav_toggle.setAttribute('aria-expanded', false)\n site_body.classList.remove('no-scroll')\n site_body.classList.remove('nav-active')\n bodyScrollLock.enableBodyScroll(site_nav)\n parentToggles.forEach((item) => {\n item.classList.remove('show-sub-menu')\n })\n }\n })\n\n // depth0.addEventListener('click', function (event) {\n // // depth0.classList.toggle('depth-0-open')\n // })\n\n // depth1.addEventListener('click', function (event) {\n // depth1.classList.toggle('depth-1-open')\n // })\n\n nav_toggle.addEventListener('click', function (event) {\n event.stopPropagation()\n\n const allSubOpens = site_nav.querySelectorAll('.sub-open')\n\n const openSubMenus = site_nav.querySelectorAll('.open-submenu')\n\n if (depth0.classList.contains('depth-0-open')) {\n depth0.classList.remove('depth-0-open')\n }\n\n var btn = event.target\n var site_nav_item = site_nav.querySelectorAll(\n '.site-nav__inner > .menu > .menu-item'\n ),\n i = 0\n\n if (!site_body.classList.contains('nav-active')) {\n site_body.classList.add('nav-active')\n nav_toggle.setAttribute('aria-expanded', true)\n\n // Disable scrolling\n site_body.classList.add('no-scroll')\n bodyScrollLock.disableBodyScroll(site_nav)\n\n function site_nav_item_timeout(i) {\n setTimeout(function () {\n site_nav_item[i].classList.add('visible')\n }, i * 50)\n }\n\n function site_nav_timeout(i) {\n setTimeout(function () {\n site_nav_item_timeout(i)\n }, 200)\n }\n\n for (i = 0; i < site_nav_item.length; i++) {\n site_nav_timeout(i)\n\n var current = site_nav_item[i]\n\n // if ( !current.classList.contains('open') && current.classList.contains('current-menu-ancestor') ) {\n // \tvar current_open = current,\n // \t\tsub_menu = current.querySelector('.sub-menu');\n\n // \tsetTimeout(function() {\n // \t\tsub_menu.style.height = '100%';\n // \t\tvar height = sub_menu.scrollHeight + 'px';\n // \t\tsub_menu.style.height = '';\n\n // \t\tsub_menu.style.height = height;\n // \t\tcurrent_open.classList.add('open');\n // \t}, 900);\n // }\n }\n\n i = 0\n } else {\n function site_nav_item_timeout(i) {\n setTimeout(function () {\n site_nav_item[i].classList.remove('visible')\n }, i * 50)\n }\n\n allSubOpens.forEach((item) => {\n if (item.classList.contains('open')) {\n item.classList.remove('open')\n }\n })\n\n openSubMenus.forEach((item) => {\n if (item.classList.contains('open-submenu')) {\n item.classList.remove('open-submenu')\n }\n })\n\n // remove open-submenu from ul\n const site_nav_inner = site_nav.querySelector(\n '.site-nav__inner > .menu'\n )\n // if (site_nav.classList.contains('has-open-submenu')) {\n // site_nav.classList.remove('has-open-submenu')\n // }\n // if (site_nav_inner.classList.contains('open-submenu')) {\n // site_nav_inner.classList.remove('open-submenu')\n // }\n\n for (i = 0; i < site_nav_item.length; i++) {\n site_nav_item_timeout(i)\n\n var current = site_nav_item[i]\n\n if (current.classList.contains('open')) {\n var current_open = current,\n sub_menu = current.querySelector('.sub-menu')\n\n setTimeout(function () {\n current_open.classList.remove('open')\n }, 200)\n }\n }\n\n i = 0\n\n site_body.classList.remove('nav-active')\n nav_toggle.setAttribute('aria-expanded', false)\n // Re-activate scrolling\n site_body.classList.remove('no-scroll')\n bodyScrollLock.enableBodyScroll(site_nav)\n }\n })\n }\n\n function sub_menu_toggle(site_nav) {\n var site_nav_item = site_nav.getElementsByClassName(\n 'menu-item-has-children'\n )\n const site_nav_inner = site_nav.querySelector('.site-nav__inner')\n const sub_menu_checkbox = site_nav_inner.querySelectorAll(\n '.sub-accordion-radio'\n )\n\n const sub_menu_checkbox_label = site_nav_inner.querySelectorAll(\n '.sub-accordion-label'\n )\n\n sub_menu_checkbox.forEach((label) => {\n // When checkbox is checked, uncheck all other checkboxes\n label.addEventListener('click', function () {\n sub_menu_checkbox.forEach((item) => {\n if (item !== label) {\n item.checked = false\n }\n })\n })\n })\n\n if (site_nav_item) {\n for (var i = 0; i < site_nav_item.length; i++) {\n var sub_menu_toggle = site_nav_item[i].querySelector(\n '.js-sub-menu-toggle'\n )\n if (sub_menu_toggle) {\n sub_menu_toggle.addEventListener('click', function () {\n var nav_item = this.parentElement\n sub_menu_checkbox.forEach((item) => {\n item.checked = false\n })\n const visibles =\n document.body.querySelectorAll('.menu > .menu-item')\n const subMenuItems = nav_item.querySelectorAll(\n '.sub-menu__inner li'\n )\n\n if (!nav_item.classList.contains('open')) {\n nav_item.parentElement.classList.add('open-submenu')\n site_nav.classList.add('has-open-submenu')\n nav_item.classList.add('open')\n\n subMenuItems.forEach((item, i) => {\n setTimeout(() => {\n item.classList.add('sub-open')\n }, i * 50)\n })\n\n visibles.forEach((item) => {\n item.classList.remove('visible')\n if (item.classList.contains('open')) {\n item.classList.add('visible')\n }\n })\n } else {\n subMenuItems.forEach((item, i) => {\n setTimeout(() => {\n item.classList.remove('sub-open')\n }, i * 50)\n })\n visibles.forEach((item) => {\n item.classList.add('visible')\n })\n\n site_nav.classList.remove('has-open-submenu')\n nav_item.classList.remove('open')\n nav_item.parentElement.classList.remove('open-submenu')\n }\n })\n }\n }\n }\n }\n\n return {\n init: init,\n }\n })()\n","\"use strict\";\nvar twentyninetimes = twentyninetimes || {};\n\ntwentyninetimes.testimonials =\n twentyninetimes.testimonials ||\n (function () {\n function init() {\n const testimonials = document.querySelectorAll(\".testimonials\");\n\n if (testimonials) {\n testimonials.forEach((block) => {\n let slideIndex = 0;\n const nextBtn = block.querySelector(\".swiper-next\");\n const prevBtn = block.querySelector(\".swiper-prev\");\n const countCurrent = block.querySelector(\".count-current\");\n const countTotal = block.querySelector(\".count-total\");\n const backgroundContainer = block.querySelector(\".testimonials-bg\");\n const slides = block.querySelectorAll(\".swiper-slide\");\n const slideContainer = block.querySelector(\".swiper-wrapper\");\n\n if (slides) {\n slides.forEach((slide) => {\n const dialog = slide.querySelector(\"dialog\");\n const slideInfo = slide.querySelector(\".swiper-slide-info\");\n const playButton = slide.querySelector(\".play-button\");\n const closeButton = dialog.querySelector(\".close-button\");\n const videoFrame = slide.querySelector(\"iframe\");\n const player = new Vimeo.Player(videoFrame);\n\n playButton.onclick = () => {\n dialog.showModal();\n document.addEventListener(\"keyup\", function escListener(e) {\n if (e.key === \"Escape\" || e.key === \"ESC\") {\n dialog.close();\n player.pause();\n // clean up\n document.removeEventListener(\"keyup\", escListener);\n }\n });\n };\n\n closeButton.onclick = () => {\n dialog.close();\n player.pause();\n };\n\n slideInfo.onclick = () => {\n slideIndex = slide.dataset.index;\n setTranslateX(slides, slideContainer, slideIndex);\n setBackground(slides, slideIndex, backgroundContainer);\n setActiveSlideClass(slides, slideIndex);\n updateSlideOpacity(slides, slideIndex);\n checkSlideEnd(slides, slideIndex, prevBtn, nextBtn);\n setCount(countCurrent, slideIndex);\n };\n });\n }\n\n nextBtn.onclick = () => {\n if (slideIndex < slides.length - 1) {\n slideIndex++;\n setTranslateX(slides, slideContainer, slideIndex);\n setBackground(slides, slideIndex, backgroundContainer);\n setActiveSlideClass(slides, slideIndex);\n checkSlideEnd(slides, slideIndex, prevBtn, nextBtn);\n setCount(countCurrent, slideIndex);\n }\n };\n\n prevBtn.onclick = () => {\n if (slideIndex - 1 >= 0) {\n slideIndex--;\n setTranslateX(slides, slideContainer, slideIndex);\n setBackground(slides, slideIndex, backgroundContainer);\n setActiveSlideClass(slides, slideIndex);\n checkSlideEnd(slides, slideIndex, prevBtn, nextBtn);\n setCount(countCurrent, slideIndex);\n }\n };\n\n countTotal.textContent = slides.length;\n checkSlideEnd(slides, slideIndex, prevBtn, nextBtn);\n setBackground(slides, slideIndex, backgroundContainer);\n setCount(countCurrent, slideIndex);\n setActiveSlideClass(slides, slideIndex);\n // slideContainer.addEventListener('scroll', handleScroll(slides, slideContainer));\n });\n\n // functions\n function setBackground(slides, index, backgroundContainer) {\n if (slides) {\n const bgUrl = slides[index].getAttribute(\"data-bg\");\n backgroundContainer.style.backgroundImage = `url(${bgUrl})`;\n }\n updateSlideOpacity(slides, index);\n }\n\n function setCount(countEl, index) {\n countEl.textContent = parseInt(index) + 1;\n }\n\n function setTranslateX(slides, slideContainer, index) {\n let totalWidth = 0;\n for (let i = 0; i < index; i++) {\n console.log(slides[i].offsetWidth);\n totalWidth += slides[i].offsetWidth;\n }\n slideContainer.style.transform = `translateX(-${totalWidth}px)`;\n }\n\n function setActiveSlideClass(slides, index) {\n slides.forEach((slide, i) => {\n slide.classList.remove(\"active\");\n if (i == index) {\n slide.classList.add(\"active\");\n }\n });\n }\n\n function checkSlideEnd(slides, index, prevBtn, nextBtn) {\n if (index == 0) {\n prevBtn.classList.add(\"disabled\");\n } else {\n prevBtn.classList.remove(\"disabled\");\n }\n\n if (index + 1 == slides.length) {\n nextBtn.classList.add(\"disabled\");\n } else {\n nextBtn.classList.remove(\"disabled\");\n }\n }\n\n function handleScroll(slides, slideContainer) {\n const slideWidth = slides[0].offsetWidth;\n const index = Math.round(slideContainer.scrollLeft / slideWidth);\n updateSlideOpacity(slides, index);\n }\n\n function updateSlideOpacity(slides, index) {\n slides.forEach((slide, i) => {\n let opacity = 1;\n if (i <= index - 2 || i > index + 2) {\n opacity = 0;\n } else if (i === index) {\n opacity = 1;\n } else {\n opacity = 0.35;\n }\n\n slide.style.opacity = opacity;\n });\n }\n }\n }\n\n return {\n init: init,\n };\n })();\n","'use strict'\nvar twentyninetimes = twentyninetimes || {}\n\ntwentyninetimes.youtubePlayer =\n twentyninetimes.youtubePlayer ||\n (function () {\n function init() {\n const videoBlocks = document.querySelectorAll('.youtube-player')\n\n if (videoBlocks)\n videoBlocks.forEach(function (block) {\n block.addEventListener('click', function () {\n var videoId = block.getAttribute('data-video-id')\n\n var iframe = document.createElement('iframe')\n iframe.setAttribute(\n 'src',\n 'https://www.youtube.com/embed/' + videoId + '?rel=0&autoplay=1'\n )\n iframe.setAttribute('frameborder', '0')\n iframe.setAttribute(\n 'allow',\n 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'\n )\n iframe.setAttribute('allowfullscreen', '')\n\n block.innerHTML = ''\n block.appendChild(iframe)\n })\n })\n }\n\n return {\n init: init,\n }\n })()\n","'use strict'\n/*\n * Use this file to call functions in other files, on document ready, window.resize etc.\n */\n\nvar twentyninetimes = twentyninetimes || {}\n\n// Document ready\ndocument.addEventListener('DOMContentLoaded', function () {\n setTimeout(function () {\n svg4everybody() // Fix SVG spritemap in IE/Edge\n })\n\n twentyninetimes.loadMore.init()\n twentyninetimes.expandList.init()\n twentyninetimes.siteHeader.init()\n twentyninetimes.navigation.init()\n twentyninetimes.circlWord.init()\n twentyninetimes.hero.init()\n twentyninetimes.testimonials.init()\n twentyninetimes.pricingtable.init()\n // twentyninetimes.blogFilter.init();\n twentyninetimes.logowall.init()\n twentyninetimes.cookieSetter.checkAndSetCookie()\n twentyninetimes.languageSelector.init()\n twentyninetimes.iphone.init()\n twentyninetimes.quotes.init()\n twentyninetimes.sidebarColumns.init()\n twentyninetimes.youtubePlayer.init()\n\n var inViewItems = document.querySelectorAll('.in-view-item')\n\n var circledWords = document.querySelectorAll('.animate-circle-word')\n if (inViewItems || inViewItems2) {\n var test = (item) => {\n // console.log(item);\n if (!item.classList.contains('visible')) {\n item.classList.add('visible')\n }\n }\n twentyninetimes.inView.init(inViewItems, test, -100)\n }\n\n if (circledWords) {\n var drawCircle = (item) => {\n if (!item.classList.contains('draw')) {\n item.classList.add('draw')\n }\n }\n twentyninetimes.inView.init(circledWords, drawCircle, -200)\n }\n})\n"]}