// Cookie Declaration Script
(function() {
// Cookie data
const cookies = [
{
"name": "private_content_version",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "1 year"
},
{
"name": "form_key",
"domain": ".www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "29 days"
},
{
"name": "last_visited_store",
"domain": ".www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "29 days"
},
{
"name": "_ga_XLT3HCFTHB",
"domain": ".atida.fr",
"purpose": "Analytics",
"category": "Analytics",
"expiry": "1 year"
},
{
"name": "fpcLrKbBlcjz",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "9 hours"
},
{
"name": "_cfuvid",
"domain": ".empathy.co",
"purpose": "Functional",
"category": "Functional",
"expiry": "Session"
},
{
"name": "test_cookie",
"domain": ".doubleclick.net",
"purpose": "Functional",
"category": "Functional",
"expiry": "Session"
},
{
"name": "PHPSESSID",
"domain": ".www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "29 days"
},
{
"name": "_ga_QFFFKL90KT",
"domain": ".atida.fr",
"purpose": "Analytics",
"category": "Analytics",
"expiry": "1 year"
},
{
"name": "cdv",
"domain": "recommender.scarabresearch.com",
"purpose": "Marketing",
"category": "Marketing",
"expiry": "1 year"
},
{
"name": "_gcl_au",
"domain": ".atida.fr",
"purpose": "Marketing",
"category": "Marketing",
"expiry": "3 months"
},
{
"name": "section_data_ids",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "29 days"
},
{
"name": "scarab.visitor",
"domain": ".atida.fr",
"purpose": "Marketing",
"category": "Marketing",
"expiry": "Session"
},
{
"name": "_ga_12345",
"domain": ".atida.fr",
"purpose": "Analytics",
"category": "Analytics",
"expiry": "1 year"
},
{
"name": "topsort_uuid",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "1 year"
},
{
"name": "BCConsent",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "6 months"
},
{
"name": "BCPurpose",
"domain": "www.atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "6 months"
},
{
"name": "_ga",
"domain": ".atida.fr",
"purpose": "Analytics",
"category": "Analytics",
"expiry": "1 year"
},
{
"name": "s",
"domain": "recommender.scarabresearch.com",
"purpose": "Marketing",
"category": "Marketing",
"expiry": "Session"
},
{
"name": "cf_clearance",
"domain": ".atida.fr",
"purpose": "Functional",
"category": "Functional",
"expiry": "1 year"
}
];
// Unique namespace to avoid conflicts
const namespace = 'vp-cookie-declaration';
const uniqueId = `${namespace}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
// CSS styles - scoped to our namespace
const styles = `
#${uniqueId} {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
font-size: 14px !important;
line-height: 1.4 !important;
color: #333 !important;
box-sizing: border-box !important;
}
#${uniqueId} * {
box-sizing: border-box !important;
}
.${namespace}-consent-status {
margin: 0 0 20px 0 !important;
padding: 15px !important;
background-color: #f5f5f5 !important;
border: 1px solid #ddd !important;
border-radius: 5px !important;
font-family: inherit !important;
font-size: inherit !important;
line-height: 1.5 !important;
}
.${namespace}-consent-status a {
color: #007bff !important;
text-decoration: none !important;
}
.${namespace}-consent-status a:hover {
text-decoration: underline !important;
}
.${namespace}-container {
font-family: inherit !important;
margin: 0 !important;
padding: 0 !important;
}
.${namespace}-no-cookies {
padding: 20px !important;
text-align: center !important;
background-color: #f8f9fa !important;
border: 1px solid #ddd !important;
border-radius: 5px !important;
margin: 0 !important;
font-family: inherit !important;
}
.${namespace}-category-section {
margin: 0 0 40px 0 !important;
padding: 0 !important;
}
.${namespace}-category-header {
color: #333 !important;
margin: 0 0 10px 0 !important;
padding: 0 !important;
font-size: 1.2em !important;
font-weight: bold !important;
font-family: inherit !important;
border: none !important;
background: none !important;
}
.${namespace}-category-description {
color: #666 !important;
margin: 0 0 15px 0 !important;
padding: 0 !important;
line-height: 1.5 !important;
font-family: inherit !important;
font-size: inherit !important;
}
.${namespace}-table {
width: 100% !important;
border-collapse: collapse !important;
margin: 10px 0 30px 0 !important;
padding: 0 !important;
background: #fff !important;
font-family: inherit !important;
font-size: inherit !important;
}
.${namespace}-table thead {
background: none !important;
}
.${namespace}-table th {
background-color: #e9ecef !important;
padding: 10px !important;
border: 1px solid #ddd !important;
font-weight: bold !important;
font-family: inherit !important;
font-size: inherit !important;
text-align: left !important;
color: #333 !important;
}
.${namespace}-table td {
padding: 10px !important;
border: 1px solid #ddd !important;
font-family: inherit !important;
font-size: inherit !important;
vertical-align: top !important;
color: #333 !important;
}
.${namespace}-table tr:nth-child(even) {
background-color: #f8f9fa !important;
}
.${namespace}-table tr:nth-child(odd) {
background-color: #ffffff !important;
}
.${namespace}-table tbody tr:hover {
background-color: #e8f4fd !important;
}
`;
// Translations
const translations = {
en: {
name: "Name",
domain: "Domain",
purpose: "Purpose",
expiry: "Expiry",
session: "Session",
noCookies: "No cookies found",
currentState: "Your current state:",
consentId: "Your consent ID:",
consentDate: "Consent date:",
noConsent: "No consent given",
acceptAll: "Accept All",
rejectAll: "Reject All",
partialConsent: "Partial Consent",
preferences: "Preferences",
statistics: "Statistics",
marketing: "Marketing",
updatedBy: "Cookie declaration updated by",
functional: "Functional",
analytics: "Analytics",
unclassified: "Unclassified",
functionalDesc: "Functional cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.",
preferencesDesc: "Preference cookies enable a website to remember information that changes the way the website behaves or looks, like your preferred language or the region that you are in.",
analyticsDesc: "Analytics cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.",
marketingDesc: "Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.",
unclassifiedDesc: "Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies."
},
es: {
name: "Nombre",
domain: "Dominio",
purpose: "Propósito",
expiry: "Expiración",
session: "Sesión",
noCookies: "No se encontraron cookies",
currentState: "Tu estado actual:",
consentId: "Tu ID de consentimiento:",
consentDate: "Fecha de consentimiento:",
noConsent: "No se ha dado consentimiento",
acceptAll: "Aceptar Todo",
rejectAll: "Rechazar Todo",
partialConsent: "Consentimiento Parcial",
preferences: "Preferencias",
statistics: "Estadísticas",
marketing: "Marketing",
updatedBy: "Declaración de cookies actualizada por",
functional: "Funcionales",
analytics: "Analíticas",
unclassified: "Sin clasificar",
functionalDesc: "Las cookies funcionales ayudan a que un sitio web sea utilizable habilitando funciones básicas como la navegación de páginas y el acceso a áreas seguras del sitio web. El sitio web no puede funcionar correctamente sin estas cookies.",
preferencesDesc: "Las cookies de preferencias permiten que un sitio web recuerde información que cambia la forma en que se comporta o se ve el sitio web, como su idioma preferido o la región en la que se encuentra.",
analyticsDesc: "Las cookies analíticas ayudan a los propietarios de sitios web a comprender cómo interactúan los visitantes con los sitios web recopilando e informando información de forma anónima.",
marketingDesc: "Las cookies de marketing se utilizan para rastrear visitantes en sitios web. La intención es mostrar anuncios que sean relevantes y atractivos para el usuario individual y, por lo tanto, más valiosos para editores y anunciantes terceros.",
unclassifiedDesc: "Las cookies sin clasificar son cookies que estamos en proceso de clasificar, junto con los proveedores de cookies individuales."
},
fr: {
name: "Nom",
domain: "Domaine",
purpose: "Objectif",
expiry: "Expiration",
session: "Session",
noCookies: "Aucun cookie trouvé",
currentState: "Votre état actuel:",
consentId: "Votre ID de consentement:",
consentDate: "Date de consentement:",
noConsent: "Aucun consentement donné",
acceptAll: "Tout Accepter",
rejectAll: "Tout Rejeter",
partialConsent: "Consentement Partiel",
preferences: "Préférences",
statistics: "Statistiques",
marketing: "Marketing",
updatedBy: "Déclaration de cookies mise à jour par",
functional: "Fonctionnels",
analytics: "Analytiques",
unclassified: "Non classifiés",
functionalDesc: "Les cookies fonctionnels aident à rendre un site web utilisable en activant des fonctions de base comme la navigation dans les pages et l'accès aux zones sécurisées du site web. Le site web ne peut pas fonctionner correctement sans ces cookies.",
preferencesDesc: "Les cookies de préférences permettent à un site web de retenir des informations qui modifient la façon dont le site web se comporte ou s'affiche, comme votre langue préférée ou la région dans laquelle vous vous trouvez.",
analyticsDesc: "Les cookies analytiques aident les propriétaires de sites web à comprendre comment les visiteurs interagissent avec les sites web en collectant et en rapportant des informations de manière anonyme.",
marketingDesc: "Les cookies marketing sont utilisés pour suivre les visiteurs sur les sites web. L'intention est d'afficher des publicités qui sont pertinentes et engageantes pour l'utilisateur individuel et donc plus précieuses pour les éditeurs et les annonceurs tiers.",
unclassifiedDesc: "Les cookies non classifiés sont des cookies que nous sommes en train de classifier, avec les fournisseurs de cookies individuels."
},
de: {
name: "Name",
domain: "Domain",
purpose: "Zweck",
expiry: "Ablaufzeit",
session: "Sitzung",
noCookies: "Keine Cookies gefunden",
currentState: "Ihr aktueller Status:",
consentId: "Ihre Einverständnis-ID:",
consentDate: "Einverständnisdatum:",
noConsent: "Keine Einverständnis gegeben",
acceptAll: "Alle Akzeptieren",
rejectAll: "Alle Ablehnen",
partialConsent: "Teilweise Einverständnis",
preferences: "Präferenzen",
statistics: "Statistiken",
marketing: "Marketing",
updatedBy: "Cookie-Erklärung aktualisiert von",
functional: "Funktional",
analytics: "Analytisch",
unclassified: "Nicht klassifiziert",
functionalDesc: "Funktionale Cookies helfen dabei, eine Website nutzbar zu machen, indem sie grundlegende Funktionen wie Seitennavigation und Zugang zu sicheren Bereichen der Website ermöglichen. Die Website kann ohne diese Cookies nicht ordnungsgemäß funktionieren.",
preferencesDesc: "Präferenz-Cookies ermöglichen es einer Website, sich Informationen zu merken, die das Verhalten oder Aussehen der Website verändern, wie Ihre bevorzugte Sprache oder die Region, in der Sie sich befinden.",
analyticsDesc: "Analytische Cookies helfen Website-Besitzern zu verstehen, wie Besucher mit Websites interagieren, indem sie Informationen anonym sammeln und melden.",
marketingDesc: "Marketing-Cookies werden verwendet, um Besucher über Websites hinweg zu verfolgen. Die Absicht ist, Anzeigen zu zeigen, die für den einzelnen Benutzer relevant und ansprechend sind und daher für Verleger und Drittanbieter wertvoller sind.",
unclassifiedDesc: "Nicht klassifizierte Cookies sind Cookies, die wir zusammen mit den Anbietern einzelner Cookies gerade klassifizieren."
},
it: {
name: "Nome",
domain: "Dominio",
purpose: "Scopo",
expiry: "Scadenza",
session: "Sessione",
noCookies: "Nessun cookie trovato",
currentState: "Il tuo stato attuale:",
consentId: "Il tuo ID di consenso:",
consentDate: "Data del consenso:",
noConsent: "Nessun consenso dato",
acceptAll: "Accetta Tutto",
rejectAll: "Rifiuta Tutto",
partialConsent: "Consenso Parziale",
preferences: "Preferenze",
statistics: "Statistiche",
marketing: "Marketing",
updatedBy: "Dichiarazione dei cookie aggiornata da",
functional: "Funzionali",
analytics: "Analitici",
unclassified: "Non classificati",
functionalDesc: "I cookie funzionali aiutano a rendere un sito web utilizzabile abilitando funzioni di base come la navigazione delle pagine e l'accesso ad aree sicure del sito web. Il sito web non può funzionare correttamente senza questi cookie.",
preferencesDesc: "I cookie delle preferenze consentono a un sito web di ricordare informazioni che cambiano il modo in cui il sito web si comporta o appare, come la lingua preferita o la regione in cui ti trovi.",
analyticsDesc: "I cookie analitici aiutano i proprietari di siti web a capire come i visitatori interagiscono con i siti web raccogliendo e riportando informazioni in modo anonimo.",
marketingDesc: "I cookie di marketing vengono utilizzati per tracciare i visitatori sui siti web. L'intenzione è quella di visualizzare annunci che sono rilevanti e coinvolgenti per il singolo utente e quindi più preziosi per editori e inserzionisti di terze parti.",
unclassifiedDesc: "I cookie non classificati sono cookie che stiamo classificando, insieme ai fornitori di singoli cookie."
},
ca: {
name: "Nom",
domain: "Domini",
purpose: "Propòsit",
expiry: "Caducitat",
session: "Sessió",
noCookies: "No s'han trobat cookies",
currentState: "El teu estat actual:",
consentId: "El teu ID de consentiment:",
consentDate: "Data del consentiment:",
noConsent: "Cap consentiment donat",
acceptAll: "Acceptar Tot",
rejectAll: "Rebutjar Tot",
partialConsent: "Consentiment Parcial",
preferences: "Preferències",
statistics: "Estadístiques",
marketing: "Màrqueting",
updatedBy: "Declaració de cookies actualitzada per",
functional: "Funcionals",
analytics: "Analítiques",
unclassified: "Sense classificar",
functionalDesc: "Les cookies funcionals ajuden a fer que un lloc web sigui utilitzable habilitant funcions bàsiques com la navegació de pàgines i l'accés a àrees segures del lloc web. El lloc web no pot funcionar correctament sense aquestes cookies.",
preferencesDesc: "Les cookies de preferències permeten que un lloc web recordi informació que canvia la manera com el lloc web es comporta o es veu, com el teu idioma preferit o la regió on et trobes.",
analyticsDesc: "Les cookies analítiques ajuden els propietaris de llocs web a entendre com els visitants interactuen amb els llocs web recollint i informant informació de manera anònima.",
marketingDesc: "Les cookies de màrqueting s'utilitzen per rastrejar visitants a través de llocs web. La intenció és mostrar anuncis que siguin rellevants i atractius per a l'usuari individual i, per tant, més valuosos per a editors i anunciants de tercers.",
unclassifiedDesc: "Les cookies sense classificar són cookies que estem en procés de classificar, juntament amb els proveïdors de cookies individuals."
},
ro: {
name: "Nume",
domain: "Domeniu",
purpose: "Scop",
expiry: "Expirare",
session: "Sesiune",
noCookies: "Nu s-au găsit cookie-uri",
currentState: "Starea ta actuală:",
consentId: "ID-ul tău de consimțământ:",
consentDate: "Data consimțământului:",
noConsent: "Niciun consimțământ acordat",
acceptAll: "Acceptă Tot",
rejectAll: "Respinge Tot",
partialConsent: "Consimțământ Parțial",
preferences: "Preferințe",
statistics: "Statistici",
marketing: "Marketing",
updatedBy: "Declarația de cookie-uri actualizată de",
functional: "Funcționale",
analytics: "Analitice",
unclassified: "Neclasificate",
functionalDesc: "Cookie-urile funcționale ajută la utilizarea unui site web prin activarea funcțiilor de bază, cum ar fi navigarea paginilor și accesul la zonele sigure ale site-ului web. Site-ul web nu poate funcționa corect fără aceste cookie-uri.",
preferencesDesc: "Cookie-urile de preferințe permit unui site web să rețină informații care schimbă modul în care site-ul web se comportă sau arată, cum ar fi limba preferată sau regiunea în care vă aflați.",
analyticsDesc: "Cookie-urile analitice ajută proprietarii de site-uri web să înțeleagă cum interacționează vizitatorii cu site-urile web prin colectarea și raportarea informațiilor în mod anonim.",
marketingDesc: "Cookie-urile de marketing sunt utilizate pentru a urmări vizitatorii pe site-urile web. Intenția este să afișeze reclame care sunt relevante și atractive pentru utilizatorul individual și, prin urmare, mai valoroase pentru editori și agenții de publicitate terțe.",
unclassifiedDesc: "Cookie-urile neclasificate sunt cookie-uri pe care le clasificăm, împreună cu furnizorii de cookie-uri individuale."
}
};
// Inject CSS styles
function injectStyles() {
const existingStyle = document.getElementById(`${namespace}-styles`);
if (existingStyle) {
return; // Styles already injected
}
const styleElement = document.createElement('style');
styleElement.id = `${namespace}-styles`;
styleElement.textContent = styles;
document.head.appendChild(styleElement);
}
// Get language from URL (e.g., /en/, /es/) or browser
function getLanguage() {
// First try to get from URL path
const pathMatch = window.location.pathname.match(/\/(\w{2})\//i);
if (pathMatch && translations[pathMatch[1].toLowerCase()]) {
return pathMatch[1].toLowerCase();
}
// Then try navigator language
const browserLang = navigator.language || navigator.userLanguage;
if (browserLang) {
const langCode = browserLang.substring(0, 2).toLowerCase();
if (translations[langCode]) {
return langCode;
}
}
// Default to English
return 'en';
}
// Function to get cookie value by name
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
return null;
}
// Function to get consent date from BCConsentDate cookie
function getConsentDate() {
const consentDate = getCookie('BCConsentDate');
if (consentDate) {
// If the cookie contains a timestamp, convert it to a readable date
const timestamp = parseInt(consentDate);
if (!isNaN(timestamp)) {
return new Date(timestamp).toLocaleDateString();
}
// If it's already a formatted date string, return as is
return consentDate;
}
return null;
}
// Function to get consent information
function getConsentInfo() {
const bcConsent = getCookie('BCConsent');
const bcPurpose = getCookie('BCPurpose');
const consentInfo = {
decision: null,
id: null,
date: null,
details: null
};
// Get consent ID from localStorage
try {
consentInfo.id = localStorage.getItem('uuid');
} catch (e) {
// localStorage might not be available
consentInfo.id = null;
}
if (!bcConsent || !bcPurpose) {
consentInfo.decision = 'noConsent';
return consentInfo;
}
consentInfo.date = getConsentDate();
if (bcConsent === 'false') {
consentInfo.decision = 'rejectAll';
} else if (bcConsent === 'true') {
if (bcPurpose === '111') {
consentInfo.decision = 'acceptAll';
} else if (bcPurpose === '000') {
consentInfo.decision = 'rejectAll';
} else {
consentInfo.decision = 'partialConsent';
// Parse individual purposes
const purposes = bcPurpose.split('');
consentInfo.details = {
preferences: purposes[0] === '1',
statistics: purposes[1] === '1',
marketing: purposes[2] === '1'
};
}
}
return consentInfo;
}
// Function to create consent status display
function createConsentStatus() {
const lang = getLanguage();
const t = translations[lang];
const consentInfo = getConsentInfo();
const statusDiv = document.createElement('div');
statusDiv.className = `${namespace}-consent-status`;
let statusText = '';
if (consentInfo.decision === 'noConsent') {
statusText = `${t.currentState} ${t.noConsent}
`;
} else {
let decisionText = '';
if (consentInfo.decision === 'acceptAll') {
decisionText = t.acceptAll;
} else if (consentInfo.decision === 'rejectAll') {
decisionText = t.rejectAll;
} else if (consentInfo.decision === 'partialConsent') {
const acceptedPurposes = [];
if (consentInfo.details.preferences) acceptedPurposes.push(t.preferences);
if (consentInfo.details.statistics) acceptedPurposes.push(t.statistics);
if (consentInfo.details.marketing) acceptedPurposes.push(t.marketing);
decisionText = acceptedPurposes.length > 0
? `${t.partialConsent} (${acceptedPurposes.join(', ')})`
: t.rejectAll;
}
statusText = `${t.currentState} ${decisionText}
`;
if (consentInfo.id) {
statusText += `${t.consentId} ${consentInfo.id}
`;
}
if (consentInfo.date) {
statusText += `${t.consentDate} ${consentInfo.date}
`;
}
}
statusText += `
${t.updatedBy} Visible Privacy`;
statusDiv.innerHTML = statusText;
return statusDiv;
}
// Function to group cookies by category
function groupCookiesByCategory(cookies) {
const categories = {
functional: [],
preferences: [],
analytics: [],
marketing: [],
unclassified: []
};
cookies.forEach(cookie => {
const category = (cookie.category || cookie.purpose || 'unclassified').toLowerCase();
// Map common category names to our standard categories
switch (category) {
case 'functional':
case 'necessary':
case 'essential':
categories.functional.push(cookie);
break;
case 'preferences':
case 'preference':
categories.preferences.push(cookie);
break;
case 'analytics':
case 'analytical':
case 'statistics':
case 'performance':
categories.analytics.push(cookie);
break;
case 'marketing':
case 'advertising':
case 'targeting':
categories.marketing.push(cookie);
break;
default:
categories.unclassified.push(cookie);
}
});
return categories;
}
// Function to create a table for a specific category
function createCategoryTable(categoryCookies, t) {
if (categoryCookies.length === 0) {
return null;
}
const table = document.createElement('table');
table.className = `${namespace}-table`;
// Add header row
const headerRow = table.createTHead().insertRow();
['name', 'domain', 'purpose', 'expiry'].forEach(key => {
const th = document.createElement('th');
th.textContent = t[key];
headerRow.appendChild(th);
});
// Add data rows
const tbody = table.createTBody();
categoryCookies.forEach((cookie) => {
const row = tbody.insertRow();
const nameCell = row.insertCell();
nameCell.textContent = cookie.name || '';
const domainCell = row.insertCell();
domainCell.textContent = cookie.domain || '';
const purposeCell = row.insertCell();
purposeCell.textContent = cookie.purpose || '';
const expiryCell = row.insertCell();
expiryCell.textContent = cookie.expiry || '';
});
return table;
}
// Function to create a category section
function createCategorySection(categoryKey, categoryCookies, t) {
if (categoryCookies.length === 0) {
return null;
}
const section = document.createElement('div');
section.className = `${namespace}-category-section`;
// Create category header
const header = document.createElement('h3');
header.className = `${namespace}-category-header`;
header.textContent = `${t[categoryKey]} (${categoryCookies.length})`;
// Create category description
const description = document.createElement('p');
description.className = `${namespace}-category-description`;
description.textContent = t[categoryKey + 'Desc'];
// Create category table
const table = createCategoryTable(categoryCookies, t);
section.appendChild(header);
section.appendChild(description);
if (table) {
section.appendChild(table);
}
return section;
}
// Create and insert the categorized tables at the script location
function createCookieTable() {
const lang = getLanguage();
const t = translations[lang];
const currentScript = document.currentScript;
// Inject styles first
injectStyles();
// Create main container with unique ID
const mainContainer = document.createElement('div');
mainContainer.id = uniqueId;
// Create consent status display
const statusDiv = createConsentStatus();
// Create container for all cookie sections
const container = document.createElement('div');
container.className = `${namespace}-container`;
if (cookies.length === 0) {
// No cookies message
const noCookiesDiv = document.createElement('div');
noCookiesDiv.className = `${namespace}-no-cookies`;
noCookiesDiv.textContent = t.noCookies;
container.appendChild(noCookiesDiv);
} else {
// Group cookies by category
const categorizedCookies = groupCookiesByCategory(cookies);
// Create sections for each category in order
const categoryOrder = ['functional', 'preferences', 'analytics', 'marketing', 'unclassified'];
categoryOrder.forEach(categoryKey => {
const categoryCookies = categorizedCookies[categoryKey];
const section = createCategorySection(categoryKey, categoryCookies, t);
if (section) {
container.appendChild(section);
}
});
}
// Assemble the structure
mainContainer.appendChild(statusDiv);
mainContainer.appendChild(container);
// Insert at script location
currentScript.parentNode.insertBefore(mainContainer, currentScript.nextSibling);
}
// Run when DOM is fully loaded
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', createCookieTable);
} else {
createCookieTable();
}
})();