// ===================================================== // evasteet.js — Professional GDPR & Google Consent Mode v2 // ===================================================== (function() { // ⚙️ ASETUKSET const GA_ID = "G-0GN62NR0TD"; // Sinun GA4 ID const STORAGE_KEY = "simppeli_cookie_consent"; // Määritellään dataLayer heti kärkeen (Consent Mode vaatii tämän) window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } // 1. Aseta oletustila: KAIKKI KIELLETTY (Denied) // Tämä ajetaan heti, jotta Google tietää odottaa lupaa. gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'wait_for_update': 500 }); // Asetetaan dataLayeriin tieto gtag('js', new Date()); gtag('config', GA_ID); // ===================================================== // LOGIIKKA // ===================================================== const CookieManager = { init: function() { this.loadScript(); // Lataa GA-skripti (mutta se tottelee 'denied'-tilaa) const savedConsent = localStorage.getItem(STORAGE_KEY); if (savedConsent) { // Jos lupa on jo annettu aiemmin, päivitetään tila this.updateConsent(JSON.parse(savedConsent)); } else { // Jos uusi kävijä, näytä popup this.createPopup(); } // Kuuntele footerin ja tietosuojasivun "Evästeasetukset" -linkkejä this.bindTriggers(); }, // Lataa Googlen scripti loadScript: function() { const script = document.createElement('script'); script.async = true; script.src = `https://www.googletagmanager.com/gtag/js?id=${GA_ID}`; document.head.appendChild(script); }, // Päivitä Googlen Consent-tila updateConsent: function(consentData) { const status = consentData.analytics ? 'granted' : 'denied'; gtag('consent', 'update', { 'ad_storage': status, 'ad_user_data': status, 'ad_personalization': status, 'analytics_storage': status }); console.log("🔒 Consent Mode updated:", status); }, // Tallenna valinta ja sulje saveSelection: function(analyticsAllowed) { const settings = { necessary: true, // Aina tosi analytics: analyticsAllowed, timestamp: new Date().toISOString() }; localStorage.setItem(STORAGE_KEY, JSON.stringify(settings)); this.updateConsent(settings); this.closePopup(); }, // Luo HTML dynaamisesti createPopup: function() { // Estä tuplapopupit if (document.getElementById('cookie-consent-overlay')) return; const html = `
`; document.body.insertAdjacentHTML('beforeend', html); // Event Listenerit napeille document.getElementById('btn-accept-all').addEventListener('click', () => this.saveSelection(true)); document.getElementById('btn-reject-all').addEventListener('click', () => this.saveSelection(false)); }, closePopup: function() { const overlay = document.getElementById('cookie-consent-overlay'); if (overlay) overlay.remove(); }, // Sido "Evästeasetukset" -napit (esim. footerissa tai tietosuojasivulla) bindTriggers: function() { document.addEventListener('click', (e) => { // Etsitään ID:t 'open-cookie-settings' tai 'open-cookie-settings-footer' if (e.target.id === 'open-cookie-settings' || e.target.id === 'open-cookie-settings-footer') { e.preventDefault(); this.createPopup(); // Avaa popup uudelleen } }); } }; // Käynnistä manageri kun DOM on valmis if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => CookieManager.init()); } else { CookieManager.init(); } })();