PageSourceSearch

https://www.jokkmokk.se/sc/1b180329.77fd0f10.f05079e4.js.v639264978174822164

js jokkmokk.se collected 2026-10-02 05:59:30 UTC 13,637 bytes, 21 lines download raw bytes

1(function(window,document){'use strict';var el,app={init:function(){el={win:window,doc:document};app.bindUIActions();app.initPageHeader();app.initSiteSearch();app.initLocalNavigation();app.initEmailLinks();app.initToggle();},bindUIActions:function bindUiActionsFn(){},initToggle:function initToggleFn(){const toggleButtons=el.doc.querySelectorAll('[data-toggle="collapse"]');toggleButtons.forEach((btn)=>{const controlsId=btn.getAttribute('aria-controls');const contentEl=el.doc.getElementById(controlsId);;btn.addEventListener('click',(e)=>{e.preventDefault();const isExpanded=btn.getAttribute('aria-expanded')==='true';btn.setAttribute('aria-expanded',!isExpanded);contentEl.classList.toggle('show');});});},initEmailLinks:function initEmailLinksFn(){const emailLinks=el.doc.querySelectorAll('[data-email]');emailLinks.forEach((link)=>{link.addEventListener('click',(e)=>{const encodedEmailAddress=e.target.dataset.email;const decodedEmailAddress=encodedEmailAddress.split('').reverse().join('');document.location=`mailto:${decodedEmailAddress}`;});link.addEventListener('copy',function(e){const data=link.dataset['email'];e.clipboardData.setData('text/plain',data.split('').reverse().join(''));e.preventDefault();});});},initPageHeader:function initPageHeaderFn(){setStickyClass();window.addEventListener('scroll',()=>{setStickyClass();});function setStickyClass(){const pageHeader=el.doc.querySelector('[data-trigger="pageHeader"]');if(window.scrollY>100){pageHeader.classList.add('sticky');}else{pageHeader.classList.remove('sticky');}}},initMainNavigation:function initMainNavigationFn(){const toggleBtns=el.doc.querySelectorAll('[data-trigger="toggleNavBtn"]');const openClassName='open';const mainNav=el.doc.querySelector('[data-trigger="mainNav"]');toggleBtns.forEach((toggleBtn)=>{toggleBtn.addEventListener('click',(e)=>{e.preventDefault();mainNav.classList.toggle(openClassName);document.body.classList.toggle('nav-open');handleTabbing();});});const toggleSubNavBtns=el.doc.querySelectorAll('[data-trigger="toggleSubNavBtn"]');toggleSubNavBtns.forEach((toggleBtn)=>{toggleBtn.addEventListener('click',(e)=>{e.preventDefault();const btn=e.currentTarget;const openText=btn.dataset.opentext;const closeText=btn.dataset.closetext;app.toggleAttribute(btn,'aria-label',closeText,openText);app.toggleText(btn.querySelector('span'),closeText,openText);btn.classList.toggle(openClassName);const currentMenu=document.getElementById(btn.dataset.toggle);currentMenu.classList.toggle(openClassName);handleTabbing(currentMenu);});});function handleTabbing(elem){let navList=null;if(elem!==undefined){navList=elem.querySelectorAll(':scope > ul > li');}
2else{navList=mainNav.querySelectorAll('.nav > .nav__inner > ul > li');}
3navList.forEach((listItem)=>{const anchors=listItem.querySelectorAll(':scope > div > a');const buttons=listItem.querySelectorAll(':scope > div > button');anchors.forEach((anchor)=>{toggleTabIndex(anchor);});buttons.forEach((button)=>{toggleTabIndex(button);});});}
4function toggleTabIndex(elem){if(elem.getAttribute("tabindex")){elem.removeAttribute("tabindex");}else{elem.setAttribute("tabindex","-1");}}},initSiteSearch:function initSiteSearchFn(){const toggleBtn=el.doc.querySelector('[data-trigger="toggleSearchBtn"]');if(toggleBtn){toggleBtn.addEventListener('click',(e)=>{e.preventDefault();const siteSearch=el.doc.querySelector('[data-target="siteSearch"]');const toggleClassName='open';if(siteSearch.classList.contains(toggleClassName)){siteSearch.classList.remove(toggleClassName);toggleBtn.removeAttribute('aria-expanded');}
5else{siteSearch.classList.add(toggleClassName);toggleBtn.setAttribute('aria-expanded',true);const input=siteSearch.querySelector('input[type="search"]');input.focus();}});}},initLocalNavigation:function initLocalNavigationFn(){const localNavTmpl=el.doc.querySelector('[data-target="localNavTemplate"]');const articleContent=el.doc.querySelector('[data-target="articleBody"]');const article=el.doc.querySelector('[data-target="article"]');if(!localNavTmpl||!articleContent||!article)return;articleContent.prepend(localNavTmpl.content.cloneNode(true));const headings=article.querySelectorAll('.text-block h2, .accordion__header h2, .link-collection__heading, .contacts-list__heading, .image-card .card-heading, .card-list__heading, .form-block h2');const localNavList=articleContent.querySelector('[data-target="localNavItems"]');let headingCount=1;
5headings.forEach((heading)=>{const navId=app.toKebabCase(heading.innerText);const navLink=`<a class="local-nav__link" data-target="localNavLink" href="#${navId}${headingCount}">${heading.innerText}</a>`;const navListItem=document.createElement('li');navListItem.classList.add('local-nav__item');navListItem.innerHTML=navLink;heading.setAttribute('id',`${navId}${headingCount}`);if(window.location.hash==`#${navId}${headingCount}`){navListItem.classList.add('local-nav__item--active');}
6localNavList.append(navListItem);headingCount++;});const navLinks=localNavList.querySelectorAll('[data-target="localNavLink"]');navLinks.forEach((link)=>{link.addEventListener('click',(e)=>{e.preventDefault();const target=document.getElementById(link.href.split('#')[1]);scrollToSection(link.href);toggleActiveCssClass(link.parentElement,'local-nav__item--active');});});function toggleActiveCssClass(elem,className){const siblings=Array.from(elem.parentElement.children);siblings.forEach(sibling=>sibling.classList.remove('local-nav__item--active'));elem.classList.add(className);}
7if(window.location.hash!==''){scrollToSection(window.location.href);}
8function scrollToSection(url){const pageHeader=document.querySelector('.page-header');const sectionNav=document.querySelector('.section-nav');const siteSearch=document.querySelector('.site-search');const currentUrl=new URL(url);const hash=currentUrl.hash;if(hash!==''){const target=document.getElementById(hash.replace('#',''));if(target.offsetParent!==null){const pageHeaderRect=pageHeader.getBoundingClientRect();const searchRect=siteSearch.getBoundingClientRect();const targetRect=target.getBoundingClientRect();const offsetTop=pageHeaderRect.height;const offsetPosition=searchRect.bottom-offsetTop+(targetRect.top+window.pageYOffset-(searchRect.bottom+4));history.replaceState(null,null,hash);window.scrollTo({top:offsetPosition,behavior:'smooth'});}else{window.scrollTo({top:0,behavior:'smooth'});}}}},toggleAttribute:function toggleAttributeFn(element,attributeName,value1,value2){const currentValue=element.getAttribute(attributeName);if(currentValue===value1){element.setAttribute(attributeName,value2);}else{element.setAttribute(attributeName,value1);}},toggleText:function toggleTextFn(element,value1,value2){const currentValue=element.innerText;if(currentValue===value1){element.innerText=value2;}else{element.innerText=value1;}},toKebabCase:function toKebabCaseFn(str){return str.normalize('NFD').replace(/[\u0300-\u036f]/g,'').toLowerCase().replace(/\s+/g,'-').replace(/[^a-z0-9-]/g,'');}}
9const ready=(callback)=>{if(document.readyState!=='loading'){callback();}
10else{document.addEventListener('DOMContentLoaded',callback);}}
11ready(()=>{app.init();});}(window,document));;;
12(function(window,document){'use strict';var el,app={init:function(){el={win:window,doc:document};app.bindUIActions();app.initDismissButton();},bindUIActions:function bindUiActionsFn(){},initDismissButton:function initDismissButtonFn(){const button=el.doc.querySelector('[data-trigger="issueDismissButton"]');if(button){button.addEventListener('click',function(e){e.preventDefault();const issueId=button.getAttribute('data-issue-id');console.log(button);if(issueId){dismissIssue(issueId);}});}
13function dismissIssue(issueId){const banner=document.querySelector('.issue-banner');const cookieName='__DismissedIssues';var cookieValue=issueId;var currentCookie=app.getCookie(cookieName);if(currentCookie!==''&&!currentCookie.includes(cookieValue)){cookieValue=currentCookie+'|'+cookieValue;}
14app.setCookie(cookieName,cookieValue,1);const parent=banner.parentElement;parent.removeChild(banner);location.reload();}},setCookie:function setCookieFn(cookieName,cookieValue,days){const d=new Date();d.setTime(d.getTime()+(days*24*60*60*1000));const expires=`expires=${d.toUTCString()}`;document.cookie=`${cookieName}=${cookieValue};Secure;${expires};path=/;SameSite`;},removeCookie:function removeCookieFn(cookieName){document.cookie=`${cookieName}= ;expires= Thu, 01 Jan 1970 00:00:00 GMT;path=/;SameSite`;},getCookie:function getCookieFn(cookieName){const name=`${cookieName}=`;const decodedCookie=decodeURIComponent(document.cookie);const ca=decodedCookie.split(';');for(let i=0;i<ca.length;i++){let c=ca[i];while(c.charAt(0)==' '){c=c.substring(1);}
15if(c.indexOf(name)==0){return c.substring(name.length,c.length);}}
16return'';}};const ready=(callback)=>
16{if(document.readyState!=='loading'){callback();}
17else{document.addEventListener('DOMContentLoaded',callback);}}
18ready(()=>{app.init();});}(window,document));;;
19(function(window,document){'use strict';var ctx,app={init:function(){ctx={win:window,doc:document,mainNav:document.querySelector('[data-element="mainNav"]')};app.bindUIActions();app.initMainNavigation();},bindUIActions:function bindUiActionsFn(){this.addEvent(ctx.doc,'keyup',this.handleEscapeButtonClick.bind(this));this.addEvent(ctx.win,'click',this.handleWindowClick.bind(this));this.addEvent(ctx.doc,'keydown',this.handleTabButtonClick.bind(this));},initMainNavigation:function initMainNavigationFn(){const openClassName='open';const mainNav=ctx.mainNav;const openBtn=mainNav.querySelector('[data-trigger="openNavBtn"]');const toggleSubNavBtns=mainNav.querySelectorAll('[data-trigger="toggleSubNavBtn"]');const closeBtn=mainNav.querySelector('[data-trigger="closeNavBtn"]');this.addEvent(openBtn,'click',(e)=>{e.preventDefault();this.toggleNavigation(mainNav,openBtn,openClassName);});toggleSubNavBtns.forEach(btn=>{this.addEvent(btn,'click',(e)=>{e.preventDefault();this.toggleSubNavigation(btn,openClassName);});});this.addEvent(closeBtn,'click',(e)=>{e.preventDefault();this.closeMainNav();});},toggleNavigation:function toggleNavigationFn(mainNav,toggleBtn,openClassName){toggleBtn.blur();mainNav.classList.toggle(openClassName);document.body.classList.toggle('nav-open');this.handleTabbing();},toggleSubNavigation:function toggleSubNavigationFn(btn,openClassName){const openText=btn.dataset.opentext;const closeText=btn.dataset.closetext;this.toggleAttribute(btn,'aria-label',closeText,openText);this.toggleText(btn.querySelector('span'),closeText,openText);btn.classList.toggle(openClassName);const currentMenu=document.getElementById(btn.dataset.toggle);currentMenu.classList.toggle(openClassName);this.handleTabbing(currentMenu);},closeMainNav:function closeMainNav(target){const mainNav=ctx.mainNav;const nav=mainNav.querySelector('[data-element="nav"]');if(!mainNav.contains(target)){mainNav.classList.remove('open');document.body.classList.remove('nav-open');app.handleTabbing(mainNav);}},handleTabbing:function handleTabbingFn(elem){const mainNav=ctx.mainNav;const navItems=elem?elem.querySelectorAll(':scope > ul > li'):mainNav.querySelectorAll('.nav > .nav__inner > ul > li, .nav > .nav__inner .complementary-nav > ul > li');const anchors=mainNav.querySelectorAll('.nav-info a');const buttons=mainNav.querySelectorAll('.nav > button:not([data-trigger="toggleNavBtn"])');navItems.forEach(item=>{const anchors=item.querySelectorAll(':scope > div > a');const complLinkAnchors=item.querySelectorAll(':scope .complementary-nav__list__link');const buttons=item.querySelectorAll(':scope > div > button');this.toggleTabIndexForElements(anchors);this.toggleTabIndexForElements(complLinkAnchors);this.toggleTabIndexForElements(buttons);});this.toggleTabIndexForElements(anchors);this.toggleTabIndexForElements(buttons);},toggleTabIndexForElements:function toggleTabIndexForElementsFn(elements){elements.forEach(elem=>this.toggleTabIndex(elem));},toggleTabIndex:function toggleTabIndexFn(elem){if(elem.getAttribute("tabindex")){elem.removeAttribute("tabindex");}else{elem.setAttribute("tabindex","-1");}},toggleText:function toggleTextFn(element,value1,value2){const currentValue=element.innerText;if(currentValue===value1){element.innerText=value2;}else{element.innerText=value1;}},trapTabbing:function trapTabbingFn(e){const mainNav=ctx.mainNav;const focusableElements=mainNav.querySelectorAll('button[data-trigger="closeNavBtn"], button[data-trigger="toggleSubNavBtn"]:not([tabindex="-1"]), a:not([tabindex="-1"])');const lastFocusableElement=focusableElements[focusableElements.length-1];const firstFocusableElement=focusableElements[0];if(e.shiftKey&&document.activeElement===firstFocusableElement){e.preventDefault();lastFocusableElement.focus();}else if(!e.shiftKey&&document.activeElement===lastFocusableElement){e.preventDefault();firstFocusableElement.focus();}},toggleAttribute:function toggleAttributeFn(element,attributeName,value1,value2){const currentValue=element.getAttribute(attributeName);if(currentValue===value1){element.setAttribute(attributeName,value2);}else{element.setAttribute(attributeName,value1);}},addEvent(element,event,handler){element.addEventListener(event,handler);},handleEscapeButtonClick:function handleEscapeButtonClickFn(e){if(e.keyCode===27){app.closeMainNav(ctx.doc);}},handleTabButtonClick:function handleTabButtonClickFn(e){if(e.keyCode===9){app.trapTabbing(e);}},handleWindowClick:function handleWindowClickFn(e){app.closeMainNav(e.target);}};const ready=(callback)=>
19{if(document.readyState!=='loading'){callback();}
20else{document.addEventListener('DOMContentLoaded',callback);}}
21ready(()=>{app.init();});}(window,document));;;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.