PageSourceSearch

https://www.apliiq.com/Scripts/apliiq-privacy-consent-v1.js

js apliiq.com collected 2026-09-25 04:42:50 UTC 8,344 bytes, 260 lines download raw bytes

1(function (window, document) {
2    "use strict";
3
4    var STORAGE_KEY = "apliiq-privacy-preferences-v2";
5    var LEGACY_KEY = "apliiq-cookie-notification";
6    var CONSENT_VERSION = 2;
7
8    function setCookie(name, value, days) {
9        const oneDay = 24 * 60 * 60 * 1000; // milliseconds
10        const expires = new Date(Date.now() + days * oneDay).toUTCString();
11
12        document.cookie =
13            encodeURIComponent(name) + "=" +
14            encodeURIComponent(value) +
15            "; expires=" + expires +
16            "; path=/" +
17            "; domain=.apliiq.com" +
18            "; Secure" +
19            "; SameSite=Lax";
20    }
21
22    function getCookie(name) {
23        const cookies = document.cookie.split("; ");
24
25        for (const cookie of cookies) {
26            const parts = cookie.split("=");
27            const key = decodeURIComponent(parts[0]);
28
29            if (key === name) {
30                return decodeURIComponent(parts.slice(1).join("="));
31            }
32        }
33
34        return null;
35    }
36
37    function deleteCookie(name) {
38        document.cookie =
39            encodeURIComponent(name) +
40            "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.apliiq.com";
41    }
42
43    function getElement(selector) {
44        return document.querySelector(selector);
45    }
46
47    function safeParse(value) {
48        if (!value) {
49            return null;
50        }
51
52        try {
53            return JSON.parse(value);
54        } catch (error) {
55            return null;
56        }
57    }
58
59    function readPreferences() {
60        var value = getCookie(STORAGE_KEY);
61        var preferences = safeParse(value);//window.localStorage.getItem(STORAGE_KEY)
62
63
64        if (!preferences || preferences.version !== CONSENT_VERSION) {
65            return null;
66        }
67
68        return preferences;
69    }
70
71    function writePreferences(preferences) {
72        setCookie(STORAGE_KEY, JSON.stringify(preferences));
73        deleteCookie(LEGACY_KEY);
74        //window.localStorage.setItem(STORAGE_KEY, JSON.stringify(preferences));
75        window.localStorage.removeItem(LEGACY_KEY);
76    }
77
78    function getGpcOptOut() {
79        return navigator.globalPrivacyControl === true;
80    }
81
82    function buildPreferences(nonEssential, saleShareOptOut, source) {
83        return {
84            version: CONSENT_VERSION,
85            necessary: true,
86            nonEssential: Boolean(nonEssential),
87            saleSharingOptOut: Boolean(saleShareOptOut),
88            source: source,
89            updatedAt: new Date().toISOString()
90        };
91    }
92
93    function applyGoogleConsent(preferences) {
94        if (typeof window.gtag !== "function") {
95            return;
96        }
97
98        var nonEssentialGranted = preferences.nonEssential === true;
99        var advertisingGranted =
100            nonEssentialGranted && preferences.saleSharingOptOut !== true;
101
102        window.gtag("consent", "update", {
103            analytics_storage: nonEssentialGranted ? "granted" : "denied",
104            functionality_storage: nonEssentialGranted ? "granted" : "denied",
105            personalization_storage: nonEssentialGranted ? "granted" : "denied",
106            ad_storage: advertisingGranted ? "granted" : "denied",
107            ad_user_data: advertisingGranted ? "granted" : "denied",
108            ad_personalization: advertisingGranted ? "granted" : "denied",
109            security_storage: "granted"
110        });
111    }
112
113    function pushConsentEvent(preferences, eventName) {
114        window.dataLayer = window.dataLayer || [];
115        window.dataLayer.push({
116            event: eventName,
117            apliiq_privacy_version: preferences.version,
118            apliiq_non_essential: preferences.nonEssential,
119            apliiq_sale_share_allowed: !preferences.saleSharingOptOut,
120            apliiq_sale_share_opt_out: preferences.saleSharingOptOut,
121            apliiq_privacy_source: preferences.source
122        });
123    }
124
125    function applyPreferences(preferences, eventName) {
126        applyGoogleConsent(preferences);
127        pushConsentEvent(preferences, eventName);
128    }
129
130    function showBanner() {
131        var banner = getElement("#apq-cookie-notification");
132
133        if (banner) {
134            banner.classList.remove("hde");
135        }
136    }
137
138    function hideBanner() {
139        var banner = getElement("#apq-cookie-notification");
140
141        if (banner) {
142            banner.classList.add("hde");
143        }
144    }
145
146    function expandPreferences() {
147        var preferencesPanel = getElement("#apq-privacy-preferences");
148        var manageButton = getElement('[data-apq-action="manage"]');
149
150        if (!preferencesPanel || !manageButton) {
151            return;
152        }
153
154        var isHidden = preferencesPanel.classList.contains("hde");
155        preferencesPanel.classList.toggle("hde", !isHidden);
156        manageButton.setAttribute("aria-expanded", isHidden ? "true" : "false");
157    }
158
159    function syncControls(preferences) {
160        var nonEssential = getElement("#apq-non-essential");
161        var saleShareOptOut = getElement("#apq-sale-share-opt-out");
162
163        if (nonEssential) {
164            nonEssential.checked = preferences ? preferences.nonEssential : false;
165        }
166
167        if (saleShareOptOut) {
168            saleShareOptOut.checked = preferences
169                ? preferences.saleSharingOptOut
170                : getGpcOptOut();
171        }
172    }
173
174    function saveAndClose(preferences, source) {
175        preferences.source = source;
176        preferences.updatedAt = new Date().toISOString();
177
178        writePreferences(preferences);
179        applyPreferences(preferences, "apliiq_consent_update");
180        syncControls(preferences);
181        hideBanner();
182    }
183
184    function handleAction(action) {
185        if (action === "allow") {
186            saveAndClose(buildPreferences(true, false, "allow_all"), "allow_all");
187            return;
188        }
189
190        if (action === "reject") {
191            saveAndClose(buildPreferences(false, true, "reject_non_essential"), "reject_non_essential");
192            return;
193        }
194
195        if (action === "manage") {
196            expandPreferences();
197            return;
198        }
199
200        if (action === "save") {
201            var nonEssential = getElement("#apq-non-essential");
202            var saleShareOptOut = getElement("#apq-sale-share-opt-out");
203            var preferences = buildPreferences(
204                nonEssential ? nonEssential.checked : false,
205                saleShareOptOut ? saleShareOptOut.checked : true,
206                "saved_preferences"
207            );
208
209            saveAndClose(preferences, "saved_preferences");
210        }
211    }
212
213    function bindActions() {
214        var actionButtons = document.querySelectorAll("[data-apq-action]");
215
216        for (var i = 0; i < actionButtons.length; i += 1) {
217            actionButtons[i].addEventListener("click", function () {
218                handleAction(this.getAttribute("data-apq-action"));
219            });
220        }
221    }
222
223    function initialize() {
224        var savedPreferences = readPreferences();
225
226        bindActions();
227
228        if (savedPreferences) {
229            if (getGpcOptOut() && savedPreferences.saleSharingOptOut !== true) {
230                savedPreferences.saleSharingOptOut = true;
231                savedPreferences.source = "global_privacy_control";
232                savedPreferences.updatedAt = new Date().toISOString();
233                writePreferences(savedPreferences);
234            }
235
236            syncControls(savedPreferences);
237            applyPreferences(savedPreferences, "apliiq_consent_ready");
238            return;
239        }
240
241        var defaultPreferences = buildPreferences(
242            false,
243            getGpcOptOut(),
244            getGpcOptOut() ? "global_privacy_control" : "default_denied"
245        );
246
247        syncControls(defaultPreferences);
248        applyPreferences(defaultPreferences, "apliiq_consent_ready");
249        showBanner();
250    }
251
252    window.showBanner = showBanner;
253
254    if (document.readyState === "loading") {
255        document.addEventListener("DOMContentLoaded", initialize);
256    } else {
257        initialize();
258    }
259
260}(window, document));

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.