PageSourceSearch

https://ibashomunich.com/sb/deferred-88b3831d4a04e281.js.v44?20260924002011

js ibashomunich.com collected 2026-10-04 10:24:52 UTC 15,714 bytes, 48 lines download raw bytes

1(function(){function handlelocationFilter(block){const categoryInputs=block.querySelectorAll('.location-categories input[type="radio"][name="category"]');const locationItems=block.querySelectorAll('.location-item');if(!categoryInputs.length||!locationItems.length)return;categoryInputs.forEach(function(input){input.addEventListener('change',function(){const selectedCategory=this.value;locationItems.forEach(function(item){const categories=item.getAttribute('data-categories');if(!categories){item.classList.add("active");return;}
2const categoryList=categories.split(',');item.classList.toggle("active",categoryList.includes(selectedCategory));});});});}
3document.addEventListener('DOMContentLoaded',function(){const contactMapBlocks=document.querySelectorAll(".block-contact-map");contactMapBlocks?.forEach(function(block){handlelocationFilter(block);});});})();;;
4(function(){function initCustomSelects(){document.addEventListener("click",function(event){const customSelect=event.target.closest(".js-customSelect");if(!customSelect){document.querySelectorAll(".js-customSelect.active")?.forEach(function(dropdown){dropdown.classList.remove("active");});return;}
5const header=customSelect.querySelector(".custom-select__header");if(event.target===header||header.contains(event.target)){customSelect.classList.toggle("active");document.querySelectorAll(".js-customSelect.active")?.forEach(function(dropdown){if(dropdown!=customSelect){dropdown.classList.remove("active");}});}
6if(event.target.matches(".custom-select__options li")){const input=customSelect.querySelector("input");input.value=event.target.dataset.value;input.dispatchEvent(new Event("input"));const selectedValueText=header.querySelector(".selected-value");if(selectedValueText){selectedValueText.textContent=event.target.textContent;}else{header.textContent=event.target.textContent;}
7customSelect.classList.remove("active");}});}
8function handleOutsideClick(){document.addEventListener("click",function(event){if(event.target.closest('.js-customChecklistDropdown')){return;}
9document.querySelectorAll('.js-customChecklistDropdown.active')?.forEach(function(dropdown){dropdown.classList.remove('active');});});}
10function handleUmbracoFormLabels(){document.querySelectorAll('.umbraco-forms-field.dropdown select').forEach(select=>{select.addEventListener('change',()=>{if(select.value!==""){select.classList.add('has-value');}else{select.classList.remove('has-value');}});});document.querySelectorAll('.umbraco-forms-field.date input[type=text]').forEach(dateField=>{dateField.addEventListener('input',()=>{console.log(dateField.value);if(dateField.value!==""){dateField.classList.add('has-value');}else{dateField.classList.remove('has-value');}});});}
11document.addEventListener("DOMContentLoaded",function(){initCustomSelects();handleOutsideClick();handleUmbracoFormLabels();});})();;;
12function setCookie(cname,cvalue,exdays){if(exdays>0){let d=new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));let expires='expires='+d.toUTCString();document.cookie=cname+'='+cvalue+';'+expires+';path=/';}
13else{document.cookie=cname+'='+cvalue+';';}}
14function getCookie(cname){let name=cname+'=';let decodedCookie=decodeURIComponent(document.cookie);let ca=decodedCookie.split(';');for(let i=0;i<ca.length;i++){let c=ca[i];while(c.charAt(0)==' '){c=c.substring(1);}
15if(c.indexOf(name)==0){return c.substring(name.length,c.length);}}
16return'';};;
17document.addEventListener('DOMContentLoaded',function(){let popups=[];let active=false;let queue=[];const triggers={idleTime:()=>{return{register:(elem,config)=>{let time;window.onload=resetTimer;document.onmousemove=resetTimer;document.onkeydown=resetTimer;const seconds=config?.Trigger?.Properties?.seconds*1000;function resetTimer(){clearTimeout(time);time=setTimeout(()=>{show({elem:elem,config:config},'idleTime');},seconds);}}};},scrollDepth:()=>{let activated=false;let scrollDepthPopups=[];const debounce=(callback,wait)=>{let timeoutId=null;return(...args)=>{clearTimeout(timeoutId);timeoutId=setTimeout(()=>{callback.apply(null,args);},wait);};};return{register:(elem,config)=>{const percentage=config?.Trigger?.Properties?.percentage;scrollDepthPopups.push({elem:elem,config:config,percentage:percentage});if(activated===false){const handleScroll=debounce(e=>{const scrollPercentage=Math.round(window.scrollY/(document.body.offsetHeight-window.innerHeight)*100);scrollDepthPopups.filter(x=>x.percentage<=scrollPercentage).forEach(x=>{show({elem:x.elem,config:x.config},'scrollDepth');const index=scrollDepthPopups.findIndex(y=>y.config.Id===x.config.Id);scrollDepthPopups.splice(index,1);if(scrollDepthPopups.length===0){document.removeEventListener('scroll',handleScroll);}});},250);document.addEventListener('scroll',handleScroll);activated=true;}}};},delay:()=>{return{register:(elem,config)=>{const seconds=config?.Trigger?.Properties?.seconds*1000;setTimeout(()=>{show({elem:elem,config:config},'delay');},seconds);}};}};
17function show(popup,trigger){const index=popups.findIndex(x=>x.config.Id===popup.config.Id);if(index>-1){queue.push({popup:popup,trigger:trigger});popups.splice(index,1);checkQueue();}}
18function close(popup,trigger){popup.elem.classList.remove('popup-active');popup.elem.setAttribute('aria-hidden','true');active=false;checkQueue();setTimeout(()=>{popup.elem.remove();},2000);setCookie(popup.config.CookieName,'closed',popup.config.Duration);}
19function checkQueue(){if(active===false&&queue.length>0){queue[0].popup.elem.classList.add('popup-active');queue[0].popup.elem.setAttribute('aria-hidden','false');queue.splice(0,1);active=true;}}
20document.querySelectorAll('.popup').forEach(function(elem){const json=elem.querySelector('script[type="application/json"]')?.textContent;if(json){const config=JSON.parse(json);popups.push({elem:elem,config:config});if(config?.Trigger){triggers[config.Trigger.Alias]?.().register(elem,config);}
21else{show({elem:elem,config:config},'load');}
22if(elem.classList.contains('popup-background')){elem.addEventListener('click',e=>{if(e.target===elem){close({elem:elem,config:config},'close');}});}
23elem.querySelectorAll('a').forEach(function(link){link.addEventListener('click',()=>{close({elem:elem,config:config},'close');});});elem.querySelectorAll('form').forEach(function(form){form.addEventListener('submit',(e)=>{close({elem:elem,config:config},'close');});});}});});;;
24'use strict';const SelectActions={Close:0,CloseSelect:1,First:2,Last:3,Next:4,Open:5,PageDown:6,PageUp:7,Previous:8,Select:9,Type:10,};function filterOptions(options=[],filter,exclude=[]){return options.filter((option)=>{const matches=option.toLowerCase().indexOf(filter.toLowerCase())===0;return matches&&exclude.indexOf(option)<0;});}
25function getActionFromKey(event,menuOpen){const{key,altKey,ctrlKey,metaKey}=event;const openKeys=['ArrowDown','ArrowUp','Enter',' '];if(!menuOpen&&openKeys.includes(key)){return SelectActions.Open;}
26if(key==='Home'){return SelectActions.First;}
27if(key==='End'){return SelectActions.Last;}
28if(key==='Backspace'||key==='Clear'||(key.length===1&&key!==' '&&!altKey&&!ctrlKey&&!metaKey)){return SelectActions.Type;}
29if(menuOpen){if(key==='ArrowUp'&&altKey){return SelectActions.CloseSelect;}else if(key==='ArrowDown'&&!altKey){return SelectActions.Next;}else if(key==='ArrowUp'){return SelectActions.Previous;}else if(key==='PageUp'){return SelectActions.PageUp;}else if(key==='PageDown'){return SelectActions.PageDown;}else if(key==='Escape'){return SelectActions.Close;}else if(key==='Enter'||key===' '){return SelectActions.CloseSelect;}}}
30function getIndexByLetter(options,filter,startIndex=0){const orderedOptions=[...options.slice(startIndex),...options.slice(0,startIndex),];const firstMatch=filterOptions(orderedOptions,filter)[0];const allSameLetter=(array)=>array.every((letter)=>letter===array[0]);if(firstMatch){return options.indexOf(firstMatch);}
31else if(allSameLetter(filter.split(''))){const matches=filterOptions(orderedOptions,filter[0]);return options.indexOf(matches[0]);}
32else{return-1;}}
33function getUpdatedIndex(currentIndex,maxIndex,action){const pageSize=10;switch(action){case SelectActions.First:return 0;case SelectActions.Last:return maxIndex;case SelectActions.Previous:return Math.max(0,currentIndex-1);case SelectActions.Next:return Math.min(maxIndex,currentIndex+1);case SelectActions.PageUp:return Math.max(0,currentIndex-pageSize);case SelectActions.PageDown:return Math.min(maxIndex,currentIndex+pageSize);default:return currentIndex;}}
34function isElementInView(element){var bounding=element.getBoundingClientRect();return(bounding.top>=0&&bounding.left>=0&&bounding.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&bounding.right<=(window.innerWidth||document.documentElement.clientWidth));}
35function isScrollable(element){return element&&element.clientHeight<element.scrollHeight;}
36function maintainScrollVisibility(activeElement,scrollParent){const{offsetHeight,offsetTop}=activeElement;const{offsetHeight:parentOffsetHeight,scrollTop}=scrollParent;const isAbove=offsetTop<scrollTop;const isBelow=offsetTop+offsetHeight>scrollTop+parentOffsetHeight;if(isAbove){scrollParent.scrollTo(0,offsetTop);}else if(isBelow){scrollParent.scrollTo(0,offsetTop-parentOffsetHeight+offsetHeight);}}
37const Select=function(el,customOnSelectEvent){this.el=el;
37this.comboEl=el.querySelector('[role=combobox]');this.listboxEl=el.querySelector('[role=listbox]');this.idBase=this.comboEl.id||'combo';this.options=[];this.customOnSelectEvent=customOnSelectEvent;this.activeIndex=0;this.open=false;this.searchString='';this.searchTimeout=null;if(el&&this.comboEl&&this.listboxEl){this.init();}};Select.prototype.init=function(){this.options=[...this.listboxEl.children];this.comboEl.innerText=this.options[0].innerText;this.comboEl.addEventListener('blur',this.onComboBlur.bind(this));this.listboxEl.addEventListener('focusout',this.onComboBlur.bind(this));this.comboEl.addEventListener('click',this.onComboClick.bind(this));this.comboEl.addEventListener('keydown',this.onComboKeyDown.bind(this));this.options.map((optionEl,index)=>{this.initOption(optionEl,index);});};Select.prototype.initOption=function(optionEl,index){optionEl.setAttribute('role','option');optionEl.id=`${this.idBase}-${index}`;optionEl.className=index===0?'combo-option option-current':'combo-option';optionEl.setAttribute('aria-selected',`${index === 0}`);optionEl.addEventListener('click',(event)=>{event.stopPropagation();this.onOptionClick(index);});optionEl.addEventListener('mousedown',this.onOptionMouseDown.bind(this));return optionEl;};Select.prototype.getSearchString=function(char){if(typeof this.searchTimeout==='number'){window.clearTimeout(this.searchTimeout);}
38this.searchTimeout=window.setTimeout(()=>{this.searchString='';},500);this.searchString+=char;return this.searchString;};Select.prototype.onLabelClick=function(){this.comboEl.focus();};Select.prototype.onComboBlur=function(event){if(this.listboxEl.contains(event.relatedTarget)){return;}
39if(this.open){this.selectOption(this.activeIndex);this.updateMenuState(false,false);}};Select.prototype.onComboClick=function(){this.updateMenuState(!this.open,false);};Select.prototype.onComboKeyDown=function(event){const{key}=event;const max=this.options.length-1;const action=getActionFromKey(event,this.open);switch(action){case SelectActions.Last:case SelectActions.First:this.updateMenuState(true);case SelectActions.Next:case SelectActions.Previous:case SelectActions.PageUp:case SelectActions.PageDown:event.preventDefault();return this.onOptionChange(getUpdatedIndex(this.activeIndex,max,action));case SelectActions.CloseSelect:event.preventDefault();this.selectOption(this.activeIndex);case SelectActions.Close:event.preventDefault();return this.updateMenuState(false);case SelectActions.Type:return this.onComboType(key);case SelectActions.Open:event.preventDefault();return this.updateMenuState(true);}};Select.prototype.onComboType=function(letter){this.updateMenuState(true);const searchString=this.getSearchString(letter);const searchIndex=getIndexByLetter(this.options,searchString,this.activeIndex+1);if(searchIndex>=0){this.onOptionChange(searchIndex);}
40else{window.clearTimeout(this.searchTimeout);this.searchString='';}};Select.prototype.onOptionChange=function(index){this.activeIndex=index;this.comboEl.setAttribute('aria-activedescendant',`${this.idBase}-${index}`);const options=this.el.querySelectorAll('[role=option]');[...options].forEach((optionEl)=>{optionEl.classList.remove('option-current');});options[index].classList.add('option-current');if(isScrollable(this.listboxEl)){maintainScrollVisibility(options[index],this.listboxEl);}
41if(!isElementInView(options[index])){options[index].scrollIntoView({behavior:'smooth',block:'nearest'});}};Select.prototype.onOptionClick=function(index){this.onOptionChange(index);this.selectOption(index);this.updateMenuState(false);};Select.prototype.onOptionMouseDown=function(){this.ignoreBlur=true;};Select.prototype.selectOption=function(index){this.activeIndex=index;const selected=this.options[index];this.comboEl.innerHtml=selected.innerText;const options=this.el.querySelectorAll('[role=option]');[...options].forEach((optionEl)=>{optionEl.setAttribute('aria-selected','false');});options[index].setAttribute('aria-selected','true');if(this.customOnSelectEvent&&typeof this.customOnSelectEvent==='function'){this.customOnSelectEvent(options[index]);}};Select.prototype.updateMenuState=function(open,callFocus=true){if(this.open===open){return;}
42this.open=open;this.comboEl.setAttribute('aria-expanded',`${open}`);open?this.el.classList.add('open'):this.el.classList.remove('open');const activeID=open?`${this.idBase}-${this.activeIndex}`:'';this.comboEl.setAttribute('aria-activedescendant',activeID);if(activeID===''&&!isElementInView(this.comboEl)){this.comboEl.scrollIntoView({behavior:'smooth',block:'nearest'});}
43callFocus&&this.comboEl.focus();};window.addEventListener('load',function(){const selectEls=document.querySelectorAll('.js-select');
43selectEls.forEach((el)=>{new Select(el,(optionEl)=>{if(optionEl.matches(".language-selector .combo-option")){optionEl.querySelector('a')?.click();}});});});;;
44(function(){function updateBookingLinks(){const consentCookie=getCookie('OptanonConsent');if(!consentCookie)return;const links=document.querySelectorAll('a[href*="booking.deangroup.com"]');links.forEach(link=>{try{const url=new URL(link.href);if(!url.searchParams.has('ot_consent')){url.searchParams.set('ot_consent',encodeURIComponent(consentCookie));link.href=url.toString();}}catch(e){console.error("Error parsing link URL:",e);}});}
45document.addEventListener('DOMContentLoaded',updateBookingLinks);window.addEventListener('load',function(){if(typeof OneTrust!=='undefined'){OneTrust.OnConsentChanged(function(){updateBookingLinks();});}});})();;;
46(function(){const mobileNav=document.querySelector('.mobile-fixed-nav');const footer=document.getElementById('footer');const ACTIVE_CLASS='active';const mobileMedia=window.matchMedia('(max-width: 991px)');if(!mobileNav||!footer)return;function isFooterInViewport(){const rect=footer.getBoundingClientRect();return(rect.top<window.innerHeight&&rect.bottom>0);}
47function updateMobileNavVisibility(){const isMobile=mobileMedia.matches;const scrolledEnough=window.scrollY>=window.innerHeight/2;const footerVisible=isFooterInViewport();if(isMobile&&scrolledEnough&&!footerVisible){mobileNav.classList.add(ACTIVE_CLASS);}else{mobileNav.classList.remove(ACTIVE_CLASS);}}
48window.addEventListener('scroll',updateMobileNavVisibility,{passive:true});mobileMedia.addEventListener('change',updateMobileNavVisibility);document.addEventListener('DOMContentLoaded',updateMobileNavVisibility);})();;;

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.