PageSourceSearch

https://www.jesuits.global/sj_template/module-cookie/gdpr-cookie.js

js jesuits.global collected 2026-10-02 05:55:05 UTC 21,413 bytes, 627 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.0
10 *
11 */
12;(function(root, factory) {
13    if (typeof define === "function" && define.amd) {
14        // AMD
15        define([ "jquery" ], factory);
16    }
17    else if (typeof module === "object" && module.exports) {
18        // CommonJS
19        module.exports = function( root, jQuery ) {
20            if (jQuery === undefined) {
21                if (typeof window !== "undefined") {
22                    jQuery = require("jquery");
23                }
24                else {
25                    jQuery = require("jquery")(root);
26                }
27            }
28            factory(jQuery);
29            return jQuery;
30        };
31    }
32    else {
33        // Plain
34        factory(root.jQuery);
35    }
36}(this, function($) {
37    "use strict";
38    
39    var settings, showing = false, display, isAdvanced = false, seenAdvanced = false;
40
41    var setCookie = function(name, value, expires) {
42        var d = new Date();
43        d.setTime(d.getTime() + expires * 24 * 60 * 60 * 1000);
44        document.cookie = name + "=" + value + ";expires=" + d.toUTCString() + ";path=/";
45        return getCookie(name);
46    };
47
48    var getCookie = function(name) {
49        var ca = decodeURIComponent(document.cookie).split(";");
50        name += "=";
51        for (var i = 0; i < ca.length; i++) {
52            var c = ca[i];
53            while (c.charAt(0) == " ") {
54                c = c.substring(1);
55            }
56            if (c.indexOf(name) === 0) {
57                return c.substring(name.length, c.length);
58            }
59        }
60    };
61    
62    var validateCookieName = function(name) {
63        // Cookie name may consist of \u0021-\u007e, excluding whitespace and characters , ; =
64        return name.replace(/[^\u0021-\u007e]|[,;=\s]/g, "");
65    };
66    
67    var getPreferences = function() {
68        var preferences = getCookie(settings.cookieName);
69        try {
70            preferences = JSON.parse(preferences);
71        }
72        catch(ex) {
73            return;
74        }
75
76        if (!Array.isArray(preferences) || !preferences.length) {
77            return;
78        }
79        
80        var knownTypes = settings.cookieTypes.map(function(type) {
81            return type.value;
82        });
83        preferences = preferences.filter(function(pref) {
84            return knownTypes.indexOf(pref) >= 0;
85        });
86        
87        return preferences;
88    };
89    
90    $.gdprcookie = { };
91        
92    $.gdprcookie.init = function(options) {
93        
94        // Define defaults
95        var defaultSettings = {
96            cookieTypes: [
97                {
98                    type: "Essential",
99                    value: "essential",
100                    description: "These are cookies that are essential for the website to work correctly.",
101                    checked: true,
102                },
103                {
104                    type: "Site Preferences",
105                    value: "preferences",
106                    description: "These are cookies that are related to your site preferences, e.g. remembering your username, site colours, etc.",
107                    checked: true,
108                },
109                {
110                    type: "Analytics",
111                    value: "analytics",
112                    description: "Cookies related to site visits, browser types, etc.",
113                    checked: true,
114                },
115                {
116                    type: "Marketing",
117                    value: "marketing",
118                    description: "Cookies related to marketing, e.g. newsletters, social media, etc",
119                    checked: true,
120                }
121            ],
122            title: "Cookies & privacy",
123            subtitle: "Select cookies to accept",
124            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.",
125            submessage: "",
126            delay: 2000,
127            expires: 30,
128            cookieName: "cookieControlPrefs",
129            acceptReload: false,
130            acceptBeforeAdvanced: [ "essential" ],
131            acceptAfterAdvanced: [ "essential" ],
132            allowUnadvanced: false,
133            switchAdvanced: false,
134            acceptBtnLabel: "Accept cookies",
135            advancedBtnLabel: "Customize cookies",
136            unadvancedBtnLabel: "Back",
137            customShowMessage: undefined,
138            customHideMessage: undefined,
139            customShowChecks: undefined,
140            customHideChecks: undefined
141        };
142
143        // Set defaults
144        settings = $.extend(defaultSettings, window.GdprCookieSettings, options);
145        
146        // Coerce into a string because this is poured into innerHTML
147        settings.message = String(settings.message);
148        
149        // Coerce into a positive number because it is passed to setTimeout
150        settings.delay = Math.max(0, +settings.delay) || 0;
151        
152        // Coerce into a positive whole number between 0 and 730 (2-ish years), to ensure a well-formed cookie value
153        settings.expires = Math.round(Math.min(Math.max(0, +settings.expires), 730)) || 0; 
154        
155        // Coerce cookieTypes into an array containing plain objects
156        if (Array.isArray(settings.cookieTypes)) {
157            settings.cookieTypes = settings.cookieTypes.filter(function(cookieType) {
158                return $.isPlainObject(cookieType);
159            });
160            if (!settings.cookieTypes.length) {
161                settings.cookieTypes = defaultSettings.cookieTypes;
162            }
163        }
164        else {
165            settings.cookieTypes = defaultSettings.cookieTypes;
166        }
167        
168        // Coerce into a string and valid cookie name
169        settings.cookieName = validateCookieName(String(settings.cookieName || "")) || "cookieControlPrefs";
170        
171        // Coerce acceptBeforeAdvanced and acceptAfterAdvanced into arrays of str
171ings, that exist in settings.cookieTypes[].value
172        var coerce = (function() {
173            var values = settings.cookieTypes.map(function(cookieType) { return cookieType.value; }),
174                exists = function(item) { return values.indexOf(item) >= 0; };
175            
176            return function(setting) {
177                // Convert a single string into an array of 1
178                setting = typeof setting === "string" ? [ setting ] : setting;
179
180                // If it's an array, make sure it only contains known cookie types
181                return Array.isArray(setting) ? setting.map(String).filter(exists) : undefined;
182            };
183        }());
184        settings.acceptBeforeAdvanced = coerce(settings.acceptBeforeAdvanced);
185        settings.acceptAfterAdvanced = coerce(settings.acceptAfterAdvanced);
186        
187        $(function() { display(); });
188    };
189    
190    display = function(alwaysShow) {
191        if (showing) {
192            return;
193        }
194        
195        var body = $("body"),
196            myCookiePrefs = getPreferences();
197        
198        var elements = {
199            container: undefined,
200            introContainer: undefined,
201            types: undefined,
202            typesContainer: undefined,
203            buttons: { 
204                accept: undefined, 
205                advanced: undefined 
206            },
207            allChecks: [ ],
208            nonessentialChecks: [ ]
209        };
210            
211        var hide = function(canreload) {
212            if (elements.container) {
213                if ($.isFunction(settings.customHideMessage)) {
214                    settings.customHideMessage.call(elements.container, elements.container);
215                    showing = false;
216                }
217                else {
218                    elements.container.fadeOut("fast", function() {
219                        $(this).remove();
220                        showing = false;
221                    });
222                }
223            }
224            if (canreload && settings.acceptReload) {
225                document.location.reload();
226            }
227        };
228        
229        if (!Array.isArray(myCookiePrefs) || !myCookiePrefs.length) {
230            myCookiePrefs = undefined;
231        }
232
233        if (alwaysShow || !myCookiePrefs) {
234            elements.types = $("<ul/>").append(
235                $.map(settings.cookieTypes, function(field, index) {
236                    if (!field.type || !field.value) {
237                        return;
238                    }
239                    var isEssential = field.value === "essential",
240                        isChecked;
241                    
242                    if (Array.isArray(myCookiePrefs)) {
243                        isChecked = myCookiePrefs.indexOf(field.value) >= 0;
244                    }
245                    else {
246                        isChecked = field.checked === true;
247                    }
248                    
249                    var input = $("<input/>", {
250                        type: "checkbox",
251                        id: "gdpr-cookietype-" + index,
252                        name: "gdpr[]",
253                        value: field.value,
254                        "class": 'styled-checkbox',
255
256                        // The essential cookies checkbox is checked and cannot be unchecked
257                        checked: isEssential || isChecked,
258                        disabled: isEssential
259                    });
260                    
261                    elements.allChecks.push(input.get(0));
262                    if (!isEssential) {
263                        elements.nonessentialChecks.push(input.get(0));
264                    }
265                    
266                    var label = $("<label/>", {
267                        "for": "gdpr-cookietype-" + index,
268                        text: field.type,
269                        title: field.description
270                    });
271
272	
273
274                    return $("<li/>").append([
275                        input.get(0),
276                        //'<span class="slider round"></span>',
277                        label.get(0),
278                    ]).get(0);
279                })
280            );
281            elements.allChecks = $(elements.allChecks);
282            elements.nonessentialChecks = $(elements.nonessentialChecks);
283            
284            // When accept button is clicked drop cookie
285            var acceptClick = function() {
286                var prefsFromCheckboxes = function() {
287                    return elements.allChecks
288                        .filter(function() { return this.checked || this.disabled; })
289                        .map(function() { return this.value; })
290                        .get();
291                };
292                var prefsOutsideAdvanced = function(where) {
293                    var setting = "accept" + where + "Advanced";
294                    return Array.isArray(settings[setting]) ? settings[setting] : prefsFromCheckboxes();
295                };
296                
297                // Hide the cookie message
298                hide(true);
299
300                // Save user cookie preferences (in a cookie!)
301                var prefs = isAdvanced ? prefsFromCheckboxes() : prefsOutsideAdvanced(seenAdvanced ? "After" : "Before");
302                setCookie(settings.cookieName, JSON.stringify(prefs), settings.expires);
303
304                // Trigger cookie accept event
305                body.trigger("gdpr:accept");
306            };
307            
308            // Toggle advanced cookie options
309            var advancedClick = function() {
310                var showAdvanced = function() {
311                    if (!settings.allowUnadvanced) {
312                        elements.buttons.advanced.prop("disabled", true);
313                    }
314
315                    if ($.isFunction(settings.customShowChecks)) {
316                        settings.customShowChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
317                    }
318                    else {
319                        if (settings.switchAdvanced) {
320                            elements.introContainer.slideUp("fast");
321                        }
322                        elements.typesContainer.slideDown("fast");
323                    }
324
325                    isAdvanced = seenAdvanced = true;
326                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {  
327                        elements.buttons.advanced.text(settings.unadvancedBtnLabel);
328                    }
329
330                    // Trigger advanced show event
331                    body.trigger("gdpr:advanced");
332                };
333                var hideAdvanced = function() {
334                    if ($.isFunction(settings.customHideChecks)) {
335                        settings.customHideChecks.call(elements.typesContainer, elements.typesContainer, elements.introContainer);
336                    }
337                    else {
338                        if (settings.switchAdvanced) {
339                            elements.introContainer.slideDown("fast");
340                        }
341                        elements.typesContainer.slideUp("fast");
342                    }
343
344                    isAdvanced = false;
345                    if (settings.allowUnadvanced && settings.unadvancedBtnLabel && settings.advancedBtnLabel !== settings.unadvancedBtnLabel) {  
346                        elements.buttons.advanced.text(settings.advancedBtnLabel);
347                    }
348                    
349                    // Trigger advanced show event
350                    body.trigger("gdpr:unadvanced");
351                };
352                
353                if (isAdvanced) {
354                    if (settings.allowUnadvanced) {
355                        hideAdvanced();
356                    }
357                }
358                else {
359                    showAdvanced();
360                }
361            };
362            
363            // Build cookie message to display later on
364            var cookieMessage = (elements.container = $("<div class=gdprcookie>")).append([
365                (elements.introContainer = $("<div class=gdprcookie-intro/>")).append([
366                    //settings.title ? $("<h1/>", { text: settings.title }).get(0) : undefined,
367                    settings.message ? $("<p/>", { html: settings.message }).get(0) : undefined
368                ]).get(0),
369                                $("<div class=gdprcookie-buttons/>").append([
370                    
371                    (elements.buttons.advanced = $("<button/>", { type: "button", text: settings.advancedBtnLabel, click: advancedClick })).get(0),
372                    (elements.buttons.accept = $("<button/>", { type: "button", id: "cookie_accept",text: settings.acceptBtnLabel, click: acceptClick, onclick: 'setCookiepref()' })).get(0)
373                    
374                ]).get(0),
375				(elements.typesContainer = $("<div class=gdprcookie-types/>")).hide().append([
376                    settings.subtitle ? $("<h2/>", { text: settings.subtitle }).get(0) : undefined,
377                    settings.submessage ? $("<p/>", { html: settings.submessage }).get(0) : undefined,
378                    elements.types.get(0)
379                ]).get(0)
380                
381                
382
383            ]);
384            
385            var show = function() {
386                body.append(cookieMessage);
387                showing = true;
388                isAdvanced = seenAdvanced = false;
389                if ($.isFunction(settings.customShowMessage)) {
390                    settings.customShowMessage.call(elements.container, elements.container);
391                }
392                else {
393                    elements.container.hide().fadeIn("slow");
394                }
395                
396                // Trigger container show event
397                body.trigger("gdpr:show");
398            };
399            
400            if (!settings.delay || alwaysShow) {
401                show();
402            }
403            else {
404                window.setTimeout(show, settings.delay);
405            }
406        }
407        else {
408            hide(false);
409        }
410    };
411    
412    $.gdprcookie.display = function() {
413        display(true);
414    };
415
416    // Method to check if user cookie preference exists
417    $.gdprcookie.preference = function(value) {
418        var preferences = getPreferences();
419        
420        if (value === "essential") {
421            return true;
422        }
423        else if (!preferences) {
424            return false;
425        }
426        else if (value !== undefined) {
427            return preferences.indexOf(value) >= 0;
428        }
429        return preferences;
430    };
431    
432    // Protection against malicious scripts, e.g. monkey patching
433    $.gdprcookie = Object.freeze($.gdprcookie);
434
435}));
436
437
438
439
440/*!
441 * JavaScript Cookie v2.2.0
442 * https://github.com/js-cookie/js-cookie
443 *
444 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
445 * Released under the MIT license
446 */
447;(function (factory) {
448	var registeredInModuleLoader;
449	if (typeof define === 'function' && define.amd) {
450		define(factory);
451		registeredInModuleLoader = true;
452	}
453	if (typeof exports === 'object') {
454		module.exports = factory();
455		registeredInModuleLoader = true;
456	}
457	if (!registeredInModuleLoader) {
458		var OldCookies = window.Cookies;
459		var api = window.Cookies = factory();
460		api.noConflict = function () {
461			window.Cookies = OldCookies;
462			return api;
463		};
464	}
465}(function () {
466	function extend () {
467		var i = 0;
468		var result = {};
469		for (; i < arguments.length; i++) {
470			var attributes = arguments[ i ];
471			for (var key in attributes) {
472				result[key] = attributes[key];
473			}
474		}
475		return result;
476	}
477
478	function decode (s) {
479		return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
480	}
481
482	function init (converter) {
483		function api() {}
484
485		function set (key, value, attributes) {
486			if (typeof document === 'undefined') {
487				return;
488			}
489
490			attributes = extend({
491				path: '/'
492			}, api.defaults, attributes);
493
494			if (typeof attributes.expires === 'number') {
495				attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
496			}
497
498			// We're using "expires" because "max-age" is not supported by IE
499			attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
500
501			try {
502				var result = JSON.stringify(value);
503				if (/^[\{\[]/.test(result)) {
504					value = result;
505				}
506			} catch (e) {}
507
508			value = converter.write ?
509				converter.write(value, key) :
510				encodeURIComponent(String(value))
511					.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
512
513			key = encodeURIComponent(String(key))
514				.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
515				.replace(/[\(\)]/g, escape);
516
517			var stringifiedAttributes = '';
518			for (var attributeName in attributes) {
519				if (!attributes[attributeName]) {
520					continue;
521				}
522				stringifiedAttributes += '; ' + attributeName;
523				if (attributes[attributeName] === true) {
524					continue;
525				}
526
527				// Considers RFC 6265 section 5.2:
528				// ...
529				// 3.  If the remaining unparsed-attributes contains a %x3B (";")
530				//     character:
531				// Consume the characters of the unparsed-attributes up to,
532				// not including, the first %x3B (";") character.
533				// ...
534				stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
535			}
536
537			return (document.cookie = key + '=' + value + stringifiedAttributes);
538		}
539
540		function get (key, json) {
541			if (typeof document === 'undefined') {
542				return;
543			}
544
545			var jar = {};
546			// To prevent the for loop in the first place assign an empty array
547			// in case there are no cookies at all.
548			var cookies = document.cookie ? document.cookie.split('; ') : [];
549			var i = 0;
550
551			for (; i < cookies.length; i++) {
552				var parts = cookies[i].split('=');
553				var cookie = parts.slice(1).join('=');
554
555				if (!json && cookie.charAt(0) === '"') {
556					cookie = cookie.slice(1, -1);
557				}
558
559				try {
560					var name = decode(parts[0]);
561					cookie = (converter.read || converter)(cookie, name) ||
562						decode(cookie);
563
564					if (json) {
565						try {
566							cookie = JSON.parse(cookie);
567						} catch (e) {}
568					}
569
570					jar[name] = cookie;
571
572					if (key === name) {
573						break;
574					}
575				} catch (e) {}
576			}
577
578			return key ? jar[key] : jar;
579		}
580
581		api.set = set;
582		api.get = function (key) {
583			return get(key, false /* read as raw */);
584		};
585		api.getJSON = function (key) {
586			return get(key, true /* read as json */);
587		};
588		api.remove = function (key, attributes) {
589			set(key, '', extend(attributes, {
590				expires: -1
591			}));
592		};
593
594		api.defaults = {};
595
596		api.withConverter = init;
597
598		return api;
599	}
600
601	return init(function () {});
602}));
603
604// Various Functions
605
606function getCookie(name) {
607    var dc = document.cookie;
608    var prefix = name + "=";
609    var begin = dc.indexOf("; " + prefix);
610    if (begin == -1) {
611        begin = dc.indexOf(prefix);
612        if (begin != 0) return null;
613    }
614    else
615    {
616        begin += 2;
617        var end = document.cookie.indexOf(";", begin);
618        if (end == -1) {
619        end = dc.length;
620        }
621    }
622    // because unescape has been deprecated, replaced with decodeURI
623    //return unescape(dc.substring(begin + prefix.length, end));
624    return decodeURI(dc.substring(begin + prefix.length, end));
625} 
626
627

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.