PageSourceSearch

https://www.edenfantasys.com/Scripts/RegionDependent/CcpaNotification.js

js edenfantasys.com collected 2026-09-24 18:14:12 UTC 7,407 bytes, 233 lines download raw bytes

1var EFCcpaNotification = function() {
2    var cn = 'ccpa';
3    var cnp = 'ccpap';
4    var isShown = function () {
5        return !!GetCookie(cnp);
6    };
7
8    var currentPermissionsState = GetCookie(cn);
9
10    var permissionsGroups = {
11        //'necessary' :0,
12        'functional': 1,
13        'analytics': 2,
14        'marketing': 3
15    };
16
17    var defaultPermissionsGroupsState = Object.values(permissionsGroups).reduce(function (acc, el) {
18        acc[el] = 0;
19        return acc;
20    }, {});
21
22    //var permissionsTypesMap = {
23    //    // controllable
24    //    'ad_storage': 1,
25    //    'ad_user_data': 2,
26    //    'ad_personalization': 3,
27    //    'analytics_storage': 4,
28    //    // granted by default
29    //    'functionality_storage': 5,
30    //    'personalization_storage': 6,
31    //    'security_storage': 7
32    //};
33
34    var permissionModes = {
35        //'necessary': {},
36        'functional': { 'functionality_storage': 'granted', 'security_storage': 'granted' },
37        'analytics': { 'analytics_storage': 'granted', 'personalization_storage': 'granted' },
38        'marketing': { 'ad_storage': 'granted', 'ad_user_data': 'granted', 'ad_personalization': 'granted' },
39        'allowAll': { 'ad_storage': 'granted', 'ad_user_data': 'granted', 'ad_personalization': 'granted', 'analytics_storage': 'granted' },
40        'denyAll': { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }
41    };
42
43
44    var restoreState = function (serializedState, popupBody) {
45
46        // polyfill for old jQuery
47        if (!$.fn.prop) {
48            $.fn.prop = function (name, value) {
49                if (typeof value === 'undefined') {
50                    // Getter
51                    if (this.length > 0) {
52                        return this[0][name];
53                    }
54                    return undefined;
55                } else {
56                    // Setter
57                    this.each(function () {
58                        if (typeof value === 'function') {
59                            this[name] = value.call(this, Array.prototype.indexOf.call(this.parentNode.children, this), this[name]);
60                        } else {
61                            this[name] = value;
62                        }
63                    });
64                    return this;
65                }
66            };
67        }
68
69        if (!serializedState) {
70            return;
71        }
72
73        var swapKeysValues = function (obj) {
74            return Object.keys(obj).reduce(function (acc, key) {
75                acc[obj[key]] = key;
76                return acc;
77            }, {});
78        };
79
80        var groupsKeyNameMap = swapKeysValues(permissionsGroups);
81        var grCheckboxes = $('.target-chkbx', popupBody || '.consent-modes').not('[disabled]');
82        var setGroupCheckbox = function (checkboxes, value) {
83            return checkboxes.prop('checked', value);
84        };
85
86        setGroupCheckbox(grCheckboxes, false);
87        serializedState.split('|').forEach(function (el) {
88            var grSetts = el.split(':'),
89                grName = groupsKeyNameMap[grSetts[0]],
90                grEnabled = grSetts[1] == 1;
91
92            setGroupCheckbox(grCheckboxes.filter('[value="' + grName + '"]'), grEnabled);
93        });
94    };
95
96    var updateConsentMode = function (permissions) {
97        var permissionsToSet = permissions,
98            permissionGroupToSet = 1;
99
100        if (Array.isArray(permissions)) {
101            permissionsToSet = permissions.reduce(function (acc, permissionName) {
102                acc = Object.assign({}, acc, permissionModes[permissionName]);
103                return acc;
104            }, {});
105
106            //console.log('permissionsToSet: ', permissionsToSet);
107
108            var selectedPermsGroups = permissions.reduce(function (acc, permName) {
109                if (typeof (permissionsGroups[permName]) !== 'undefined') {
110                    acc[permissionsGroups[permName]] = 1;
111                }
112                return acc;
113            }, {});
114
115            selectedPermsGroups = Object.assign({}, defaultPermissionsGroupsState, selectedPermsGroups);
116
117            permissionGroupToSet = Object.keys(selectedPermsGroups).map(function (k) {
118                return k + ':' + selectedPermsGroups[k];
119            }).join('|');
120
121            //console.log('permissionsGroupsToSet: ', permissionGroupToSet);
122        }
123
124        if (typeof (gtag) !== 'undefined') {
125            gtag('consent', 'update', permissionsToSet);
126        }
127
128        SetCookie(cn, permissionGroupToSet, 365 * 3);
129    };
130
131    var markAsAgree = function () {
132        updateConsentMode(Object.keys(permissionsGroups));
133    };
134
135    var markAsDenied = function () {
136        updateConsentMode([]);
137    };
138
139    var markAsShown = function () {
140        SetCookie(cnp, 1, 365 * 3);
141    };
142
143    var defaultAction = function () {
144        !currentPermissionsState && markAsAgree();
145        markAsShown();
146    };
147
148
149    var initBarControls = function (bar) {
150
151        var closeBar = function () {
152            bar.remove();
153            dataLayer.push({ 'event': 'ccpa-closed' });
154            markAsShown();
155        };
156
157        var customizeBtn = $('.ccpa-customize-button', bar),
158            allowAllBtn = $('.ccpa-accept-button', bar),
159            denyAllBtn = $('.ccpa-deny-button', bar),
160            allowSelectedBtn = $('.ccpa-accept-customized-button', bar);
161
162        customizeBtn.click(function () {
163            $('.ccpa-cont__view-active').removeClass('ccpa-cont__view-active');
164            $('.ccpa-cont__view-customization').addClass('ccpa-cont__view-active');
165        });
166
167        allowAllBtn.click(function () {
168            markAsAgree();
169            closeBar();
170        });
171
172        denyAllBtn.click(function () {
173            markAsDenied();
174            closeBar();
175        });
176
177        allowSelectedBtn.click(function () {
178            var selectedPermissions = Array.from($('.ccpa-cont__view-customization').find('input:checked')).map(function (el) {
179                return $(el).val();
180            });
181
182            updateConsentMode(selectedPermissions);
183            closeBar();
184        });
185    };
186
187    var displayPopup = function (callback) {
188
189        return $.ajax({
190            url: '/ccpa.html',
191            type: 'GET',
192            cache: false,
193            success: function (markup) {
194                var bar = $(markup);
195
196                bar.appendTo('body').fadeIn('fast');
197
198                restoreState(currentPermissionsState, bar);
199                initBarControls(bar);
200
201                if (typeof (callback) !== 'undefined') {
202                    callback(bar);
203                }
204            }
205        });
206    };
207
208    var initCcpa = function () {
209        try {
210            if (isShown()) {
211                return;
212            }
213
214            displayPopup(function () {
215                defaultAction();
216            });
217
218        } catch (ex) {
219            markAsShown();
220        }
221    };
222
223
224    return {
225        initCcpa: initCcpa,
226        displayCcpaMessage: displayPopup
227    };
228};
229
230; (function ccpaNotificationInit() {
231    var ccpaNotificator = new EFCcpaNotification();
232    ccpaNotificator.initCcpa();
233})();

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.