var tagAnalyticsCNIL = {}; tagAnalyticsCNIL.CookieConsent = function() { var gaProperty = 'UA-27090338-1'; // Désactive le tracking si le cookie d'Opt-out existe déjà. var disableStr = 'ga-disable-' + gaProperty; var firstCall = false; //Cette fonction retourne la date d'expiration du cookie de consentement function getCookieExpireDate() { // Le nombre de millisecondes que font 13 mois var cookieTimeout = 33696000000; var date = new Date(); date.setTime(date.getTime()+cookieTimeout); var expires = "; expires="+date.toGMTString(); return expires; } //Cette fonction vérifie si on a déjà obtenu le consentement de la personne qui visite le site. function checkFirstVisit(){ var consentCookie = getCookie('hasConsent'); if (!consentCookie) return true; } //Affiche une bannière d'information en haut de la page function showBanner(){ var bodytag = document.getElementsByTagName('body')[0]; var div = document.createElement('div'); div.setAttribute('id','cookie-banner'); // Le code HTML de la demande de consentement div.innerHTML = '
\ Ce site utilise Google Analytics.\ En continuant à naviguer, vous nous autorisez à déposer des cookies à des fins de \ mesure d\'audience. \ En savoir plus ou s\'opposer. \ [X]\
'; bodytag.insertBefore(div,bodytag.firstChild); document.getElementsByTagName('body')[0].className+=' cookiebanner'; createInformAndAskDiv(); } //Affiche une bannière d'information en haut de la page function showBannerDNTEnabled(){ var bodytag = document.getElementsByTagName('body')[0]; var div = document.createElement('div'); div.setAttribute('id','cookie-banner'); // Le code HTML de la demande de consentement div.innerHTML = ''; bodytag.insertBefore(div,bodytag.firstChild); document.getElementsByTagName('body')[0].className+=' cookiebanner'; createInformAndAskDiv(); } //Fonction utile pour récupérer un cookie à partir de son nom function getCookie(NameOfCookie) { if (document.cookie.length > 0) { begin = document.cookie.indexOf(NameOfCookie+"="); if (begin != -1) { begin += NameOfCookie.length+1; end = document.cookie.indexOf(";", begin); if (end == -1) end = document.cookie.length; return unescape(document.cookie.substring(begin, end)); } } return null; } //Récupère la version d'Internet Explorer, si c'est un autre navigateur la fonction renvoie -1 function getInternetExplorerVersion() { var rv = -1; if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } else if (navigator.appName == 'Netscape') { var ua = navigator.userAgent; var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } return rv; } //Effectue une demande de confirmation de DNT pour les utilisateurs d'IE function askDNTConfirmation() { var r = confirm("Le signal DoNotTrack de votre navigateur est activé, confirmez vous activer \ la fonction DoNotTrack?") return r; } //Vérifie la valeur de navigator.DoNotTrack pour savoir si le signal est activé et est à 1 function notToTrack() { console.log("notToTrack - " + navigator.doNotTrack + " - " + navigator.msDoNotTrack); if ( (navigator.doNotTrack && (navigator.doNotTrack=='yes' || navigator.doNotTrack=='1')) || ( navigator.msDoNotTrack && navigator.msDoNotTrack == '1') ) { var isIE = (getInternetExplorerVersion()!=-1); if (!isIE){ return true; } return false; } } //Si le signal est à 0 on considère que le consentement a déjà été obtenu function isToTrack() { if ( navigator.doNotTrack && (navigator.doNotTrack=='no' || navigator.doNotTrack==0 )) { return true; } } // Fonction d'effacement des cookies function delCookie(name ) { var path = ";path=" + "/"; var hostname = document.location.hostname; if (hostname.indexOf("www.") === 0) hostname = hostname.substring(4); var domain = ";domain=" + "."+hostname; var expiration = "Thu, 01-Jan-1970 00:00:01 GMT"; document.cookie = name + "=" + path + domain + ";expires=" + expiration; } // Efface tous les types de cookies utilisés par Google Analytics function deleteAnalyticsCookies() { var cookieNames = ["__utma","__utmb","__utmc","__utmt","__utmv","__utmz","_ga","_gat"]; for (var i=0; i
\ \
'; bodytag.insertBefore(div,bodytag.firstChild); } function isClickOnOptOut( evt) { // Si le noeud parent ou le noeud parent du parent est la bannière, on ignore le clic return(evt.target.parentNode.id == 'cookie-banner' || evt.target.parentNode.parentNode.id =='cookie-banner' || evt.target.id == 'optout-button') } function consent(evt) { // On vérifie qu'il ne s'agit pas d'un clic sur la bannière if (!isClickOnOptOut(evt) ){ if (!clickprocessed) { evt.preventDefault(); document.cookie = 'hasConsent=true; '+ getCookieExpireDate() +' ; path=/'; callGoogleAnalytics(function(){ evt.target.click(); clickprocessed = true; }); clickprocessed = true; } } } // Tag Google Analytics, cette version est avec le tag Universal Analytics function callGoogleAnalytics() { callGoogleAnalytics(null); } function callGoogleAnalytics(callback) { if (firstCall) return; else firstCall = true; /* Tag Universal Analytics */ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-27090338-1' , 'auto'); // Créer le tracker. ga('send', 'pageview',{ hitCallback: function() { if(callback){ callback(); } }} ); // Envoyer l'information qu'une page a été visitée. } return { // La fonction d'opt-out gaOptout: function() { document.cookie = disableStr + '=true;'+ getCookieExpireDate() +' ; path=/'; document.cookie = 'hasConsent=false;'+ getCookieExpireDate() +' ; path=/'; var div = document.getElementById('cookie-banner'); // Ci dessous le code de la bannière affichée une fois que l'utilisateur s'est opposé au dépot if ( div!= null ){ div.innerHTML = ''; } window[disableStr] = true; clickprocessed = true; deleteAnalyticsCookies(); }, showInform: function() { var div = document.getElementById("inform-and-ask"); div.style.display = ""; }, hideInform: function() { var div = document.getElementById("inform-and-ask"); div.style.display = "none"; if(!window[disableStr]){ var div = document.getElementById("cookie-banner"); div.style.display = "none"; document.cookie = 'hasConsent=true; '+ getCookieExpireDate() +' ; path=/'; callGoogleAnalytics(); } clickprocessed = true; }, start: function() { //Ce bout de code vérifie que le consentement n'a pas déjé été obtenu avant d'afficher la bannière var consentCookie = getCookie('hasConsent'); clickprocessed = false; if (!consentCookie) { //L'utilisateur n'a pas encore de cookie, on affiche la bannière. //Si il clique sur un autre élément que la bannière on enregistre le consentement if ( notToTrack() ) { //L'utilisateur a activé DoNotTrack. Do not ask for consent and just opt him out tagAnalyticsCNIL.CookieConsent.gaOptout(); showBannerDNTEnabled(); } else { if (isToTrack() ) { consent(); } else { if (window.addEventListener) { window.addEventListener("load", showBanner, false); document.addEventListener("click", consent, false); } else { window.attachEvent("onload", showBanner); document.attachEvent("onclick", consent); } } } } else { if (document.cookie.indexOf('hasConsent=false') > -1) { window[disableStr] = true; } else { callGoogleAnalytics(); } } } } }(); tagAnalyticsCNIL.CookieConsent.start();