PageSourceSearch

https://www.voedselbankkrommerijn.nl/a/module/mod_cookie_control/s…=c5f8e638c96c413ada1e8c223674fc5c8ca45dfe

js voedselbankkrommerijn.nl collected 2026-09-29 03:32:42 UTC 7,187 bytes, 193 lines download raw bytes

1!(function (global) {
2    'use strict';
3
4    if (!('document' in global)) {
5        return;
6    }
7
8    var doc = global.document;
9    var dependencies = ['domReady'];
10
11    if (!doc.querySelectorAll || !doc.querySelector) {
12        dependencies.push('droplet/QuerySelectorAllPolyfill/QuerySelectorAllPolyfill');
13    }
14
15    if ((!window.addEventListener || !window.removeEventListener) && window.attachEvent && window.detachEvent) {
16        dependencies.push('droplet/EventListenerPolyfill/EventListenerPolyfill');
17    }
18
19    if (!('classList' in document.createElement('p'))) {
20        dependencies.push('vendor/classlist/classList.min');
21    }
22
23    if (!('indexOf' in Array.prototype)) {
24        dependencies.push('droplet/IndexOfPolyfill/IndexOfPolyfill');
25    }
26
27    require(dependencies, function (domReady) {
28        var CookieControl = {};
29
30        CookieControl.cookieBar = (function () {
31            var classes = {
32                cookieBar: 'scms-cc-cookie-bar',
33                cookieSettingsContainer: 'cb-cookie-settings',
34                cookieBarOpen: 'cb-open',
35                cookieBarOpenBody: 'cookiebar-is-open',
36                jsEnabled: 'cb-js',
37                settingsButton: 'cd-settings-button',
38                cookiesEnabled: 'cb-cookies-enabled',
39                cookiesAlwaysOn: 'cb-cookies-always-on',
40                onOffSwitch: 'cb-onoffswitch',
41                onOffSwitchWrapper: 'cb-onoffswitch-wrapper',
42                onOffSwitchInner: 'cb-onoffswitch-inner',
43                onOffSwitchInactive: 'cb-onoffswitch-inactive',
44                onOffSwitchActive: 'cb-onoffswitch-active',
45                onOffSwitchHandle: 'cb-onoffswitch-switch'
46            };
47            var elements = {};
48
49            function init () {
50                // First, initialize
51                elements.cookieBar = document.getElementById(classes.cookieBar);
52                elements.settingsButton = document.getElementById(classes.settingsButton);
53                elements.settingsListItems = document.querySelectorAll('.' + classes.cookieSettingsContainer + ' li');
54
55                if (!('indexOf' in elements.settingsListItems)) {
56                    var arr = [];
57                    var i;
58                    for(i = 0; i < elements.settingsListItems.length; ++i) {
59                        arr.push(elements.settingsListItems[i]);
60                    }
61                    elements.settingsListItems = arr;
62                }
63
64                elements.cookieBar.classList.add(classes.jsEnabled);
65
66                // Set observers
67                elements.cookieBar.addEventListener('click', onCookieBarClick);
68
69                // Yay, let's add some sugar!
70                buildOnOffSwitches();
71            }
72
73            function onCookieBarClick (event) {
74                var element = event.srcElement || event.target;
75                var elementTag = element.tagName.toUpperCase();
76
77                // Open cookie panel
78                if (element === elements.settingsButton) {
79                    elements.cookieBar.classList.toggle(classes.cookieBarOpen);
80                    document.body.classList.toggle(classes.cookieBarOpenBody);
81                    return;
82                }
83
84                if (elementTag === 'BUTTON' && element.dataset.target) {
85                    document.location.href = element.dataset.target.replace(/^#+/, '');
86                    return;
87                }
88
89                // Toggle on/off-switch when clicking in checkbox
90                var listElem = elementTag === 'LI' ? element : findParent(element, 'li');
91
92                if (elementTag === 'INPUT') {
93                    toggleOnOffSwitch(element, listElem);
94                    return;
95                }
96
97                var testElem = element;
98
99                while (testElem && testElem !== listElem && testElem !== doc) {
100                    if (testElem && testElem.tagName.match(/^label|input$/i)) {
101                        return;
102                    }
103
104                    testElem = testElem.parentNode;
105                }
106
107                // Toggle checkbox and on/off switch when clicking on LI or descendants
108                if (listElem && listElem.classList.contains(classe
108s.cookiesAlwaysOn) ||
109                    elements.settingsListItems.indexOf(listElem) === -1
110                ) {
111                    return;
112                }
113
114                var inputElem = listElem.querySelector('input');
115                inputElem.checked = !inputElem.checked;
116                toggleOnOffSwitch(inputElem, listElem);
117            }
118
119            function toggleOnOffSwitch (inputElem, listElem) {
120                var checked = inputElem.checked;
121
122                if (checked === true) {
123                    listElem.classList.add(classes.cookiesEnabled);
124                } else {
125                    listElem.classList.remove(classes.cookiesEnabled);
126                }
127            }
128
129            function buildOnOffSwitches () {
130                var count = elements.settingsListItems.length,
131                    i;
132
133                for (i = 0; i < count; i++) {
134                    var listItem = elements.settingsListItems[i],
135                        inputOn = listItem.querySelector('input').checked,
136                        parentClass = (inputOn) ? classes.cookiesEnabled : false;
137
138                    if (parentClass) {
139                        listItem.classList.add(parentClass);
140                    }
141
142                    // Create elements
143                    var div1 = doc.createElement('div');
144                    div1.className = classes.onOffSwitch;
145
146                    var div2 = doc.createElement('div');
147                    div2.className = classes.onOffSwitchWrapper;
148
149                    var span1 = doc.createElement('span');
150                    span1.className = classes.onOffSwitchInner;
151
152                    var span2 = doc.createElement('span');
153                    span2.className = classes.onOffSwitchActive;
154                    span2.innerHTML = 'AAN';
155
156                    var span3 = doc.createElement('span');
157                    span3.className = classes.onOffSwitchInactive;
158                    span3.innerHTML = 'UIT';
159
160                    var span4 = doc.createElement('span');
161                    span4.className = classes.onOffSwitchHandle;
162
163                    span1.appendChild(span2);
164                    span1.appendChild(span3);
165                    div2.appendChild(span1);
166                    div2.appendChild(span4);
167                    div1.appendChild(div2);
168                    listItem.appendChild(div1);
169                }
170            }
171
172            function findParent (element, tagName) {
173                tagName = tagName.toLowerCase();
174
175                while (element && element.parentNode) {
176                    element = element.parentNode;
177
178                    if (element.tagName && element.tagName.toLowerCase() === tagName) {
179                        return element;
180                    }
181                }
182
183                return null;
184            }
185
186            return {
187                init: init
188            };
189        }());
190
191        domReady(CookieControl.cookieBar.init);
192    });
193})(window);

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.