MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
// ************************************************************************* | |||
// * CookieGuard v1.1 * | |||
// * * | |||
// * (c) 2012 Ultimateweb LTD <[email protected]> * | |||
// * All Rights Reserved. * | |||
// * * | |||
// * This program is free software: you can redistribute it and/or modify * | |||
// * it under the terms of the GNU General Public License as published by * | |||
// * the Free Software Foundation, either version 3 of the License, or * | |||
// * (at your option) any later version. * | |||
// * * | |||
// * This program is distributed in the hope that it will be useful, * | |||
// * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |||
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |||
// * GNU General Public License for more details. * | |||
// * * | |||
// * GNU General Public License <http://www.gnu.org/licenses/>. * | |||
// * * | |||
// ************************************************************************* | |||
// CHANGELOG | |||
// | |||
// 1.1.0 | |||
// - Multilanguage (spanish and german translations included). | |||
// - Responsive (CSS based in percentages) | |||
// - Script Cookies with 2 expiration days | |||
// | |||
(function ($) { | |||
if (typeof $.cookieguard === 'undefined') { | |||
$.cookieguard = function (options) { | |||
// Defaults | |||
var defaults = { | |||
cookieDeleteDelay: 100, | |||
messageShowDelay: 1000, | |||
messageHideDelay: null, | |||
answeredHideDelay: 2000, | |||
slideSpeed: 500, | |||
cookieExpirationDays: 2, | |||
cookiePrefix: 'cookieguard_', | |||
alertOfUnknown: true | |||
}; | |||
// Language detection | |||
var userLang = navigator.language || navigator.userLanguage; | |||
userLang=userLang.split('-')[0]; | |||
if (options!=null) { if (options.userLang!=null) userLang = options.userLang; } | |||
// Default Messages (English) | |||
var messages = { | |||
bannerTitle: ' This website uses cookies to track usage and preferences.', | |||
bannerDescription: 'You may choose to block non-essential and unknown cookies.', | |||
cookiesEssential: 'Essential Cookies <span>- The site owner has indicated that these are essential to the running of the site.</span>', | |||
cookiesNonEssential: 'Non-Essential Cookies <span>- The site owner has approved these cookies but you may turn them off.</span>', | |||
cookiesUnknown: 'Unknown Cookies <span>- The site owner has not approved these cookies.</span>', | |||
cookiesNewTitle: 'Cookie Guard has found new cookies.', | |||
cookiesNewDescription: 'You may choose to block these cookies.', | |||
cookiesBlocked: 'Non-essential and unknown cookies have now been blocked on this site.', | |||
cookiesAllowed: 'The listed cookies have now been allowed on this site.', | |||
buttonShow: 'Show', | |||
buttonHide: 'Hide', | |||
buttonBlock: 'Block', | |||
buttonAllow: 'Allow', | |||
buttonOK: 'Okay', | |||
cookieGuardName: 'Cookie Guard', | |||
cookieGuardDescription: 'This cookie is essential for storing the status of your cookie choices whilst using this site.' | |||
}; | |||
// German Messages | |||
if (userLang === "de") { | |||
delete messages; | |||
var messages = { | |||
bannerTitle: 'Wir verwenden Cookies zur Üwachung von Benutzung und Präferenzen.', | |||
bannerDescription: 'Die unwesentlichen oder unbekannten Cookies können Sie blockieren.', | |||
cookiesEssential: 'Wesentliche Cookies <span>- Diese sind von entscheidender Bedeutung für die volle Funktionsfähigkeit von der Webseite.</span>', | |||
cookiesNonEssential: 'Unwesentliche Cookies <span>- Unser Webmaster hat diese Cookies zugelassen, aber Sie könen diese ausschalten.</span>', | |||
cookiesUnknown: 'Unbekannte Cookies <span>- unser Webmaster hat diese nicht genehmigt.</span>', | |||
cookiesNewTitle: 'Cookie Guard hat neue Cookies entdeckt.', | |||
cookiesNewDescription: 'Sie könen diese ausschalten.', | |||
cookiesBlocked: 'Unwesentliche und unbekannten Cookies Jetzt auf dieser Seite blockiert werde.', | |||
cookiesAllowed: 'Die aufgeführten Cookies sind nun auf dieser Webseite erlaubt ist.', | |||
buttonShow: 'Show', | |||
buttonHide: 'Hide', | |||
buttonBlock: 'Block', | |||
buttonAllow: 'Erlauben', | |||
buttonOK: 'Okay', | |||
cookieGuardName: 'Cookie Guard', | |||
cookieGuardDescription: 'Diese Cookie speichert Ihre Auswahl verschiedener Cookies (blockiert/erlaubt) während des Surfens von der Webseite.' | |||
}; | |||
} | |||
// Spanish Messages | |||
if (userLang === "es") { | |||
delete messages; | |||
var messages = { | |||
bannerTitle: 'Esta web emplea cookies para el seguimiento de uso y preferencias.', | |||
bannerDescription: 'Escoja entre bloquear o permitir las cookies no esenciales y las desconocidas.', | |||
cookiesEssential: 'Cookies Esenciales <span>- nuestro webmaster ha indicado que las siguientes cookies son esenciales para el funcionamiento de la web.</span>', | |||
cookiesNonEssential: 'Cookies No Esenciales <span>- nuestro webmaster ha aprobado las siguientes cookies, pero usted puede bloquearlas.</span>', | |||
cookiesUnknown: 'Cookies Desconocidas <span>- nuestro webmaster no ha aprobado las siguientes cookies.</span>', | |||
cookiesNewTitle: 'Cookie Guard ha encontrado nuevas cookies.', | |||
cookiesNewDescription: 'Usted puede bloquear estas nuevas cookies.', | |||
cookiesBlocked: 'Cookies no esenciales y desconocidas ahora van a ser bloquedas en nuestra web.', | |||
cookiesAllowed: 'Cookies no esenciales y desconocidas han sido permitirdas por usted.', | |||
buttonShow: 'Mostrar', | |||
buttonHide: 'Ocultar', | |||
buttonBlock: 'Bloquear', | |||
buttonAllow: 'Permitir', | |||
buttonOK: 'Okay', | |||
cookieGuardName: 'Cookie Guard', | |||
cookieGuardDescription: 'Esta cookie guarda sus preferencias respecto a las distintas cookies (bloqueada/permitida) durante su navegación por nuestra web.' | |||
}; | |||
} | |||
var buttons = { | |||
buttonsConfigDefault: '<div id="cookieButtons"><a href="#" id="showCookies">' + messages.buttonShow + '</a>' + '<a href="#" id="authoriseCookies">' + messages.buttonAllow + '</a>' + '<a href="#" id="denyCookies">' + messages.buttonBlock + '</a></div>', | |||
buttonsOK: '<div id="cookieButtons"><a href="#" id="showCookies">'+messages.buttonShow+'</a><a href="#" id="cookieGuardOkay">'+messages.buttonOK+'</a></div>' | |||
}; | |||
$.cookieguard.settings = $.extend(defaults, messages, buttons, options, { 'cookiesUsed': new Array(), 'messageHideTimeout': null }); | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies === 'undefined') { | |||
$.cookieguard.cookies = function () { }; | |||
} | |||
if (typeof $.cookieguard.cookies.read === 'undefined') { | |||
$.cookieguard.cookies.read = function (name) { | |||
var nameEQ = name + "="; | |||
var ca = document.cookie.split(';'); | |||
for (var i = 0; i < ca.length; i++) { | |||
var c = ca[i]; | |||
while (c.charAt(0) == ' ') c = c.substring(1, c.length); | |||
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); | |||
} | |||
return null; | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.create === 'undefined') { | |||
$.cookieguard.cookies.create = function (name, value, days, domain, path) { | |||
if (domain == undefined || domain == null) | |||
domain = document.domain; | |||
if (path == undefined || path == null) | |||
path = "/"; | |||
if (days) { | |||
var date = new Date(); | |||
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); | |||
var expires = "; expires=" + date.toGMTString(); | |||
} | |||
else var expires = ""; | |||
document.cookie = name + "=" + value + expires + "; domain=" + domain + "; path=" + path; | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.erase === 'undefined') { | |||
$.cookieguard.cookies.erase = function (name) { | |||
$.cookieguard.cookies.create(name, "", -1, "", ""); | |||
$.cookieguard.cookies.create(name, "", -1, ""); | |||
$.cookieguard.cookies.create(name, "", -1); | |||
$.cookieguard.cookies.create(name, "", -1, "." + document.domain); | |||
if (document.domain.substr(0, 4) == '.www.') | |||
$.cookieguard.cookies.create(name, "", -1, document.domain.substr(1)); | |||
if (document.domain.substr(0, 4) == 'www.') | |||
$.cookieguard.cookies.create(name, "", -1, "." + document.domain.substr(4)); | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.add === 'undefined') { | |||
$.cookieguard.cookies.add = function (name, cookie, description, essential) { | |||
var cookies = cookie.split(","); | |||
for (var i = 0; i < cookies.length; i++) { | |||
$.cookieguard.settings.cookiesUsed.push({ 'name': name, 'cookie': cookies[i], 'description': description, 'essential': essential }); | |||
if (essential) | |||
$.cookieguard.cookies.storeAllowedCookie(cookies[i]); | |||
} | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.findUnknownCookies === 'undefined') { | |||
$.cookieguard.cookies.findUnknownCookies = function () { | |||
var allowedCookies = $.cookieguard.cookies.getAllowedCookies(); | |||
var disallowedCookies = $.cookieguard.cookies.getDisallowedCookies(); | |||
var definedCookies = $.cookieguard.settings.cookiesUsed; | |||
var allCookies = new Array(); | |||
var unknownCookies = new Array(); | |||
if (document.cookie && document.cookie != '') { | |||
var split = document.cookie.split(';'); | |||
for (var i = 0; i < split.length; i++) { | |||
var name_value = split[i].split("="); | |||
name_value[0] = name_value[0].replace(/^ /, ''); | |||
allCookies.push(decodeURIComponent(name_value[0])); | |||
} | |||
} | |||
for (var i = 0; i < allCookies.length; i++) { | |||
var cookieFound = false; | |||
if (allowedCookies != null) { | |||
for (var j = 0; j < allowedCookies.length; j++) { | |||
if (allowedCookies[j].indexOf('*') === 0 && allowedCookies[j].match("\\*$") == '*') { | |||
if (allCookies[i].indexOf(allowedCookies[j].replace('*', '')) > -1) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (allowedCookies[j].indexOf('*') === 0) { | |||
if (allCookies[i].match(allowedCookies[j].replace('*', '') + '$') == allowedCookies[j].replace('*', '')) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (allowedCookies[j].match("\\*$") == "*") { | |||
if (allCookies[i].indexOf(allowedCookies[j].replace('*', '')) === 0) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (allowedCookies[j] == allCookies[i]) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
} | |||
if (!cookieFound) { | |||
if (disallowedCookies != null) { | |||
for (var j = 0; j < disallowedCookies.length; j++) { | |||
if (disallowedCookies[j].indexOf('*') === 0 && disallowedCookies[j].match("\\*$") == '*') { | |||
if (allCookies[i].indexOf(disallowedCookies[j].replace('*', '')) > -1) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (disallowedCookies[j].indexOf('*') === 0) { | |||
if (allCookies[i].match(disallowedCookies[j].replace('*', '') + '$') == disallowedCookies[j].replace('*', '')) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (disallowedCookies[j].match("\\*$") == "*") { | |||
if (allCookies[i].indexOf(disallowedCookies[j].replace('*', '')) === 0) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (disallowedCookies[j] == allCookies[i]) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
if (!cookieFound) { | |||
if (definedCookies.length > 0) { | |||
for (var j = 0; j < definedCookies.length; j++) { | |||
if (definedCookies[j].cookie.indexOf('*') === 0 && definedCookies[j].cookie.match("\\*$") == '*') { | |||
if (allCookies[i].indexOf(definedCookies[j].cookie.replace(/\*/g, '')) > -1) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (definedCookies[j].cookie.indexOf('*') === 0) { | |||
if (allCookies[i].match(definedCookies[j].cookie.replace(/\*/g, '') + '$') == definedCookies[j].cookie.replace(/\*/g, '')) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (definedCookies[j].cookie.match("\\*$") == "*") { | |||
if (allCookies[i].indexOf(definedCookies[j].cookie.replace(/\*/g, '')) === 0) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (definedCookies[j].cookie == allCookies[i]) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
if (!cookieFound) | |||
if (allCookies[i].indexOf($.cookieguard.settings.cookiePrefix) === 0) | |||
cookieFound = true; | |||
if (!cookieFound) { | |||
unknownCookies.push(allCookies[i]); | |||
} | |||
} | |||
return unknownCookies; | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.storeAllowedCookie === 'undefined') { | |||
$.cookieguard.cookies.storeAllowedCookie = function (cookie) { | |||
var allowedCookies = $.cookieguard.cookies.getAllowedCookies(); | |||
var allowedCookiesStr; | |||
if (allowedCookies == null) | |||
allowedCookiesStr = cookie; | |||
else { | |||
allowedCookiesStr = allowedCookies.join(','); | |||
if ($.inArray(cookie, allowedCookies) == -1) | |||
allowedCookiesStr = allowedCookiesStr + ',' + cookie; | |||
} | |||
$.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'allowedCookies', allowedCookiesStr, $.cookieguard.settings.cookieExpirationDays); | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.getAllowedCookies === 'undefined') { | |||
$.cookieguard.cookies.getAllowedCookies = function () { | |||
var allowedCookies = $.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + 'allowedCookies'); | |||
if (allowedCookies != null) | |||
return allowedCookies.split(','); | |||
return null; | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.storeDisallowedCookie === 'undefined') { | |||
$.cookieguard.cookies.storeDisallowedCookie = function (cookie) { | |||
var disallowedCookies = $.cookieguard.cookies.getDisallowedCookies(); | |||
var disallowedCookiesStr; | |||
if (disallowedCookies == null) | |||
disallowedCookiesStr = cookie; | |||
else { | |||
disallowedCookiesStr = disallowedCookies.join(','); | |||
if ($.inArray(cookie, disallowedCookies) == -1) | |||
disallowedCookiesStr = disallowedCookiesStr + ',' + cookie; | |||
} | |||
$.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'disallowedCookies', disallowedCookiesStr, $.cookieguard.settings.cookieExpirationDays); | |||
}; | |||
} | |||
if (typeof $.cookieguard.cookies.getDisallowedCookies === 'undefined') { | |||
$.cookieguard.cookies.getDisallowedCookies = function () { | |||
var disallowedCookies = $.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + 'disallowedCookies') | |||
if (disallowedCookies != null) | |||
return disallowedCookies.split(','); | |||
return null; | |||
}; | |||
} | |||
if (typeof $.cookieguard.eradicateCookies === 'undefined') { | |||
$.cookieguard.eradicateCookies = function () { | |||
var cookiesToDestroy = $.cookieguard.cookies.getDisallowedCookies(); | |||
var cookiesToAllow = $.cookieguard.cookies.getAllowedCookies(); | |||
var allCookies = new Array(); | |||
if (document.cookie && document.cookie != '') { | |||
var split = document.cookie.split(';'); | |||
for (var i = 0; i < split.length; i++) { | |||
var name_value = split[i].split("="); | |||
name_value[0] = name_value[0].replace(/^ /, ''); | |||
allCookies.push(decodeURIComponent(name_value[0])); | |||
} | |||
} | |||
for (var i = 0; i < allCookies.length; i++) { | |||
var cookieFound = false; | |||
if (allCookies[i].indexOf($.cookieguard.settings.cookiePrefix) === 0) | |||
cookieFound = true; | |||
if (!cookieFound) { | |||
if (cookiesToAllow != null) { | |||
for (var j = 0; j < cookiesToAllow.length; j++) { | |||
if (cookiesToAllow[j].indexOf('*') === 0 && cookiesToAllow[j].match("\\*$") == '*') { | |||
if (allCookies[i].indexOf(cookiesToAllow[j].replace('*', '')) > -1) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToAllow[j].indexOf('*') === 0) { | |||
if (allCookies[i].match(cookiesToAllow[j].replace('*', '') + '$') == cookiesToAllow[j].replace('*', '')) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToAllow[j].match("\\*$") == "*") { | |||
if (allCookies[i].indexOf(cookiesToAllow[j].replace('*', '')) === 0) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToAllow[j] == allCookies[i]) { | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
} | |||
if (!cookieFound) { | |||
if (cookiesToDestroy != null) { | |||
for (var j = 0; j < cookiesToDestroy.length; j++) { | |||
if (cookiesToDestroy[j].indexOf('*') === 0 && cookiesToDestroy[j].match("\\*$") == '*') { | |||
if (allCookies[i].indexOf(cookiesToDestroy[j].replace('*', '')) > -1) { | |||
$.cookieguard.cookies.erase(allCookies[i]); | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToDestroy[j].indexOf('*') === 0) { | |||
if (allCookies[i].match(cookiesToDestroy[j].replace('*', '') + '$') == cookiesToDestroy[j].replace('*', '')) { | |||
$.cookieguard.cookies.erase(allCookies[i]); | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToDestroy[j].match("\\*$") == "*") { | |||
if (allCookies[i].indexOf(cookiesToDestroy[j].replace('*', '')) === 0) { | |||
$.cookieguard.cookies.erase(allCookies[i]); | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
else if (cookiesToDestroy[j] == allCookies[i]) { | |||
$.cookieguard.cookies.erase(allCookies[i]); | |||
cookieFound = true; | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} | |||
if (typeof $.cookieguard.run === 'undefined') { | |||
$.cookieguard.run = function () { | |||
setTimeout(function () { | |||
var unknownCookies; | |||
if ($.cookieguard.settings.alertOfUnknown) | |||
unknownCookies = $.cookieguard.cookies.findUnknownCookies(); | |||
else | |||
unknownCookies = new Array(); | |||
if (!$.cookieguard.hasAnswered()) { | |||
$.cookieguard.buildMessage(true, $.cookieguard.settings.cookiesUsed, unknownCookies); | |||
$.cookieguard.displayMessage($.cookieguard.settings.messageShowDelay, $.cookieguard.settings.messageHideDelay); | |||
} | |||
else { | |||
$.cookieguard.eradicateCookies(); | |||
if (unknownCookies.length > 0) { | |||
$.cookieguard.buildMessage(false, null, unknownCookies); | |||
$.cookieguard.displayMessage($.cookieguard.settings.messageShowDelay, $.cookieguard.settings.messageHideDelay); | |||
} | |||
} | |||
}, $.cookieguard.settings.cookieDeleteDelay); | |||
}; | |||
} | |||
if (typeof $.cookieguard.hasAnswered === 'undefined') { | |||
$.cookieguard.hasAnswered = function () { | |||
if ($.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + "initialised") != null) | |||
return true; | |||
else | |||
return false; | |||
}; | |||
} | |||
if (typeof $.cookieguard.buildMessage === 'undefined') { | |||
$.cookieguard.buildMessage = function (init, knownCookies, unknownCookies) { | |||
$('body').prepend('<div id="cookieGuardMsg"><div id="cookieGuardMsgInner"></div>'); | |||
if (init) { | |||
$('#cookieGuardMsgInner').append('<strong>' + $.cookieguard.settings.bannerTitle + '</strong><br/>'); | |||
if (unknownCookies.length == 0 && $.cookieguard.hasOnlyEssential()) | |||
$('#cookieGuardMsgInner').addClass('onlyEssential').append($.cookieguard.settings.buttonsOk); | |||
else | |||
$('#cookieGuardMsgInner').append( $.cookieguard.settings.bannerDescription + $.cookieguard.settings.buttonsConfigDefault); | |||
} | |||
else { | |||
$('#cookieGuardMsgInner').append($.cookieguard.settings.cookieNewTitle + '<br/>'); | |||
$('#cookieGuardMsgInner').append($.cookieguard.settings.cookieNewDescription + $.cookieguard.settings.buttonsConfigDefault); | |||
} | |||
$.cookieguard.buildCookieList(init, knownCookies, unknownCookies); | |||
$('#cookieGuardOkay').click(function () { | |||
clearTimeout($.cookieguard.settings.messageHideTimeout); | |||
$.cookieguard.hideMessage(0); | |||
$.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); | |||
return false; | |||
}); | |||
$('#showCookies').click(function () { | |||
if ($(this).text() == $.cookieguard.settings.buttonShow) { | |||
clearTimeout($.cookieguard.settings.messageHideTimeout); | |||
$('#cookieList').show(); | |||
$(this).text($.cookieguard.settings.buttonHide); | |||
var h = $('#cookieList').outerHeight(); | |||
$('#cookieList').css({ 'overflow': 'hidden', 'height': 0 }).animate({ | |||
'height': h | |||
}, $.cookieguard.settings.slideTimer); | |||
} | |||
else if ($(this).text() == $.cookieguard.settings.buttonHide) { | |||
$(this).text($.cookieguard.settings.buttonShow); | |||
$('#cookieList').animate({ | |||
'height': 0 | |||
}, $.cookieguard.settings.slideTimer, null, function () { | |||
$('#cookieList').hide().attr('style', '').removeAttr('style'); | |||
}); | |||
} | |||
return false; | |||
}); | |||
$('#authoriseCookies').click(function () { | |||
clearTimeout($.cookieguard.settings.messageHideTimeout); | |||
$('#cookieGuardMsgInner').empty().addClass('msgAllowed').html($.cookieguard.settings.cookiesAllowed); | |||
$.cookieguard.hideMessage($.cookieguard.settings.answeredHideDelay); | |||
if (knownCookies != null) { | |||
for (var i = 0; i < knownCookies.length; i++) | |||
$.cookieguard.cookies.storeAllowedCookie(knownCookies[i].cookie); | |||
} | |||
if (unknownCookies != null) { | |||
for (var i = 0; i < unknownCookies.length; i++) | |||
$.cookieguard.cookies.storeAllowedCookie(unknownCookies[i]); | |||
} | |||
$.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); | |||
return false; | |||
}); | |||
$('#denyCookies').click(function () { | |||
clearTimeout($.cookieguard.settings.messageHideTimeout); | |||
$('#cookieGuardMsgInner').empty().addClass('msgDenied').html($.cookieguard.settings.cookiesBlocked); | |||
$.cookieguard.hideMessage($.cookieguard.settings.answeredHideDelay); | |||
if (knownCookies != null) { | |||
for (var i = 0; i < knownCookies.length; i++) | |||
if (knownCookies[i].essential == false) | |||
$.cookieguard.cookies.storeDisallowedCookie(knownCookies[i].cookie); | |||
} | |||
if (unknownCookies != null) { | |||
for (var i = 0; i < unknownCookies.length; i++) | |||
$.cookieguard.cookies.storeDisallowedCookie(unknownCookies[i]); | |||
} | |||
$.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); | |||
$.cookieguard.eradicateCookies(); | |||
return false; | |||
}); | |||
}; | |||
} | |||
if (typeof $.cookieguard.buildCookieList === 'undefined') { | |||
$.cookieguard.buildCookieList = function (init, knownCookies, unknownCookies) { | |||
var essentialCookies = new Array(); | |||
var unessentialCookies = new Array(); | |||
var knownNames = new Array(); | |||
if (knownCookies != null) { | |||
for (var i = 0; i < knownCookies.length; i++) { | |||
if ($.inArray(knownCookies[i].name, knownNames) == -1) { | |||
knownNames.push(knownCookies[i].name); | |||
if (knownCookies[i].essential) | |||
essentialCookies.push(knownCookies[i]); | |||
else | |||
unessentialCookies.push(knownCookies[i]); | |||
} | |||
} | |||
} | |||
$('#cookieGuardMsgInner').append('<div id="cookieList"/>'); | |||
if (init) { | |||
$('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesEssential+ | |||
'</div>'); | |||
$('#cookieList').append('<ul class="essentialCookies"/>'); | |||
$('#cookieList > ul.essentialCookies').append('<li><div class="cookieName">'+$.cookieguard.settings.cookieGuardName+'</div><div class="cookieDescription"> - '+$.cookieguard.settings.cookieGuardDescription+'</div></li>'); | |||
for (var i = 0; i < essentialCookies.length; i++) { | |||
$('#cookieList > ul.essentialCookies').append('<li><div class="cookieName">' + essentialCookies[i].name + '</div><div class="cookieDescription"> - ' + essentialCookies[i].description + '</div></li>'); | |||
} | |||
} | |||
if (unessentialCookies.length > 0) { | |||
$('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesNonEssential+'</div>'); | |||
$('#cookieList').append('<ul class="knownCookies" />'); | |||
for (var i = 0; i < unessentialCookies.length; i++) { | |||
$('#cookieList > ul.knownCookies').append('<li><div class="cookieName">' + unessentialCookies[i].name + '</div><div class="cookieDescription"> - ' + unessentialCookies[i].description + '</div></li>'); | |||
} | |||
} | |||
if (unknownCookies != null && unknownCookies.length > 0) { | |||
$('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesUnknown+'</div>'); | |||
$('#cookieList').append('<ul class="unknownCookies" />'); | |||
for (var i = 0; i < unknownCookies.length; i++) { | |||
$('#cookieList > ul.unknownCookies').append('<li><div class="cookieName">' + unknownCookies[i] + '</div></li>'); | |||
} | |||
} | |||
}; | |||
} | |||
if (typeof $.cookieguard.displayMessage === 'undefined') { | |||
$.cookieguard.displayMessage = function (showDelay, hideDelay) { | |||
$.cookieguard.createCSS(); | |||
$('body').attr('marginTop', $('body').css('marginTop')).css('margin', 0).delay(showDelay).animate({ | |||
'marginTop': $('#cookieGuardMsg').outerHeight() | |||
}, $.cookieguard.settings.slideSpeed); | |||
$('#cookieGuardMsg').css('top', -$('#cookieGuardMsg').outerHeight()); | |||
$('#cookieGuardMsg').delay(showDelay).addClass('visible').show().animate({ | |||
'top': 0 | |||
}, $.cookieguard.settings.slideSpeed); | |||
if ($.cookieguard.settings.messageHideDelay != null) { | |||
$.cookieguard.settings.messageHideTimeout = setTimeout(function () { | |||
$.cookieguard.hideMessage(0); | |||
}, hideDelay); | |||
} | |||
}; | |||
} | |||
if (typeof $.cookieguard.hideMessage === 'undefined') { | |||
$.cookieguard.hideMessage = function (hideDelay) { | |||
$('body').delay(hideDelay).animate({ | |||
'marginTop': $('body').attr('marginTop') | |||
}, $.cookieguard.settings.slideSpeed); | |||
$('#cookieGuardMsg').delay(hideDelay).animate({ | |||
'top': -$('#cookieGuardMsg').height() | |||
}, $.cookieguard.settings.slideSpeed, null, function () { | |||
$('#cookieGuardMsg').remove(); | |||
$('body').attr('style', '').removeAttr('style'); | |||
}); | |||
} | |||
} | |||
if (typeof $.cookieguard.hasOnlyEssential === 'undefined') { | |||
$.cookieguard.hasOnlyEssential = function () { | |||
var knownCookies = $.cookieguard.settings.cookiesUsed; | |||
for (var i = 0; i < knownCookies.length; i++) { | |||
if (!knownCookies[i].essential) | |||
return false; | |||
} | |||
return true; | |||
} | |||
} | |||
if (typeof $.cookieguard.createCSS == 'undefined') { | |||
$.cookieguard.createCSS = function () { | |||
var style = '<style id="cookieGuardStyles" type="text/css">'; | |||
style += '#cookieGuardMsg { position: absolute; text-align: left; top: 0; left: 0; width: 100%; display: none; border-bottom: 2px solid #5c5c5c; font-size: 12px; font-family: Arial, Helvetica, Sans-Serif; color: #333; background: #e2e2e2 url(http://cookieguard.eu/images/cookieguardicon.png) no-repeat 12px 12px; min-height: 50px; z-index:99999; }'; | |||
style += "#cookieGuardMsgInner { padding: 10px 10px 10px 60px; }"; | |||
style += "#cookieGuardMsg a { text-decoration: none; font-weight: normal; font-style: normal; }"; | |||
style += "#cookieButtons { width: 100%; text-align: right;}"; | |||
style += "#showCookies { border: 1px solid #999; background: #f4f4f4; color: #5b5858; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }"; | |||
style += "#showCookies:hover { border-color: #666; }"; | |||
style += "#authoriseCookies, #cookieGuardOkay { border: 1px solid #a2bf8e; background: #d1ecbe; color: #384c2a; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }";style += "#authoriseCookies:hover { border-color: #6f8f59; }"; | |||
style += "#denyCookies { border: 1px solid #cc9c9c; background: #ecc1c1; color: #7e5353; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }"; | |||
style += "#denyCookies:hover { border-color: #9e6a6a;}"; | |||
style += "#cookieList { display: none; padding: 10px 60px 0 0; }"; | |||
style += "#cookieList ul { list-style: none; padding-left: 20px; }"; | |||
style += "#cookieGuardMsg.visible { display: block; };#cookieList li { padding: 5px 0; }"; | |||
style += ".cookieName { font-weight: bold; display: inline; }"; | |||
style += ".cookieDescription { display: inline; }"; | |||
style += ".cookiesHeader { font-weight: bold; border-bottom: 1px solid #222; color: #222; margin-bottom: 3px; padding-top: 10px; }"; | |||
style += ".cookiesHeader span { font-weight: normal; font-size: 15px; }"; | |||
style += "#cookieGuardMsgInner.msgAllowed, #cookieGuardMsgInner.msgDenied, #cookieGuardMsgInner.onlyEssential { padding-top: 17px; }"; | |||
style += "</style>"; | |||
$('head').append(style); | |||
} | |||
} | |||
})(jQuery); | |||
$(document).ready(function(){ | |||
$.cookieguard(); | |||
$.cookieguard.cookies.add('Custom', '[enter the cookie name]', '[enter description]', false); | |||
$.cookieguard.run(); | |||
}); |
Revision as of 17:44, 30 September 2015
/* Any JavaScript here will be loaded for all users on every page load. */ // ************************************************************************* // * CookieGuard v1.1 * // * * // * (c) 2012 Ultimateweb LTD <[email protected]> * // * All Rights Reserved. * // * * // * This program is free software: you can redistribute it and/or modify * // * it under the terms of the GNU General Public License as published by * // * the Free Software Foundation, either version 3 of the License, or * // * (at your option) any later version. * // * * // * This program is distributed in the hope that it will be useful, * // * but WITHOUT ANY WARRANTY; without even the implied warranty of * // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * // * GNU General Public License for more details. * // * * // * GNU General Public License <http://www.gnu.org/licenses/>. * // * * // ************************************************************************* // CHANGELOG // // 1.1.0 // - Multilanguage (spanish and german translations included). // - Responsive (CSS based in percentages) // - Script Cookies with 2 expiration days // (function ($) { if (typeof $.cookieguard === 'undefined') { $.cookieguard = function (options) { // Defaults var defaults = { cookieDeleteDelay: 100, messageShowDelay: 1000, messageHideDelay: null, answeredHideDelay: 2000, slideSpeed: 500, cookieExpirationDays: 2, cookiePrefix: 'cookieguard_', alertOfUnknown: true }; // Language detection var userLang = navigator.language || navigator.userLanguage; userLang=userLang.split('-')[0]; if (options!=null) { if (options.userLang!=null) userLang = options.userLang; } // Default Messages (English) var messages = { bannerTitle: ' This website uses cookies to track usage and preferences.', bannerDescription: 'You may choose to block non-essential and unknown cookies.', cookiesEssential: 'Essential Cookies <span>- The site owner has indicated that these are essential to the running of the site.</span>', cookiesNonEssential: 'Non-Essential Cookies <span>- The site owner has approved these cookies but you may turn them off.</span>', cookiesUnknown: 'Unknown Cookies <span>- The site owner has not approved these cookies.</span>', cookiesNewTitle: 'Cookie Guard has found new cookies.', cookiesNewDescription: 'You may choose to block these cookies.', cookiesBlocked: 'Non-essential and unknown cookies have now been blocked on this site.', cookiesAllowed: 'The listed cookies have now been allowed on this site.', buttonShow: 'Show', buttonHide: 'Hide', buttonBlock: 'Block', buttonAllow: 'Allow', buttonOK: 'Okay', cookieGuardName: 'Cookie Guard', cookieGuardDescription: 'This cookie is essential for storing the status of your cookie choices whilst using this site.' }; // German Messages if (userLang === "de") { delete messages; var messages = { bannerTitle: 'Wir verwenden Cookies zur Üwachung von Benutzung und Präferenzen.', bannerDescription: 'Die unwesentlichen oder unbekannten Cookies können Sie blockieren.', cookiesEssential: 'Wesentliche Cookies <span>- Diese sind von entscheidender Bedeutung für die volle Funktionsfähigkeit von der Webseite.</span>', cookiesNonEssential: 'Unwesentliche Cookies <span>- Unser Webmaster hat diese Cookies zugelassen, aber Sie könen diese ausschalten.</span>', cookiesUnknown: 'Unbekannte Cookies <span>- unser Webmaster hat diese nicht genehmigt.</span>', cookiesNewTitle: 'Cookie Guard hat neue Cookies entdeckt.', cookiesNewDescription: 'Sie könen diese ausschalten.', cookiesBlocked: 'Unwesentliche und unbekannten Cookies Jetzt auf dieser Seite blockiert werde.', cookiesAllowed: 'Die aufgeführten Cookies sind nun auf dieser Webseite erlaubt ist.', buttonShow: 'Show', buttonHide: 'Hide', buttonBlock: 'Block', buttonAllow: 'Erlauben', buttonOK: 'Okay', cookieGuardName: 'Cookie Guard', cookieGuardDescription: 'Diese Cookie speichert Ihre Auswahl verschiedener Cookies (blockiert/erlaubt) während des Surfens von der Webseite.' }; } // Spanish Messages if (userLang === "es") { delete messages; var messages = { bannerTitle: 'Esta web emplea cookies para el seguimiento de uso y preferencias.', bannerDescription: 'Escoja entre bloquear o permitir las cookies no esenciales y las desconocidas.', cookiesEssential: 'Cookies Esenciales <span>- nuestro webmaster ha indicado que las siguientes cookies son esenciales para el funcionamiento de la web.</span>', cookiesNonEssential: 'Cookies No Esenciales <span>- nuestro webmaster ha aprobado las siguientes cookies, pero usted puede bloquearlas.</span>', cookiesUnknown: 'Cookies Desconocidas <span>- nuestro webmaster no ha aprobado las siguientes cookies.</span>', cookiesNewTitle: 'Cookie Guard ha encontrado nuevas cookies.', cookiesNewDescription: 'Usted puede bloquear estas nuevas cookies.', cookiesBlocked: 'Cookies no esenciales y desconocidas ahora van a ser bloquedas en nuestra web.', cookiesAllowed: 'Cookies no esenciales y desconocidas han sido permitirdas por usted.', buttonShow: 'Mostrar', buttonHide: 'Ocultar', buttonBlock: 'Bloquear', buttonAllow: 'Permitir', buttonOK: 'Okay', cookieGuardName: 'Cookie Guard', cookieGuardDescription: 'Esta cookie guarda sus preferencias respecto a las distintas cookies (bloqueada/permitida) durante su navegación por nuestra web.' }; } var buttons = { buttonsConfigDefault: '<div id="cookieButtons"><a href="#" id="showCookies">' + messages.buttonShow + '</a>' + '<a href="#" id="authoriseCookies">' + messages.buttonAllow + '</a>' + '<a href="#" id="denyCookies">' + messages.buttonBlock + '</a></div>', buttonsOK: '<div id="cookieButtons"><a href="#" id="showCookies">'+messages.buttonShow+'</a><a href="#" id="cookieGuardOkay">'+messages.buttonOK+'</a></div>' }; $.cookieguard.settings = $.extend(defaults, messages, buttons, options, { 'cookiesUsed': new Array(), 'messageHideTimeout': null }); }; } if (typeof $.cookieguard.cookies === 'undefined') { $.cookieguard.cookies = function () { }; } if (typeof $.cookieguard.cookies.read === 'undefined') { $.cookieguard.cookies.read = function (name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; }; } if (typeof $.cookieguard.cookies.create === 'undefined') { $.cookieguard.cookies.create = function (name, value, days, domain, path) { if (domain == undefined || domain == null) domain = document.domain; if (path == undefined || path == null) path = "/"; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString(); } else var expires = ""; document.cookie = name + "=" + value + expires + "; domain=" + domain + "; path=" + path; }; } if (typeof $.cookieguard.cookies.erase === 'undefined') { $.cookieguard.cookies.erase = function (name) { $.cookieguard.cookies.create(name, "", -1, "", ""); $.cookieguard.cookies.create(name, "", -1, ""); $.cookieguard.cookies.create(name, "", -1); $.cookieguard.cookies.create(name, "", -1, "." + document.domain); if (document.domain.substr(0, 4) == '.www.') $.cookieguard.cookies.create(name, "", -1, document.domain.substr(1)); if (document.domain.substr(0, 4) == 'www.') $.cookieguard.cookies.create(name, "", -1, "." + document.domain.substr(4)); }; } if (typeof $.cookieguard.cookies.add === 'undefined') { $.cookieguard.cookies.add = function (name, cookie, description, essential) { var cookies = cookie.split(","); for (var i = 0; i < cookies.length; i++) { $.cookieguard.settings.cookiesUsed.push({ 'name': name, 'cookie': cookies[i], 'description': description, 'essential': essential }); if (essential) $.cookieguard.cookies.storeAllowedCookie(cookies[i]); } }; } if (typeof $.cookieguard.cookies.findUnknownCookies === 'undefined') { $.cookieguard.cookies.findUnknownCookies = function () { var allowedCookies = $.cookieguard.cookies.getAllowedCookies(); var disallowedCookies = $.cookieguard.cookies.getDisallowedCookies(); var definedCookies = $.cookieguard.settings.cookiesUsed; var allCookies = new Array(); var unknownCookies = new Array(); if (document.cookie && document.cookie != '') { var split = document.cookie.split(';'); for (var i = 0; i < split.length; i++) { var name_value = split[i].split("="); name_value[0] = name_value[0].replace(/^ /, ''); allCookies.push(decodeURIComponent(name_value[0])); } } for (var i = 0; i < allCookies.length; i++) { var cookieFound = false; if (allowedCookies != null) { for (var j = 0; j < allowedCookies.length; j++) { if (allowedCookies[j].indexOf('*') === 0 && allowedCookies[j].match("\\*$") == '*') { if (allCookies[i].indexOf(allowedCookies[j].replace('*', '')) > -1) { cookieFound = true; break; } } else if (allowedCookies[j].indexOf('*') === 0) { if (allCookies[i].match(allowedCookies[j].replace('*', '') + '$') == allowedCookies[j].replace('*', '')) { cookieFound = true; break; } } else if (allowedCookies[j].match("\\*$") == "*") { if (allCookies[i].indexOf(allowedCookies[j].replace('*', '')) === 0) { cookieFound = true; break; } } else if (allowedCookies[j] == allCookies[i]) { cookieFound = true; break; } } } if (!cookieFound) { if (disallowedCookies != null) { for (var j = 0; j < disallowedCookies.length; j++) { if (disallowedCookies[j].indexOf('*') === 0 && disallowedCookies[j].match("\\*$") == '*') { if (allCookies[i].indexOf(disallowedCookies[j].replace('*', '')) > -1) { cookieFound = true; break; } } else if (disallowedCookies[j].indexOf('*') === 0) { if (allCookies[i].match(disallowedCookies[j].replace('*', '') + '$') == disallowedCookies[j].replace('*', '')) { cookieFound = true; break; } } else if (disallowedCookies[j].match("\\*$") == "*") { if (allCookies[i].indexOf(disallowedCookies[j].replace('*', '')) === 0) { cookieFound = true; break; } } else if (disallowedCookies[j] == allCookies[i]) { cookieFound = true; break; } } } } if (!cookieFound) { if (definedCookies.length > 0) { for (var j = 0; j < definedCookies.length; j++) { if (definedCookies[j].cookie.indexOf('*') === 0 && definedCookies[j].cookie.match("\\*$") == '*') { if (allCookies[i].indexOf(definedCookies[j].cookie.replace(/\*/g, '')) > -1) { cookieFound = true; break; } } else if (definedCookies[j].cookie.indexOf('*') === 0) { if (allCookies[i].match(definedCookies[j].cookie.replace(/\*/g, '') + '$') == definedCookies[j].cookie.replace(/\*/g, '')) { cookieFound = true; break; } } else if (definedCookies[j].cookie.match("\\*$") == "*") { if (allCookies[i].indexOf(definedCookies[j].cookie.replace(/\*/g, '')) === 0) { cookieFound = true; break; } } else if (definedCookies[j].cookie == allCookies[i]) { cookieFound = true; break; } } } } if (!cookieFound) if (allCookies[i].indexOf($.cookieguard.settings.cookiePrefix) === 0) cookieFound = true; if (!cookieFound) { unknownCookies.push(allCookies[i]); } } return unknownCookies; }; } if (typeof $.cookieguard.cookies.storeAllowedCookie === 'undefined') { $.cookieguard.cookies.storeAllowedCookie = function (cookie) { var allowedCookies = $.cookieguard.cookies.getAllowedCookies(); var allowedCookiesStr; if (allowedCookies == null) allowedCookiesStr = cookie; else { allowedCookiesStr = allowedCookies.join(','); if ($.inArray(cookie, allowedCookies) == -1) allowedCookiesStr = allowedCookiesStr + ',' + cookie; } $.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'allowedCookies', allowedCookiesStr, $.cookieguard.settings.cookieExpirationDays); }; } if (typeof $.cookieguard.cookies.getAllowedCookies === 'undefined') { $.cookieguard.cookies.getAllowedCookies = function () { var allowedCookies = $.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + 'allowedCookies'); if (allowedCookies != null) return allowedCookies.split(','); return null; }; } if (typeof $.cookieguard.cookies.storeDisallowedCookie === 'undefined') { $.cookieguard.cookies.storeDisallowedCookie = function (cookie) { var disallowedCookies = $.cookieguard.cookies.getDisallowedCookies(); var disallowedCookiesStr; if (disallowedCookies == null) disallowedCookiesStr = cookie; else { disallowedCookiesStr = disallowedCookies.join(','); if ($.inArray(cookie, disallowedCookies) == -1) disallowedCookiesStr = disallowedCookiesStr + ',' + cookie; } $.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'disallowedCookies', disallowedCookiesStr, $.cookieguard.settings.cookieExpirationDays); }; } if (typeof $.cookieguard.cookies.getDisallowedCookies === 'undefined') { $.cookieguard.cookies.getDisallowedCookies = function () { var disallowedCookies = $.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + 'disallowedCookies') if (disallowedCookies != null) return disallowedCookies.split(','); return null; }; } if (typeof $.cookieguard.eradicateCookies === 'undefined') { $.cookieguard.eradicateCookies = function () { var cookiesToDestroy = $.cookieguard.cookies.getDisallowedCookies(); var cookiesToAllow = $.cookieguard.cookies.getAllowedCookies(); var allCookies = new Array(); if (document.cookie && document.cookie != '') { var split = document.cookie.split(';'); for (var i = 0; i < split.length; i++) { var name_value = split[i].split("="); name_value[0] = name_value[0].replace(/^ /, ''); allCookies.push(decodeURIComponent(name_value[0])); } } for (var i = 0; i < allCookies.length; i++) { var cookieFound = false; if (allCookies[i].indexOf($.cookieguard.settings.cookiePrefix) === 0) cookieFound = true; if (!cookieFound) { if (cookiesToAllow != null) { for (var j = 0; j < cookiesToAllow.length; j++) { if (cookiesToAllow[j].indexOf('*') === 0 && cookiesToAllow[j].match("\\*$") == '*') { if (allCookies[i].indexOf(cookiesToAllow[j].replace('*', '')) > -1) { cookieFound = true; break; } } else if (cookiesToAllow[j].indexOf('*') === 0) { if (allCookies[i].match(cookiesToAllow[j].replace('*', '') + '$') == cookiesToAllow[j].replace('*', '')) { cookieFound = true; break; } } else if (cookiesToAllow[j].match("\\*$") == "*") { if (allCookies[i].indexOf(cookiesToAllow[j].replace('*', '')) === 0) { cookieFound = true; break; } } else if (cookiesToAllow[j] == allCookies[i]) { cookieFound = true; break; } } } if (!cookieFound) { if (cookiesToDestroy != null) { for (var j = 0; j < cookiesToDestroy.length; j++) { if (cookiesToDestroy[j].indexOf('*') === 0 && cookiesToDestroy[j].match("\\*$") == '*') { if (allCookies[i].indexOf(cookiesToDestroy[j].replace('*', '')) > -1) { $.cookieguard.cookies.erase(allCookies[i]); cookieFound = true; break; } } else if (cookiesToDestroy[j].indexOf('*') === 0) { if (allCookies[i].match(cookiesToDestroy[j].replace('*', '') + '$') == cookiesToDestroy[j].replace('*', '')) { $.cookieguard.cookies.erase(allCookies[i]); cookieFound = true; break; } } else if (cookiesToDestroy[j].match("\\*$") == "*") { if (allCookies[i].indexOf(cookiesToDestroy[j].replace('*', '')) === 0) { $.cookieguard.cookies.erase(allCookies[i]); cookieFound = true; break; } } else if (cookiesToDestroy[j] == allCookies[i]) { $.cookieguard.cookies.erase(allCookies[i]); cookieFound = true; break; } } } } } } } } if (typeof $.cookieguard.run === 'undefined') { $.cookieguard.run = function () { setTimeout(function () { var unknownCookies; if ($.cookieguard.settings.alertOfUnknown) unknownCookies = $.cookieguard.cookies.findUnknownCookies(); else unknownCookies = new Array(); if (!$.cookieguard.hasAnswered()) { $.cookieguard.buildMessage(true, $.cookieguard.settings.cookiesUsed, unknownCookies); $.cookieguard.displayMessage($.cookieguard.settings.messageShowDelay, $.cookieguard.settings.messageHideDelay); } else { $.cookieguard.eradicateCookies(); if (unknownCookies.length > 0) { $.cookieguard.buildMessage(false, null, unknownCookies); $.cookieguard.displayMessage($.cookieguard.settings.messageShowDelay, $.cookieguard.settings.messageHideDelay); } } }, $.cookieguard.settings.cookieDeleteDelay); }; } if (typeof $.cookieguard.hasAnswered === 'undefined') { $.cookieguard.hasAnswered = function () { if ($.cookieguard.cookies.read($.cookieguard.settings.cookiePrefix + "initialised") != null) return true; else return false; }; } if (typeof $.cookieguard.buildMessage === 'undefined') { $.cookieguard.buildMessage = function (init, knownCookies, unknownCookies) { $('body').prepend('<div id="cookieGuardMsg"><div id="cookieGuardMsgInner"></div>'); if (init) { $('#cookieGuardMsgInner').append('<strong>' + $.cookieguard.settings.bannerTitle + '</strong><br/>'); if (unknownCookies.length == 0 && $.cookieguard.hasOnlyEssential()) $('#cookieGuardMsgInner').addClass('onlyEssential').append($.cookieguard.settings.buttonsOk); else $('#cookieGuardMsgInner').append( $.cookieguard.settings.bannerDescription + $.cookieguard.settings.buttonsConfigDefault); } else { $('#cookieGuardMsgInner').append($.cookieguard.settings.cookieNewTitle + '<br/>'); $('#cookieGuardMsgInner').append($.cookieguard.settings.cookieNewDescription + $.cookieguard.settings.buttonsConfigDefault); } $.cookieguard.buildCookieList(init, knownCookies, unknownCookies); $('#cookieGuardOkay').click(function () { clearTimeout($.cookieguard.settings.messageHideTimeout); $.cookieguard.hideMessage(0); $.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); return false; }); $('#showCookies').click(function () { if ($(this).text() == $.cookieguard.settings.buttonShow) { clearTimeout($.cookieguard.settings.messageHideTimeout); $('#cookieList').show(); $(this).text($.cookieguard.settings.buttonHide); var h = $('#cookieList').outerHeight(); $('#cookieList').css({ 'overflow': 'hidden', 'height': 0 }).animate({ 'height': h }, $.cookieguard.settings.slideTimer); } else if ($(this).text() == $.cookieguard.settings.buttonHide) { $(this).text($.cookieguard.settings.buttonShow); $('#cookieList').animate({ 'height': 0 }, $.cookieguard.settings.slideTimer, null, function () { $('#cookieList').hide().attr('style', '').removeAttr('style'); }); } return false; }); $('#authoriseCookies').click(function () { clearTimeout($.cookieguard.settings.messageHideTimeout); $('#cookieGuardMsgInner').empty().addClass('msgAllowed').html($.cookieguard.settings.cookiesAllowed); $.cookieguard.hideMessage($.cookieguard.settings.answeredHideDelay); if (knownCookies != null) { for (var i = 0; i < knownCookies.length; i++) $.cookieguard.cookies.storeAllowedCookie(knownCookies[i].cookie); } if (unknownCookies != null) { for (var i = 0; i < unknownCookies.length; i++) $.cookieguard.cookies.storeAllowedCookie(unknownCookies[i]); } $.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); return false; }); $('#denyCookies').click(function () { clearTimeout($.cookieguard.settings.messageHideTimeout); $('#cookieGuardMsgInner').empty().addClass('msgDenied').html($.cookieguard.settings.cookiesBlocked); $.cookieguard.hideMessage($.cookieguard.settings.answeredHideDelay); if (knownCookies != null) { for (var i = 0; i < knownCookies.length; i++) if (knownCookies[i].essential == false) $.cookieguard.cookies.storeDisallowedCookie(knownCookies[i].cookie); } if (unknownCookies != null) { for (var i = 0; i < unknownCookies.length; i++) $.cookieguard.cookies.storeDisallowedCookie(unknownCookies[i]); } $.cookieguard.cookies.create($.cookieguard.settings.cookiePrefix + 'initialised', '1', $.cookieguard.settings.cookieExpirationDays); $.cookieguard.eradicateCookies(); return false; }); }; } if (typeof $.cookieguard.buildCookieList === 'undefined') { $.cookieguard.buildCookieList = function (init, knownCookies, unknownCookies) { var essentialCookies = new Array(); var unessentialCookies = new Array(); var knownNames = new Array(); if (knownCookies != null) { for (var i = 0; i < knownCookies.length; i++) { if ($.inArray(knownCookies[i].name, knownNames) == -1) { knownNames.push(knownCookies[i].name); if (knownCookies[i].essential) essentialCookies.push(knownCookies[i]); else unessentialCookies.push(knownCookies[i]); } } } $('#cookieGuardMsgInner').append('<div id="cookieList"/>'); if (init) { $('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesEssential+ '</div>'); $('#cookieList').append('<ul class="essentialCookies"/>'); $('#cookieList > ul.essentialCookies').append('<li><div class="cookieName">'+$.cookieguard.settings.cookieGuardName+'</div><div class="cookieDescription"> - '+$.cookieguard.settings.cookieGuardDescription+'</div></li>'); for (var i = 0; i < essentialCookies.length; i++) { $('#cookieList > ul.essentialCookies').append('<li><div class="cookieName">' + essentialCookies[i].name + '</div><div class="cookieDescription"> - ' + essentialCookies[i].description + '</div></li>'); } } if (unessentialCookies.length > 0) { $('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesNonEssential+'</div>'); $('#cookieList').append('<ul class="knownCookies" />'); for (var i = 0; i < unessentialCookies.length; i++) { $('#cookieList > ul.knownCookies').append('<li><div class="cookieName">' + unessentialCookies[i].name + '</div><div class="cookieDescription"> - ' + unessentialCookies[i].description + '</div></li>'); } } if (unknownCookies != null && unknownCookies.length > 0) { $('#cookieList').append('<div class="cookiesHeader">'+$.cookieguard.settings.cookiesUnknown+'</div>'); $('#cookieList').append('<ul class="unknownCookies" />'); for (var i = 0; i < unknownCookies.length; i++) { $('#cookieList > ul.unknownCookies').append('<li><div class="cookieName">' + unknownCookies[i] + '</div></li>'); } } }; } if (typeof $.cookieguard.displayMessage === 'undefined') { $.cookieguard.displayMessage = function (showDelay, hideDelay) { $.cookieguard.createCSS(); $('body').attr('marginTop', $('body').css('marginTop')).css('margin', 0).delay(showDelay).animate({ 'marginTop': $('#cookieGuardMsg').outerHeight() }, $.cookieguard.settings.slideSpeed); $('#cookieGuardMsg').css('top', -$('#cookieGuardMsg').outerHeight()); $('#cookieGuardMsg').delay(showDelay).addClass('visible').show().animate({ 'top': 0 }, $.cookieguard.settings.slideSpeed); if ($.cookieguard.settings.messageHideDelay != null) { $.cookieguard.settings.messageHideTimeout = setTimeout(function () { $.cookieguard.hideMessage(0); }, hideDelay); } }; } if (typeof $.cookieguard.hideMessage === 'undefined') { $.cookieguard.hideMessage = function (hideDelay) { $('body').delay(hideDelay).animate({ 'marginTop': $('body').attr('marginTop') }, $.cookieguard.settings.slideSpeed); $('#cookieGuardMsg').delay(hideDelay).animate({ 'top': -$('#cookieGuardMsg').height() }, $.cookieguard.settings.slideSpeed, null, function () { $('#cookieGuardMsg').remove(); $('body').attr('style', '').removeAttr('style'); }); } } if (typeof $.cookieguard.hasOnlyEssential === 'undefined') { $.cookieguard.hasOnlyEssential = function () { var knownCookies = $.cookieguard.settings.cookiesUsed; for (var i = 0; i < knownCookies.length; i++) { if (!knownCookies[i].essential) return false; } return true; } } if (typeof $.cookieguard.createCSS == 'undefined') { $.cookieguard.createCSS = function () { var style = '<style id="cookieGuardStyles" type="text/css">'; style += '#cookieGuardMsg { position: absolute; text-align: left; top: 0; left: 0; width: 100%; display: none; border-bottom: 2px solid #5c5c5c; font-size: 12px; font-family: Arial, Helvetica, Sans-Serif; color: #333; background: #e2e2e2 url(http://cookieguard.eu/images/cookieguardicon.png) no-repeat 12px 12px; min-height: 50px; z-index:99999; }'; style += "#cookieGuardMsgInner { padding: 10px 10px 10px 60px; }"; style += "#cookieGuardMsg a { text-decoration: none; font-weight: normal; font-style: normal; }"; style += "#cookieButtons { width: 100%; text-align: right;}"; style += "#showCookies { border: 1px solid #999; background: #f4f4f4; color: #5b5858; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }"; style += "#showCookies:hover { border-color: #666; }"; style += "#authoriseCookies, #cookieGuardOkay { border: 1px solid #a2bf8e; background: #d1ecbe; color: #384c2a; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }";style += "#authoriseCookies:hover { border-color: #6f8f59; }"; style += "#denyCookies { border: 1px solid #cc9c9c; background: #ecc1c1; color: #7e5353; padding: 5px 10px; margin: 0 1%; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }"; style += "#denyCookies:hover { border-color: #9e6a6a;}"; style += "#cookieList { display: none; padding: 10px 60px 0 0; }"; style += "#cookieList ul { list-style: none; padding-left: 20px; }"; style += "#cookieGuardMsg.visible { display: block; };#cookieList li { padding: 5px 0; }"; style += ".cookieName { font-weight: bold; display: inline; }"; style += ".cookieDescription { display: inline; }"; style += ".cookiesHeader { font-weight: bold; border-bottom: 1px solid #222; color: #222; margin-bottom: 3px; padding-top: 10px; }"; style += ".cookiesHeader span { font-weight: normal; font-size: 15px; }"; style += "#cookieGuardMsgInner.msgAllowed, #cookieGuardMsgInner.msgDenied, #cookieGuardMsgInner.onlyEssential { padding-top: 17px; }"; style += "</style>"; $('head').append(style); } } })(jQuery); $(document).ready(function(){ $.cookieguard(); $.cookieguard.cookies.add('Custom', '[enter the cookie name]', '[enter description]', false); $.cookieguard.run(); });