PageSourceSearch

https://manes-spa.cz/plugins/system/cookiesck/assets/front.js?ver=3.1.0

js manes-spa.cz collected 2026-10-07 10:51:56 UTC 12,984 bytes, 354 lines download raw bytes

1(function() {
2
3	"use strict";
4
5	var opts;
6
7	var Cookiesck = function (options) {
8		//set default options  
9		var defaults = {
10			lifetime: ''
11			,layout: ''
12			,reload: ''
13		};
14
15		if (!(this instanceof Cookiesck)) return new Cookiesck(options);
16
17		opts = Object.assign(defaults, options);
18
19		initHtml();
20		initInterface();
21		initEvents();
22		initIframes();
23	}
24
25	function initHtml() {
26		// remove the banner from the page if exists
27		let banner = document.getElementById('cookiesck');
28		if (banner) banner.remove();
29
30		// create the banner in the page
31		banner = document.createElement('div');
32		banner.id = 'cookiesck';
33		banner.setAttribute('data-layout', opts.layout);
34		banner.innerHTML = createBannerHtml();
35		document.body.appendChild(banner);
36
37		// create the overlay
38		let overlay = document.createElement('div');
39		overlay.id = 'cookiesck_overlay';
40		document.body.appendChild(overlay);
41
42		// create the overlay
43		let options = document.createElement('div');
44		options.id = 'cookiesck_options';
45		options.innerHTML = '<div class="inner">' + COOKIESCK.TEXT.OPTIONS + '</div>';
46		document.body.appendChild(options);
47	}
48
49	function createBannerHtml() {
50		let html = '<div class="inner">'
51			+ '<span id="cookiesck_text">' + COOKIESCK.TEXT.INFO + '</span>'
52			+ '<span id="cookiesck_buttons">'
53				+ '<a class="cookiesck_button" id="cookiesck_accept">' + COOKIESCK.TEXT.ACCEPT_ALL + '</a>'
54				+ '<a class="cookiesck_button" id="cookiesck_decline">' + COOKIESCK.TEXT.DECLINE_ALL + '</a>'
55				+ '<a class="cookiesck_button" id="cookiesck_settings">' + COOKIESCK.TEXT.SETTINGS + '</a>'
56				+ '<div style="clear:both;"></div>'
57			+ '</div>'
58			
59			+ '</div>';
60
61		return html;
62	}
63
64	function initInterface() {
65		let cookie = readCookie('cookiesck');
66		document.getElementById('cookiesck').style.display = 'none';
67		document.getElementById('cookiesck_overlay').style.display = 'none';
68		// cookies not set, display the bar
69		if(cookie == null) {
70			document.getElementById('cookiesck').style.display = 'block';
71			document.getElementById('cookiesck_overlay').style.display = 'block';
72		}
73	
74		COOKIESCK.VALUE = decodeURIComponent(cookie);
75		debug('COOKIESCK.VALUE : ' + COOKIESCK.VALUE);
76
77		var cookieArray = toObject();
78		let interfac = document.getElementById('cookiesck_interface');
79		let platforms = interfac.querySelectorAll('.cookiesck-platform');
80		debug('platforms :');
81		debug(platforms);
82		platforms.forEach(function(platform) {
83			let platformName = platform.getAttribute('data-platform');
84			let buttons = platform.querySelectorAll('.cookiesck_button');
85
86			buttons.forEach(function(button) {
87				button.onclick = function() {
88					if (this.classList.contains('cookiesck-accept')) {
89						doAction(this, 'accept');
90					} else {
91						doAction(this, 'decline');
92					}
93					interfac.querySelectorAll('.cookiesck-main-buttons .cookiesck_button').forEach(function(btn) { btn.classList.remove('cookiesck-active'); });
94				}
95			});
96
97			// set active button
98			if (cookieArray[platformName]) {
99				if (cookieArray[platformName] == 1) {
100					platform.querySelector('.cookiesck-accept').classList.add('cookiesck-active');
101				} else {
102					platform.querySelector('.cookiesck-decline').classList.add('cookiesck-active');
103				}
104			}
105		});
106
107		if (COOKIESCK.VALUE === 'yes') {
108			interfac.querySelectorAll('.cookiesck-accept').forEach(function(btn) { btn.classList.add('cookiesck-active'); });
109		} else if (COOKIESCK.VALUE === 'no' || COOKIESCK.VALUE === 'null') {
110			interfac.querySelectorAll('.cookiesck-decline').forEach(function(btn) { btn.classList.add('cookiesck-active'); });
111		}
112
113		// force essential to be active
114		if (interfac.querySelector('[data-category="essential"]')) {
115			interfac.querySelectorAll('[data-category="essential"] .cookiesck-accept').forEach(function(btn) { btn.classList.add('cookiesck-active'); }); 
116		}
117
118		// close the interface
119		interfac.querySelector('.cookiesck-main-close').onclick = function() {
120			interfac.style.display = 'none';
121			document.getElementById('cookiesck_options').style.display = 'block';
122			document.getElementById('cookiesck_overlay').style.display = 'none';
123		}
124	}
125
126	function initEvents() {
127		let acceptButtons = document.querySelectorAll('#cookiesck_accept,.cookiesck-main-buttons .cookiesck-accept');
128		acceptButtons.forEach(function(acceptButton) {
129			acceptButton.onclick = function() {
130				debug('acceptButton.onclick');
131				if (this.classList.contains('cookiesck-accept')) { acceptAll(); }
132				setCookie("cookiesck","yes",'.$lifetime.');
133				doAjax(location.href, 'set_cookieck=1');
134				document.getElementById('cookiesck').classList.add('cookiesck-hide');
135				document.getElementById('cookiesck').style.display = 'none';
136				document.getElementById('cookiesck_options').style.display = 'block';
137				document.getElementById('cookiesck_overlay').style.display = 'none';
138				loadIframes();
139				if (opts.reload === '1') location.reload();
140			}
141		});
142		let declineButtons = document.querySelectorAll('#cookiesck_decline, .cookiesck-main-buttons .cookiesck-decline');
143		declineButtons.forEach(function(declineButton) {
144			declineButton.onclick = function() {
145				debug('declineButton.onclick');
146				if (this.classList.contains('cookiesck-decline')) { declineAll(); }
147				setCookie("cookiesck","no",'.$lifetime.');
148				doAjax(location.href, 'set_cookieck=0');
149				document.getElementById('cookiesck').classList.add('cookiesck-hide');
150				document.getElementById('cookiesck').style.display = 'none';
151				document.getElementById('cookiesck_options').style.display = 'block';
152				document.getElementById('cookiesck_overlay').style.display = 'none';
153			}
154		});
155		document.getElementById('cookiesck_settings').onclick = function(){
156			document.getElementById('cookiesck_interface').style.display = 'block';
157			document.getElementById('cookiesck').style.display = 'none';
158		}
159		// add management button to update the decision
160		document.getElementById('cookiesck_options').onclick = function(){
161			document.getElementById('cookiesck_interface').style.display = 'block';
162			document.getElementById('cookiesck_overlay').style.display = 'block';
163		}
164	}
165
166	function initIframes() {
167		let iframes = document.querySelectorAll('.cookiesck-iframe-wrap');
168		debug('iframes  : ');
169		debug(iframes);
170		iframes.forEach(function(iframe) {
171			iframe.onclick = function() {
172				if (! confirm(COOKIESCK.TEXT.CONFIRM_IFRAMES)) return; 
173				this.outerHTML = this.outerHTML.replace('data-cookiesck-src', 'src');
174				loadIframes();
175				setCookie('cookiesckiframes', '1', COOKIESCK.LIFETIME);
176			}
177		});
178	}
179
180	function setCookie(c_name,value,exdays) {
181		debug('setCookie  : {name : ' + c_name + ', value : ' + value + ', exdays : ' + exdays);
182		var exdate=new Date();
183		exdate.setDate(exdate.getDate() + exdays);
184		var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()) + "; path=/";
185		document.cookie=c_name + "=" + c_value;
186	}
187
188	function readCookie(name) {
189		debug('readCookie  : ' + name);
190		var nameEQ = name + "=";
191		var cooks = document.cookie.split(';');
192		for(var i=0;i < cooks.length;i++) {
193			var c = cooks[i];
194			while (c.charAt(0)==' ') c = c.substring(1,c.length);
195				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
196			}
197		return null;
198	}
199
200	function removeCookie(name) {
201		debug('removeCookie  : ' + name);
202		let cookie = name + "=; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
203		document.cookie = cookie;
204	}
205
206	function toObject() {
207		let list = new Object();
208		let rows = COOKIESCK.VALUE.split('|ck|');
209		for (var i=0; i < rows.length; i++) {
210			let cols = rows[i].split('|val|');
211			list[cols[0]] = cols[1];
212		}
213		return list;
214	}
215
216	function doAction(btn, action) {
217		btn.parentNode.querySelectorAll('.cookiesck_button').forEach(function(button) {
218			button.classList.remove('cookiesck-active');
219		});
220		btn.classList.add('cookiesck-active');
221		updateCookieValue();
222		if (opts.reload === '1') location.reload();
223	}
224
225	function updateCookieValue() {
226		debug('updateCookieValue');
227		let interfac = document.getElementById('cookiesck_interface');
228		let list = new Array();
229		let platforms = interfac.querySelectorAll('.cookiesck-platform');
230		platforms.forEach(function(platform) {
231			let selection = platform.querySelector('.cookiesck_button.cookiesck-active');
232			let name = platform.getAttribute('data-platform');
233			if (selection && selection.classList.contains('cookiesck-accept')) {
234				list.push(name + '|val|1');
235				// trigger event
236				let event = new CustomEvent('cookieckstate', { "detail": {"name": name, "state": "1"} });
237				document.dispatchEvent(event);
238				debug('cookieckstate  : {name : ' + name + ', state : 1');
239			} else {
240				list.push(name + '|val|0');
241				// trigger event
242				let event = new CustomEvent('cookieckstate', { "detail": {"name": name, "state": "0"} });
243				document.dispatchEvent(event);
244				debug('cookieckstate  : {name : ' + name + ', state : 0');
245			}
246		});
247		COOKIESCK.VALUE = list.join('|ck|');
248		setCookie('cookiesck', COOKIESCK.VALUE, opts.lifetime);
249	}
250
251	function acceptAll() {
252		let interfac = document.getElementById('cookiesck_interface');
253		interfac.querySelectorAll('.cookiesck-active').forEach(function(btn
253) { btn.classList.remove('cookiesck-active'); });
254		interfac.querySelectorAll('.cookiesck-accept').forEach(function(btn) { btn.classList.add('cookiesck-active'); });
255		loadIframes();
256		// trigger event
257		let event = new CustomEvent('cookieckstate', { "detail": {"name": "all", "state": "1"} });
258		document.dispatchEvent(event);
259	}
260
261	function declineAll() {
262		let interfac = document.getElementById('cookiesck_interface');
263		interfac.querySelectorAll('.cookiesck-active').forEach(function(btn) { btn.classList.remove('cookiesck-active'); });
264		interfac.querySelectorAll('.cookiesck-decline').forEach(function(btn) { btn.classList.add('cookiesck-active'); });
265		// force essential to be active
266		if (interfac.querySelector('[data-category="essential"]')) {
267			interfac.querySelectorAll('[data-category="essential"] .cookiesck-accept').forEach(function(btn) { btn.classList.add('cookiesck-active'); });
268		}
269		// trigger event
270		let event = new CustomEvent('cookieckstate', { "detail": {"name": "all", "state": "0"} });
271		document.dispatchEvent(event);
272	}
273
274	function loadIframes() {
275		let iframes = document.querySelectorAll('.cookiesck-iframe-wrap');
276		iframes.forEach(function(iframetoenable) {
277			iframetoenable.closest('.cookiesck-iframe-wrap').className = 'cookiesck-iframe-wrap-allowed';
278			iframetoenable.outerHTML = iframetoenable.outerHTML.replace('data-cookiesck-src', 'src');
279		});
280	}
281
282	function doAjax(url, vars) {
283		// ancien code de compatibilité, aujourd’hui inutile
284		if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+...
285			var httpRequest = new XMLHttpRequest();
286		}
287		else if (window.ActiveXObject) { // IE 6 et antérieurs
288			var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
289		}
290		httpRequest.onreadystatechange = function() {
291			// instructions de traitement de la réponse
292		};
293		httpRequest.open('POST', url, true);
294		httpRequest.send(vars);
295	}
296
297	function debug(str) {
298		if (COOKIESCK.DEBUG === '1') {
299			console.log(str);
300		}
301	}
302
303	window.Cookiesck = Cookiesck;
304	window.ckInitCookiesckIframes = initIframes;
305})();
306
307// initialize the setter and getter for the cookies
308if (! document.__defineGetter__) {
309	Object.defineProperty(document, 'cookie',{
310		get: function g(){ return ''; },
311		set: function h(){ return true;}
312	});
313} else {
314	var oldSetter = document.__lookupSetter__('cookie');
315	var oldGetter = document.__lookupGetter__('cookie');
316	if (oldSetter) {
317		Object.defineProperty(document, 'cookie', {
318			get: function g(){ return oldGetter.call(document); },
319			set: function h(v){
320				let name = v.split('=')[0];
321
322				if(v.match(/cookiesck\=/) || COOKIESCK.VALUE === 'yes' || COOKIESCK.ALLOWED.indexOf(name) != -1 || ckCookiesSearchNameIn(name, COOKIESCK.ALLOWED)) {
323					oldSetter.call(document, v);
324					if (COOKIESCK.DEBUG === '1') {
325						console.log('set cookie :');
326						console.log(name);
327					}
328				} else {
329					let cookie = name + "=; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/;";
330					oldSetter.call(document, cookie);
331					if (COOKIESCK.DEBUG === '1') {
332						console.log('set cookie blocked for :');
333						console.log(name);
334					}
335				}
336				return true;
337			}
338		});
339	}
340}
341
342function ckCookiesSearchNameIn(name, list) {
343	for (var i=0; i<list.length; i++) {
344		if (name.substr(0, list[i].length) == list[i]) return true;
345	}
346	return false;
347}
348
349// example of how to get the event
350//document.addEventListener("cookieckstate", function(e) {
351//	console.log(e.detail)
352//	console.log(e.detail.name);
353//	console.log(e.detail.state);
354//});

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.