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.