1window.dw=window.dw||function(){(dw.q=dw.q||[]).push(arguments)} 2window.t5tq=typeof window.t5tq!=='undefined'?t5tq:[] 3window.initTOSC5=()=>{const originalTitle=document.title 4const revertTitle=()=>{document.title=originalTitle} 5const dynamicTitle=(toscTitle)=>{document.title=`${originalTitle} - ${toscTitle}`} 6const settings=JSON.parse(document.querySelector('#tosc5target script[type="application/json"]').innerText) 7const targetContainer=document.querySelector('#tosc5target') 8const stylesheet=targetContainer.getAttribute('data-stylesheet') 9const customPOIs=settings.customPOIs||[] 10let accommodationView='accommodation.list.views.default="card"' 11const isDesktop=window.matchMedia('(min-width: 1024px)') 12const urlParams=new URLSearchParams(window.location.search) 13if(parseInt(settings.useListViewForDesktop)>0&&isDesktop.matches){accommodationView='accommodation.list.views.default="list"'} 14const urlOptionalParams=new URLSearchParams(settings.urlOptionalParams||'') 15settings.preselectedFilters=settings.preselectedFilters||{} 16const filtersSetter=(key,value,{target})=>
16{if(!target){return} 17target.split('.').reduce((filter,key,index,pathSegments)=>{if(index===pathSegments.length-1){filter[key]=value 18return settings.preselectedFilters}else{filter[key]=filter[key]||{} 19return filter[key]}},settings.preselectedFilters)} 20const urlOptionalParamSetter=(key,value)=>{urlOptionalParams.set(key,value)} 21const urlParamsConfig={lkBC:{type:'string',setter:urlOptionalParamSetter},lkRG:{type:'string',setter:urlOptionalParamSetter},lkID:{type:'string',setter:urlOptionalParamSetter},lkPG:{type:'string',setter:urlOptionalParamSetter},limExGenLocPrio:{type:'string',setter:urlOptionalParamSetter},limExGenSoundex:{type:'bool',setter:urlOptionalParamSetter},limAddSrvTHEME:{type:'string',setter:urlOptionalParamSetter},limAddSrvType:{type:'string',setter:urlOptionalParamSetter},limAddSrvProducts:{type:'string',setter:urlOptionalParamSetter},limAddSrvServices:{type:'string',setter:urlOptionalParamSetter},limAddSrvServiceProviders:{type:'string',setter:urlOptionalParamSetter},limAddSrvServiceProviderCriterias:{type:'string',setter:urlOptionalParamSetter},limAddSrvServiceCriterias:{type:'string',setter:urlOptionalParamSetter},limAddSrvMARK:{type:'string',setter:urlOptionalParamSetter},limExAddRQRT:{type:'string',setter:urlOptionalParamSetter},limACCMARK:{type:'string',setter:urlOptionalParamSetter},limACCCAT:{type:'string',setter:urlOptionalParamSetter},limACCSTAR:{type:'string',setter:urlOptionalParamSetter},limACCSPCRI:{type:'string',setter:urlOptionalParamSetter},limACCSRCRI:{type:'string',setter:urlOptionalParamSetter},limACCSPCLASS:{type:'string',setter:urlOptionalParamSetter},limACCSRCLASS:{type:'string',setter:urlOptionalParamSetter},limACCTHEME:{type:'string',setter:urlOptionalParamSetter},limACCCHAIN:{type:'string',setter:urlOptionalParamSetter},limExAccLAC:{type:'int',setter:urlOptionalParamSetter},limExAccShSPwoPr:{type:'bool',setter:urlOptionalParamSetter},limExAccShSPwoUO:{type:'bool',setter:urlOptionalParamSetter},limExAccRQRT:{type:'string',setter:urlOptionalParamSetter},limExAccIsBO:{type:'bool',setter:urlOptionalParamSetter},limExAccUFSrch:{type:'bool',setter:urlOptionalParamSetter},limEVENTTHEME:{type:'string',setter:urlOptionalParamSetter},limEVENTCRITERIA:{type:'string',setter:urlOptionalParamSetter},limSERIALEVENTS:{type:'string',setter:urlOptionalParamSetter},limTOPEVENTS:{type:'bool',setter:urlOptionalParamSetter},limVISIBILITYLEVEL:{type:'int',setter:urlOptionalParamSetter},limINFOSYSTEMTHEME:{type:'string',setter:urlOptionalParamSetter},limINFOSYSTEMTYPE:{type:'int',setter:urlOptionalParamSetter},limINFOSYSTEMTOPICS:{type:'string',setter:urlOptionalParamSetter},limINFOSYSTEMSUBTOPICS:{type:'string',setter:urlOptionalParamSetter},limBROCHURETHEMES:{type:'string',setter:urlOptionalParamSetter},limBROCHUREGROUPS:{type:'string',setter:urlOptionalParamSetter},limPACKAGEGROUP:{type:'string',setter:urlOptionalParamSetter},limPACKAGETHEME:{type:'string',setter:urlOptionalParamSetter},limPACKAGETYPES:{type:'int',setter:urlOptionalParamSetter},filterAddServicesTypes:{type:'string[]',setter:filtersSetter,target:'filterAddServices.types'},filterAddServicesHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterAddServices.holidayThemes'},filterAddServicesLocations:{type:'string[]',setter:filtersSetter,target:'filterAddServices.locations'},filterAccommodationCategories:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.categories'},filterAccommodationLocations:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.locations'},filterAccommodationRooms:{type:'int[]',setter:filtersSetter,target:'filterAccommodation.rooms'},filterAccommodationBedrooms:{type:'int[]',setter:filtersSetter,target:'filterAccommodation.bedrooms'},filterAccommodationStars:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.stars'},filterAccommodationCriterias:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.criterias'},filterAccommodationClassifications:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.classifications'},filterAccommodationTopClassifications:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.topClassifications'},filterAccommodationMarketinggroups:{type:'string[]',setter:filtersSetter,target:'filterAccommodation.marketinggroups'},filterAccommodationPriceFrom:{type:'int',setter:filtersSetter,target:'filterAccommodation.price.from'},filterAccommodationPriceTo:{type:'int',setter:filtersSetter,target:'filterAccommodation.price.to'},filterAccommodationBestPrice:{type:'bool',setter:filtersSetter,target:'filterAccommodation.bestPrice'}
21,filterAccommodationSpecialPrice:{type:'bool',setter:filtersSetter,target:'filterAccommodation.specialPrice'},filterAccommodationSpecialOffer:{type:'bool',setter:filtersSetter,target:'filterAccommodation.specialOffer'},filterEventTopEvent:{type:'bool',setter:filtersSetter,target:'filterEvent.topEvent'},filterEventLocations:{type:'string[]',setter:filtersSetter,target:'filterEvent.locations'},filterEventCriteria:{type:'string[]',setter:filtersSetter,target:'filterEvent.criteria'},filterEventGroups:{type:'string[]',setter:filtersSetter,target:'filterEvent.eventGroups'},filterEventHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterEvent.holidayThemes'},filterInfrastructureOpeningTimes:{type:'int[]',setter:filtersSetter,target:'filterInfrastructure.openingTimes'},filterInfrastructureTypes:{type:'string[]',setter:filtersSetter,target:'filterInfrastructure.infrastructureTypes'},filterInfrastructureTopics:{type:'string[]',setter:filtersSetter,target:'filterInfrastructure.topics'},filterInfrastructureLocations:{type:'string[]',setter:filtersSetter,target:'filterInfrastructure.locations'},filterInfrastructureHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterInfrastructure.holidayThemes'},filterBrochureGroups:{type:'string[]',setter:filtersSetter,target:'filterBrochures.brochureGroups'},filterBrochureHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterBrochures.holidayThemes'},filterBrochureLanguages:{type:'string[]',setter:filtersSetter,target:'filterBrochures.languages'},filterPackageGroups:{type:'string[]',setter:filtersSetter,target:'filterPackage.groups'},filterPackageHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterPackage.holidayThemes'},filterTourLanguages:{type:'string[]',setter:filtersSetter,target:'filterTour.languages'},filterTourCategories:{type:'string[]',setter:filtersSetter,target:'filterTour.categories'},filterTourHolidayThemes:{type:'string[]',setter:filtersSetter,target:'filterTour.holidayThemes'},filterTourTopTour:{type:'bool',setter:filtersSetter,target:'filterTour.topTour'}} 22const valueConverter={string:val=>String(val),bool:val=>!(val==='0'||val==='false'||val===!1),int:val=>parseInt(val),'string[]':val=>{const array=Array.isArray(val)?val:typeof val==='string'?val.split(','):[val] 23return array.map(String)},'int[]':val=>{const array=Array.isArray(val)?val:typeof val==='string'?val.split(','):[val] 24return array.map(parseInt)}} 25for(const[urlParamKey,urlParamValue]of urlParams.entries()){if(!Object.prototype.hasOwnProperty.call(urlParamsConfig,urlParamKey)){continue} 26const urlParamConfig=urlParamsConfig[urlParamKey] 27let paramValue=null 28if(Object.prototype.hasOwnProperty.call(valueConverter,urlParamConfig.type||'none')){paramValue=valueConverter[urlParamConfig.type](urlParamValue)}else{paramValue=urlParamValue} 29urlParamConfig.setter(urlParamKey,paramValue,urlParamConfig)} 30if(urlOptionalParams.size>0){settings.urlOptionalParams=urlOptionalParams.toString()} 31let tmpFilter=sessionStorage.getItem('ndsibesearch_tmp_filter') 32if(tmpFilter&&tmpFilter!==''){tmpFilter=JSON.parse(tmpFilter) 33sessionStorage.setItem('ndsibesearch_tmp_filter','')} 34settings.dw.profileOverrides=['general.navigation.visible='+(parseInt(settings.generalNavigationVisible)>0),accommodationView] 35if(customPOIs.length>0){settings.dw.profileOverrides.push('general.customPOIs=customPOIs')} 36settings.dw.allowScrollOnApplicationStart=parseInt(settings.allowScrollOnApplicationStart)>0 37settings.dw.lang=document.documentElement.lang||'de' 38settings.dw.styleResources=stylesheet?[stylesheet]:[] 39if(tmpFilter&&typeof tmpFilter==='object'&&Object.prototype.hasOwnProperty.call(tmpFilter,'filter')){if(!settings.preselectedFilters){settings.preselectedFilters=tmpFilter.filter}else{settings.preselectedFilters=deepMerge(settings.preselectedFilters,tmpFilter.filter)}} 40dw('settings',settings.tagId,settings.dw) 41if(Object.entries(settings.preselectedFilters||{}).length!==0){dw('onFilterOverride',settings.tagId,function(event){if(event&&event.filter&&settings.preselectedFilters){Object.assign(event.filter,settings.preselectedFilters)}})} 42dw('onUserAction',settings.tagId,function(e){window.dispatchEvent(new CustomEvent('tosc5UserAction',{detail:e})) 43t5tq.push({eventName:'onUserAction',event:e})}) 44dw('onPageLoad',settings.tagId,(e)=>
44{const revertPages=[100,102,104,106,108,110,112] 45revertPages.includes(e.pageType)?revertTitle():dynamicTitle(e.pageTitle)}) 46function deepMerge(target,source){const result={...target,...source} 47for(const key of Object.keys(result)){result[key]=typeof target[key]==='object'&&typeof source[key]==='object'?deepMerge(target[key],source[key]):structuredClone(result[key])} 48return result}}
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.