// ...existing code... (function () { const STORAGE_KEY = 'cookie_consent_v1'; // { necessary: true, analytics: bool } const banner = document.getElementById('cookieConsent'); const acceptBtn = document.getElementById('acceptAllCookies'); const saveBtn = document.getElementById('saveCookiePreferences'); const rejectBtn = document.getElementById('rejectAllCookies'); const analyticsCheckbox = document.getElementById('analyticsCookies'); function getPrefs() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY)); } catch (e) { return null; } } function setPrefs(p) { localStorage.setItem(STORAGE_KEY, JSON.stringify(p)); // optional server-readable cookie document.cookie = `cookie_consent=${encodeURIComponent(JSON.stringify(p))}; max-age=${60*60*24*365}; path=/; samesite=lax`; } function hideBanner() { if (!banner) return; banner.style.display = 'none'; banner.setAttribute('aria-hidden', 'true'); } function showBanner() { if (!banner) return; banner.style.display = 'block'; banner.setAttribute('aria-hidden', 'false'); } function loadAnalytics() { if (window.__analyticsLoaded) return; window.__analyticsLoaded = true; var s = document.createElement('script'); s.async = true; s.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX'; // <- REPLACE with your GA ID document.head.appendChild(s); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} window.gtag = window.gtag || gtag; gtag('js', new Date()); gtag('config', 'G-XXXXXXX', { 'anonymize_ip': true }); } function init() { const prefs = getPrefs(); if (!prefs) { showBanner(); } else { hideBanner(); if (prefs.analytics) loadAnalytics(); } if (acceptBtn) acceptBtn.addEventListener('click', () => { setPrefs({ necessary: true, analytics: true }); hideBanner(); loadAnalytics(); }); if (rejectBtn) rejectBtn.addEventListener('click', () => { setPrefs({ necessary: true, analytics: false }); hideBanner(); }); if (saveBtn) saveBtn.addEventListener('click', () => { const analytics = !!(analyticsCheckbox && analyticsCheckbox.checked); setPrefs({ necessary: true, analytics }); hideBanner(); if (analytics) loadAnalytics(); }); // Expose helper for other scripts (contact form) window.cookieConsent = { hasConsent: (type) => { const p = getPrefs(); if (!p) return false; return !!p[type]; } }; } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })();
Ready to simplify your Loi 25 compliance? Contact us for a free consultation and discover how we can help you protect your data and meet your legal obligations.
Fill out the form below and we'll contact you within 24 hours to schedule your free consultation.
Montreal, Quebec
Canada
Monday - Friday
9:00 AM - 5:00 PM EST
We respond to all requests within 24 hours
Official designation can be completed in 24-48 hours. Complete implementation of policies and procedures typically takes 2-4 weeks depending on your organization's complexity.
We offer flexible contracts: monthly, quarterly or annual. Long-term contracts include discounts and additional benefits.
We offer a 30-day satisfaction guarantee. If you're not satisfied with our services, we'll provide a full refund.
Absolutely! We can connect you with clients in your industry sector for references and testimonials.