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 = '
\
Vous avez activé DNT, nous respectons votre choix.\
';
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 = '
Vous vous êtes opposé au dépôt de cookies de mesures d\'audience \
dans votre navigateur
';
}
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();