PageSourceSearch

https://www.landessportbund-hessen.de/typo3temp/assets/compressed/…49a2077a15844a7d7ce74da68f5d3.js?1777556396

js landessportbund-hessen.de collected 2026-09-24 09:31:36 UTC 22,515 bytes, 586 lines download raw bytes

1/*!
2 * gdpr-cookie - A jQuery plugin to manage cookie settings in compliance with EU law
3 *
4 * Copyright (c) 2018 Martijn Saly
5 *
6 * Licensed under the MIT license:
7 *   http://www.opensource.org/licenses/mit-license.php
8 *
9 * Version: 0.2.3 - Anpassung NW
10 *    Änderung in 0.2.1: Neue Variablen requireUserInput und showAdvancedOnDefault, CSS berücksichtigt 2 und 3 Kategorien 
11 *	  Änderung in 0.2.2: Möglichkeit, einen dritten Button für notwendige Cookies per showEssentialBtn zu erlauben. Änderung Label des Akzeptieren-Buttons im erweiterten Modus
12 *    Änderung in 0.2.3: Anpassung jQuery CSS Klassendefinitionen, auf neuere Syntax
13 *
14 * Original:
15 * https://www.jqueryscript.net/other/GDPR-Cookie-Compliance-Plugin.html
16 * https://libraries.io/npm/gdpr-cookie/0.3.0
17 */
18;(function(root, factory) {
19    if (typeof define === "function" && define.amd) {
20        // AMD
21        define([ "jquery" ], factory);
22    }
23    else if (typeof module === "object" && module.exports) {
24        // CommonJS
25        module.exports = function( root, jQuery ) {
26            if (jQuery === undefined) {
27                if (typeof window !== "undefined") {
28                    jQuery = require("jquery");
29                }
30                else {
31                    jQuery = require("jquery")(root);
32                }
33            }
34            factory(jQuery);
35            return jQuery;
36        };
37    }
38    else {
39        // Plain
40        factory(root.jQuery);
41    }
42}(this, function($) {
43    "use strict";
44
45    var settings, showing = false, display, isAdvanced = false, seenAdvanced = false;
46
47    var setCookie = function(name, value, expires) {
48        var d = new Date();
49        d.setTime(d.getTime() + expires * 24 * 60 * 60 * 1000);
50        document.cookie = name + "=" + value + ";expires=" + d.toUTCString() + ";path=/";
51        return getCookie(name);
52    };
53
54    var getCookie = function(name) {
55        var ca = decodeURIComponent(document.cookie).split(";");
56        name += "=";
57        for (var i = 0; i < ca.length; i++) {
58            var c = ca[i];
59            while (c.charAt(0) == " ") {
60                c = c.substring(1);
61            }
62            if (c.indexOf(name) === 0) {
63                return c.substring(name.length, c.length);
64            }
65        }
66    };
67
68    var validateCookieName = function(name) {
69        // Cookie name may consist of \u0021-\u007e, excluding whitespace and characters , ; =
70        return name.replace(/[^\u0021-\u007e]|[,;=\s]/g, "");
71    };
72
73    var getPreferences = function() {
74        var preferences = getCookie(settings.cookieName);
75        try {
76            preferences = JSON.parse(preferences);
77        }
78        catch(ex) {
79            return;
80        }
81
82        if (!Array.isArray(preferences) || !preferences.length) {
83            return;
84        }
85
86        var knownTypes = settings.cookieTypes.map(function(type) {
87            return type.value;
88        });
89        preferences = preferences.filter(function(pref) {
90            return knownTypes.indexOf(pref) >= 0;
91        });
92
93        return preferences;
94    };
95
96    $.gdprcookie = { };
97
98    $.gdprcookie.init = function(options) {
99
100        // Define defaults
101        var defaultSettings = {
102            cookieTypes: [
103                {
104                    type: "Essential",
105                    value: "essential",
106                    description: "These are cookies that are essential for the website to work correctly.",
107                    checked: true,
108                },
109                {
110                    type: "Site Preferences",
111                    value: "preferences",
112                    description: "These are cookies that are related to your site preferences, e.g. remembering your username, site colours, etc.",
113                    checked: true,
114                },
115                {
116                    type: "Analytics",
117                    value: "analytics",
118                    description: "Cookies related to site visits, browser types, etc.",
119                    checked: true,
120                },
121                {
122                    type: "Marketing",
123                    value: "marketing",
124                    description: "Cookies related to marketing, e.g. newsletters, social media, etc",
125                    checked: true,
126                }
127            ],
128            title: "Cookies & privacy",
129            subtitle: "Select cookies to accept",
130            message: "Cookies enable you to use shopping carts and to personalize your experience on our sites, tell us which parts of our websites people have visited, help us measure the effectiveness of ads and web searches, and give us insights into user behaviour so we can improve our communications and products.",
131            submessage: "",
132            delay: 2000,
133            expires: 30,
134            cookieName: "cookieControlPrefs",
135            acceptReload: false,
136            acceptBeforeAdvanced: [ "essential" ],
137            acceptAfterAdvanced: [ "essential" ],
138			requireUserInput: false,
139			showAdvancedOnDefault: false,
140            showEssentialBtn: false,
141			allowUnadvanced: false,
142            switchAdvanced: false,
143            acceptBtnLabel: "Accept cookies",
144			essentialBtnLabel: "Accept essential cookies",
145            advancedBtnLabel: "Customize cookies",
146			confirmBtnLabel: "Confirm selection",
147            unadvancedBtnLabel: "Back",
148            customShowMessage: undefined,
149            customHideMessage: undefined,
150            customShowChecks: undefined,
151            customHideChecks: undefined
152        };
153
154        // Set defaults
155        settings = $.extend(defaultSettings, window.GdprCookieSettings, options);
156
157        // Coerce into a string because this is poured into innerHTML
158        settings.message = String(settings.message);
159
160        // Coerce into a positive number because it is passed to setTimeout
161        settings.delay = Math.max(0, +settings.delay) || 0;
162
163        // Coerce into a positive whole number between 0 and 730 (2-ish years), to ensure a well-formed cookie value
164        settings.expires = Math.round(Math.min(Math.max(0, +settings.expires), 730)) || 0;
165
166        // Coerce cookieTypes into an array containing plain objects
167        if (Array.isArray(settings.cookieTypes)) {
168            settings.cookieTypes = settings.cookieTypes.filter(function(cookieType) {
169                return $.isPlainObject(cookieType);
170            });
171            if (!settings.cookieTypes.length) {
172                settings.cookieTypes = defaultSettings.cookieTypes;
173            }
174        }
175        else {
176            settings.cookieTypes = defaultSettings.cookieTypes;
177        }
178
179        // Coerce into a string and valid cookie name
180        settings.cookieName = validateCookieName(String(settings.cookieName || "")) || "cookieControlPrefs";
181
182        // Coerce acceptBeforeAdvanced and acceptAfterAdvanced into arrays of str
182ings, that exist in settings.cookieTypes[].value
183        var coerce = (function() {
184            var values = settings.cookieTypes.map(function(cookieType) { return cookieType.value; }),
185                exists = function(item) { return values.indexOf(item) >= 0; };
186
187            return function(setting) {
188                // Convert a single string into an array of 1
189                setting = typeof setting === "string" ? [ setting ] : setting;
190
191                // If it's an array, make sure it only contains known cookie types
192                return Array.isArray(setting) ? setting.map(String).filter(exists) : undefined;
193            };
194        }());
195        settings.acceptBeforeAdvanced = coerce(settings.acceptBeforeAdvanced);
196        settings.acceptAfterAdvanced = coerce(settings.acceptAfterAdvanced);
197
198        $(function() { display(); });
199    };
200
201    display = function(alwaysShow) {
202        if (showing) {
203            return;
204        }
205
206        var body = $("body"),
207            myCookiePrefs = getPreferences();
208
209        if(!alwaysShow && myCookiePrefs) {
210            console.log("gdpr:accepted");
211            body.trigger("gdpr:accept");
212            return;
213        }
214
215        var elements = {
216            container: undefined,
217            introContainer: undefined,
218            types: undefined,
219            typesContainer: undefined,
220            buttons: {
221                accept: undefined,
222                advanced: undefined
223            },
224            allChecks: [ ],
225            nonessentialChecks: [ ]
226        };
227
228        var hide = function(canreload) {
229            if (elements.container) {
230                if ($.isFunction(settings.customHideMessage)) {
231                    settings.customHideMessage.call(elements.container, elements.container);
232                    showing = false;
233                }
234                else {
235                    elements.container.fadeOut("fast", function() {
236                        $(this).remove();
237                        showing = false;
238                    });
239					if(settings.requireUserInput) {
240						$(".gdprcookie-mask").fadeOut("fast");
241					}
242                }
243            }
244            if (canreload && settings.acceptReload) {
245                document.location.reload();
246            }
247        };
248
249        if (!Array.isArray(myCookiePrefs) || !myCookiePrefs.length) {
250            myCookiePrefs = undefined;
251        }
252
253        if (alwaysShow || !myCookiePrefs) {
254            elements.types = $("<ul/>").append(
255                $.map(settings.cookieTypes, function(field, index) {
256                    if (!field.type || !field.value) {
257                        return;
258                    }
259                    var isEssential = field.value === "essential",
260                        isChecked;
261
262                    if (Array.isArray(myCookiePrefs)) {
263                        isChecked = myCookiePrefs.indexOf(field.value) >= 0;
264                    }
265                    else {
266                        isChecked = field.checked === true;
267                    }
268
269                    var input = $("<input/>", {
270                        type: "checkbox",
271                        id: "gdpr-cookietype-" + index,
272                        name: "gdpr[]",
273                        value: field.value,
274
275                        // The essential cookies checkbox is checked and cannot be unchecked
276                        checked: isEssential || isChecked,
277                        disabled: isEssential
278                    });
279
280                    elements.allChecks.push(input.get(0));
281                    if (!isEssential) {
282                        elements.nonessentialChecks.push(input.get(0));
283                    }
284
285                    var label = $("<label/>", {
286                        "for": "gdpr-cookietype-" + index,
287                        text: field.type,
288                        title: field.description
289                    });
290
291                    return $("<li/>").append([
292                        input.get(0),
293                        label.get(0),
294                        "<br>",
295                        field.description
296                    ]).get(0);
297                })
298            );
299            elements.allChecks = $(elements.allChecks);
300            elements.nonessentialChecks = $(elements.nonessentialChecks);
301
302            // When accept button is clicked drop cookie
303            var acceptClick = function() {
304                var prefsFromCheckboxes = function() {
305                    return elements.allChecks
306                        .filter(function() { return this.checked || this.disabled; })
307                        .map(function() { return this.value; })
308                        .get();
309                };
310                var prefsOutsideAdvanced = function(where) {
311                    var setting = "accept" + where + "Advanced";
312                    return Array.isArray(settings[setting]) ? settings[setting] : prefsFromCheckboxes();
313                };
314
315                // Hide the cookie message
316                hide(true);
317
318                // Save user cookie preferences (in a cookie!)
319                var prefs = isAdvanced ? prefsFromCheckboxes() : prefsOutsideAdvanced(seenAdvanced ? "After" : "Before");
320                setCookie(settings.cookieName, JSON.stringify(prefs), settings.expires);
321
322                // Trigger cookie accept event
323                body.trigger("gdpr:accept");
324            };
325
326            // Toggle advanced cookie options
327            var advancedClick = function() {
328                var showAdvanced = function() {
329                    if (!settings.allowUnadvanced) {
330                        elements.buttons.advanced.prop("disabled", true);
331                    }
332
333                    if ($.isFunction(settings.customShowChecks)) {
334                        settings.customShowChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
335                    }
336                    else {
337                        if (settings.switchAdvanced) {
338                            elements.introContainer.slideUp("fast");
339                        }
340                        elements.typesContainer.slideDown("fast");
341                    }
342
343                    isAdvanced = seenAdvanced = true;
344                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {
345                        elements.buttons.advanced.text(settings.unadvancedBtnLabel);
346						elements.buttons.accept.text(settings.confirmBtnLabel);
347						elements.buttons.essential ? elements.buttons.essential.hide() : undefined;
348                    }
349
350                    // Trigger advanced show event
351                    body.trigger("gdpr:advanced");
352                };
353                var hideAdvanced = function() {
354                    if ($.isFunction(settings.customHideChecks)) {
355                        settings.customHideChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
356                    }
357                    else {
358                        if (settings.switchAdvanced) {
359                            elements.introContainer.slideDown("fast");
360                        }
361                        elements.typesContainer.slideUp("fast");
362                    }
363
364                    isAdvanced = false;
365                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {
366                        elements.buttons.advanced.text(settings.advancedBtnLabel);
367						elements.buttons.accept.text(settings.acceptBtnLabel);
368						elements.buttons.essential ? elements.buttons.essential.show() : undefined;
369                    }
370
371                    // Trigger advanced show event
372                    body.trigger("gdpr:unadvanced");
373                };
374
375                if (isAdvanced) {
376                    if (settings.allowUnadvanced) {
377                        hideAdvanced();
378                    }
379                }
380                else {
381                    showAdvanced();
382                }
383            };
384			
385			// Save settings when advanced settings are visible on default
386			var saveSettingsClick = function() {
387				isAdvanced = seenAdvanced = true;
388				acceptClick();
389			};
390			
391            // Build cookie message to display later on
392			var cookieMessage;
393			if (settings.showAdvancedOnDefault) {
394				cookieMessage = (elements.container = $("<div class=gdprcookie "+(settings.showEssentialBtn?'wide':'')+"' data-options="+settings.cookieTypes.length+">")).append([
395					(elements.introContainer = $("<div class=gdprcookie-intro>")).append([
396						settings.title ? $("<h1/>", { text: settings.title }).get(0) : undefined,
397						settings.message ? $("<p/>", { html: settings.message }).get(0) : undefined
398					]).get(0),
399					(elements.typesContainer = $("<div class=gdprcookie-types>")).append([
400						settings.submessage ? $("<p/>", { html: settings.submessage }).get(0) : undefined,
401						elements.types.get(0)
402					]).get(0)
403				]);
404			}
405			else {
406				cookieMessage = (elements.container = $("<div class='gdprcookie "+(settings.showEssentialBtn?'wide':'')+"' data-options="+settings.cookieTypes.length+">")).append([
407					(elements.introContainer = $("<div class=gdprcookie-intro>")).append([
408						settings.title ? $("<h1/>", { text: settings.title }).get(0) : undefined,
409						settings.message ? $("<p/>", { html: settings.message }).get(0) : undefined
410					]).get(0),
411					(elements.typesContainer = $("<div class=gdprcookie-types>")).hide().append([
412						settings.subtitle ? $("<h2/>", { text: settings.subtitle }).get(0) : undefined,
413						settings.submessage ? $("<p/>", { html: settings.submessage }).get(0) : undefined,
414						elements.types.get(0)
415					]).get(0)
416				]);
417			}
418			
419			// Add Buttons
420			var cookieButtons;
421			if (settings.showEssentialBtn) {
422				cookieButtons = $("<div class=gdprcookie-buttons>").append([
423					(elements.buttons.accept = $("<button>", { type: "button", class: "highlight", text: settings.acceptBtnLabel, click: acceptClick })).get(0),
424					(elements.buttons.advanced = $("<button/>", { type: "button", text: settings.advancedBtnLabel, click: advancedClick })).get(0),
425					(elements.buttons.essential = $("<button/>", { type: "button", text: settings.essentialBtnLabel, click: saveSettingsClick })).get(0)
426				]);
427			}
428			else {
429				cookieButtons = $("<div class=gdprcookie-buttons>").append([
430					(elements.buttons.accept = $("<button>", { type: "button", class: "highlight", text: settings.acceptBtnLabel, click: acceptClick })).get(0),
431					(elements.buttons.advanced = $("<button/>", { type: "button", text: settings.advancedBtnLabel, click: advancedClick })).get(0)
432				]);
433			}
434			cookieMessage = (elements.container.append(cookieButtons));
435			
436            var show = function() {
437				if(settings.requireUserInput) {
438					body.append(cookieMessage,$("<div class=gdprcookie-mask>"));
439				}
440				else {
441					body.append(cookieMessage);
442				}
443                showing = true;
444                isAdvanced = seenAdvanced = false;
445                if ($.isFunction(settings.customShowMessage)) {
446                    settings.customShowMessage.call(elements.container, elements.container);
447                }
448                else {
449                    elements.container.hide().fadeIn("slow");
450					if(settings.requireUserInput) {
451						$(".gdprcookie-mask").hide().fadeIn("slow");
452					}
453                }
454
455                // Trigger container show event
456                body.trigger("gdpr:show");
457            };
458
459            if (!settings.delay || alwaysShow) {
460                show();
461            }
462            else {
463                window.setTimeout(show, settings.delay);
464            }
465        }
466        else {
467            hide(false);
468        }
469    };
470
471    $.gdprcookie.display = function() {
472        display(true);
473    };
474
475    // Method to check if user cookie preference exists
476    $.gdprcookie.preference = function(value) {
477        var preferences = getPreferences();
478
479        if (value === "essential") {
480            return true;
481        }
482        else if (!preferences) {
483            return false;
484        }
485        else if (value !== undefined) {
486            return preferences.indexOf(value) >= 0;
487        }
488        return preferences;
489    };
490
491    $.gdprcookie.asyncLoad = function(u, t, c) {
492        var d = document,
493            o = d.createElement(t),
494            s = d.getElementsByTagName(t)[0];
495
496        switch (t){
497            case 'script':
498                o.src = u;
499                o.defer = 1;
500                break;
501            case 'link':
502                o.rel = 'stylesheet';
503                o.type = 'text/css';
504                o.href = u;
505                break;
506        }
507        if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
508        s.parentNode.insertBefore(o, s);
509    };
510
511    /** Async Load Helper for JS **/
512    $.gdprcookie.asyncJS = function(u, c) {
513        this.asyncLoad(u, 'script', c);
514    };
515
516    /** Async Load Helper for CSS **/
517    $.gdprcookie.asyncCSS = function(u) {
518        this.asyncLoad(u, 'link');
519    };
520
521    $.gdprcookie.loadcookies = function() {
522        /** Get all Scripts to load **/
523        var elements = [];
524        if (typeof document.querySelectorAll == 'undefined') {
525            elements = document.querySelectorAll('script[data-cookiecontrol]');
526        } else {
527            var temp = document.getElementsByTagName('script');
528            for (var key in temp) {
529                var element = temp[key];
530                if (typeof element.getAttribute != 'undefined' && element.getAttribute('data-cookiecontrol')) {
531                    elements.push(element);
532                }
533            }
534            temp = null;
535        }
536        if (elements.length > 0) {
537            /** Loop through elements and run Code **/
538            for (var key in elements) {
539                /** get HTML of Elements **/
540                var code = elements[key].innerHTML;
541                /** trim Elements **/
542                if (code && code.length) code = code.trim();
543                /** Chekbox Access check **/
544                var group = elements[key].dataset.cookiecontrol;
545                if (group != 'required') {
546                    if ($.gdprcookie.preference(group) !== true) {
547                        // abort script
548                        continue;
549                    }
550                }
551                /** run Code it something in in it **/
552                if (code && code.length) {
553                    /** if Is Code Eval Code **/
554                    eval.call(this, code);
555                } else {
556                    /** If is SRC load that **/
557                    var element = elements[key];
558                    /**
559                     * Load SRC
560                     * Dont use this src="", becouse some Browser will ignore the type=text/plain
561                     * prefer use data-src=""
562                     */
563                    if (element.getAttribute('data-src')) {
564                        this.asyncJS(element.getAttribute('data-src'));
565                    } else if (element.src) {
566                        this.asyncJS(element.src);
567                    }
568                }
569            }
570        }
571    };
572
573    // Protection against malicious scripts, e.g. monkey patching
574    $.gdprcookie = Object.freeze($.gdprcookie);
575
576}));
577
578$(document).ready(function() {
579
580    $(document.body)
581        .on("gdpr:accept", function() {
582            var preferences = $.gdprcookie.preference();
583            console.log("Preferences saved:", preferences);
584            $.gdprcookie.loadcookies();
585        })
586});

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.