PageSourceSearch

https://www.drosendorf.at/system/statV.1789655742/Javascript/cookie.js

js drosendorf.at collected 2026-10-02 12:10:03 UTC 34,359 bytes, 781 lines download raw bytes

1
2//Cookie Opt-In Einstellungen
3var optInCookieName = "ris_cookie_setting";
4var cookieStringForAllAccepted = "-1";
5var linkToHandler = envurl + "system/web/cookie.ashx?sprachid=" + rissprachid;
6
7//Initialisierungs Funktionen
8function isRunningInIframe() {
9    return window.self !== window.top;
10}
11function initCookieOptInIfCookieNotExists() {
12    if (!doesCookieExist(optInCookieName)) {
13        initCookieOptIn();
14    }
15}
16
17function initCookieOptIn() {
18    fetch(linkToHandler)
19        .then(response => response.json())
20        .then(data => {
21            buildModal(data);
22        })
23        .catch(error => console.error('Error fetching cookie data:', error));
24}
25
26//Build Funktionen
27function buildModal(dataJson) {
28    var textJson = dataJson.texts[0];
29    var linkJson = dataJson.links[0];
30    var cookieJson = dataJson.cookies[0];
31
32    var cookieOverlay = document.createElement("div");
33    cookieOverlay.className = "bemCookieOverlay defaultfontsize";
34
35    var cookieOverlayBackdrop = document.createElement("div");
36    cookieOverlayBackdrop.className = "bemCookieOverlay__backdrop";
37
38    var cookieOverlayOuterWrapper = document.createElement("div");
39    cookieOverlayOuterWrapper.className = "bemCookieOverlay__boxOuterWrapper";
40
41    var cookieOverlayInnerWrapper = document.createElement("div");
42    cookieOverlayInnerWrapper.className = "bemCookieOverlay__boxInnerWrapper";
43
44    var boxView = buildBoxView(textJson, linkJson, cookieJson);
45    var prefView = buildPreferenceView(textJson, linkJson, cookieJson);
46
47    cookieOverlayInnerWrapper.appendChild(boxView);
48    cookieOverlayInnerWrapper.appendChild(prefView);
49    cookieOverlayOuterWrapper.appendChild(cookieOverlayInnerWrapper);
50    cookieOverlayBackdrop.appendChild(cookieOverlayOuterWrapper);
51    cookieOverlay.appendChild(cookieOverlayBackdrop);
52
53    document.body.appendChild(cookieOverlay);
54    document.body.classList.add("bemCookieOverlay--activePopup");
55
56    document.addEventListener("keydown", function (e) {
57        if (e.keyCode == 27) {
58            if (document.body.classList.contains("bemCookieOverlay--activePopup")) {
59                document.querySelector(".bemCookieOverlay").remove();
60                document.body.classList.remove("bemCookieOverlay--activePopup");
61            }
62        }
63    });
64
65    initAccessibilityImprovements(boxView, prefView);
66    initCookieSettings(boxView, prefView, optInCookieName);
67}
68
69function buildBoxView(textJson, linkJson, cookieJson) {
70    var boxView = document.createElement("div");
71    boxView.className = "bemCookieOverlay__cookieBox";
72
73    var boxViewContainer = document.createElement("div");
74    boxViewContainer.className = "bemCookieOverlay__container bemCookieOverlay__container--visible";
75
76    var boxViewContainerRow = document.createElement("div");
77    boxViewContainerRow.className = "bemCookieOverlay__row";
78
79    var boxViewContainerCol = document.createElement("div");
80    boxViewContainerCol.className = "bemCookieOverlay__col bemCookieOverlay__col--100";
81
82    var boxViewHeading = document.createElement("div");
83    boxViewHeading.className = "bemCookieOverlay__heading";
84    var heading = document.createElement("h3");
85    heading.textContent = textJson.title;
86    boxViewHeading.appendChild(heading);
87
88    var boxViewDescription = document.createElement("p");
89    boxViewDescription.className = "bemCookieOverlay__description";
90    boxViewDescription.textContent = textJson.desc_short;
91
92    var boxViewCookieSelection = buildCookieGroupSelection(textJson, cookieJson);
93
94    var boxViewButtons = document.createElement("p");
95    boxViewButtons.className = "bemCookieOverlay__cookieAcceptance bemCookieOverlay__cookieAcceptance--centered";
96
97    var acceptAllButton = document.createElement("a");
98    acceptAllButton.className = "bemCookieOverlay__btn bemCookieOverlay__btn--100 bemCookieOverlay__btn--acceptAll";
99    acceptAllButton.textContent = textJson.btn_acceptAll;
100    acceptAllButton.addEventListener("click", function () { saveCookieSettings(this, true); });
101
102    var saveButton = document.createElement("a");
103    saveButton.className = "bemCookieOverlay__btn bemCookieOverlay__btn--100 bemCookieOverlay__btn--save";
104    saveButton.textContent = textJson.btn_save;
105    saveButton.addEventListener("click", function () { saveCookieSettings(this, false); });
106
107    boxViewButtons.appendChild(acceptAllButton);
108    boxViewButtons.appendChild(saveButton);
109
110    var boxViewCookieDetailLink = document.createElement("p");
111    boxViewCookieDetailLink.className = "bemCookieOverlay__cookieManage";
112
113    var manageLink = document.createElement("a");
114    manageLink.className = "bemCookieOverlay__cookieManageLink";
115    manageLink.textContent = textJson.individual_cookie_settings;
116    manageLink.addEventListener("click", function () { switchCookieBoxView(); });
117
118    boxViewCookieDetailLink.appendChild(manageLink);
119
120    var boxViewLegals = document.createElement("p");
121    boxViewLegals.className = "bemCookieOverlay__cookieLegals";
122
123    var privacyStatementLink = document.createElement("a");
124    privacyStatementLink.className = "bemCookieOverlay__cookiePrivacyStatement";
125    privacyStatementLink.href = linkJson.privacy_statement;
126    privacyStatementLink.textContent = textJson.privacy_statement;
127
128    var separator = document.createElement("span");
129    separator.className = "bemCookieOverlay__seperator";
130
131    var imprintLink = document.createElement("a");
132    imprintLink.className = "bemCookieOverlay__cookieImprint";
133    imprintLink.href = linkJson.imprint;
134    imprintLink.textContent = textJson.imprint;
135
136    boxViewLegals.appendChild(privacyStatementLink);
137    boxViewLegals.appendChild(separator);
138    boxViewLegals.appendChild(imprintLink);
139
140    boxViewContainerCol.appendChild(boxViewHeading);
141    boxViewContainerCol.appendChild(boxViewDescription);
142    boxViewContainerCol.appendChild(boxViewCookieSelection);
143    boxViewContainerCol.appendChild(boxViewButtons);
144    boxViewContainerCol.appendChild(boxViewCookieDetailLink);
145    boxViewContainerCol.appendChild(boxViewLegals);
146
147    boxViewContainerRow.appendChild(boxViewContainerCol);
148    boxViewContainer.appendChild(boxViewContainerRow);
149    boxView.appendChild(boxViewContainer);
150
151    return boxView;
152}
153
154function buildCookieGroupSelection(textJson, cookieJson) {
155    var ul = document.createElement("ul");
156    ul.className = "bemCookieOverlay__cookieSelection";
157
158    cookieJson.groups.forEach(function (cookieGroupJson) {
159        ul.appendChild(buildCookieGroupSelectionItem(textJson, cookieGroupJson));
160    });
161
162    return ul;
163}
164
165function buildCookieGroupSelectionItem(textJson, cookieJson) {
166    var item = document.createElement("li");
167    item.className = "bemCookieOverlay__cookieSelectionItem";
168
169    var itemLabel = document.createElement("label");
170    itemLabel.className = "bemCookieOverlay__cookieSelectionItemCheckbox";
171    itemLabel.setAttribute("for", "box_" + cookieJson.id);
172    itemLabel.textContent = cookieJson.name;
173
174    var itemInput = document.createElement("input");
175    itemInput.className = "bemCookieOverlay__cookieSelectionItemCheckboxInput";
176    itemInput.id = "box_" + cookieJson.id;
177    itemInput.value = cookieJson.id;
178    itemInput.type = "checkbox";
179
180    if (cookieJson.required) {
181        itemInput.checked = true;
182        itemInput.disabled = true;
183    }
184
185    var itemIndicator = document.createElement("div");
186    itemIndicator.className = "bemCookieOverlay__cookieSelectionItemCheckboxIndicator";
187
188    itemLabel.appendChild(itemInput);
189    itemLabel.appendChild(itemIndicator);
190    item.appendChild(itemLabel);
191
192    return item;
193}
194
195function buildPreferenceView(textJson, linkJson, cookieJson) {
196    var prefView = document.createElement("div");
197    prefView.className = "bemCookieOverlay__cookiePreference";
198
199    var prefViewContainer = document.createElement("div");
200    prefViewContainer.className = "bemCookieOverlay__container bemCookieOverlay__container--invisible";
201    prefViewContainer.tabIndex = -1;
202
203    var prefViewContainerRow = document.createElement("div");
204    prefViewContainerRow.className = "bemCookieOverlay__row bemCookieOverlay__row--noGutters";
205
206    var prefViewContainerCol = document.createElement("div");
207    prefViewContainerCol.className = "bemCookieOverlay__col bemCookieOverlay__col--100";
208
209    var prefViewHeader = document.createElement("div");
210    prefViewHeader.className = "bemCookieOverlay__row bemCookieOverlay__row--noGutters";
211
212    var prefViewHeaderCol = document.createElement("div");
213    prefViewHeaderCol.className = "bemCookieOverlay__col bemCookieOverlay__col--100";
214
215    var prefViewHeaderHeading = document.createElement("div");
216    prefViewHeaderHeading.className = "bemCookieOverlay__heading";
217    var heading = document.createElement("h3");
218    heading.textContent = textJson.title;
219    prefViewHeaderHeading.appendChild(heading);
220
221    var prefViewHeaderDescription = document.createElement("p");
222    prefViewHeaderDescription.className = "bemCookieOverlay__description";
223    prefViewHeaderDescription.textContent = textJson.desc_long;
224
225    var prefViewHeaderInteractions = document.createElement("div");
226    prefViewHeaderInteractions.className = "bemCookieOverlay__row bemCookieOverlay__row--noGutters bemCookieOverlay--alginItemsCenter";
227
228    var prefViewHeaderButtons = document.createElement("div");
229    prefViewHeaderButtons.className = "bemCookieOverlay__col bemCookieOverlay__col--75";
230
231    var acceptAllButton = document.createElement("a");
232    acceptAllButton.className = "bemCookieOverlay__btn bemCookieOverlay__btn--acceptAll";
233    acceptAllButton.textContent = textJson.btn_acceptAll;
234    acceptAllButton.addEventListener("click", function () { saveCookieSettings(this, true); });
235
236    var saveButton = document.createElement("a");
237    saveButton.className = "bemCookieOverlay__btn bemCookieOverlay__btn--save";
238    saveButton.textContent = textJson.btn_save;
239    saveButton.addEventListener("click", function () { saveCookieSettings(this, false); });
240
241    var buttonContainer = document.createElement("p");
242    buttonContainer.className = "bemCookieOverlay__cookieAcceptance";
243    buttonContainer.appendChild(acceptAllButton);
244    buttonContainer.appendChild(saveButton);
245    prefViewHeaderButtons.appendChild(buttonContainer);
246
247    var prefViewHeaderReturn = document.createElement("div");
248    prefViewHeaderReturn.className = "bemCookieOverlay__col bemCookieOverlay__col--25";
249
250    var backButton = document.createElement("a");
251    backButton.className = "bemCookieOverlay__refuseDetailViewLink";
252    backButton.textContent = textJson.back;
253    backButton.addEventListener("click", function () { switchCookieBoxView(); });
254
255    var backContainer = document.createElement("p");
256    backContainer.className = "bemCookieOverlay__refuseDetailVie
256w";
257    backContainer.appendChild(backButton);
258    prefViewHeaderReturn.appendChild(backContainer);
259
260    prefViewHeader.appendChild(prefViewHeaderCol);
261    prefViewHeaderCol.appendChild(prefViewHeaderHeading);
262    prefViewHeaderCol.appendChild(prefViewHeaderDescription);
263    prefViewHeaderCol.appendChild(prefViewHeaderInteractions);
264    prefViewHeaderInteractions.appendChild(prefViewHeaderButtons);
265    prefViewHeaderInteractions.appendChild(prefViewHeaderReturn);
266
267    var prefViewAcc = buildAccordion(textJson, cookieJson);
268
269    var prefViewLegals = document.createElement("p");
270    prefViewLegals.className = "bemCookieOverlay__cookieLegals bemCookieOverlay__cookieLegals--textAlignRight";
271
272    if (linkJson.privacy_statement) {
273        var privacyStatementLink = document.createElement("a");
274        privacyStatementLink.className = "bemCookieOverlay__cookiePrivacyStatement";
275        privacyStatementLink.href = linkJson.privacy_statement;
276        privacyStatementLink.textContent = textJson.privacy_statement;
277        prefViewLegals.appendChild(privacyStatementLink);
278    }
279
280    if (linkJson.imprint) {
281        var imprintLink = document.createElement("a");
282        imprintLink.className = "bemCookieOverlay__cookieImprint";
283        imprintLink.href = linkJson.imprint;
284        imprintLink.textContent = textJson.imprint;
285        prefViewLegals.appendChild(imprintLink);
286    }
287
288    if (linkJson.privacy_statement && linkJson.imprint) {
289        var separator = document.createElement("span");
290        separator.className = "bemCookieOverlay__seperator";
291        prefViewLegals.insertBefore(separator, imprintLink);
292    }
293
294    prefViewContainerCol.appendChild(prefViewHeader);
295    prefViewContainerCol.appendChild(prefViewAcc);
296    prefViewContainerCol.appendChild(prefViewLegals);
297    prefViewContainerRow.appendChild(prefViewContainerCol);
298    prefViewContainer.appendChild(prefViewContainerRow);
299    prefView.appendChild(prefViewContainer);
300
301    return prefView;
302}
303function buildAccordion(textJson, cookieJson) {
304    var acc = document.createElement("div");
305    acc.className = "bemCookieOverlay__accordion";
306
307    cookieJson.groups.forEach(function (cookieGroupJson) {
308        acc.appendChild(buildAccordionItem(textJson, cookieGroupJson));
309    });
310
311    return acc;
312}
313
314function buildAccordionItem(textJson, cookieJson) {
315    var accItem = document.createElement("div");
316    accItem.className = "bemCookieOverlay__accordionItem";
317
318    var accHeader = document.createElement("div");
319    accHeader.className = "bemCookieOverlay__row bemCookieOverlay__row--flexDirRow bemCookieOverlay__row--noGutters";
320
321    var accHeading = document.createElement("div");
322    accHeading.className = "bemCookieOverlay__col--75";
323    var heading = document.createElement("h4");
324    heading.textContent = cookieJson.name;
325    accHeading.appendChild(heading);
326
327    var accSwitch = document.createElement("div");
328    accSwitch.className = "bemCookieOverlay__col--25 bemCookieOverlay__col--textAlignRight";
329    var label = document.createElement("label");
330    label.className = "bemCookieOverlay__switch bemCookieOverlay__switch--outer";
331    label.setAttribute("for", "detail_" + cookieJson.id);
332    label.addEventListener("change", function () { accordionOuterSwitchSync(this); });
333
334    var input = document.createElement("input");
335    input.className = "bemCookieOverlay__switchInput";
336    input.type = "checkbox";
337    input.id = "detail_" + cookieJson.id;
338    input.value = cookieJson.id;
339    input.setAttribute("aria-label", textJson.onoff);
340
341    var slider = document.createElement("div");
342    slider.className = "bemCookieOverlay__switchSlider";
343
344    label.appendChild(input);
345    label.appendChild(slider);
346    accSwitch.appendChild(label);
347
348    var accDescWrapper = document.createElement("div");
349    accDescWrapper.className = "bemCookieOverlay__accordionItemDesc";
350
351    var accDesc = document.createElement("p");
352    accDesc.textContent = cookieJson.description;
353
354    var accShowBody = document.createElement("p");
355    accShowBody.className = "bemCookieOverlay__accordionShowBody";
356    var showBodyLink = document.createElement("a");
357    showBodyLink.className = "bemCookieOverlay__accordionShowBodyLink";
358    showBodyLink.textContent = textJson.show_cookie_information;
359    showBodyLink.addEventListener("click", function () { accordionToogleBody(this); });
360    accShowBody.appendChild(showBodyLink);
361
362    var accHideBody = document.createElement("p");
363    accHideBody.className = "bemCookieOverlay__accordionHideBody";
364    var hideBodyLink = document.createElement("a");
365    hideBodyLink.className = "bemCookieOverlay__accordionHideBodyLink";
366    hideBodyLink.textContent = textJson.hide_cookie_information;
367    hideBodyLink.addEventListener("click", function () { accordionToogleBody(this); });
368    accHideBody.appendChild(hideBodyLink);
369
370    var accBody = document.createElement("div");
371    accBody.className = "bemCookieOverlay__accordionItemBody";
372
373    if (cookieJson.required) {
374        input.checked = true;
375        input.disabled = true;
376    }
377
378    cookieJson.cookies.forEach(function (singleCookieJson) {
379        accBody.appendChild(buildCookieDetailTable(textJson, singleCookieJson, cookieJson.required));
380    });
381
382    accItem.appendChild(accHeader);
383    accHeader.appendChild(accHeading);
384    accHeader.appendChild(accSwitch);
385    accDescWrapper.appendChild(accDesc);
386    accDescWrapper.appendChild(accShowBody);
387    accDescWrapper.appendChild(accHideBody);
388    accItem.appendChild(accDescWrapper);
389    accItem.appendChild(accBody);
390
391    return accItem;
392}
393
394function buildCookieDetailTable(textJson, cookieJson, requiredParent) {
395    var table = document.createElement("table");
396    table.className = "bemCookieOverlay__cookieTable";
397
398    var tbody = document.createElement("tbody");
399
400    var tcaption = document.createElement("caption");
401    tcaption.className = "bemCookieOverlay__cookieTableCaption sr-only";
402    tcaption.textContent = textJson.cookie_detail_table_explanation + " " + cookieJson.name;
403
404    if (!requiredParent) {
405        var trAccept = document.createElement("tr");
406        var thAccept = document.createElement("th");
407        thAccept.scope = "row";
408        thAccept.textContent = textJson.cookie_detail_table_accept;
409        var tdAccept = document.createElement("td");
410
411        var label = document.createElement("label");
412        label.className = "bemCookieOverlay__switch";
413        label.setAttribute("for", "detail_" + cookieJson.id);
414
415        var input = document.createElement("input");
416        input.className = "bemCookieOverlay__switchInput";
417        input.type = "checkbox";
418        input.id = "detail_" + cookieJson.id;
419        input.value = cookieJson.id;
420        input.setAttribute("aria-label", textJson.onoff);
421
422        var slider = document.createElement("div");
423        slider.className = "bemCookieOverlay__switchSlider";
424
425        label.appendChild(input);
426        label.appendChild(slider);
427        tdAccept.appendChild(label);
428        trAccept.appendChild(thAccept);
429        trAccept.appendChild(tdAccept);
430        tbody.appendChild(trAccept);
431    }
432
433    if (cookieJson.name) {
434        var trName = document.createElement("tr");
435        var thName = document.createElement("th");
436        thName.scope = "row";
437        thName.textContent = textJson.cookie_detail_table_name;
438        var tdName = document.createElement("td");
439        tdName.textContent = cookieJson.name;
440        trName.appendChild(thName);
441        trName.appendChild(tdName);
442        tbody.appendChild(trName);
443    }
444
445    if (cookieJson.provider) {
446        var trProvider = document.createElement("tr");
447        var thProvider = document.createElement("th");
448        thProvider.scope = "row";
449        thProvider.textContent = textJson.cookie_detail_table_provider;
450        var tdProvider = document.createElement("td");
451        tdProvider.textContent = cookieJson.provider;
452        trProvider.appendChild(thProvider);
453        trProvider.appendChild(tdProvider);
454        tbody.appendChild(trProvider);
455    }
456
457    if (cookieJson.purpose) {
458        var trPurpose = document.createElement("tr");
459        var thPurpose = document.createElement("th");
460        thPurpose.scope = "row";
461        thPurpose.textContent = textJson.cookie_detail_table_purpose;
462        var tdPurpose = document.createElement("td");
463        tdPurpose.textContent = cookieJson.purpose;
464        trPurpose.appendChild(thPurpose);
465        trPurpose.appendChild(tdPurpose);
466        tbody.appendChild(trPurpose);
467    }
468
469    if (cookieJson.privacy_statement) {
470        var trPrivacyStatement = document.createElement("tr");
471        var thPrivacyStatement = document.createElement("th");
472        thPrivacyStatement.scope = "row";
473        thPrivacyStatement.textContent = textJson.cookie_detail_table_privacy_statement;
474        var tdPrivacyStatement = document.createElement("td");
475        var aPrivacyStatement = document.createElement("a");
476        aPrivacyStatement.href = cookieJson.privacy_statement;
477        aPrivacyStatement.title = textJson.cookie_detail_table_privacy_statement;
478        aPrivacyStatement.target = "_blank";
479        aPrivacyStatement.textContent = cookieJson.privacy_statement;
480        tdPrivacyStatement.appendChild(aPrivacyStatement);
481        trPrivacyStatement.appendChild(thPrivacyStatement);
482        trPrivacyStatement.appendChild(tdPrivacyStatement);
483        tbody.appendChild(trPrivacyStatement);
484    }
485
486    if (cookieJson.cookie_name) {
487        var trCookieName = document.createElement("tr");
488        var thCookieName = document.createElement("th");
489        thCookieName.scope = "row";
490        thCookieName.textContent = textJson.cookie_detail_table_cookie_name;
491        var tdCookieName = document.createElement("td");
492        tdCookieName.textContent = cookieJson.cookie_name;
493        trCookieName.appendChild(thCookieName);
494        trCookieName.appendChild(tdCookieName);
495        tbody.appendChild(trCookieName);
496    }
497
498    if (cookieJson.cookie_lifespan) {
499        var trLifespan = document.createElement("tr");
500        var thLifespan = document.createElement("th");
501        thLifespan.scope = "row";
502        thLifespan.textContent = textJson.cookie_detail_table_cookie_lifespan;
503        var tdLifespan = document.createElement("td");
504        tdLifespan.textContent = cookieJson.cookie_lifespan;
505        trLifespan.appendChild(thLifespan);
506        trLifespan.appendChild(tdLifespan);
507        tbody.appendChild(trLifespan);
508    }
509
510    table.appendChild(tcaption);
511    table.appendChild(tbody);
512
513    return table;
514}
515
516// Funktionale Funktionen
517function switchCookieBoxView() {
518    var cookieBoxOuterWrapper = document.querySelector(".bemCookieOverlay__boxOuterWrapper");
519    var cookieBoxInnerWrapper = document.querySelector(".bemCookieOverlay__boxInnerWrapper");
520    var cookieBoxContainer = document.querySelector(".bemCookieOverlay__cookieBox > .bemCookieOverlay__container");
521    var cookiePreferenceContainer = document.querySelector(".bemCookieOverlay__cookiePreference > .bemCookieOverlay__container");
522
523    var isCookieBoxVisible = cookieBoxContainer.classList.contains("bemCookieOverlay__container--visible");
524    var isCookiePreferenceVisible = cookiePreferenceContainer.classList.contains("bemCookieOverlay__container--visible");
525
526    var cookieBoxOuterWrapperSettings = {
527        width: '90vw',
528        maxWidth: (isCookieBoxVisible && !isCookiePreferenceVisible) ? '768px' : '400px',
529        turnedMaxWidth: (isCookieBoxVisible && !isCookiePreferenceVisible) ? '400px' : '768px'
530    };
531
532    cookieBoxOuterWrapper.style.maxWidth = cookieBoxOuterWrapperSettings.maxWidth;
533    cookieBoxOuterWrapper.style.width = "100%";
534
535    var cookieBoxContainerSettings = {
536        height: (isCookieBoxVisible) ? 0 : cookieBoxContainer.scrollHeight,
537        opacity: (isCookieBoxVisible) ? 0 : 1
538    };
539
540    var cookiePreferenceContainerSettings = {
541        height: (isCookiePreferenceVisible) ? 0 : cookiePreferenceContainer.scrollHeight,
542        opacity: (isCookiePreferenceVisible) ? 0 : 1
543    };
544
545    cookieBoxOuterWrapper.style.maxWidth = cookieBoxOuterWrapperSettings.turnedMaxWidth;
546    cookieBoxOuterWrapper.style.width = cookieBoxOuterWrapperSettings.width;
547
548
549    if (isCookieBoxVisible) {
550        cookieBoxContainer.style.height = cookieBoxContainerSettings.height + "px";
551        cookieBoxContainer.style.opacity = cookieBoxContainerSettings.opacity;
552        setTimeout(function () {
553            cookieBoxContainer.classList.add("bemCookieOverlay__container--invisible");
554            cookieBoxContainer.classList.remove("bemCookieOverlay__container--visible");
555            cookieBoxOuterWrapper.style.width = cookieBoxOuterWrapperSettings.width;
556            cookieBoxOuterWrapper.style.maxWidth = cookieBoxOuterWrapperSettings.maxWidth;
557            setTimeout(function () {
558                cookiePreferenceContainer.style.height = cookiePreferenceContainerSettings.height + "px";
559                cookiePreferenceContainer.style.opacity = cookiePreferenceContainerSettings.opacity;
560                setTimeout(function () {
561                    cookiePreferenceContainer.classList.remove("bemCookieOverlay__container--invisible");
562                    cookiePreferenceContainer.classList.add("bemCookieOverlay__container--visible");
563                    cookiePreferenceContainer.style.height = "";
564
565                    setTabIndexForView(cookiePreferenceContainer);
566                    setNegativeTabIndexForView(cookieBoxContainer);
567                }, 0);
568            }, 0);
569        }, 0);
570    } else if (isCookiePreferenceVisible) {
571        cookiePreferenceContainer.style.height = cookiePreferenceContainerSettings.height + "px";
572        cookiePreferenceContainer.style.opacity = cookiePreferenceContainerSettings.opacity;
573        setTimeout(function () {
574            cookiePreferenceContainer.classList.add("bemCookieOverlay__container--invisible");
575            cookiePreferenceContainer.classList.remove("bemCookieOverlay__container--visible");
576            cookieBoxOuterWrapper.style.width = cookieBoxOuterWrapperSettings.width;
577            cookieBoxOuterWrapper.style.maxWidth = cookieBoxOuterWrapperSettings.maxWidth;
578            setTimeout(function () {
579                cookieBoxContainer.style.height = cookieBoxContainerSettings.height + "px";
580                cookieBoxContainer.style.opacity = cookieBoxContainerSettings.opacity;
581                setTimeout(function () {
582                    cookieBoxContainer.classList.remove("bemCookieOverlay__container--invisible");
583                    cookieBoxContainer.classList.add("bemCookieOverlay__container--visible");
584                    cookieBoxContainer.style.height = "";
585
586                    setTabIndexForView(cookieBoxContainer);
587                    setNegativeTabIndexForView(cookiePreferenceContainer);
588                }, 0);
589            }, 0);
590        }, 0);
591    } else {
592        console.error("GEM2GO WEB: Cookie-OptIn Error!");
593    }
594}
595
596function accordionToogleBody(trigger) {
597    var accItem = trigger.closest(".bemCookieOverlay__accordionItem");
598    var showBody = accItem.querySelector(".bemCookieOverlay__accordionShowBody");
599    var hideBody = accItem.querySelector(".bemCookieOverlay__accordionHideBody");
600    var body = accItem.querySelector(".bemCookieOverlay__accordionItemBody");
601
602    if (trigger.classList.contains("bemCookieOverlay__accordionShowBodyLink")) {
603        showBody.style.display = "none";
604        hideBody.style.display = "block";
605        body.style.display = "block";
606    } else if (trigger.classList.contains("bemCookieOverlay__accordionHideBodyLink")) {
607        hideBody.style.display = "none";
608        showBody.style.display = "block";
609        body.style.display = "none";
610    }
611}
612
613function accordionOuterSwitchSync(trigger) {
614    var thisAccItemBody = trigger.closest(".bemCookieOverlay__accordionItem").querySelector(".bemCookieOverlay__accordionItemBody");
615
616    if (trigger.querySelector(".bemCookieOverlay__switchInput").checked) {
617        thisAccItemBody.querySelectorAll(".bemCookieOverlay__switchInput").forEach(function (input) {
618            input.checked = true;
619        });
620    } else {
621        thisAccItemBody.querySelectorAll(".bemCookieOverlay__switchInput").forEach(function (input) {
622            input.checked = false;
623        });
624    }
625}
626
627function saveCookieSettings(trigger, acceptAll) {
628    function saveCheckedCookiesInLocalStorage(checkedCookies) {
629        localStorage.setItem('checkedCookies', JSON.stringify(checkedCookies));
630    }
631
632    function getCheckedCookiesFromLocalStorage() {
633        return JSON.parse(localStorage.getItem('checkedCookies') || '[]');
634    }
635
636    var cookie_settings = {
637        name: optInCookieName,
638        path: "/"
639    };
640
641    var checkedCookies = getCheckedCookiesFromLocalStorage();
642
643    if (!checkedCookies.length) {
644        if (acceptAll) {
645            checkedCookies.push(cookieStringForAllAccepted);
646        } else {
647            if (trigger.closest(".bemCookieOverlay__cookiePreference")) {
648                var outerSwitches = trigger.closest(".bemCookieOverlay__cookiePreference").querySelectorAll(".bemCookieOverlay__switch--outer");
649                outerSwitches.forEach(function (outerSwitch) {
650                    var switchInput = outerSwitch.querySelector(".bemCookieOverlay__switchInput");
651                    if (switchInput.checked) {
652                        checkedCookies.push(switchInput.value);
653                    } else {
654                        var innerSwitches = outerSwitch.closest(".bemCookieOverlay__accordionItem").querySelectorAll(".bemCookieOverlay__accordionItemBody .bemCookieOverlay__switch");
655                        innerSwitches.forEach(function (innerSwitch) {
656                            var innerSwitchInput = innerSwitch.querySelector(".bemCookieOverlay__switchInput");
657                            if (innerSwitchInput.checked) {
658                                checkedCookies.push(innerSwitchInput.value);
659                            }
660                        });
661                    }
662                });
663            } else if (trigger.closest(".bemCookieOverlay__cookieBox")) {
664                var groupCheckboxes = trigger.closest(".bemCookieOverlay__cookieBox").querySelectorAll(".bemCookieOverlay__cookieSelectionItem .bemCookieOverlay__cookieSelectionItemCheckboxInput");
665                groupCheckboxes.forEach(function (checkbox) {
666                    if (checkbox.checked) {
667                        checkedCookies.push(checkbox.value);
668                    }
669                });
670            }
671        }
672    }
673
674    if (isRunningInIframe()) {
675        saveCheckedCookiesInLocalStorage(checkedCookies);
676        var extra = document.location.protocol == "https:" ? " samesite=none; secure=true" : "";
677        document.cookie = cookie_settings.name + "=s" + checkedCookies.toString().replace(/,/g, '|') + "; path=" + cookie_settings.path + ";" + extra;
678        location.reload();
679    } else {
680        var extra = document.location.protocol == "https:" ? " samesite=none; secure=true" : "";
681        document.cookie = cookie_settings.name + "=s" + checkedCookies.toString().replace(/,/g, '|') + "; path=" + cookie_settings.path + ";" + extra;
682        location.reload();
683    }
684}
685
686function initAccessibilityImprovements(boxView, prefView) {
687    setTabIndexForView(boxView, true);
688    setNegativeTabIndexForView(prefView);
689
690    // Focus funktioniert sonst nach Enter nicht mehr
691    document.querySelectorAll(".bemCookieOverlay input").forEach(function (input) {
692        input.addEventListener("focus", function () {
693            document.querySelector("label[for='" + this.id + "']").classList.add("bemCookieOverlay_labelFocus");
694        });
695        input.addEventListener("blur", function () {
696            document.querySelector("label").classList.remove("bemCookieOverlay_labelFocus");
697        });
698    });
699
700    // Bei Enter auf Link wird das Click-Event gefeuert
701    document.querySelectorAll('.bemCookieOverlay a').forEach(function (link) {
702        link.addEventListener("keypress", function (e) {
703            if (e.key === "Enter") {
704                this.click();
705                e.preventDefault();
706            }
707        });
708    });
709
710    // Bei Enter auf Label wird Click-Event gefeuert
711    document.querySelectorAll('.bemCookieOverlay input').forEach(function (input) {
712        input.addEventListener("keypress", function (e) {
713            if (e.key === "Enter") {
714                this.click();
715                e.preventDefault();
716            }
717        });
718    });
719}
720
721function setTabIndexForView(container, initialShow = false) {
722    var tabIndexCounter = 0;
723    container.querySelectorAll("input:not(:disabled), a").forEach(function (element) {
724        element.setAttribute("tabindex", tabIndexCounter);
725    });
726
727    var refuseDetailViewLink = container.querySelector("a.bemCookieOverlay__refuseDetailViewLink");
728    var cookieManageLink = container.querySelector("a.bemCookieOverlay__cookieManageLink");
729    var firstFocusableElement = container.querySelector("input:not(:disabled), a");
730
731    if (refuseDetailViewLink) {
732        refuseDetailViewLink.focus();
733    } else if (cookieManageLink && !initialShow) {
734        cookieManageLink.focus();
735    } else if (firstFocusableElement) {
736        firstFocusableElement.focus();
737    }
738}
739
740function setNegativeTabIndexForView(container) {
741    container.querySelectorAll("input:not(:disabled), a").forEach(function (element) {
742        element.setAttribute("tabindex", -1);
743    });
744}
745
746function initCookieSettings(boxView, prefView, settingsCookieName) {
747    if (doesCookieExist(settingsCookieName)) {
748        var cookieSettings = readCookie(settingsCookieName);
749
750        if (cookieSettings == cookieStringForAllAccepted) {
751            document.querySelectorAll("input[type=checkbox]").forEach(function (checkbox) {
752                checkbox.checked = true;
753            });
754        } else {
755            var cookieSettingsArray = cookieSettings.split("|");
756            cookieSettingsArray.forEach(function (cookieId) {
757                var input = document.querySelectorAll("input[value='" + cookieId + "']");
758                input.forEach(function (input) {
759                    input.checked = true;
760                    if (input.closest(".bemCookieOverlay__switch--outer") != null)
761                        accordionOuterSwitchSync(input.closest(".bemCookieOverlay__switch--outer"));
762                });
763            });
764        }
765    }
766}
767
768function readCookie(name) {
769    var nameEQ = name + "=";
770    var ca = document.cookie.split(';');
771    for (var i = 0; i < ca.length; i++) {
772        var c = ca[i];
773        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
774        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
775    }
776    return null;
777}
778
779function doesCookieExist(name) {
780    return (document.cookie.indexOf(name) == -1) ? false : true;
781}

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.