/* IT_COOKIE_LAW.js v.1.0.0b
* Plugin che permette di adempiere alla normativa europea sui Cookie così come
* receptia dallo Stato Italiano.
* Per funzionare necessita di jQuery v.1
* Autori: Duccio Armenise e Marta Petrella, http://NemboWeb.com
* Maggiori info:
** https://github.com/NemboWeb/it_cookie_law (repository online)
** http://nemboweb.com/blog/didattica/cookie-law-vademecum (cookie law vademecum)
* Il codice è molto semplice, breve e ben commentato,
* ti raccomandiamo vivamente di leggerlo e comprenderne il funzionamento.
* LE PRIME VARIABILI SONO DA IMPOSTARE SECONDO LE TUE ESIGENZE!
*/
// QUESTO URL DEVE ESSERE QUELLO DELLA TUA Cookie policy (Informativa Estesa) sul TUO sito!
var cookiePolicyURL = "http://www.webstorm.it/policy.html"
// Nome del cookie impostato. Puoi cambiarlo a tuo piecere.
var acceptedCookieName = 'cookie_policy_accepted'
// Durata del cookie in giorni
var acceptedCookieLife = 3000
// Deve essere univoco all'interno della pagina
var infoBannerId = "cookie_info_breve"
// Deve essere univoco all'interno della pagina
var acceptButtonId = "cookie_accept_button"
// testi dei pulsanti
var acceptButtonText = "Accetto"
var infoLinkText = "Leggi informativa"
// Testo dell'informativa
var infoText = "Questo sito utilizza cookie tecnici non profilatori: cliccando su '"+acceptButtonText+"', proseguendo nella navigazione, effettuando lo scroll della pagina o altro tipo di interazione col sito, acconsenti all'utilizzo dei cookie. Per maggiori informazioni o per negare il consenso a tutti o ad alcuni cookie, consulta l'informativa cliccando sul link relativo."
// Stili CSS degli elementi
var divEsternoCSS = "background-color: rgba(0, 0, 0, 0.7); font-size: 0.8em; font-family: verdana,arial,tahoma,sans-serif; padding: 1em 0px; margin: 0px; width: 100%; position: fixed; left: 0px; top: 0px; z-index: 999999;";
var divInternoCSS = "margin: 0px auto; width: 80%; position: relative;";
var divInfoTextCSS = "color: rgb(255, 255, 255); display: block; float:left; width: 70%; line-height: 1.5em;";
var divButtonsCSS = "color: rgb(255, 255, 255); display:block; float:right; block; width: 25%; text-align: right; line-height: 1.2em;";
var acceptButtonCSS = "color: rgb(255, 153, 0); font-size: 1.1em; font-weight: bold; text-decoration: none; display: block; margin-bottom:1em;";
var infoLinkCSS = "color: rgb(255, 255, 255); text-decoration: underline; display: block;";
// Costruttore del banner informativo
var infoBanner = "
" +
"
" +
"
" +
infoText +
"
" +
"
" +
"
" +
"
";
// Programma principale
$(document).ready(function() {
// se è presente il cookie "acceptedCookieName" con valore 'true', allora
if (getCookie(acceptedCookieName) === 'true') { // i cookie sono stati accettati
optedIn(); // sblocca tutti gli elementi
} else { // cookie non accettati
optInHandler(); // mostra banner con informativa breve
}
});
// Gestione del visitatore che deve ancora dare il consenso
function optInHandler(){
$('body').append(infoBanner); // Inserisci il banner informativo
setTimeout(readUserInput, 2000) // aspetta due secondi per dar tempo all'utente di notare il banner
}
function readUserInput(){
// Accettazione mediante scroll
var accepted = false; // questa variabile serve a rilevare l'accettamento solo una volta
window.onscroll = function(e){
if (accepted == false){
accepted = true;
cookieOptIn();
}
}
// Accettazione con click su acceptButton
$('#'+acceptButtonId).click(function() {
accepted = true;
cookieOptIn();
});
}
// Salvataggio del consenso con cookie tecnico 'acceptedCookieName'
function cookieOptIn(){
setCookie(acceptedCookieName, 'true', acceptedCookieLife); //salvataggio del cookie sul browser dell'utente
$('#'+infoBannerId).hide();
optedIn();
}
// Sblocca gli script esterni ricaricandoli in fondo alla pagina HTML
function reloadJs(src) {
src = $('script[data-blocked="' + src + '"]').attr("data-blocked");
$('script[data-blocked="' + src + '"]').remove();
$('').attr('src', src).appendTo('body');
}
// Sblocca tutti gli elementi bloccati per l'utente che ha
// accettato esplicitamente i cookie (ha cioè fatto "opt-in")
function optedIn(){
// sblocca gli script esterni bloccati con 'data-blocked'
$("head script[data-blocked]").each(function(){
reloadJs($(this).attr('data-blocked'));
});
// sblocca iframes, immagini e altri elementi bloccati con 'data-blocked'
$("body [data-blocked]").each(function(){
$(this).attr('src', $(this).attr('data-blocked')).removeAttr('data-blocked') //ripristina l'attributo src
});
// sblocca gli script in embed bloccati con 'type=text/blocked'
$("head script[type='text/blocked']").each(function(){
$(this).attr('type', 'text/javascript'); //cambia il type dello script per renderlo eseguibile
$.globalEval($(this).html()); //esegui lo script
});
} // FINE!
// Quelle che seguono sono solo funzioni per rendere più semplice
// la lettura, scrittura e cancellazione dei cookie.
// Legge tutti i cookie e li inserisce nell'oggetto chiave/valore 'cookies'
function getCookies(){
var cookies = {};
var all = document.cookie; // Get all cookies in one big string
if (all === "")
return cookies;
var list = all.split("; ")
for (var i=0; i