PageSourceSearch

https://www.nn.de/js/nn/common-20.12.2.js

js nn.de collected 2026-09-24 09:28:00 UTC 113,289 bytes, 378 lines download raw bytes

1
2document.addEventListener('DOMContentLoaded',()=>{initializeFavoritesNavigation();initBookmarkIcons(document.querySelector('main')||document);initializeNewsletterEmailBox();initializeDoiEmailBox();initializeDoiVoting();});const lucideSvg={};function showLoader(show){const loader=document.getElementById('showLoader');if(!loader){return;}
3if(show===true){loader.hidden=false;loader.classList.remove('dis0');}else{loader.classList.add('dis0');loader.hidden=true;}}
4function isMobileView(){return window.matchMedia('(max-width: 768px)').matches||parent.matchMedia('(max-width: 768px)').matches;}
5async function getLucideSvg(name){if(window.lucideIcons?.[name]){return window.lucideIcons[name];}
6if(!lucideSvg[name]){const site=typeof msPathExtra==='string'?msPathExtra:document.documentElement.dataset.site;lucideSvg[name]=fetch(`/img/${site}/icons/lucide/${name}.svg`).then(response=>response.text());}
7return lucideSvg[name];}
8const toggleClass=(element,className,condition)=>{condition?element.classList.add(className):element.classList.remove(className);};function initializeFavoritesNavigation(){const loggedInFavorites=document.getElementById('user-fav-nav-top');const loggedOutFavorites=document.getElementById('user-fav-nav-top--anon');if(!loggedInFavorites||!loggedOutFavorites)return;const loggedIn=isLoggedIn();loggedInFavorites.classList.toggle('dis0',!loggedIn);loggedOutFavorites.classList.toggle('dis0',loggedIn);}
9const initAutocompleteSearch=()=>{const searchInput=document.querySelector('#nav-search-input, #navSearchInput');const autocompleteBox=document.querySelector('#nav__search__autocomplete');const clearButton=document.querySelector('#nav__search__clear');if(!searchInput||!autocompleteBox||!clearButton){return;}
10clearButton.classList.add('dis0');let requestCounter=0;searchInput.addEventListener('input',function(){clearButton.classList.toggle('dis0',!this.value);if(this.value.length<3){autocompleteBox.classList.add('dis0');requestCounter=0;return;}
11autocompleteBox.innerHTML='';if(this.value){const currentRequestId=++requestCounter;const request=fetchAutocompleteResults(this.value);request.then(function(html){if(currentRequestId===requestCounter&&html){autocompleteBox.classList.remove('dis0');autocompleteBox.insertAdjacentHTML('beforeend',html);}}).catch(function(err){console.warn('Could not execute autocomplete search.',err);});}});clearButton.addEventListener('click',function(){searchInput.value='';autocompleteBox.classList.add('dis0');clearButton.classList.add('dis0');});document.addEventListener('click',function(e){if(!searchInput.contains(e.target)&&!autocompleteBox.contains(e.target)){autocompleteBox.classList.add('dis0');}});};const initTrendingTopicsNavigation=()=>{const trendingEl=document.querySelector('#nav__trending_topics .modul--trending');const fadingWrapper=document.querySelector('#nav__trending_topics .nb_trending_wrapper');if(!trendingEl||!fadingWrapper||trendingEl.dataset.trendingTopicsInitialized==='true')return;trendingEl.dataset.trendingTopicsInitialized='true';const updateTrendingScrollState=()=>{const{scrollLeft,scrollWidth,clientWidth}=trendingEl;const isScrollable=scrollWidth>clientWidth;const isAtStart=scrollLeft<=0;const isAtEnd=scrollLeft+clientWidth>=scrollWidth-1;fadingWrapper.classList.add('dis0');fadingWrapper.classList.remove('fade--left','fade--right','fade--both');if(!isScrollable)return;fadingWrapper.classList.remove('dis0');if(isAtStart&&!isAtEnd){fadingWrapper.classList.add('fade--right');}else if(!isAtStart&&isAtEnd){fadingWrapper.classList.add('fade--left');}else if(!isAtStart&&!isAtEnd){fadingWrapper.classList.add('fade--both');}};const enableTrendingDragScroll=()=>{if(window.matchMedia('(pointer: coarse)').matches)return;let isDragging=false;let startX=0;let scrollStart=0;trendingEl.style.cursor='grab';trendingEl.style.userSelect='none';trendingEl.addEventListener('mousedown',e=>{isDragging=true;startX=e.pageX;scrollStart=trendingEl.scrollLeft;trendingEl.style.cursor='grabbing';e.preventDefault();});window.addEventListener('mousemove',e=>{if(!isDragging)return;const dx=e.pageX-startX;trendingEl.scrollLeft=scrollStart-dx;updateTrendingScrollState();});window.addEventListener('mouseup',()=>{if(!isDragging)return;isDragging=false;trendingEl.style.cursor='grab';});trendingEl.addEventListener('click',e=>{if(isDragging)e.preventDefault();});};updateTrendingScrollState();enableTrendingDragScroll();trendingEl.addEventListener('scroll',updateTrendingScrollState);window.addEventListener('resize',updateTrendingScrollState);};function navSlide(focusSearchInput,forceClose){const navWrapper=document.querySelector('.nav__wrapper');const isActive=navWrapper.classList.contains('nav__wrapper--active');if(!forceClose||isActive){trackClickEvent({'click':'Navigation Burger '+(isActive?'Hide':'Show')});}
12if(forceClose||isActive){toggleHeaderState(false);toggleBodyState(false,false);toggleBurgerState(false);toggleNavigationState(false);}else{closeLoginRegisterOrUserSlide();toggleSharingSliderMenu(false);hideStickyFooterAds();toggleHeaderState(true);
12toggleBodyState(true,false);toggleBurgerState(true);setLoginRegisterButtonAccessibility(false);toggleNavigationState(true);if(focusSearchInput){focusFirstInteractiveElement('.nav__wrapper');}}
13toggleInertForOverlay('.nav__wrapper','nav__wrapper--active','main, footer');}
14function toggleBodyState(isActive,isPaid){const body=document.querySelector('body');if(!body)return;body.classList.toggle('navSticky',isActive);if(isPaid)body.classList.toggle('tp-modal-open',isActive);if(isActive){body.classList.remove('tp-modal-close');body.removeAttribute('style');}}
15function toggleBurgerState(force){const burger=document.querySelector('.burger');if(!burger)return;burger.classList.toggle('burger--open',force);burger.ariaLabel=force?'Hauptnavigation schließen':'Hauptnavigation öffnen';}
16function toggleHeaderState(force){const navHead=document.querySelector('#nav__head');navHead?.classList.toggle('bg-dark',force);navHead?.classList.toggle('headfixed',force);}
17function toggleLocationRegisterParent(event,target,toggleParent){if(event.type!=="DOMContentLoaded"){const showElement=!target.classList.contains('arrow--active');trackClickEvent({'click':'Navigation Region '+(showElement?'Show':'Hide')});}
18if(toggleParent){target.parentNode.parentNode.classList.toggle('nav2--active');}
19target.ariaLabel=target.classList.contains('arrow--active')?'Untermenü öffnen':'Untermenü schließen';target.classList.toggle('arrow--active');}
20function toggleNavItem(velocityCount,navSubItemId,reloadSubRessorts,navItemContentId){const subRessortSelector=document.querySelector('#nav-sub-'+navSubItemId);const showElement=!document.querySelector('#nav-arr-'+velocityCount).classList.contains('arrow--active');document.querySelector('#nav-arr-'+velocityCount).ariaLabel=showElement?'Untermenü schließen':'Untermenü öffnen';trackClickEvent({'click':'Navigation Ressort '+(showElement?'Show':'Hide')});if(reloadSubRessorts==='true'){if(showElement){fetchSubRessorts(navItemContentId,navSubItemId);}else{const subLiSelector=subRessortSelector.querySelectorAll('li');subLiSelector.forEach(subRessort=>{subRessort.parentNode.removeChild(subRessort);});}}
21document.querySelector('#nav-li-'+velocityCount).classList.toggle('nav1--active');subRessortSelector.classList.toggle('subressort--active');document.querySelector('#nav-arr-'+velocityCount).classList.toggle('arrow--active');}
22function toggleNavigationState(force){const navWrapper=document.querySelector('.nav__wrapper');const NAV_ACTIVE_CLASSES=['nav__wrapper--active','isfixed','overScroll'];if(force){navWrapper?.classList.add(...NAV_ACTIVE_CLASSES);}else{navWrapper?.classList.remove(...NAV_ACTIVE_CLASSES);}
23navWrapper?.classList.toggle('nav__wrapper--active',force);}
24function toggleInertForOverlay(targetSelector,className,inertTargets){const targetElement=document.querySelector(targetSelector);const isActive=targetElement?.classList.contains(className);document.querySelectorAll(inertTargets).forEach(el=>{if(isActive){el.setAttribute('inert','true');}else{el.removeAttribute('inert');}});}
25const LOGIN_REGISTER_AND_USER_MENU_SELECTOR='.NB__login__wrapper:not(.NB__register__wrapper)';function setPasswordIconVisibility(icon,isHidden){icon.classList.toggle('dis0',isHidden);if(icon.hasAttribute('data-password-icon'))icon.style.display=isHidden?'none':'contents';}
26function togglePasswordVisibility(eye,event){event.preventDefault();const passwordField=eye.parentElement?.querySelector('input');const eyeIcon=eye.querySelector('.lucide-eye');const eyeOffIcon=eye.querySelector('.lucide-eye-off');const eyeOffVisibility=eyeOffIcon?.closest('[data-password-icon]')||eyeOffIcon;if(!passwordField||!eyeIcon||!eyeOffVisibility)return;const isPasswordVisible=passwordField.type==='text';passwordField.type=isPasswordVisible?'password':'text';eye.ariaLabel=isPasswordVisible?'Passwort anzeigen':'Passwort verstecken';eyeIcon.classList.toggle('dis0',!isPasswordVisible);setPasswordIconVisibility(eyeOffVisibility,isPasswordVisible);}
27function showLoginRegisterBox(loginRegisterWrapper,isPaid){loginRegisterWrapper.classList.add('NB__login__wrapper--active');showLoginOrUserSlide(isPaid);initializeLoginRegisterTabButtons(loginRegisterWrapper);focusFirstInteractiveElement('.NB__login__wrapper .NB__login__form');}
28function openUserMenu(){const userMenuWrapper=document.querySelector(LOGIN_REGIST
28ER_AND_USER_MENU_SELECTOR);if(userMenuWrapper?.classList.contains('NB__login__wrapper--active')){return;}
29showLoader(true);fetchUserMenu().then(html=>{if(userMenuWrapper){html=html.replace('[user.email]',getLoggedInJWTPayload()?.email||'');userMenuWrapper.insertAdjacentHTML('beforeend',html);userMenuWrapper.classList.toggle('NB__login__wrapper--active');focusFirstInteractiveElement('#NB__logged__in');showLoginOrUserSlide();setLoginRegisterButtonAccessibility(true);fadeIn(userMenuWrapper.querySelector('#NB__logged__in'),1000);}}).catch(err=>console.warn('Could not load user menu.',err)).finally(()=>showLoader(false));}
30function toggleUserMenu(){const userMenuWrapper=document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR);if(userMenuWrapper?.classList.contains('NB__login__wrapper--active')){closeLoginRegisterOrUserSlide();}else{openUserMenu();}}
31function loginRegisterSlide(returnValue){const loginRegisterWrapper=document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR);if(!loginRegisterWrapper)return Promise.resolve();const isPaid=typeof returnValue!=='undefined';if(loginRegisterWrapper.classList.contains('NB__login__wrapper--active')){closeLoginRegisterOrUserSlide();return Promise.resolve();}
32return loadLoginRegisterBox(loginRegisterWrapper,isPaid,returnValue).then(html=>{if(html&&!loginRegisterWrapper.innerHTML.trim()){loginRegisterWrapper.insertAdjacentHTML('beforeend',html);}
33showLoginRegisterBox(loginRegisterWrapper,isPaid);}).catch(err=>console.warn('Could not load login box.',err));}
34function initializeLoginRegisterTabButtons(loginRegisterWrapper=document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR)){if(!loginRegisterWrapper){return;}
35if(loginRegisterWrapper.dataset.loginRegisterTabsInitialized==='true'&&loginRegisterWrapper.querySelector('.user_menu__tabs .tab-button')){return;}
36loginRegisterWrapper.dataset.loginRegisterTabsInitialized='true';const tabButtons=loginRegisterWrapper.querySelectorAll('.user_menu__tabs .tab-button');tabButtons.forEach(button=>{button.addEventListener('click',function(){const tab=this.dataset.tab;if(tab==='login'){switchToLoginTab();}else if(tab==='register'){switchToRegisterTab();}});});loginRegisterWrapper.addEventListener('click',event=>{if(event.target.closest('.nowLogin')){event.preventDefault();switchToLoginTab();}
37if(event.target.closest('.nowRegister')){event.preventDefault();switchToRegisterTab();}});}
38function setLoginRegisterButtonAccessibility(isActive){const loginBtn=document.querySelector('#NB__login');if(loginBtn){const labelPrefix=isLoggedIn()?'Profil':'Anmeldemenü';const labelState=isActive?'schließen':'öffnen';loginBtn.ariaLabel=`${labelPrefix} ${labelState}`;}}
39function showLoginOrUserSlide(isPaid){const loginRegisterWrapper=document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR);if(!loginRegisterWrapper)return;loginRegisterWrapper.classList.add('overScroll');if(isPaid){loginRegisterWrapper.id='login_paid';loginRegisterWrapper.classList.remove('overScroll');loginRegisterWrapper.classList.add('loginpaid--active');}
40toggleSharingSliderMenu(false);hideStickyFooterAds();toggleHeaderState(true);toggleBodyState(true,isPaid);toggleBurgerState(false);toggleNavigationState(false);if(!isPaid){setLoginRegisterButtonAccessibility(true);}
41const backgroundSelectors=(isPaid?'.nav__header, #nav__breadcrumb, ':'')+'main, footer';toggleInertForOverlay(LOGIN_REGISTER_AND_USER_MENU_SELECTOR,'NB__login__wrapper--active',backgroundSelectors);const slideContext=loginRegisterWrapper.querySelector('#NB__logged__in')?'User-Menu':'Login';trackClickEvent({'click':'Navigation '+slideContext+' Show'});}
42function closeLoginRegisterOrUserSlide(isPaid){const loginRegisterWrapper=document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR);if(!loginRegisterWrapper?.classList.contains('NB__login__wrapper--active'))return;loginRegisterWrapper.classList.remove('NB__login__wrapper--active','overScroll');loginRegisterWrapper.innerHTML='';loginRegisterWrapper.dataset.loginRegisterTabsInitialized='false';loginRegisterWrapper.removeAttribute('id');if(isPaid)loginRegisterWrapper.classList.remove('loginpaid--active');toggleHeaderState(false);toggleBodyState(false,isPaid);setLoginRegisterButtonAccessibility(false);const backgroundSelectors=(isPaid?'.nav__header, #nav__breadcrumb, ':'')+'main, footer';
42toggleInertForOverlay(LOGIN_REGISTER_AND_USER_MENU_SELECTOR,'NB__login__wrapper--active',backgroundSelectors);const slideContext=loginRegisterWrapper.querySelector('#NB__logged__in')?'User-Menu':'Login';trackClickEvent({'click':'Navigation '+slideContext+' Hide'});}
43function switchToLoginTab(){switchToTab('login');}
44function switchToRegisterTab(){switchToTab('register');handleRegisterNewStep(getRegisterWrapper(),'register-new');}
45function switchToTab(tabName){document.querySelector(LOGIN_REGISTER_AND_USER_MENU_SELECTOR)?.scrollTo(0,0);const tabs=document.querySelectorAll('.user_menu__tabs .tab-button');const contents=document.querySelectorAll('.user_menu__content .tab-content');tabs.forEach(tab=>{if(tab.dataset.tab===tabName){tab.classList.add('active');}else{tab.classList.remove('active');}});contents.forEach(content=>{if(content.id===tabName){content.classList.add('active');}else{content.classList.remove('active');}});}
46const sliderTeaser=contentSelector=>{const sliderWrapper=document.querySelector('.modul--teaser-slider .slider_nav_wrapper'+contentSelector);const slidePrev=sliderWrapper?.querySelector('.slider-nav--prev');const slideNext=sliderWrapper?.querySelector('.slider-nav--next');const teaserRow=document.querySelector('.modul--teaser-slider .row'+contentSelector);const teaserStage=teaserRow?.querySelector('.teaser-slider-stage'+contentSelector);const articles=Array.from(teaserStage?.children||[]);if(!sliderWrapper||!slidePrev||!slideNext||!teaserStage||!articles.length){console.warn('Error in teaser slider '+contentSelector);return;}
47let position=0;let pendingScrollLeft=0;const numberTeasers=articles.length;const isMobile=()=>window.innerWidth<=768;const hasOverflow=()=>teaserStage.scrollWidth>teaserStage.clientWidth+1;const maxScrollLeft=()=>Math.max(0,teaserStage.scrollWidth-teaserStage.clientWidth);const effectiveScrollLeft=()=>pendingScrollLeft||teaserStage.scrollLeft;const isAtStart=()=>isMobile()?effectiveScrollLeft()<=1:position<=0;const isAtEnd=()=>{const lastArticle=articles[numberTeasers-1];if(!lastArticle)return true;const stageRight=effectiveScrollLeft()+teaserStage.clientWidth;const lastArticleRight=lastArticle.offsetLeft+lastArticle.offsetWidth;return lastArticleRight<=stageRight+1;};const updateControlsVisibility=()=>
47{if(sliderWrapper.offsetParent===null||window.getComputedStyle(sliderWrapper).visibility==='hidden'){slidePrev.classList.remove('visible');slideNext.classList.remove('visible');return;}
48if(!hasOverflow()){slidePrev.classList.remove('visible');slideNext.classList.remove('visible');return;}
49slidePrev.classList.toggle('visible',!isAtStart());slideNext.classList.toggle('visible',!isAtEnd());};const doSlide=()=>{if(sliderWrapper.offsetParent===null||window.getComputedStyle(sliderWrapper).visibility==='hidden')return;const mobile=isMobile();const index=mobile?position:Math.min(position+1,numberTeasers-1);const article=articles[index];if(!article)return;const stageWidth=teaserStage.clientWidth;const articleWidth=article.offsetWidth;let targetScroll=article.offsetLeft-(stageWidth/2-articleWidth/2);targetScroll=Math.max(0,Math.min(targetScroll,maxScrollLeft()));pendingScrollLeft=targetScroll;teaserStage.scrollTo({left:targetScroll,behavior:'smooth'});updateControlsVisibility();};const doPrev=()=>{if(isAtStart())return;position=Math.max(0,position-1);doSlide();};const doNext=()=>{if(isAtEnd())return;position=Math.min(numberTeasers-1,position+1);doSlide();};slidePrev.addEventListener('click',doPrev);slideNext.addEventListener('click',doNext);teaserStage.addEventListener('scroll',()=>{if(Math.abs(teaserStage.scrollLeft-pendingScrollLeft)<2){pendingScrollLeft=0;}
50updateControlsVisibility();},{passive:true});let touchStartX=0;teaserStage.addEventListener('touchstart',e=>{touchStartX=e.touches[0].pageX;},{passive:true});teaserStage.addEventListener('touchend',e=>{const delta=e.changedTouches[0].pageX-touchStartX;if(Math.abs(delta)<30)return;delta>0?doPrev():doNext();},{passive:true});window.addEventListener('resize',()=>requestAnimationFrame(updateControlsVisibility),{passive:true});updateControlsVisibility();doSlide();};function swipeCollectiveBox(swipeLink,swipeShift){try{const currentSwipe=swipeLink.parentNode.querySelector("div.HPSlideshow").querySelector("div.swipe_selector:not(.dis0)");let nextSwipe=currentSwipe;do{nextSwipe=swipeShift>0?nextSwipe.nextSibling:nextSwipe.previousSibling;}while(nextSwipe!=null&&nextSwipe.nodeType===Node.TEXT_NODE);if(nextSwipe==null){const allSwipes=swipeLink.parentNode.querySelector("div.HPSlideshow").querySelectorAll("div.swipe_selector");const swipeIndex=swipeShift<0?allSwipes.length-1:0;nextSwipe=allSwipes[swipeIndex];}
51if(nextSwipe!=null&&nextSwipe.nodeType===Node.ELEMENT_NODE){currentSwipe.classList.add("dis0");nextSwipe.classList.remove("dis0");trackClickEvent({'click':'Collectivebox NB'});}}catch(error){console.warn("Collective Box swipe error",error);}
52return false;}
53function observeTeaserSlider(teaserModuleId){const teaserStage=document.querySelector('.teaser-slider-stage'+teaserModuleId);if(!teaserStage||teaserStage.dataset.teaserSliderObserved==='true')return;teaserStage.dataset.teaserSliderObserved='true';const teaserStageObserver=new IntersectionObserver(entries=>{if(entries[0].isIntersecting){setTimeout(function(){sliderTeaser(teaserModuleId);},500);teaserStageObserver.disconnect();}});teaserStageObserver.observe(teaserStage);}
54const initImageSublines=(root=document)=>{root.querySelectorAll('.article__context__meta .countBU').forEach(bu=>{const meta=bu.closest('.article__context__meta');if(!meta||meta.dataset.imageSublineInitialized==='true'){return;}
55meta.dataset.imageSublineInitialized='true';const closeButton=meta.querySelector('button[aria-label="Bildunterschrift ausblenden"]');const lineHeight=parseFloat(window.getComputedStyle(bu).lineHeight);const lines=bu.offsetHeight/lineHeight;if(lines>2){meta.classList.add('readMore__clickable');bu.classList.add('countBU__reduced');meta.addEventListener('click',event=>{if(!event.target.closest('button')){bu.classList.toggle('countBU__reduced');}});closeButton?.addEventListener('click',()=>{bu.classList.toggle('countBU__reduced');});}});};const toggleImageSubline=()=>{document.querySelector(".article__context__meta")?.classList.toggle('dis0');};function showAffInfo(){const affBox=document.querySelector('.nb-affiliate-link--box');const affBoxClose=document.querySelector('#btnCloseAffInfo');const affInfoButtons=document.querySelectorAll('.nb-affiliate-link--info');let autoCloseId;if(!affBox||!affBoxClose||!affInfoButtons.length){return;}
56const closeAffInfo=function(){affBox.classList.add('dis0');affInfoButtons.forEach(function(affInfoButton){affInfoButton.setAttribute('aria-expanded','false');});if(autoCloseId){clearTimeout(autoCloseId);
56autoCloseId=undefined;}};affInfoButtons.forEach(function(affInfoButton){affInfoButton.addEventListener('click',function(){if(autoCloseId){clearTimeout(autoCloseId);}
57affBox.classList.remove('dis0');affInfoButtons.forEach(function(button){button.setAttribute('aria-expanded','true');});autoCloseId=setTimeout(closeAffInfo,10000);});});affBoxClose.addEventListener('click',closeAffInfo);}
58function initializeDoiVoting(){const radioButtons=document.querySelectorAll('.slideshow__modul_voting input[type="radio"]');if(!radioButtons.length)return;radioButtons.forEach(radioButton=>radioButton.addEventListener('change',()=>showHideDoiEmailBox()));}
59function submitGalleryDoiForm(event){const responseHandler=typeof handleGalleryDoiResponse==='function'?handleGalleryDoiResponse:null;return submitEmailForm(event,submitGalleryDoiRequest,responseHandler,(form,email)=>({galleryId:form.dataset.galleryId||'',email,optIn:!!form.querySelector('#voting_optin')?.checked,votes:[...document.querySelectorAll('.article__slideshow input[type="radio"]:checked')].map(input=>input.value==='on'?{imageId:input.id}:{imageId:input.name,rate:parseInt(input.value)})}));}
60function getDoiEmailBox(){return document.querySelector('.email_register_box');}
61function scrollToDoiEmailBox(){const stickyElement=getDoiEmailBox();if(!stickyElement)return;let elementTop=0;let element=stickyElement;while(element){elementTop+=element.offsetTop;element=element.offsetParent;}
62const stickyHeader=document.getElementById('nav__head');const offset=(stickyHeader?stickyHeader.offsetHeight:0)+8;window.scrollTo({top:elementTop-offset,behavior:'smooth'});}
63function showErrorMessage(errorMsg){const errorForm=getDoiEmailBox()?.querySelector('#error_form');const errorMsgElement=errorForm?.querySelector('#error_msg');if(!errorForm||!errorMsgElement)return;errorForm.classList.remove('dis0');errorForm.setAttribute('role','alert');errorMsgElement.innerHTML=errorMsg;errorMsgElement.hidden=false;errorMsgElement.classList.remove('dis0');}
64function showTechnicalEmailError(message){const errorMessage=message?.errorMessage;if(!errorMessage)return;message.errorContainer?.classList.remove('dis0');errorMessage.textContent=document.documentElement.dataset.site==='nb'?'Fehler beim Senden des Formulars. Versuche es bitte noch einmal.':'Fehler beim Senden des Formulars. Versuchen Sie es bitte noch einmal.';errorMessage.removeAttribute('hidden');errorMessage.classList.remove('dis0');}
65function showHideDoiEmailBox(show){const doShow=show!==false;document.querySelector('main')?.classList.toggle('active',doShow);if(doShow){scrollToDoiEmailBox();const form=getDoiEmailBox()?.closest('form');if(form)addFriendlyCaptchaToFormElement(form,frcVendorId,'captcha');}else{resetFriendlyCaptchaWidget('captcha');}}
66function initializeDoiEmailBox(){const form=getDoiEmailBox()?.closest('form');if(!form||form.id==='newsletter_form')return;const resultMessage=form.dataset.resultMessage;if(!resultMessage)return;showHideDoiEmailBox();getDoiEmailBox()?.querySelector('.form_email')?.remove();getDoiEmailBox()?.querySelector('.accordion')?.remove();showErrorMessage(resultMessage);}
67const showHideEmailBox=()=>{const formElement=document.getElementById('newsletter_form');const siteBodyElement=document.querySelector(".site_body");const newsletterCheckboxes=document.querySelectorAll(".newsletter_checkbox");bindCheckboxEvents(newsletterCheckboxes);if(siteBodyElement){updateNewsletterBoxState(newsletterCheckboxes,siteBodyElement);}
68if(formElement){addFriendlyCaptchaToFormElement(formElement,frcVendorId,'captcha');}};const updateNewsletterBoxState=(newsletterCheckboxes,siteBodyElement)=>{const hasCheckedCheckbox=[...newsletterCheckboxes].some(checkbox=>checkbox.checked);toggleClass(siteBodyElement,"active",hasCheckedCheckbox);if(hasCheckedCheckbox){toggleClass(siteBodyElement,"static",false);}else{resetFriendlyCaptchaWidget('captcha');}};async function handleGalleryDoiResponse(response,data,messages){if(!response||response.status!==200){const errorMessage=messages?.errorMessage||document.getElementById('error_msg');showTechnicalEmailError({errorMessage,errorContainer:messages?.errorContainer});resetFriendlyCaptchaWidget('captcha');return false;}
69let result;try{result=await response.json();}catch{const errorMessage=messages?.errorMessage||document.getElementById('error_msg');showTechnicalEmailError({errorMessage,errorContainer:messages?.errorContainer});return false;}
70if(result?.message!==undefined){if(result.success)document.getElementById('doimail_submit_button')?.setAttribute('disabled','disabled');resetFriendlyCaptchaWidget('captcha');showErrorMessage(result.message);return result.success;}
71(result.votes||data.votes).forEach(vote=>{const imageId=vote.imageId.toString().replace('.','\\.');const averageSpan=document.querySelector('#average_'+imageId);const sumVotesSpan=document.querySelector('#sumVotes_'+imageId);if(averageSpan&&vote.average!==undefined)averageSpan.innerHTML='<span>Durchschnitt</span> <span>'+parseFloat(vote.average).toFixed(1).replace('.',',')+'</span>';if(sumVotesSpan&&vote.sumVotes!==undefined)sumVotesSpan.innerHTML='<span>'+vote.sumVotes+'</span> <span>'+(vote.sumVotes==='1'?' Stimme':' Stimmen')+'</span>';});document.querySelectorAll("div[id^='result_']").forEach(result=>result.classList.remove('dis0'));return true;}
72const initGallerySlideshow=function(slideshowSelector){const SWIPE_THRESHOLD=40;const slideshow=document.querySelector(slideshowSelector);const stage=slideshow?.querySelector('.gallery-slider-stage');const dotsWrapper=slideshow?.querySelector('.slideshow-dots');const previousButton=slideshow?.querySelector('.slider-nav--prev');const nextButton=slideshow?.querySelector('.slider-nav--next');const slides=stage?stage.querySelectorAll('.article__context__full'):[];const total=slides.length;if(!stage||total<2)return;let current=0;let touchStartX=0;const dots=[];if(dotsWrapper){for(let index=0;index<total;index++){const dot=document.createElement('button');dot.type='button';dot.setAttribute('aria-label',`Bild ${index + 1} von ${total}`);dot.addEventListener('click',function(event){event.stopPropagation();goTo(index);});dotsWrapper.appendChild(dot);dots.push(dot);}}
73previousButton?.addEventListener('click',function(event){event.stopPropagation();goTo(current-1);});nextButton?.addEventListener('click',function(event){event.stopPropagation();goTo(current+1);});stage.addEventListener('touchstart',function(event){touchStartX=event.changedTouches[0].screenX;},{passive:true});stage.addEventListener('touchend',function(event){const distance=event.changedTouches[0].screenX-touchStartX;if(Math.abs(distance)>SWIPE_THRESHOLD){goTo(distance<0?current+1:current-1);}},{passive:true});goTo(0);function goTo(index){current=(index+total)%total;stage.style.transform=`translateX(-${current * 100}%)`;dots.forEach(function(dot,dotIndex){dot.classList.toggle('active',dotIndex===current);});}};function initializeNewsletterEmailBox(){if(!document.getElementById('newsletter_form'))return;showHideEmailBox();let previousCheckedCount=0;const updateDoiBox=()=>{const checkedCount=document.querySelectorAll('.newsletter_checkbox:checked').length;const isAdding=checkedCount>previousCheckedCount;previousCheckedCount=checkedCount;if(isAdding||checkedCount===0)showHideDoiEmailBox(checkedCount>0);};document.querySelectorAll('.newsletter_checkbox').forEach(checkbox=>checkbox.addEventListener('change',updateDoiBox));}
74function submitNewsletterForm(event){const responseHandler=typeof handleNewsletterResponse==='function'?handleNewsletterResponse:null;return submitEmailForm(event,submitNewsletterRequest,responseHandler,form=>{const checked=[...document.querySelectorAll('.newsletter_checkbox:checked')];return{newsletterids:checked.map(input=>input.id).join(','),email:form.querySelector('input[type="email"]').value,names:Object.fromEntries(checked.map(input=>[input.id,input.name]))};});}
75async function handleNewsletterResponse(response,data,messages){trackClickEvent({click:'Newsletter-Landingpage-Bestaetigung'});if(!response||response.status!==200){showTechnicalEmailError(messages);resetFriendlyCaptchaWidget('captcha');return false;}
76let results;try{results=await response.json();}catch{showTechnicalEmailError(messages);return false;}
77const success=Object.keys(results).filter(id=>results[id]==='success');const alreadyGiven=Object.keys(results).filter(id=>results[id]==='alreadyGiven');const alreadyGranted=Object.keys(results).filter(id=>results[id]==='alreadyGranted');const nameList=ids=>ids.map(id=>`<strong>${data.names[id]}</strong>`).join(', ');const checkedNewsletter=document.getElementById('checked_newsletter')||document.getElementById('clicked_newsletter');checkedNewsletter&&(checkedNewsletter.innerHTML=nameList(Object.keys(data.names)));const sendEmail=document.getElementById('send_email');sendEmail&&(sendEmail.innerHTML=data.email);const pageStart=document.getElementById('page_start')||document.querySelector('#newsletter_landing #layout_main > section:first-child');pageStart?.classList.add('dis0');document.getElementById('page_danke')?.classList.remove('dis0');const setDisplay=(selector,visible)=>{const element=document.getElementById(selector);if(element)element.classList.toggle('dis0',!visible);};setDisplay('info_success',success.length>0);setDisplay('info_success2',success.length>0);setDisplay('info_success3',success.length>0);setDisplay('info_success4',success.length>0);setDisplay('info_already_given',alreadyGiven.length>0);setDisplay('info_already_granted',alreadyGranted.length>0);if(!success.length&&!alreadyGiven.length&&!alreadyGranted.length){messages.successMessage?.classList.remove('dis0');messages.successMessage?.removeAttribute('hidden');}
78return true;}
79const bookmarkLoginMessage=document.documentElement.dataset.site==='nb'?'Um einen Inhalt auf die Merkliste setzen zu können, musst du dich <a href="#" onClick="loginRegisterSlide();">einloggen</a> oder vorher <a href="#" onClick="registerSlide(undefined, \'register-new\');">registrieren</a>
79.':'Um einen Inhalt auf die Merkliste setzen zu können, müssen Sie sich <a href="#" onClick="loginRegisterSlide();">einloggen</a> oder vorher <a href="#" onClick="registerSlide(undefined, \'register-new\');">registrieren</a>.';const bookmarkRemovedMessage='Der Inhalt wurde aus der Merkliste entfernt.';const bookmarkAddedMessage=document.documentElement.dataset.site==='nb'?'Der Inhalt wurde deiner Merkliste hinzugefügt. Diese findest du im Login-Menü unter <a href="/system/merkliste">"Meine Merkliste"</a>.':'Der Inhalt wurde Ihrer Merkliste hinzugefügt. Diese finden Sie im Login-Menü unter <a href="/system/merkliste">"Meine Merkliste"</a>.';function showBookmarkMessage(element,message){if(element.closest('.sharing__menu')){showSharingSliderMenuInfoText(message,5000);}else{showInformationBox(message);}}
80function showInformationBox(boxText){const placeholder=document.getElementById('informationBoxPlaceholder');if(!placeholder)return;const infoBox=document.createElement('div');infoBox.className='nb-affiliate-link--box';infoBox.setAttribute('role','alert');infoBox.innerHTML='<span>'+(window.lucideIcons?.info||'')+'</span>'+'<span>'+boxText+'</span>'+'<button class="close__login" type="button" aria-label="Hinweis schließen" onclick="this.closest(\'.nb-affiliate-link--box\').remove()">'+'<span class="close__line__1"></span><span class="close__line__2"></span></button>';placeholder.replaceChildren(infoBox);clearTimeout(placeholder.autoCloseId);placeholder.autoCloseId=setTimeout(()=>infoBox.remove(),5000);}
81const toogleBookmark=(element,event)=>{event.preventDefault();event.stopPropagation();if(!isLoggedIn()){showBookmarkMessage(element,bookmarkLoginMessage);return false;}
82const bookmarkId=element.getAttribute('data-bookmark-id');const removeBookmark=element.classList.contains('active');document.querySelectorAll('[data-bookmark-id="'+bookmarkId+'"]').forEach(duplicate=>toogleBookmarkIcon(duplicate,removeBookmark));const saveResult=saveBookmarkValue(element,bookmarkId,removeBookmark);if(saveResult&&typeof saveResult.then==='function'){saveResult.then(()=>{showBookmarkMessage(element,removeBookmark?bookmarkRemovedMessage:bookmarkAddedMessage);});}};const toogleBookmarkIcon=(element,removeBookmark)=>{element.classList.toggle('active');if(isNN){const newLabel=removeBookmark?'Inhalt merken':'Inhalt nicht mehr merken';element.children[1].innerHTML=newLabel;return;}
83const newLabel=removeBookmark?'Zur Merkliste hinzufügen':'Aus Merkliste entfernen';element.setAttribute('aria-label',newLabel);element.hasAttribute('title')&&element.setAttribute('title',newLabel);const socialToolbarTooltip=element.querySelector('.nb__tooltiptext');if(socialToolbarTooltip){socialToolbarTooltip.innerHTML=newLabel;}};function initBookmarkIcons(target){if(isNN||!target){return;}
84const allArticleBookmarkIcons=target.querySelectorAll('[data-bookmark-id]');if(isLoggedIn()){fetchUserBookmarks().then(function(userBookmarks){showLoader(false);allArticleBookmarkIcons.forEach(icon=>{if(userBookmarks.includes(Number(icon.dataset.bookmarkId))){toogleBookmarkIcon(icon,false);}});}).catch(function(error){console.warn('Could not get user bookmarks',error);});}}
85function favoritesEditToggle(){const userFavEditContainer=document.querySelector('#user-fav-edit-icon');const penIconWrapper=userFavEditContainer.querySelector('[data-icon="square-pen"]');const xIconWrapper=userFavEditContainer.querySelector('[data-icon="circle-x"]');const editMode=!penIconWrapper.classList.contains('dis0');penIconWrapper.classList.toggle('dis0',editMode);xIconWrapper.classList.toggle('dis0',!editMode);if(document.querySelector('#user-fav-items')?.childElementCount===0){document.querySelector('#user-fav-edit-desc').classList.toggle('dis0');}
86document.querySelector('#user-fav-items')?.querySelectorAll('.pseudo_fav').forEach(function(favoriteItem){toggleMinusItem(favoriteItem,editMode);});favoritesToggleNavigationItems(document,editMode);userFavEditContainer.ariaLabel=editMode?'Favoriten speichern':'Favoriten bearbeiten';if(editMode){trackClickEvent({'click':'Edit Favourites'});}}
87function favoritesToggleNavigationItems(navElement,editMode){const selectedFavorites=getSelectedFavorites();navElement.querySelectorAll('li[data-id]:not(.pseudo_fav)')?.forEach(function(navItem){favoritesToggleNavigationItem(navItem,editMode,selectedFavorites);});}
88function favoritesToggleNavigationItem(navItem,editMode,selectedFavorites){selectedFavorites.includes(navItem.dataset.id)?toggleMinusItem(navItem,editMode):togglePlusItem(navItem,editMode);}
89function focusFirstInteractiveElement(selector){setTimeout(()=>document.querySelector(selector)?.querySelector('input:not([type="hidden"]), button, select, textarea, a')?.focus(),0
89);}
90function getSelectedFavorites(){return Array.from(document.querySelector('#user-fav-items').querySelectorAll('[data-id]'),el=>el.dataset.id);}
91function toggleItem(item,editMode,icon){const iconSvg=window.lucideIcons?.[icon]??'';const buttonHTML=item.dataset.notaccessible==='true'?`<button type="button" disabled></button>`:`<button type="button" aria-label="Favorit `+(icon==='x'?'entfernen':'hinzufügen')+`" onClick="setFavoriteFromNavigation(this,'`+item.dataset.id+`',`+(icon==='x').toString()+`);">`+iconSvg+`</button>`;const navControllerWrapper=item.querySelector('.nav__controllers');const insertAfterElement=navControllerWrapper||item;if(editMode){const insertButtonHTML=navControllerWrapper?buttonHTML:`<div class="nav__controllers">${buttonHTML}</div>`;insertAfterElement.insertAdjacentHTML('beforeend',insertButtonHTML);}else{insertAfterElement.lastElementChild.remove();}}
92function toggleMinusItem(item,editMode){toggleItem(item,editMode,'x');}
93function togglePlusItem(item,editMode){toggleItem(item,editMode,'plus');}
94function toggleNavigationFavoriteControls(item,remove){toggleMinusItem(item,!remove);togglePlusItem(item,remove);}
95const toggleEmailBoxAccordion=event=>{event.preventDefault();const toggleBtn=event.currentTarget;const content=document.getElementById('accordion_content');if(!toggleBtn||!content)return;content.classList.toggle('expanded');const isExpanded=content.classList.contains('expanded');toggleBtn.setAttribute('aria-expanded',String(isExpanded));toggleBtn.setAttribute('aria-label',isExpanded?'Formular einklappen':'Formular erweitern');};const bindCheckboxEvents=newsletterCheckboxes=>{newsletterCheckboxes.forEach(cb=>{cb.addEventListener("click",async()=>{const span=cb.nextElementSibling;if(!span)return;const icon=cb.checked?'square-check-big':'square-plus';span.innerHTML=await getLucideSvg(icon);});});};function submitEmailForm(event,request,handleResponse,createRequestData){event.preventDefault();const form=event.currentTarget;const box=form.querySelector('.email_register_box');const submitButton=box?.querySelector('.form_button[type="submit"]');const errorMessage=box?.querySelector('.error_msg');const successMessage=box?.querySelector('.success_msg');const errorContainer=errorMessage?.closest('.potentially_errors');const email=box?.querySelector('input[type="email"]');if(!box||!submitButton||!email||typeof request!=='function')return false;if(successMessage){successMessage.classList.add('dis0');successMessage.hidden=true;}
96const requestData=typeof createRequestData==='function'?createRequestData(form,email.value):{email:email.value,formId:form.id};const captchaResponse=form.frcCaptchaResponse;if(captchaResponse&&typeof checkCaptchaWidgetCompleted==='function'&&!checkCaptchaWidgetCompleted('captcha',showErrorMessage))return false;if(captchaResponse){requestData.frcCaptchaResponse=captchaResponse.value;}
97const buttonText=submitButton.querySelector('#button_text');const buttonLoader=submitButton.querySelector('#button_loader');if(buttonText)buttonText.classList.add('hidden');if(buttonLoader)buttonLoader.classList.remove('hidden');submitButton.disabled=true;const finish=async response=>{if(buttonText)buttonText.classList.remove('hidden');if(buttonLoader)buttonLoader.classList.add('hidden');submitButton.disabled=false;if(typeof handleResponse==='function')return handleResponse(response,requestData,{errorMessage,errorContainer,successMessage});const message=response?successMessage:errorMessage;if(message){if(message===successMessage){message.classList.remove('dis0');}else{errorContainer?.classList.remove('dis0');message.classList.remove('dis0');}
98message.removeAttribute('hidden');}
99return response;};return request(requestData).then(finish).catch(()=>finish(null));}
100const showImageLightbox=function(imageSelector){const LIGHTBOX_SELECTOR='.img__lightbox';const LIGHTBOX_OPEN_CLASS='img__lightbox__open';const HIDDEN_CLASS='dis0';const LIGHTBOX_CONTAINER_SELECTOR='button.img__lightbox__container, div.img__lightbox__container';const OPEN_BUTTON_SELECTOR='.img__lightbox .modul__picture:not(.modul__picture__link)';const CLOSE_BUTTON_SELECTOR='.btnCloseImg';const lightbox=findLightbox(imageSelector);const lightboxContainer=findLightboxContainer(imageSelector,lightbox);const openButtons=lightboxContainer?.querySelectorAll(OPEN_BUTTON_SELECTOR);const closeButton=lightbox?.querySelector(CLOSE_BUTTON_SELECTOR);if(!lightbox||!openButtons?.length){return;}
101openButtons.forEach(function(openButton){openButton.addEventListener('click',function(event){event.stopPropagation();const isOpen=lightbox.classList.toggle(LIGHTBOX_OPEN_CLASS);setCloseButtonState(!isOpen);});});document.addEventListener('click',function(){closeLightbox();});function findLightbox(selector){return document.querySelector(`${selector} ${LIGHTBOX_SELECTOR}`)||document.querySelector(`${LIGHTBOX_SELECTOR}${selector}`)||document.querySelector(`${LIGHTBOX_SELECTOR} ${selector}`);}
102function findLightboxContainer(selector,selectedLightbox){return selectedLightbox?.querySelector(LIGHTBOX_CONTAINER_SELECTOR)||document.querySelector(`${selector} ${LIGHTBOX_CONTAINER_SELECTOR}`);}
103function closeLightbox(){if(!lightbox.classList.contains(LIGHTBOX_OPEN_CLASS)){return;}
104lightbox.classList.remove(LIGHTBOX_OPEN_CLASS);setCloseButtonState(true);}
105function setCloseButtonState(isHidden){if(closeButton){closeButton.disabled=isHidden;closeButton.classList.toggle(HIDDEN_CLASS,isHidden);}}};const initAudioPlayer=function(contentSelector){const audioClicks=document.querySelectorAll(contentSelector+' .modul__teaser__link, '+contentSelector+' .article__audio .play-podcast');const playButtons=document.querySelectorAll(contentSelector+' .play-podcast');const closeButton=document.querySelector(contentSelector+' .close__player');const player=document.querySelector(contentSelector+' .article__audio');const audio=document.querySelector(contentSelector+' audio');const togglePlayer=function(){if(player.classList.contains('dis0')){closeAllPlayers();player.classList.remove('dis0');player.removeAttribute('hidden');}
106const togglePlayButtonState=playButton=>{const prefix=playButton.querySelector('[data-icon^="circle-"]')?'circle-':'';const playIcon=playButton.querySelector(`[data-icon="${prefix}play"]`);const isShowingPlay=!playIcon.classList.contains('dis0');playButton.ariaLabel=isShowingPlay?'Podcast pausieren':'Podcast abspielen';playIcon.classList.toggle('dis0',isShowingPlay);playButton.querySelector(`[data-icon="${prefix}pause"]`).classList.toggle('dis0',!isShowingPlay);};playButtons.forEach(togglePlayButtonState);if(audio.paused){audio.play();}else{audio.pause();}};const closePlayer=function(){player.classList.add('dis0');player.setAttribute('hidden','');playButtons.forEach(function(playButton){playButton.ariaLabel='Podcast abspielen';const prefix=playButton.querySelector('[data-icon^="circle-"]')?'circle-':'';playButton.querySelector(`[data-icon="${prefix}play"]`).classList.remove('dis0');playButton.querySelector(`[data-icon="${prefix}pause"]`).classList.add('dis0');});audio.pause();audio.currentTime=0;};const closeAllPlayers=function(){const allPlayers=document.querySelectorAll('.article__audio');allPlayers.forEach(function(player){player.classList.add('dis0');player.setAttribute('hidden','');});const allPlayButtons=document.querySelectorAll('.play-podcast');allPlayButtons.forEach(function(playButton){playButton.ariaLabel='Podcast abspielen';const prefix=playButton.querySelector('[data-icon^="circle-"]')?'circle-':'';playButton.querySelector(`[data-icon="${prefix}play"]`).classList.remove('dis0');playButton.querySelector(`[data-icon="${prefix}pause"]`).classList.add('dis0');});const allAudios=document.querySelectorAll('audio');allAudios.forEach(function(audio){audio.pause();audio.currentTime=0;});};audioClicks.forEach(function(teaserLink){teaserLink.addEventListener('click',function(){togglePlayer();});});closeButton.addEventListener('click',function(){closePlayer();});};const initVideoLightbox=(videoType,videoId,videoTeaserId,teaserId,headline)=>{const playerMap=new Map();const teaserLinks=document.querySelectorAll('.'+teaserId+' .modul__teaser__link');const lightbox=document.querySelector('.'+teaserId+' .video__lightbox');const closeLightbox=document.querySelector('.'+teaserId+" .close__player");if(teaserLinks!==undefined&&lightbox!==undefined&&closeLightbox!==undefined){teaserLinks.forEach(teaserLink=>{teaserLink.addEventListener('click',()=>{lightbox.classList.toggle('dis0');getVideoPlayer(videoType,videoId,videoTeaserId,headline,playerMap)?.then(player=>player?.play());});});closeLightbox.addEventListener('click',()=>{lightbox.classList.toggle('dis0');getVideoPlayer(videoType,videoId,videoTeaserId,headline,playerMap)?.then(player=>player?.pause());});}};const getFaqPanel=accordion=>{const button=accordion.querySelector('button');const panelId=button?.getAttribute('aria-controls');const nextPanel=accordion.nextElementSibling;return nextPanel?.classList.contains('panel')?nextPanel:panelId?document.getElementById(panelId):null;};const toggleFaqAccordion=accordion=>{const button=accordion.querySelector('button');const panel=getFaqPanel(accordion);if(!button||!panel){return;}
107const isFaqOpened=!accordion.classList.contains('accordion-active');accordion.classList.toggle('accordion-active',isFaqOpened);button.ariaExpanded=String(isFaqOpened);button.ariaLabel=isFaqOpened?'Antwort schließen':'Antwort öffnen';panel.ariaHidden=String(!isFaqOpened);panel.style.maxHeight=isFaqOpened?panel.scrollHeight+'px':null;};function openFaq(element){toggleFaqAccordion(element);}
108function copyArticleLink(event,url,showInfoBox){event.preventDefault();navigator.clipboard.writeText(url);if(showInfoBox){showInformationBox('Link zum Artikel in Zwischenablage kopiert');}else{showSharingSliderMenuInfoText('Link kopiert.',2000);}}
109function showSharingSliderMenuInfoText(infoText,showDuration){if(!isNN&&document.documentElement.dataset.site!=='nn'){return;}
110if(!showDuration){showDuration=0;}
111const ssitph=document.querySelector("#sharingSliderInfoTextPlaceholder");if(ssitph){if(ssitph.classList.contains("sharing__slide__text_show")){clearTimeout(ssitph.textAutoCloseId);ssitph.classList.toggle("sharing__slide__text_show");}
112if(infoText.trim().length===0){return;}
113const infoSpan=document.createElement('span');infoSpan.innerHTML=window.lucideIcons?.['info']??'';
113ssitph.innerHTML=infoSpan.outerHTML+'<span>'+infoText+'</span>';ssitph.classList.toggle("sharing__slide__text_show");ssitph.textAutoCloseId=setTimeout(function(){ssitph.classList.toggle("sharing__slide__text_show");},showDuration);}}
114function toggleSharingSliderMenu(force){const isActive=document.querySelector('.sharing__menu')?.classList.toggle('sharing__menu--active',force);if(isActive){if(!isMobileView()){document.querySelector('.social-icons a[aria-label="Artikel auf WhatsApp teilen"]')?.remove();}}
115toggleHeaderState(force);toggleInertForOverlay('.sharing__menu','sharing__menu--active','main, footer');}
116const commentSubmitSuccessMessage=document.documentElement.dataset.site==='nb'?'Danke für deinen Kommentar. Eine Veröffentlichung kann zeitverzögert erfolgen.':'Danke für Ihren Kommentar. Eine Veröffentlichung kann zeitverzögert erfolgen.';function setSubmitButtonStatus(commentareaId){const commentText=document.getElementById(commentareaId+'-textarea').value;document.getElementById(commentareaId+'-button').disabled=commentText.length===0;}
117function submitComment(commentareaId,commentsElementId){showLoader(true);document.getElementById(commentareaId+'-button').disabled=true;const commentText=document.getElementById(commentareaId+'-textarea').value;return submitCommentRequest(commentareaId,commentsElementId,commentText).then(function(response){if(response.status===200){showLoader(false);showCommentSubmitSuccess(commentareaId);return;}
118return response.text().then(function(responseHTML){showLoader(false);document.getElementById(commentareaId+'-error').innerHTML=' — '+responseHTML;document.getElementById(commentareaId+'-button').disabled=false;});}).catch(function(){showLoader(false);const isNb=document.documentElement.dataset.site==='nb';document.getElementById(commentareaId+'-error').innerHTML=isNb?' — Es ist ein Fehler aufgetreten. Bitte versuche es in ein paar Minuten erneut.'
118:' — Es ist ein Fehler aufgetreten. Bitte versuchen Sie es in ein paar Minuten erneut.';document.getElementById(commentareaId+'-button').disabled=false;});}
119function showCommentSubmitSuccess(commentareaId){document.getElementById(commentareaId+'-textarea').disabled=true;document.getElementById(commentareaId+'-button').classList.add('dis0');document.getElementById(commentareaId+'-status').innerHTML=commentSubmitSuccessMessage;document.getElementById(commentareaId+'-status').style.maxWidth='100%';}
120function countCommentChars(commentareaId){var commentText=document.getElementById(commentareaId+'-textarea').value;document.getElementById(commentareaId+'-count').innerHTML=commentText.length;setSubmitButtonStatus(commentareaId);};document.addEventListener('DOMContentLoaded',()=>{initializeFavoritesNavigation();initializeGeneral();initializeAdvertising();initializeLoginRegisterUserMenu();initializeArticle();initializeGallery();initializeFavorites();});const stackedDOMloadedCalls=[];function addFunctionToDOMloadedStack(fn){if(typeof fn==="function"){stackedDOMloadedCalls.push(fn);}}
121function writeLogo(pathPrefix){if(!isNN){return;}
122const urlParams=new URLSearchParams(window.location.search);let headerLogo=getCookieValue("headerLogo");const headerLogoParam=urlParams.get('ref');if(isValidHeaderLogo(headerLogoParam)){setSessionCookie('headerLogo',headerLogoParam);headerLogo=headerLogoParam;}
123if(!isValidHeaderLogo(headerLogo)){return;}
124const pathLogo='custom_headers/logo-'+headerLogo+'.png';const headerLogoSourceTag=document.querySelector('.nb-logo')?.querySelector('source');if(headerLogoSourceTag){headerLogoSourceTag.outerHTML='<source srcset="'+pathPrefix+getParamterizedLogo(pathLogo,'_w')+', '+pathPrefix+getParamterizedLogo(pathLogo,'_w@2x')+' 2x, '+pathPrefix+getParamterizedLogo(pathLogo,'_w@3x')+' 3x" media="(prefers-color-scheme: dark)">';}
125const headerLogoImgTag=document.querySelector('.nb-logo')?.querySelector('img');if(headerLogoImgTag){headerLogoImgTag.outerHTML='<img alt="'+getLogoAltText(headerLogo)+'" src="'+pathPrefix+pathLogo+'" srcset="'+pathPrefix+getParamterizedLogo(pathLogo,'@2x')+' 2x, '+pathPrefix+getParamterizedLogo(pathLogo,'@3x')+' 3x" >';}}
126function getParamterizedLogo(pathLogo,paramValue){return pathLogo.replace('.png',paramValue+'.png');}
127function isValidHeaderLogo(headerLogo){return headerLogo==="altmuehl-bote"||headerLogo==="der-bote"||headerLogo==="hersbrucker-zeitung"||headerLogo==="pegnitz-zeitung"||headerLogo==="roth-hilpoltsteiner-volkszeitung"||headerLogo==="schwabacher-tagblatt"||headerLogo==="treuchtlinger-kurier"||headerLogo==="weissenburger-tagblatt";}
128function getLogoAltText(headerLogo){if(headerLogo==="altmuehl-bote"){return"Altmühl Bote";}
129if(headerLogo==="der-bote"){return"Der Bote";}
130if(headerLogo==="hersbrucker-zeitung"){return"Hersbrucker Zeitung";}
131if(headerLogo==="pegnitz-zeitung"){return"Pegnitz-Zeitung";}
132if(headerLogo==="roth-hilpoltsteiner-volkszeitung"){return"Roth-Hilpoltsteiner Volkszeitung";}
133if(headerLogo==="schwabacher-tagblatt"){return"Schwabacher Tagblatt";}
134if(headerLogo==="treuchtlinger-kurier"){return"Treuchtlinger Kurier";}
135if(headerLogo==="weissenburger-tagblatt"){return"Weißenburger Tagblatt";}}
136const ssoTestHostPrefixes=['localhost','pre','stage','ssotest'];function getLoggedInJWTToken(){return getCookieValue(getSSOCookieName());}
137function getLoggedInJWTPayload(){return getJWTTokenPayload(getLoggedInJWTToken());}
138function getLoggedInUserId(){return getLoggedInJWTPayload()?.sub;}
139function loggedInUserHasRole(role){var loggedInJWTPayload=getLoggedInJWTPayload();return loggedInJWTPayload!==null&&Array.isArray(loggedInJWTPayload.roles)&&loggedInJWTPayload.roles.includes(role);}
140function getJWTTokenPayload(token){if(token!=null)
141return JSON.parse(atob(token.split('.')[1]));return null;}
142function getSSOCookieName(){return ssoTestHostPrefixes.some(prefix=>window.location.hostname.startsWith(prefix))?'vnpssotest':'vnpsso';}
143function isLoggedIn(){return isCookieAvailable(getSSOCookieName());}
144function initializeFavoritesNavigation(){const loggedInFavorites=document.getElementById('user-fav-nav-top');const loggedOutFavorites=document.getElementById('user-fav-nav-top--anon');if(!loggedInFavorites||!loggedOutFavorites)return;const loggedIn=isLoggedIn();loggedInFavorites.classList.toggle('dis0',!loggedIn);loggedOutFavorites.classList.toggle('dis0',loggedIn);if(loggedIn)addFunctionToDOMloadedStack(()=>getFavoritesForNavigation());}
145function isCookieAvailable(key){return getCookieValue(key)!=null;}
146function getCookieValue(key,prefix){var cookies=document.cookie;
146if(cookies&&cookies!==''){var items=cookies.split(";");for(var i=0;i<items.length;i++){var value=items[i].trim();var split=value.split("=");if(split.length===2&&(split[0]===key||(prefix===true&&split[0].startsWith(key)))){return split[1];}}}
147return null;}
148function getBase64CookieValue(cookieName,cookieEndpoint){if(!isCookieAvailable(cookieName)){const xhr=new XMLHttpRequest();xhr.open('GET',linkPrefix+cookieEndpoint,false);xhr.send();if(xhr.status<200||xhr.status>=300){console.error("Failed to fetch",cookieEndpoint);}}
149const encodedCookieValue=getCookieValue(cookieName);if(!encodedCookieValue){console.error("Cookie not available:",cookieName);return null;}
150return atob(encodedCookieValue);}
151function hasPurAccess(){return isLoggedIn()&&getBase64CookieValue(cookieNamePurAccess,'/piano/user/pur-access')==='true';}
152function hasPlusAccess(){return isLoggedIn()&&getBase64CookieValue(cookieNamePlusAccess,'/piano/user/plus-access')==='true';}
153function getActiveTerms(){if(!isLoggedIn()){return[];}
154const activeTerms=getBase64CookieValue(cookieNameActiveTerms,'/piano/user/active-terms')||'';return activeTerms.split(';');}
155function getSubscriptionStatus(statusValues_args){const statusValues=statusValues_args===undefined?['paid','lgdin','anon']:statusValues_args;if(isLoggedIn()){if(isNN&&hasPlusAccess()){return statusValues[0];}
156return statusValues[1];}
157return statusValues[2];}
158function setSessionCookie(key,value){setCookie(key,value,null);}
159function setUserMetricCookie(key,value){const jwtExp=getLoggedInJWTPayload()?.exp;if(jwtExp){setCookie(key,value,jwtExp*1000)}}
160function deleteCookie(key){setCookie(key,'',0)}
161function setCookie(key,value,expires){const attributes={[key]:encodeURIComponent(value),expires:expires!=null?new Date(expires).toUTCString():null,path:'/',domain:msCookieDomain};document.cookie=Object.entries(attributes).filter(([key,value])=>value!=null).map(([key,value])=>`${key}=${value}`).join('; ');}
162window.addEventListener("message",function(postedMessage){if(typeof postedMessage.data["datawrapper-height"]!=="undefined"){for(let id in postedMessage.data["datawrapper-height"]){let iframe=document.getElementById("dwchart-"+id);if(typeof iframe!=="undefined")
163iframe.style.height=postedMessage.data["datawrapper-height"][id]+"px";}}
164if(postedMessage.origin.includes("webgrafik.dpa-addons.com")){if(typeof(postedMessage.data)=="string"&&"pym"===postedMessage.data.slice(0,3)){let message=postedMessage.data.split("x");let iframe=document.getElementById(message[2]);if(typeof iframe!=="undefined")
165iframe.style.height=message.slice(-1)+"px"}}});function getCurrentPathWithQueryAndHash(){const{pathname,search,hash}=window.location;return`${pathname}${search}${hash}`;}
166function getAnchor(){return(document.URL.split('#').length>1)?document.URL.split('#')[1]:null;}
167function getParam(paramName){return new URLSearchParams(window.location.search).get(paramName);}
168function recalculateMarginBottom(elem,value){if(elem!=null){elem.style.marginBottom=(getComputedStyleAsFloat(elem,'margin-bottom')+value)+"px";}}
169function recalculatePaddingBottom(elem,value){if(elem!=null){elem.style.paddingBottom=(getComputedStyleAsFloat(elem,'padding-bottom')+value)+"px";}}
170function getComputedStyleAsFloat(elem,style){return parseFloat(window.getComputedStyle(elem).getPropertyValue(style));}
171function decodeHtml(html){let txt=document.createElement("textarea");txt.innerHTML=html;return txt.value;}
172function fadeOut(el,speed){const seconds=speed/1000;el.style.opacity=1;el.style.transition="opacity "+seconds+"s ease-out";el.style.opacity=0;}
173function removeFadeOut(el,speed){fadeOut(el,speed);setTimeout(function(){el.parentNode.removeChild(el);},speed);}
174function fadeIn(el,speed){const seconds=speed/1000;el.style.opacity=0;el.style.transition="opacity "+seconds+"s ease-in";setTimeout(function(){el.style.opacity=1;},10);}
175function loadEditorSystemButton(contentId){fetch(linkPrefix+'?ot=de.nordbayern.ot.EditorSystemButton&contentId='+contentId).then(function(response){return response.text();}).then(function(html){const socialToolbar=document.querySelector('#social_toolbar');if(socialToolbar!=null)
176socialToolbar.insertAdjacentHTML('beforeend',html);}).catch(function(err){console.warn('Could not load editor system button.',err);});}
177function evalOrRefreshScripts(container){container.querySelectorAll('script').forEach(function(script){if(script.src){refreshScript(script);}else{evalScript(script);}});}
178function refreshScript(script){try{removeSameScripts(script);const newScript=document.createElement('script');
178Array.from(script.attributes).forEach(attr=>{newScript.setAttribute(attr.name,attr.value);});document.body.appendChild(newScript);}catch(err){console.warn('Could not refresh script.',err);}}
179function removeSameScripts(script){const scripts=document.querySelectorAll('script');scripts.forEach(documentScript=>{if(isSameScript(script,documentScript)){documentScript.parentNode.removeChild(documentScript);}});}
180function isSameScript(script1,script2){const attrs1=script1.attributes;const attrs2=script2.attributes;if(attrs1.length!==attrs2.length){return false;}
181for(let i=0;i<attrs1.length;i++){const attr1=attrs1[i];const attr2=attrs2.getNamedItem(attr1.name);if(!attr2||attr1.value!==attr2.value){return false;}}
182return true;}
183function evalScript(script){try{eval(script.innerHTML);}catch(err){console.warn('Could not eval script.',err);}}
184function toggleAlertBox(container,elementSelector,show){const el=container?.querySelector(elementSelector);if(!el)return;el.classList.toggle('dis0',!show);if(show){el.setAttribute('role','alert');}else{el.toggleAttribute('role',false);}}
185if(typeof module!=='undefined'){module.exports={setCookie,deleteCookie,fetchUserRecommendationsTeaser,setSessionCookie,setUserMetricCookie}}
186function executeLoadedScripts(scriptContainingElement){const innerScriptsLoadContainer=[];const srcScriptsLoadContainer=[];const sscripts=scriptContainingElement.querySelectorAll('script');let hasSrcScripts=false;sscripts.forEach((sscript)=>{if(sscript.attributes.hasOwnProperty("data-cmp-vendor")){return;}
187let loadScript=document.createElement("script");loadScript.setAttribute("type","text/javascript");if(sscript.src){hasSrcScripts=true;srcScriptsLoadContainer.push(loadScript);scriptContainingElement.appendChild(loadScript);loadScript.onload=function(){srcScriptsLoadContainer.pop();if(srcScriptsLoadContainer.length===0){innerScriptsLoadContainer.forEach((innerScript)=>{scriptContainingElement.appendChild(innerScript);});}}
188loadScript.src=sscript.src;}else{loadScript.innerHTML=sscript.innerHTML;innerScriptsLoadContainer.push(loadScript);}});if(!hasSrcScripts){innerScriptsLoadContainer.forEach((innerScript)=>{scriptContainingElement.appendChild(innerScript);});}}
189function initializeGeneral(){deleteCookie('aliasWildcardRedirect');while(stackedDOMloadedCalls.length>0)stackedDOMloadedCalls.shift()();}
190let stickyAdInitialLoad=true;function styleAdverts(footer,pianoRibbon){window.googletag=window.googletag||{cmd:[]};googletag.cmd.push(function(){googletag.pubads().addEventListener('slotResponseReceived',function(event){try{const slot=event.slot;const slotId=slot.getSlotElementId();const slotElem=document.querySelector('#'+slotId);if(slotId==="traffective-ad-Floor"){if(stickyAdInitialLoad){stickyAdInitialLoad=false;observeStickyAd(slotElem,footer,pianoRibbon);}}}catch(error){console.error("Advert could not be styled",error);}});});}
191function hideStickyFooterAds(isRetry){let stickyAdRemoved=false;document.querySelectorAll('.trf-ad-bottom-sticky-container').forEach(function(el){el.remove();stickyAdRemoved=true;});if(!stickyAdRemoved&&!isRetry){setTimeout(function(){hideStickyFooterAds(true);},2000);}}
192function observeStickyAd(slotElem,footer,pianoRibbon){var stickyAdResizeObserver=new ResizeObserver(function(){var stickyAdHeight=slotElem.clientHeight;if(stickyAdHeight<90&&stickyAdHeight>0)
193stickyAdHeight=90;if(stickyAdHeight>0){recalculatePaddingBottom(footer,stickyAdHeight);recalculateMarginBottom(pianoRibbon,stickyAdHeight);}
194stickyAdResizeObserver.disconnect();});stickyAdResizeObserver.observe(slotElem);}
195function enrichAdTargeting(adTargetingJson){if(adTargetingJson.targeting!=='undefined'){const channelValue=isMobileView()?"Mobile":"Desktop";const userloggedinValue=String(isLoggedIn());const aboValue=String(hasPlusAccess());adTargetingJson.targeting.push({"key":"channel","values":null,"value":channelValue},{"key":"userloggedin","values":null,"value":userloggedinValue},{"key":"abo","values":null,"value":aboValue});}
196return JSON.stringify(adTargetingJson);}
197async function enrichAdTargetingAsync(adTargetingJson){if(adTargetingJson.targeting!=='undefined'){const segmentIds=isNN?await fetchPianoUserSegments():[];if(segmentIds.length>0){adTargetingJson.targeting.push({"key":"werbezone","values":segmentIds,"value":null});}}
198return enrichAdTargeting(adTargetingJson);}
199const PIANO_SEGMENTS_CACHE_TTL_MS=5*60*1000;let pianoUserSegmentsPromise=null;function observePianoRibbon(footer,pianoRibbon){const pianoRibbonResizeObserver=new ResizeObserver(function(){const pianoRibbonIframe=pianoRibbon.querySelector('.tp-container-inner iframe');if(pianoRibbonIframe!=null){pianoRibbonIframe.onload=function(){const pianoRibbonHeight=pianoRibbon.clientHeight;recalculatePaddingBottom(footer,pianoRibbonHeight);pianoRibbonResizeObserver.disconnect();};}});pianoRibbonResizeObserver.observe(pianoRibbon);}
200function initializeAdvertising(){const footer=document.querySelector('footer');const pianoRibbon=document.querySelector('.piano_bottom_ribbon');styleAdverts(footer,pianoRibbon);observePianoRibbon(footer,pianoRibbon);if(typeof initPianoScrollTracking==='function')initPianoScrollTracking();}
201function loadLocationRegister(event,target,entityId,currentPath,toggleParent){if(target.classList.contains('arrow--active')){toggleLocationRegisterParent(event,target,toggleParent);removeLocationRegister(target);}else{if(toggleParent){showLoader(true);}
202fetch(linkPrefix+'?ot=de.nordbayern.ot.www.locationRegister&entity
202Id='+entityId+'&currentPath='+currentPath+'&linkPrefix='+linkPrefix,{credentials:"include"}).then(function(response){return response.text();}).then(function(html){toggleLocationRegisterParent(event,target,toggleParent);if(target.parentNode.parentNode.querySelectorAll('ul').length===0){target.parentNode.insertAdjacentHTML('afterend',html);if(document.querySelector('#user-fav-edit-icon')?.querySelector('[data-icon="circle-x"]:not(.dis0)')){favoritesToggleNavigationItems(target.parentNode.parentNode,true)}}else{removeLocationRegister(target);}}).catch(function(err){console.warn('Could not build location-register.',err);}).finally(()=>{showLoader(false);})}}
203function removeLocationRegister(target){for(const element of target.parentNode.parentNode.querySelectorAll('ul')){element.parentNode.removeChild(element);}}
204function fetchSubRessorts(navItemContentId,navSubItemId){const subRessortSelector=document.querySelector('#nav-sub-'+navSubItemId);fetch(linkPrefix+'?ot=de.nordbayern.ot.module.SubNavigation&contentId='+navItemContentId,{credentials:"include"}).then(function(response){return response.text();}).then(function(html){subRessortSelector.insertAdjacentHTML('beforeend',html)
205let editMode=document.querySelector('#user-fav-edit-icon')?.querySelector('[data-icon="circle-x"]:not(.dis0)');if(editMode){favoritesToggleNavigationItems(subRessortSelector,editMode);}}).catch(function(err){console.warn('Could not load sub ressorts.',err);});}
206function fetchAutocompleteResults(query){return fetch(linkPrefix+'?ot=de.nordbayern.ot.www.AutocompleteSearch&query='+encodeURIComponent(query)).then(response=>response.text());}
207var osv={};function initOnsiteSearch(query,sort,maxPages,isInPreview){osv={maxPages:maxPages,requestParameters:{offset:1,ot:'de.nordbayern.ot.result.searchPageResult',query:query,sort:sort},urlPrefix:isInPreview?'/preview/www':''};}
208function showOnsiteSearchResults(){showLoader(true);trackClickEvent({'click':'Suche Mehr Laden'});fetch(osv.urlPrefix+'?'+new URLSearchParams(osv.requestParameters).toString()).then(function(response){return response.text();}).then(function(responseHTML){showLoader(false);const containerSelector=document.getElementById('onsite-search');const hlpDiv=document.createElement("div");hlpDiv.innerHTML+=responseHTML;containerSelector.insertAdjacentHTML('beforeend',hlpDiv.outerHTML);evalOrRefreshScripts(hlpDiv);osv.requestParameters.offset+=1;if(osv.requestParameters.offset<osv.maxPages){document.getElementById('onsite-search-more-results').classList.remove('dis0');}else{document.getElementById('onsite-search-more-results').classList.add('dis0');}}).catch(function(error){showLoader(false);console.warn('Could not fetch results.',error);});}
209function getRegisterWrapper(){return document.querySelector('#register_new_wrapper')||document.querySelector('#register_step_wrapper');}
210function registerSlide(returnValue,regStep){if(regStep==='register-new'){return loginRegisterSlide().then(()=>{switchToRegisterTab();});}
211const registerStepWrapper=document.querySelector('#register_step_wrapper');const isShowing=registerStepWrapper.classList.contains('NB__register__wrapper--active');if(isShowing&&!regStep){toggleRegisterVisibility(registerStepWrapper,isShowing);handleRegisterHide(registerStepWrapper);toggleInertForOverlay('#register_step_wrapper','NB__register__wrapper--active','.nav__header, #nav__breadcrumb, main, footer');}
212if(regStep){hideStickyFooterAds();handleRegisterShow(registerStepWrapper,regStep,returnValue,isShowing).then(()=>{toggleInertForOverlay('#register_step_wrapper','NB__register__wrapper--active','.nav__header, #nav__breadcrumb, main, footer');});}}
213function toggleRegisterVisibility(registerStepWrapper,isShowing){trackClickEvent({'click':'Navigation Register '+(isShowing?'Hide':'Show')});if(!isShowing){navSlide(false,true);closeLoginRegisterOrUserSlide();toggleSharingSliderMenu(false);}
214registerStepWrapper.classList.toggle('NB__register__wrapper--active');togglePaidRegistration(registerStepWrapper,false);}
215function handleRegisterHide(registerStepWrapper){resetFriendlyCaptchaWidget('captcha');registerStepWrapper.innerHTML='';}
216function handleRegisterShow(registerStepWrapper,regStep,returnValue,isShowing){registerStepWrapper.innerHTML='';return loadRegisterForStep(regStep,registerStepWrapper).then(()=>{toggleRegisterVisibility(registerStepWrapper,isShowing);handleRegisterStep(registerStepWrapper,regStep,returnValue);}).catch((err)=>{console.warn('Could not load register step.',err);});}
217function handleRegisterStep(registerStepWrapper,regStep,returnValue){if(regStep.startsWith("register-new")){handleRegisterNewStep(registerStepWrapper,regStep,returnValue);}
218if(regStep==="show-activate"){handleShowActivateStep(registerStepWrapper);}
219if(regStep==="activate-failed"){toggleAlertBox(registerStepWrapper,'#regActivateFailed',true);}}
220function handleRegisterNewStep(registerStepWrapper,regStep,returnValue){if(regStep==="register-new-paid"){setBackButtonDataReturn(returnValue,registerStepWrapper);togglePaidRegistration(registerStepWrapper,true);}
221const regForm=registerStepWrapper.querySelector('#regForm');
221if(regForm){focusFirstInteractiveElement('#regForm');addFriendlyCaptchaToFormElement(regForm,frcVendorId,'captcha');}}
222function handleShowActivateStep(registerStepWrapper){focusFirstInteractiveElement('#regShowActivate');const userLoginInput=registerStepWrapper.querySelector('#regShowActivate_userLogin');if(userLoginInput){userLoginInput.setAttribute('value',getLoggedInJWTPayload()?.email||'');}
223const tokenInput=registerStepWrapper.querySelector('#regShowActivate_token');if(tokenInput){const urlParams=new URLSearchParams(window.location.search);const tokenValue=urlParams.get('token');tokenInput.setAttribute('value',tokenValue||'');}}
224function registerUser(){const registerWrapper=getRegisterWrapper();resetRegisterError(registerWrapper);trackClickEvent({'click':'Register'});const registerForm=registerWrapper.querySelector('#regForm');if(!registerForm.reportValidity()){return;}
225if(registerForm.frcCaptchaResponse&&!checkCaptcha(registerWrapper)){return;}
226const formData=new FormData();formData.append('userEmail',registerForm.userEmail.value);formData.append('userOptIn',registerForm.userOptIn.checked?'1':'0');if(registerForm.frcCaptchaResponse){formData.append('frcCaptchaResponse',registerForm.frcCaptchaResponse.value);}
227showLoader(true);fetch(linkPrefix+'/register/register',{method:'post',credentials:'same-origin',body:new URLSearchParams(formData)}).then(function(response){if(response.status!==200){return response.text().then(function(text){showLoader(false);showRegisterError(registerWrapper,text);if(registerForm.frcCaptchaResponse){resetFriendlyCaptchaWidget('captcha');}});}
228return response.text().then(function(text){sessionStorage.setItem('register-step','register-success');window.location.reload();});}).catch(function(err){showLoader(false);console.warn('Could not register user!',err);showRegisterError(registerWrapper,err);});}
229function activateUser(){const registerWrapper=getRegisterWrapper();resetRegisterError(registerWrapper);const setPasswordForm=registerWrapper.querySelector('#set_password_form');const checkedPasswordErrorMsg=checkPassword(setPasswordForm.userPass?.value,setPasswordForm.userPassRepeat?.value);if(checkedPasswordErrorMsg){showRegisterError(registerWrapper,checkedPasswordErrorMsg);return;}
230showLoader(true);setPasswordForm.action=linkPrefix+'/register/activate';setPasswordForm.method='post';setPasswordForm.enctype='application/x-www-form-urlencoded';setPasswordForm.submit();}
231function loadRegisterForStep(regStep,registerStepWrapper){const requestParameters={ot:'de.nordbayern.ot.Register',regStep:regStep};showLoader(true);return fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString()).then(function(response){return response.text();}).then(function(html){if(registerStepWrapper!=null){registerStepWrapper.insertAdjacentHTML('beforeend',html);fadeIn(registerStepWrapper.lastElementChild,1000);}}).finally(function(){showLoader(false);});}
232function getAndClearRegistrationStep(){let registerStep=sessionStorage.getItem('register-step');if(registerStep){sessionStorage.removeItem('register-step');}else{registerStep=getCookieValue("register-step");deleteCookie('register-step');}
233return registerStep;}
234function handleRegistrationStep(){const registerStep=getAndClearRegistrationStep();if(registerStep){if(registerStep==="account-activate-success"){addFunctionToDOMloadedStack(()=>{const accountActivatePlaceholderElement=document.querySelector("#accountActivatePlaceholder");if(accountActivatePlaceholderElement){const accountActivatedText=isNB?'Du bist nun startklar! Dein Konto wurde erfolgreich aktiviert.':'Sie sind nun startklar! Ihr Konto wurde erfolgreich aktiviert.';accountActivatePlaceholderElement.innerHTML='<div class="errorPage"><p>'+accountActivatedText+'</p></div>';}});}else{addFunctionToDOMloadedStack(()=>registerSlide(undefined,registerStep));}}}
235function togglePaidRegistration(registerStepWrapper,add){if(add||registerStepWrapper.classList.contains('registerpaid--active')){toggleBodyState(add,true);registerStepWrapper.classList.toggle('registerpaid--active');registerStepWrapper.classList.toggle('registerpaid--modal');}}
236function resetRegisterError(registerWrapper){const registrationErrorContainer=registerWrapper.querySelector('#registrationErrorContainer');if(registrationErrorContainer){registrationErrorContainer.classList.add('dis0');registrationErrorContainer.removeAttribute('role');registrationErrorContainer.querySelector('#regErrorMsg').innerText='';}}
237function showRegisterError(registerWrapper,errorMsg){if(errorMsg.length>0){const registrationErrorContainer=registerWrapper.querySelector('#registrationErrorContainer');if(registrationErrorContainer){document.querySelector(LOGIN_REGIST
237ER_AND_USER_MENU_SELECTOR)?.scrollTo(0,0);registrationErrorContainer.classList.remove('dis0');registrationErrorContainer.setAttribute('role','alert');registrationErrorContainer.querySelector('#regErrorMsg').innerText=errorMsg;}}
238return false;}
239function checkCaptcha(registerWrapper){return checkCaptchaWidgetCompleted('captcha',showRegisterError,registerWrapper);}
240function checkPassword(pass1,pass2){const pwd1=pass1.trim();const pwd2=pass2.trim();if(pwd1!==pwd2){return isNB?'Die eingegebenen Passwörter stimmen nicht überein. Bitte überprüfe deine Eingaben.':'Die eingegebenen Passwörter stimmen nicht überein. Bitte überprüfen Sie Ihre Eingaben.';}else if(pwd1.length<8){return isNB?'Das Passwort sollte mindestens 8 Zeichen lang sein. Bitte überprüfe deine Eingaben.':'Das Passwort sollte mindestens 8 Zeichen lang sein. Bitte überprüfen Sie Ihre Eingaben.';}else if(pwd1.indexOf(' ')>0){return isNB?'Bitte verwende keine Leerzeichen im Passwort.':'Bitte verwenden Sie keine Leerzeichen im Passwort.';}
241return'';}
242function loadLoginRegisterBox(loginRegisterWrapper,isPaid){const requestParameters={ot:'de.nordbayern.ot.LoginRegisterTab',referrer_url:getCurrentPathWithQueryAndHash(),paid:isPaid,linkPrefix:linkPrefix};showLoader(true);return fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(function(response){return response.text();}).then(function(html){if(loginRegisterWrapper!=null){loginRegisterWrapper.insertAdjacentHTML('beforeend',html);fadeIn(loginRegisterWrapper.querySelector('#loginform'),1000);}}).finally(function(){showLoader(false);});}
243function b64EncodeUnicode(str){return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,function(match,p1){return String.fromCharCode('0x'+p1);}));}
244function nbLogin(){showLoader(true);trackClickEvent({'click':'Login'});const formData=new FormData();const loginForm=document.querySelector('#loginform');formData.append('userLogin',loginForm.username?.value);formData.append('userPass',loginForm.password?.value);const unknownErrorMessage='Ein unbekannter Fehler ist aufgetreten.';const loginErrorContainer=loginForm?.querySelector('#loginErrorContainer');const loginErrorTextElement=loginErrorContainer?.querySelector('span:last-child');const showLoginError=function(message){if(loginErrorTextElement){loginErrorTextElement.innerText=message;loginErrorContainer.classList.remove('dis0');loginErrorContainer.setAttribute('role','alert');}
245showLoader(false);};loginErrorContainer?.classList.add('dis0');fetch(linkPrefix+'/account/login',{method:'post',credentials:'include',body:new URLSearchParams(formData)}).then(function(response){if(response.status===200){closeLoginRegisterOrUserSlide();window.location.reload();return;}
246if(response.status===401){return response.json().then(function(body){showLoginError(body.message||unknownErrorMessage);}).catch(function(){showLoginError(unknownErrorMessage);});}
247showLoginError(unknownErrorMessage);}).catch(function(error){console.warn('Could not do login.',error);showLoginError(unknownErrorMessage);});}
248const signInWithGoogle=(credential)=>{showLoader(true);const form=document.createElement('form');form.method='POST';form.action='/google/oauth2callback';addInputToForm('hidden','credential',credential,form);addInputToForm('hidden','state',window.location.href,form);document.body.appendChild(form);form.submit();}
249const addInputToForm=(type,name,value,form)=>{const input=document.createElement('input');input.type=type;input.name=name;input.value=value;form.appendChild(input);}
250function nbLogout(){showLoader(true);trackClickEvent({'click':'Logout'});fetch(linkPrefix+'/account/logout',{method:'post',credentials:'include'}).then(function(response){if(response.status===200){closeLoginRegisterOrUserSlide();window.location.reload();return;}
251showLoader(false);}).catch(function(error){console.warn('Could not do logout.',error);showLoader(false);});}
252function fetchUserMenu(){return fetch(linkPrefix+'?ot=de.nordbayern.ot.UserMenu'+'&linkPrefix='+linkPrefix,{credentials:"include"}).then(response=>response.text());}
253function renderUserDataAlertBoxError(errorMessage){return'<div class="alert_box error" role="alert"><p>'+errorMessage+'</p></div>';}
254function updateUserData(section){const userDataSectionWrapper=document.getElementById("userDataSectionWrapper");const userDataSectionForm=userDataSectionWrapper.querySelector("#"+section+"_form");const userDataUpdateResultBox=userDataSectionWrapper.querySelector("#updateResultBox");userDataUpdateResultBox.innerHTML='';userDataUpdateResultBox.classList.add('dis0');if(!userDataSectionForm.reportValidity()){return;}
255if(section==='pass'||section==='new'){const checkedPasswordErrorMsg=checkPassword(userDataSectionForm.userPass?.value,userDataSectionForm.userPassRepeat?.value);if(checkedPasswordErrorMsg){userDataUpdateResultBox.classList.remove('dis0');userDataUpdateResultBox.innerHTML=renderUserDataAlertBoxError(checkedPasswordErrorMsg);return;}}
256if(section==='mail'){if(userDataSectionForm.newEmail?.value!==userDataSectionForm.newEmailRepeat?.value){userDataUpdateResultBox.classList.remove('dis0');userDataUpdateResultBox.innerHTML=renderUserDataAlertBoxError(isNB?"Die eingegebenen E-Mail Adressen stimmen nicht überein. Bitte überprüfe deine Eingaben.":"Die eingegebenen E-Mail Adressen stimmen nicht überein. Bitte überprüfen Sie Ihre Eingaben.");return;}}
257const formData=new FormData();formData.append('userSurname',userDataSectionForm.userSurname?.value);formData.append('userName',userDataSectionForm.userName?.value);formData.append('userLogin',userDataSectionForm.userLogin?.value);formData.append('userPassOld',userDataSectionForm.userPassOld?.value);formData.append('userPass',userDataSectionForm.userPass?.value);formData.append('newEmail',userDataSectionForm.newEmail?.value);formData.append('userEmail',userDataSectionForm.userEmail?.value);formData.append('tmpTokenValue',userDataSectionForm.tmpTokenValue?.value);showLoader(true);fetch(linkPrefix+'?ot=de.nordbayern.layout.page.NBPageLayoutUserData.ot&submit='+section,{method:'post',credentials:'same-origin',body:new URLSearchParams(formData)}).then(function(response){showLoader(false);
257if(response.status!==200){return response.text().then(function(text){console.warn('Could not update user data!',text);});}
258return response.text().then(function(text){userDataUpdateResultBox.classList.remove('dis0');userDataUpdateResultBox.innerHTML=text;const timeoutMs=section==="new"?6000:3000;setTimeout(()=>{if(section==='delete'){nbLogout();}else{window.location.href=new URL(window.location.href);}},timeoutMs);});}).catch(function(err){showLoader(false);console.warn('Could not update user data!',err);});}
259function validateUserLoginInput(userDataSectionWrapper){const userLoginInput=userDataSectionWrapper.querySelector("#userLogin");userLoginInput?.addEventListener("input",function(event){const value=event.target.value.trim();const emailPattern=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;const submitButton=userDataSectionWrapper.querySelector("#data_submit");const userDataUpdateResultBox=userDataSectionWrapper.querySelector("#updateResultBox");if(!submitButton||!userDataUpdateResultBox){return}
260if(value&&emailPattern.test(value)){userDataUpdateResultBox.classList.remove('dis0');userDataUpdateResultBox.innerHTML="<div class='alert_box error' role='alert'><p>Der Nickname darf keine Mailadresse sein.</p></div>";submitButton.disabled=true;}else{submitButton.disabled=false;userDataUpdateResultBox.innerHTML='';userDataUpdateResultBox.classList.add('dis0');}});}
261function setBackButtonDataReturn(returnValue,wrapper){let backButton=wrapper.getElementsByClassName('back__login')[0];if(backButton&&typeof returnValue!=='undefined'&&returnValue==='register-new-paid'){backButton.ariaLabel='Zurück';backButton.setAttribute('data-return',returnValue);backButton.innerHTML=window.lucideIcons?.['chevron-left']??'';}else if(backButton){backButton.ariaLabel='Schließen';backButton.innerHTML='<span class="close__line__1"></span><span class="close__line__2"></span>'}}
262function processBackButtonLoginAndRegister(backButton){let loginWrapper=document.querySelector('#login_paid');if(loginWrapper?.classList.contains('loginpaid--active'))
263closeLoginRegisterOrUserSlide(true);let registerWrapper=document.querySelector('#register_step_wrapper');if(registerWrapper?.classList.contains('registerpaid--active'))
264registerSlide('');let returnValue=backButton?.getAttribute('data-return');if(typeof returnValue!=='undefined'&&backButton){backButton.removeAttribute('data-return');switch(returnValue){case'cmplayer':__cmp('showScreen');return;case'purabo':showPianoPurLayer();return;case'register-new-paid':registerSlide('','register-new-paid');return;}}
265if(loginWrapper!=null||registerWrapper!=null){showPianoPaidLayer();}}
266function initializeLoginRegisterUserMenu(){document.querySelectorAll('.nowRegister').forEach(button=>button.addEventListener('click',()=>registerSlide(undefined,'register-new')));}
267function teaserModuleLoadMore(button,contentId,totalResults,teaserName,locId,authorId,landingPageTitle,landingPageTag,usedTeaserIds,teaserView){trackClickEvent({'click':'Module Teaser','click_chapter1':teaserName+' - Mehr Laden'});let index=button.dataset.index;const params=[['contentId',contentId],['page',index]]
268if(locId)
269params.push(['locid',locId]);if(authorId)
270params.push(['authorId',authorId]);if(landingPageTitle&&landingPageTag){params.push(['landingPageTitle',landingPageTitle],['landingPageTag',landingPageTag]);}
271if(usedTeaserIds&&usedTeaserIds!=='[]')
272params.push(['usedTeaserIds',usedTeaserIds]);params.push(['view',teaserView]);showLoader(true);fetch(linkPrefix+'?ot=de.nordbayern.ot.TeaserModule.LoadMore&'+new URLSearchParams(params).toString()).then(function(response){return response.text();}).then(function(html){showLoader(false);const teaserModule=button.parentElement;if(teaserView==='ticker'){const divArticleContainer=button.previousElementSibling?.lastElementChild;if(divArticleContainer){handleLoadMoreContent(html,divArticleContainer);}}else{const hlpDiv=document.createElement("div");hlpDiv.innerHTML=html;if(teaserView!=='list'){hlpDiv.classList.add("modul--double");}
273handleLoadMoreContent(hlpDiv.outerHTML,teaserModule);}
274const childUniqueClassSelector='article'+(teaserView==='ticker'?'':', div.modul--newsticker-more >
274 div:not(article)');const childCount=teaserModule.querySelectorAll(childUniqueClassSelector).length;button.remove();if(childCount<totalResults){index++;button.dataset.index=index;teaserModule.insertAdjacentHTML('beforeend',button.outerHTML);}}).catch(function(err){showLoader(false);console.warn('Could not build load more for teaser module.',err);});}
275function handleLoadMoreContent(html,container){const childNodes=parseHtmlToNodes(html);container.appendChild(childNodes.fragment);initializeElementNodes(childNodes.nodes);evalOrRefreshScripts(container);}
276function parseHtmlToNodes(html){const template=document.createElement('template');template.innerHTML=html.trim();const fragment=template.content.cloneNode(true);return{fragment:fragment,nodes:Array.from(fragment.childNodes)};}
277function initializeElementNodes(nodes){nodes.forEach(node=>{if(node.nodeType===Node.ELEMENT_NODE){initBookmarkIcons(node);}});}
278function initializeArticle(){showAffInfo();}
279function submitGalleryDoiRequest(votingData){return fetch('/votingforward',{method:'post',body:JSON.stringify(votingData)});}
280function initializeGallery(){initializeDoiEmailBox();}
281function submitNewsletterRequest({newsletterids,email,frcCaptchaResponse}){const requestParameters=new URLSearchParams({newsletterids,email});if(frcCaptchaResponse!==undefined)requestParameters.set('frcCaptchaResponse',frcCaptchaResponse);return fetch(linkPrefix+'/newsletterregistration?'+requestParameters.toString(),{method:'POST',headers:{Accept:'application/json; charset=utf-8','Content-Type':'application/json; charset=UTF-8'}});}
282function submitInfoboxNewsletter(infoboxId,newsletterId,linkPrefix){document.getElementById(infoboxId+'-error-email').classList.add('dis0');document.getElementById(infoboxId+'-error-contact').classList.add('dis0');document.getElementById(infoboxId+'-error-send').classList.add('dis0');var urlParameter={newsletterids:newsletterId,email:document.getElementById(infoboxId+'-input-email').value,};var EMAIL_REGEXP=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;if(urlParameter.email===''||!EMAIL_REGEXP.test(urlParameter.email)){document.getElementById(infoboxId+'-error-email').classList.remove('dis0');return;}
283document.getElementById(infoboxId+'-button').disabled=true;var url=linkPrefix+'/newsletterregistration?'+new URLSearchParams(urlParameter).toString();var xhr=new XMLHttpRequest();xhr.open('POST',url,true);xhr.setRequestHeader('Accept','application/json; charset=utf-8');xhr.setRequestHeader('Content-Type','application/json; charset=UTF-8');xhr.responseType="json";xhr.send();showLoader(true);xhr.onloadend=function(response){showLoader(false);trackClickEvent({'click':'Newsletter-Modul-Bestaetigung'});if(response.target.status===200){document.getElementById(infoboxId+'-body').classList.add('dis0');document.getElementById(infoboxId+'-form').classList.add('dis0');document.getElementById(infoboxId+'-step2-thanku').classList.remove('dis0');var result=response.target.response[newsletterId];if(result==='success'){document.getElementById(infoboxId+'-step2-email').innerHTML=urlParameter.email;document.getElementById(infoboxId+'-step2-success1').classList.remove('dis0');document.getElementById(infoboxId+'-step2-success2').classList.remove('dis0');}else if(result==='alreadyGiven'){document.getElementById(infoboxId+'-step2-error-given').classList.remove('dis0');}else if(result==='alreadyGranted'){document.getElementById(infoboxId+'-step2-error-granted').classList.remove('dis0');}}else{document.getElementById(infoboxId+'-error-send').classList.remove('dis0');document.getElementById(infoboxId+'-button').disabled=false;}};}
284function fetchUserBookmarks(){const requestParameters={ot:'de.nordbayern.ot.www.Bookmarks',act:'get',};return fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(response=>response.text()).then(responseHTML=>JSON.parse(responseHTML));}
285function saveBookmarkValue(element,bookmarkId,removeBookmark){const requestParameters={ot:'de.nordbayern.ot.www.Bookmarks',act:removeBookmark?'rem':'add',bookmarkid:bookmarkId};return fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(response=>response.text()).then(()=>{const isUserBookmarkPage=element.getAttribute('data-user-bookmark-page')==='true';if(isUserBookmarkPage&&removeBookmark){const parentTeaser=element.closest('.row');if(parentTeaser){if(parentTeaser.parentElement.childElementCount===2){window.location.reload();}else{removeFadeOut(parentTeaser,250);}}}
286return true;}).catch(function(error){console.error('Could not save user bookmark for :'+bookmarkId,error);throw error;});}
287const maxUserFavoritesText='Es können maximal drei Favoriten gewählt werden.';const loginToAddLandingPageAsUserFavoriteTextInfoBox=isNB?`Um einem Thema folgen zu können, musst du dich <a href="#" onClick="loginRegisterSlide();">einloggen</a> oder vorher <a href="#" onClick="registerSlide(undefined, 'register-new');">registrieren</a>
287.`:`Um einem Thema folgen zu können, müssen Sie sich <a href="#" onClick="loginRegisterSlide();">einloggen</a> oder vorher <a href="#" onClick="registerSlide(undefined, 'register-new');">registrieren</a>.`;const loginToAddLandingPageAsUserFavoriteTextTooltip=isNB?'Um einem Thema folgen zu können, musst du dich einloggen oder vorher registrieren.':'Um einem Thema folgen zu können, müssen Sie sich einloggen oder vorher registrieren.';const addedLandingPageAsUserFavoriteText='Das Thema wurde zu "Meine Favoriten" hinzugefügt.';const userFavoritesCount="userFavoritesCount";const userFavoritesCountCookieKey=env==='dev'?`${userFavoritesCount}-${msPathExtra}`:userFavoritesCount;const jwtAttributeUserFavoritesKey=`${env}-${msPathExtra}-fav`;function showUserFavoritesTooltip(onElement,tipText,addTooltipClassToElement){if(onElement.childElementCount===0||onElement.lastChild.tagName!=='SPAN'){if(addTooltipClassToElement){onElement.classList.add('nb__tooltip');}
288const toolTipTargetTagOpen=addTooltipClassToElement?'':'<span class="nb__tooltip">';const toolTipTargetTagClose=addTooltipClassToElement?'':'</span>'
289const toolTip=toolTipTargetTagOpen+'<span class="nb__tooltiptext nb__tooltip-top" role="alert">'+tipText+'</span>'+toolTipTargetTagClose;onElement.insertAdjacentHTML('beforeend',toolTip);setTimeout(function(){if(onElement.lastChild.tagName==='SPAN'){onElement.lastChild.remove();}
290if(addTooltipClassToElement){onElement.classList.remove('nb__tooltip');}},5000);}}
291function withFavoriteTeasers(requestParameter){const userFavTeaserPlaceholder=document.querySelector('#user-fav-teaser-placeholder');const userFavoritesCount=getUserFavoritesCount();if(userFavTeaserPlaceholder&&userFavoritesCount>0){requestParameter.teaser=1;userFavTeaserPlaceholder.classList.toggle('dis0',false);}}
292function getFavoritesForNavigation(){const requestParameters={ot:'de.nordbayern.ot.www.UserFavorites',act:'get'};withFavoriteTeasers(requestParameters);fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(function(response){return response.text();}).then(function(responseHTML){insertFavoritesResponse(responseHTML);}).catch(function(error){console.warn('Could not get user favorites.',error);});return"";}
293function insertFavoritesItemsToNavigation(favoritesItemsHTML){const favoritesTop=document.querySelector('#user-fav-nav-top');if(favoritesTop){favoritesTop.querySelector('ul')?.remove();favoritesTop.insertAdjacentHTML('beforeend',favoritesItemsHTML);}
294syncEditNavigationItemsWithFavoriteItems();if(document.querySelector('#user-fav-items')?.childElementCount>0){document.querySelector('#user-fav-edit-desc')?.classList.toggle('dis0',true);}}
295function insertFavoritesItemsToPage(favoritesItemsHTML){const favoritesItemsPageContainer=document.querySelector('#user-fav-page-items-container');if(favoritesItemsPageContainer){favoritesItemsPageContainer.innerHTML=favoritesItemsHTML;const forceTo=document.querySelector('#user-fav-page-all-favs')?.querySelectorAll('div[data-id]')?.length>0;document.querySelector('#user-fav-page-no-favs-selected')?.classList.toggle('dis0',forceTo);}}
296function syncEditNavigationItemsWithFavoriteItems(){const userFavEditContainer=document.querySelector('#user-fav-edit-icon');const editMode=userFavEditContainer?.querySelector('span[data-icon="circle-x"]')?.classList.contains('dis0')===false;if(editMode){const favoriteItemIds=[];Array.from(document.querySelectorAll('#user-fav-items > li')).forEach(item=>{toggleMinusItem(item,true);favoriteItemIds.push(item.dataset.id);});document.querySelectorAll('li[data-id]:not(.pseudo_fav)')?.forEach(navItem=>{const itemId=navItem.dataset.id;const isFavorite=favoriteItemIds.includes(itemId);const hasButton=navItem.querySelector('.nav__controllers button')!==null;if(isFavorite){if(hasButton){togglePlusItem(navItem,false);toggleMinusItem(navItem,true);}else{toggleMinusItem(navItem,true);}}else{if(hasButton){toggleMinusItem(navItem,false);togglePlusItem(navItem,true);}else{togglePlusItem(navItem,true);}}});}else{Array.from(document.querySelectorAll('#user-fav-items >
296 li')).forEach(item=>{if(item.dataset.notaccessible==='true'){writeFavorite(true,item.dataset.id);}});}}
297function insertFavoritesTeaser(favoritesTeaserHTML){const favTeaserPlaceholder=document.querySelector('#user-fav-teaser-placeholder');if(favTeaserPlaceholder){if(favoritesTeaserHTML&&favoritesTeaserHTML.trim().length>0){fadeIn(favTeaserPlaceholder,0);favTeaserPlaceholder.replaceChildren();favTeaserPlaceholder.insertAdjacentHTML('afterbegin',favoritesTeaserHTML);}else{fadeOut(favTeaserPlaceholder,1500);setTimeout(function(){favTeaserPlaceholder.replaceChildren();},1500);}
298initBookmarkIcons(favTeaserPlaceholder);}}
299function insertFavoritesResponse(responseHTML){let wrapper=document.createElement('div');wrapper.innerHTML=responseHTML;insertFavoritesItemsToNavigation(wrapper.querySelector('#user-fav-nav-items-container')?.innerHTML);insertFavoritesItemsToPage(wrapper.querySelector('#user-fav-page-items-container')?.innerHTML);insertFavoritesTeaser(wrapper.querySelector('#user-fav-teaser-container')?.innerHTML);toggleLandingPageUserFavoriteButton();toggleLandingPageTaggedArticleUserFavoriteButtons();}
300function setFavoriteFromNavigation(icon,favoriteId,remove){if(notValidFavoriteId(favoriteId,remove)){return;}
301const moveMode=remove?'x':'plus';setFavoriteFromPage(favoriteId,moveMode,true);const item=icon?.parentNode;if(item){if(hasMaxFavorites(remove)){showUserFavoritesTooltip(icon,maxUserFavoritesText);return;}
302if(remove){toggleMinusItem(item,false);togglePlusItem(item,true);}else{togglePlusItem(item,false);toggleMinusItem(item,true);}
303writeFavorite(remove,favoriteId);}}
304function writeFavorite(remove,favoriteId){updateUserFavoritesCountInCookie(remove);trackClickEventForFavorite(remove,favoriteId);const requestParameters={ot:'de.nordbayern.ot.www.UserFavorites',act:remove?'rem':'add',favoriteid:favoriteId};withFavoriteTeasers(requestParameters);showLoader(true);fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(function(response){return response.text();}).then(function(responseHTML){showLoader(false);insertFavoritesResponse(responseHTML);}).catch(function(error){console.warn('Could not '+(remove?'remove':'add')+' user favorites.',error);});}
305function getUserFavoritesCount(){const cookieValue=getCookieValue(userFavoritesCountCookieKey);if(cookieValue){return Number.parseInt(cookieValue,10);}
306const payload=getLoggedInJWTPayload();if(!payload){return 0;}
307const payloadFavs=payload[jwtAttributeUserFavoritesKey];if(payloadFavs){try{const favs=JSON.parse(payloadFavs);if(Array.isArray(favs)){const count=favs.length;setUserMetricCookie(userFavoritesCountCookieKey,count);return count;}}catch(e){console.warn('Could not parse favorites from JWT',e);}}
308return 0;}
309function updateUserFavoritesCountInCookie(decrement){let userFavoritesCount=Number.parseInt(getCookieValue(userFavoritesCountCookieKey))||0;decrement?userFavoritesCount--:userFavoritesCount++;setUserMetricCookie(userFavoritesCountCookieKey,userFavoritesCount);}
310function notValidFavoriteId(favoriteId,remove){return(!favoriteId||(!remove&&document.querySelector('#user-fav-items')?.querySelector('[data-id="'+favoriteId+'"]')!=null));}
311function hasMaxFavorites(remove){return!remove&&document.querySelector('#user-fav-items')?.childElementCount>2;}
312function setFavoriteFromPage(favoriteId,moveMode,clientOnly){const item=document.querySelector('[data-id="'+favoriteId+'-item"]');if(item){const otherMode=moveMode==='x'?'plus':'x';if(moveMode==='plus'){if(skipWithToolTipIfAlreadyMaxUserFavorites(item)){return;}
313removeFavoriteItemWithHeaderFromSearchResult(item);}else{const changedItemHTML=rewriteItemModeAsHTML(item,moveMode,otherMode);addFavoriteItemWithHeaderToSearchResult(changedItemHTML,item.dataset.header);}
314if(!clientOnly){writeFavorite(moveMode==='x',favoriteId);}}}
315function skipWithToolTipIfAlreadyMaxUserFavorites(onItem){if(onItem&&document.querySelector('#user-fav-page-all-favs')?.querySelectorAll('div[data-id]')?.length>=3){const plusButton=onItem.querySelector('button');if(plusButton){showUserFavoritesTooltip(plusButton,maxUserFavoritesText,true);}
316return true;}
317return false;}
318function rewriteItemModeAsHTML(rewriteItem,modeFrom,modeTo){return rewriteItem.outerHTML.replace('page-'+modeFrom,'page-'+modeTo).replace(modeFrom,modeTo);}
319function removeFavoriteItemWithHeaderFromSearchResult(removeItem){removeItem.remove();const allHeaderItems=document.querySelectorAll('.pseudo-fav-page-plus-'+removeItem.dataset.header);if(allHeaderItems.length===0){document.querySelector('#plus-'+removeItem.dataset.header+'-header')?.classList.toggle('dis0');}
320const forceTo=document.querySelector('#user-fav-page-search-result')?.querySelectorAll('div[data-id]')?.length>0;document.querySelector('#user-fav-page-no-search-hits')?.classList.toggle('dis0',forceTo);}
321function addFavoriteItemWithHeaderToSearchResult(itemHTML,headerName){const allHeaderItems=document.querySelectorAll('.pseudo-fav-page-plus-'+headerName);if(allHeaderItems.length>0){addFavoriteItemSortedToSearchResult(allHeaderItems,itemHTML);}else{const header=document.querySelector('#plus-'+headerName+'-header');if(header){header.classList.toggle('dis0');header.insertAdjacentHTML('afterend',itemHTML);}}}
322function addFavoriteItemSortedToSearchResult(allHeaderItems,itemHTML){const clonedItems=[];
322allHeaderItems.forEach(item=>clonedItems.push(item.cloneNode(true)));let newItem=document.createElement('div');newItem.innerHTML=itemHTML;newItem=newItem.firstChild;clonedItems.push(newItem);const flattedItems=clonedItems.map(item=>[item.querySelector('a').innerHTML,item.dataset.id]).sort(function(w1,w2){return w1[0].localeCompare(w2[0]);});const addIndex=flattedItems.findIndex(item=>item[1]===newItem.dataset.id);if(addIndex===allHeaderItems.length){allHeaderItems[addIndex-1].insertAdjacentHTML('afterend',itemHTML);}else{allHeaderItems[addIndex].insertAdjacentHTML('beforebegin',itemHTML);}}
323function removeAlreadyFavoriteFromSearchResult(searchResultContainer){searchResultContainer.querySelectorAll('div[data-id]').forEach(function(searchItem){document.querySelector('#user-fav-page-all-favs')?.querySelectorAll('div[data-id]').forEach(function(favoriteItem){if(searchItem.dataset.id===favoriteItem.dataset.id){removeFavoriteItemWithHeaderFromSearchResult(searchItem);}});});}
324function fireUserFavoriteSearch(event){event?.preventDefault();const requestParameters={ot:'de.nordbayern.ot.result.userFavoritesSearch',searchString:document.getElementById("user-fav-searchfield").value};showLoader(true);fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString()).then(function(response){return response.text();}).then(function(responseHTML){showLoader(false);const containerSelector=document.getElementById("user-fav-page-search-result");containerSelector.classList.remove('dis0');containerSelector.innerHTML=responseHTML;trackClickEvent({'click':'Meine Favoriten Suche'});removeAlreadyFavoriteFromSearchResult(containerSelector);}).catch(function(error){showLoader(false);console.warn('Could not fetch favorites search result.',error);});}
325function toggleLandingPageUserFavoriteButton(){const landingPageFavoriteButton=document.querySelector('#user-fav-landing-page-button');if(landingPageFavoriteButton){const favoriteLandingPageId=landingPageFavoriteButton.dataset.id;const thisLandingPageFavoriteItem=document.querySelector('li[data-id="'+favoriteLandingPageId+'"]');let isFavorite=thisLandingPageFavoriteItem!==null;const followOrNot=isFavorite?'nicht mehr':'';const clonedLandingPageFavoriteButton=landingPageFavoriteButton.cloneNode(true);clonedLandingPageFavoriteButton.replaceChildren();clonedLandingPageFavoriteButton.insertAdjacentHTML('beforeend','Thema '+followOrNot+' folgen');clonedLandingPageFavoriteButton.classList.toggle('btn--primary',isFavorite);if(landingPageFavoriteButton.added){showUserFavoritesTooltip(clonedLandingPageFavoriteButton,addedLandingPageAsUserFavoriteText);}
326clonedLandingPageFavoriteButton.addEventListener('click',()=>{if(!isLoggedIn()){if(isNN){showUserFavoritesTooltip(clonedLandingPageFavoriteButton,loginToAddLandingPageAsUserFavoriteTextTooltip);}else if(isNB){showInformationBox(loginToAddLandingPageAsUserFavoriteTextInfoBox);}
327return;}
328isFavorite=document.querySelector('li[data-id="'+favoriteLandingPageId+'"]')!==null;if(hasMaxFavorites(isFavorite)){showUserFavoritesTooltip(clonedLandingPageFavoriteButton,maxUserFavoritesText);return;}
329writeFavorite(isFavorite,favoriteLandingPageId);clonedLandingPageFavoriteButton.added=!isFavorite;});landingPageFavoriteButton.parentNode.replaceChild(clonedLandingPageFavoriteButton,landingPageFavoriteButton);}}
330function toggleLandingPageTaggedArticleUserFavoriteButtons(){const articleLandingPageFavoriteButtons=document.querySelector('#user-fav-article-landing-page-button-container')?.querySelectorAll('button[data-id]');if(articleLandingPageFavoriteButtons){const favoriteItemIds=new Set(Array.from(document.querySelectorAll('#user-fav-items > li')).map(item=>item.dataset.id));articleLandingPageFavoriteButtons.forEach(articleLandingPageFavoriteButton=>{const clonedArticleLandingPageFavoriteButton=articleLandingPageFavoriteButton.cloneNode(true);const isFavorite=favoriteItemIds.has(articleLandingPageFavoriteButton.dataset.id);clonedArticleLandingPageFavoriteButton.replaceChildren();let icon=window.lucideIcons?.['heart']??'';if(isNN){if(isFavorite){clonedArticleLandingPageFavoriteButton.classList.add('btn--active');}else{clonedArticleLandingPageFavoriteButton.classList.remove('btn--active');}}else if(isFavorite){icon=window.lucideIcons?.['x']??'';}
331clonedArticleLandingPageFavoriteButton.insertAdjacentHTML('beforeend',icon);if(articleLandingPageFavoriteButton.added){showUserFavoritesTooltip(clonedArticleLandingPageFavoriteButton,addedLandingPageAsUserFavoriteText);}
332clonedArticleLandingPageFavoriteButton.addEventListener('click',()=>{if(!isLoggedIn()){showUserFavoritesTooltip(clonedArticleLandingPageFavoriteButton,loginToAddLandingPageAsUserFavoriteTextTooltip);return;}
333if(hasMaxFavorites(isFavorite)){showUserFavoritesTooltip(clonedArticleLandingPageFavoriteButton,maxUserFavoritesText);return;}
334writeFavorite(isFavorite,articleLandingPageFavoriteButton.dataset.id);clonedArticleLandingPageFavoriteButton.added=!isFavorite;});articleLandingPageFavoriteButton.parentNode.replaceChild(clonedArticleLandingPageFavoriteButton,articleLandingPageFavoriteButton);});}}
335function showInformationBox(boxText){if(isNN){return;}
336const informationBoxPlaceholder=document.querySelector("#informationBoxPlaceholder");let fadeTime=250;let delayTime=0;
336if(informationBoxPlaceholder.lastChild){delayTime=fadeTime/2;clearTimeout(informationBoxPlaceholder.lastChild.boxAutoCloseId);removeFadeOut(informationBoxPlaceholder.lastChild,delayTime);}
337setTimeout(function(){informationBoxPlaceholder.insertAdjacentHTML('afterbegin','<div class="nb-affiliate-link--box" role="alert"><span>'+(window.lucideIcons?.['info']??'')+'</span><span>'+boxText+'</span><button class="close__login" id="btnCloseBookmarked"><span class="close__line__1"></span><span class="close__line__2"></span></button></div>')
338fadeIn(informationBoxPlaceholder.lastChild,fadeTime);const bookmarkedBoxClose=informationBoxPlaceholder.querySelector("#btnCloseBookmarked");if(bookmarkedBoxClose){informationBoxPlaceholder.lastChild.boxAutoCloseId=setTimeout(function(){removeFadeOut(informationBoxPlaceholder.lastChild,fadeTime);},5000);bookmarkedBoxClose.addEventListener('click',function(){clearTimeout(informationBoxPlaceholder.lastChild.boxAutoCloseId);removeFadeOut(informationBoxPlaceholder.lastChild,fadeTime);});}},delayTime);}
339function initializeFavorites(){if(!isLoggedIn())toggleLandingPageUserFavoriteButton();fetch('/system-api/dynamic-icons').then(response=>response.json()).then(icons=>{window.lucideIcons=icons;toggleLandingPageTaggedArticleUserFavoriteButtons();});}
340function getPrecedingTeaserArticleIds(teaserModuleId){const currentElement=document.getElementById('recommendation-module-'+teaserModuleId);return[...new Set([...document.querySelectorAll('article[data-id$="-teaser"]')].filter(element=>{const isPreceding=!!(currentElement.compareDocumentPosition(element)&Node.DOCUMENT_POSITION_PRECEDING);const isVisible=element.getClientRects().length>0&&window.getComputedStyle(element).visibility!=='hidden';return isPreceding&&isVisible;}).map(element=>element.dataset.id.replace('-teaser','')))];}
341function showRecommendationsSeoFallback(teaserModuleId){const recommendationsPlaceHolder=document.getElementById('recommendation-module-'+teaserModuleId);const recommendationsSeoFallbackWrapper=document.getElementById('recommendation-wrapper-'+teaserModuleId);if(recommendationsSeoFallbackWrapper){recommendationsSeoFallbackWrapper.classList.add('fallback-visible');window.dispatchEvent(new Event('resize'));}else if(recommendationsPlaceHolder){recommendationsPlaceHolder.classList.add('dis0');}}
342function fetchUserRecommendationsTeaser(teaserModuleId,requestParameters,duplicateCheckDisabled){requestParameters['teaser-module-id']=teaserModuleId;requestParameters['user-id']=getCookieValue("cX_P")||'';requestParameters['external-user-id']=getLoggedInUserId()||'';const articleExcludeList=requestParameters['article-exclude-list']||[];delete requestParameters['article-exclude-list'];if(!duplicateCheckDisabled){requestParameters['exclude-list']=[...new Set([...getPrecedingTeaserArticleIds(teaserModuleId),...articleExcludeList])];}else if(articleExcludeList.length>0){requestParameters['exclude-list']=articleExcludeList;}
343fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString()).then(function(response){return response.text();}).then(function(responseHTML){const recommendationsPlaceHolder=document.getElementById('recommendation-module-'+teaserModuleId);if(responseHTML.trim()===""){showRecommendationsSeoFallback(teaserModuleId);}else{recommendationsPlaceHolder.innerHTML=responseHTML;recommendationsPlaceHolder.querySelectorAll('script').forEach((script)=>{const newScript=document.createElement("script");newScript.setAttribute("type","text/javascript");newScript.innerHTML=script.innerHTML;recommendationsPlaceHolder.appendChild(newScript);});}
344initBookmarkIcons(recommendationsPlaceHolder);}).catch(function(err){console.error(err);showRecommendationsSeoFallback(teaserModuleId);});}
345const getVideoPlayer=(videoType,videoId,videoTeaserId,headline,playerMap)=>{const wrapper=document.getElementById(videoTeaserId);if(videoType==='GLOMEX'&&wrapper?.dataset.paidVideo==='true'&&typeof glomexPaidVideoExperienceActive!=='undefined'&&glomexPaidVideoExperienceActive&&!hasPlusAccess()){return createGlomexVideoPlayer(videoTeaserId);}
346if(!playerMap.has(videoTeaserId)){playerMap.set(videoTeaserId,createVideoPlayer(videoType,videoId,videoTeaserId,headline));}
347return playerMap.get(videoTeaserId);}
348const createVideoPlayer=(videoType,videoId,videoTeaserId,headline)=>{if(videoType==='DAILYMOTION'){return createDailymotionVideoPlayer(videoId,videoTeaserId,headline);}
349if(videoType==='GLOMEX'){return createGlomexVideoPlayer(videoTeaserId);}}
350const createDailymotionVideoPlayer=(videoId,videoTeaserId,headline)=>{return dailymotion?.createPlayer(videoTeaserId,{video:videoId}).then(player=>{trackVideoEvents(player,headline)
351return player;}).catch(error=>console.error(error));}
352const createGlomexVideoPlayer=(videoTeaserId)=>{const wrapper=document.getElementById(videoTeaserId);if(wrapper?.dataset.paidVideo==='true'&&typeof glomexPaidVideoExperienceA
352ctive!=='undefined'&&glomexPaidVideoExperienceActive&&!hasPlusAccess()){wrapper.closest('.video__lightbox')?.classList.add('dis0');return Promise.resolve(null);}
353const player=wrapper?.querySelector('glomex-integration');player?.removeAttribute('style');return player?.ready?.then(()=>player);}
354function initGlomexPaidVideosInArticle(){if(hasPlusAccess()){return;}
355document.querySelectorAll('span[data-paid-video="true"]').forEach(spanEl=>{spanEl.style.cssText+=';position:relative;display:block;';const glomexEl=spanEl.querySelector('glomex-integration');if(glomexEl)glomexEl.style.removeProperty('pointer-events');const overlay=document.createElement('div');overlay.style.cssText='position:absolute;inset:0;z-index:1;cursor:pointer;';spanEl.appendChild(overlay);});}
356function closePaidGlomexVideoLightbox(){const openPaidLightbox=document.querySelector('.video__lightbox:not(.dis0)');if(openPaidLightbox?.querySelector('[data-paid-video="true"]')){openPaidLightbox.classList.add('dis0');openPaidLightbox.querySelector('glomex-integration')?.pause();}}
357function removeForStickyGlomexPlayer(){let glomexPlayerElm=document.querySelector('glomex-player');if(glomexPlayerElm&&glomexPlayerElm.getAttribute('data-integration-id')==='4059a217llq9hw2b'){let pianoBottomRibbonEl=document.querySelector('.piano_bottom_ribbon');if(pianoBottomRibbonEl){pianoBottomRibbonEl.remove();}
358new MutationObserver(function(mutationsList,observer){for(let mutation of mutationsList){let bellEl=Array.from(mutation.addedNodes).find(item=>item.classList.contains('cleverpush-bell'));if(bellEl){bellEl.remove();observer.disconnect();break;}}}).observe(document.body,{childList:true});}}
359function openSharingSliderMenu(contentId){if(contentId){const requestParameters={ot:'de.nordbayern.ot.SharingSlider',contentid:contentId};showLoader(true);fetch(linkPrefix+'?'+new URLSearchParams(requestParameters).toString(),{credentials:"include"}).then(function(response){return response.text();}).then(function(responseHTML){showLoader(false);const sharingWrapper=document.querySelector('.sharing__wrapper');sharingWrapper.innerHTML=responseHTML;if(typeof initSharingSliderLinks!=="function"){const scriptElement=document.createElement('script');scriptElement.textContent=sharingWrapper.querySelectorAll('script')[0]?.textContent;document.body.appendChild(scriptElement);}
360if(typeof initSharingSliderLinks==="function"){initSharingSliderLinks();}
361hideStickyFooterAds();toggleSharingSliderMenu(true);}).catch(function(err){console.error(err);});}}
362function showMoreComments(commentareaId,commentsElementContentId,commentsCount,pageSize,trackLoadMore){if(trackLoadMore===true){trackClickEvent({'click':'Weitere Kommentare'});showLoader(true);}
363const commentsShown=document.querySelectorAll('#'+commentareaId+'-elements .comment').length;const currentPage=Math.ceil(commentsShown/5);fetch(linkPrefix+'?ot=de.nordbayern.ArticleCommentsElement.ot&comments='+currentPage+'&commentsElementContentId='+commentsElementContentId+'&showMaxComments='+pageSize).then(function(response){return response.text();}).then(function(responseHTML){const commentareaElements=document.getElementById(commentareaId+'-elements');const moreButton=document.getElementById(commentareaId+'-morebutton');if(moreButton&&moreButton===commentareaElements.lastElementChild){moreButton.insertAdjacentHTML("beforebegin",responseHTML);}else{commentareaElements.insertAdjacentHTML("beforeend",responseHTML);}}).catch(function(error){console.warn('Could not fetch comments.',error);}).finally(()=>{showLoader(false);})
364if(commentsShown+pageSize>=commentsCount){document.getElementById(commentareaId+'-morebutton').classList.add('dis0');}}
365function submitCommentRequest(commentareaId,commentsElementId,commentText){return fetch(linkPrefix+'/addcommentservlet',{method:'post',body:JSON.stringify({commentsElementId:commentsElementId,commentText:commentText,articleURL:window.location.href})});}
366async function loadBody(outputTemplate){const googleNewsConsent=isGaaRequest()?await hasConsentAsynchron(googleNewsVendorId):undefined;showLoader(true);const url=new URL(window.location.href);
366url.searchParams.set('ot',outputTemplate);fetch(url.pathname+url.search,{headers:isGaaRequest()?{'X-Google-News-Consent':googleNewsConsent,'X-Original-Referer':document.referrer}:{}}).then((response)=>{return response.text();}).then((responseHTML)=>{showLoader(false);let articleBody=document.getElementById('contentbody');articleBody.innerHTML=responseHTML;executeLoadedScripts(articleBody);}).catch(function(error){showLoader(false);console.warn('Could not fetch paid body.',error);});}
367function isGaaRequest(){return new URLSearchParams(window.location.search).has('gaa_sig');}
368function showPianoPaidLayer(){if(displayMode==='inline'){return;}
369tp.offer.show({offerId:paidOfferId,showCloseButton:false,templateId:paidTemplateId});}
370function showPianoPurLayer(){tp.offer.show({offerId:purOfferId,showCloseButton:false,templateId:purTemplateId});}
371function fetchPianoUserSegments(){if(pianoUserSegmentsPromise===null){pianoUserSegmentsPromise=loadPianoUserSegments();}
372return pianoUserSegmentsPromise;}
373async function loadPianoUserSegments(){try{const ssoId=getLoggedInUserId()||'';const userId=ssoId||getCookieValue("cX_P")||'';const type=ssoId?'insightSitePrefix':'cx';if(!userId){return[];}
374const cacheKey='pianoSegments_'+userId;const cached=localStorage.getItem(cacheKey);if(cached!==null){const{segments,expires}=JSON.parse(cached);if(Date.now()<expires){return segments;}}
375const url=linkPrefix+'?'+new URLSearchParams({'ot':'de.nordbayern.ot.www.PianoAudience','user-id':userId,'type':type}).toString();const response=await fetch(url);if(!response.ok){return[];}
376const segments=await response.json();localStorage.setItem(cacheKey,JSON.stringify({segments,expires:Date.now()+PIANO_SEGMENTS_CACHE_TTL_MS}));return segments;}catch(e){console.error('Failed to fetch Piano audience segments',e);return[];}}
377async function resolveGlomexIntegrationId(defaultIntegrationId){if(typeof glomexSegmentIntegrationId==='undefined'||glomexSegmentIntegrationId===''||typeof glomexUserSegmentIds==='undefined'||glomexUserSegmentIds.length===0){return defaultIntegrationId;}
378const segmentIds=await fetchPianoUserSegments();return segmentIds.some(segmentId=>glomexUserSegmentIds.includes(segmentId))?glomexSegmentIntegrationId:defaultIntegrationId;};

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.