/** * Copyright (C) 2012 Chris Wharton (chris@weare2ndfloor.com) * * 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 SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR * FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE * OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT * BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL * DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . Documentation available at http://cookiecuttr.com */ (function ($) { $.cookieCuttr = function (options) { var defaults = { cookieCutter: false, // you'd like to enable the div/section/span etc. hide feature? change this to true cookieCutterDeclineOnly: false, // you'd like the CookieCutter to only hide when someone has clicked declined set this to true cookieAnalytics: true, // just using a simple analytics package? change this to true cookieDeclineButton: false, // this will disable non essential cookies cookieAcceptButton: true, // this will disable non essential cookies cookieResetButton: false, cookieOverlayEnabled: false, // don't want a discreet toolbar? Fine, set this to true cookiePolicyLink: '/privacy-policy/', // if applicable, enter the link to your privacy policy here... cookieMessage: 'We use cookies on this website, you can read about them here. To use the website as intended please...', cookieAnalyticsMessage: 'We use cookies, just to track visits to our website, we store no personal details.', cookieErrorMessage: "We\'re sorry, this feature places cookies in your browser and has been disabled.
To continue using this functionality, please", cookieWhatAreTheyLink: "http://www.allaboutcookies.org/", cookieDisable: '', cookieExpires: 365, cookieAcceptButtonText: "ACCEPT COOKIES", cookieDeclineButtonText: "DECLINE COOKIES", cookieResetButtonText: "RESET COOKIES FOR THIS WEBSITE", cookieWhatAreLinkText: "What are cookies?", cookieNotificationLocationBottom: false, // top or bottom - they are your only options, so true for bottom, false for top cookiePolicyPage: false, cookiePolicyPageMessage: 'Please read the information below and then choose from the following options', cookieDiscreetLink: false, cookieDiscreetReset: false, cookieDiscreetLinkText: "Cookies?", cookieDiscreetPosition: "topleft", //options: topleft, topright, bottomleft, bottomright cookieNoMessage: false, // change to true hide message from all pages apart from your policy page cookieDomain: "" }; var options = $.extend(defaults, options); var message = defaults.cookieMessage.replace('{{cookiePolicyLink}}', defaults.cookiePolicyLink); defaults.cookieMessage = 'We use cookies on this website, you can read about them here. To use the website as intended please...'; //convert options var cookiePolicyLinkIn = options.cookiePolicyLink; var cookieCutter = options.cookieCutter; var cookieCutterDeclineOnly = options.cookieCutterDeclineOnly; var cookieAnalytics = options.cookieAnalytics; var cookieDeclineButton = options.cookieDeclineButton; var cookieAcceptButton = options.cookieAcceptButton; var cookieResetButton = options.cookieResetButton; var cookieOverlayEnabled = options.cookieOverlayEnabled; var cookiePolicyLink = options.cookiePolicyLink; var cookieMessage = message; var cookieAnalyticsMessage = options.cookieAnalyticsMessage; var cookieErrorMessage = options.cookieErrorMessage; var cookieDisable = options.cookieDisable; var cookieWhatAreTheyLink = options.cookieWhatAreTheyLink; var cookieExpires = options.cookieExpires; var cookieAcceptButtonText = options.cookieAcceptButtonText; var cookieDeclineButtonText = options.cookieDeclineButtonText; var cookieResetButtonText = options.cookieResetButtonText; var cookieWhatAreLinkText = options.cookieWhatAreLinkText; var cookieNotificationLocationBottom = options.cookieNotificationLocationBottom; var cookiePolicyPage = options.cookiePolicyPage; var cookiePolicyPageMessage = options.cookiePolicyPageMessage; var cookieDiscreetLink = options.cookieDiscreetLink; var cookieDiscreetReset = options.cookieDiscreetReset; var cookieDiscreetLinkText = options.cookieDiscreetLinkText; var cookieDiscreetPosition = options.cookieDiscreetPosition; var cookieNoMessage = options.cookieNoMessage; // cookie identifier var $cookieAccepted = $.cookie('cc_cookie_accept') == "cc_cookie_accept"; $.cookieAccepted = function () { return $cookieAccepted; }; var $cookieDeclined = $.cookie('cc_cookie_decline') == "cc_cookie_decline"; $.cookieDeclined = function () { return $cookieDeclined; }; // write cookie accept button if (cookieAcceptButton) { var cookieAccept = ' ' + cookieAcceptButtonText + ' '; } else { var cookieAccept = ""; } // write cookie decline button if (cookieDeclineButton) { var cookieDecline = ' ' + cookieDeclineButtonText + ' '; } else { var cookieDecline = ""; } // write extra class for overlay if (cookieOverlayEnabled) { var cookieOverlay = 'cc-overlay'; } else { var cookieOverlay = ""; } // to prepend or append, that is the question? if ((cookieNotificationLocationBottom) || (cookieDiscreetPosition == "bottomright") || (cookieDiscreetPosition == "bottomleft")) { var appOrPre = true; } else { var appOrPre = false; } if (($cookieAccepted) || ($cookieDeclined)) { // write cookie reset button if ((cookieResetButton) && (cookieDiscreetReset)) { if (appOrPre) { $('body').append('
' + cookieResetButtonText + '
'); } else { $('body').prepend('
' + cookieResetButtonText + '
'); } //add appropriate CSS depending on position chosen if (cookieDiscreetPosition == "topleft") { $('div.cc-cookies').css("top", "0"); $('div.cc-cookies').css("left", "0"); } if (cookieDiscreetPosition == "topright") { $('div.cc-cookies').css("top", "0"); $('div.cc-cookies').css("right", "0"); } if (cookieDiscreetPosition == "bottomleft") { $('div.cc-cookies').css("bottom", "0"); $('div.cc-cookies').css("left", "0"); } if (cookieDiscreetPosition == "bottomright") { $('div.cc-cookies').css("bottom", "0"); $('div.cc-cookies').css("right", "0"); } } else if (cookieResetButton) { if (appOrPre) { $('body').append('
' + cookieResetButtonText + '
'); } else { $('body').prepend('
' + cookieResetButtonText + '
'); } } else { var cookieResetButton = ""; } } else { // add message to just after opening body tag if ((cookieNoMessage) && (!cookiePolicyPage)) { // show no link on any pages APART from the policy page } else if ((cookieDiscreetLink) && (!cookiePolicyPage)) { // show discreet link if (appOrPre) { $('body').append('
' + cookieDiscreetLinkText + '
'); } else { $('body').prepend('
' + cookieDiscreetLinkText + '
'); } //add appropriate CSS depending on position chosen if (cookieDiscreetPosition == "topleft") { $('div.cc-cookies').css("top", "0"); $('div.cc-cookies').css("left", "0"); } if (cookieDiscreetPosition == "topright") { $('div.cc-cookies').css("top", "0"); $('div.cc-cookies').css("right", "0"); } if (cookieDiscreetPosition == "bottomleft") { $('div.cc-cookies').css("bottom", "0"); $('div.cc-cookies').css("left", "0"); } if (cookieDiscreetPosition == "bottomright") { $('div.cc-cookies').css("bottom", "0"); $('div.cc-cookies').css("right", "0"); } } else if (cookieAnalytics) { // show analytics overlay if (appOrPre) { $('body').append('
' + cookieAnalyticsMessage + cookieAccept + cookieDecline + '' + cookieWhatAreLinkText + '
'); } else { $('body').prepend('
' + cookieAnalyticsMessage + cookieAccept + cookieDecline + '' + cookieWhatAreLinkText + '
'); } } if (cookiePolicyPage) { // show policy page overlay if (appOrPre) { $('body').append('
' + cookiePolicyPageMessage + " " + ' ' + cookieAcceptButtonText + ' ' + ' ' + cookieDeclineButtonText + ' ' + '
'); } else { $('body').prepend('
' + cookiePolicyPageMessage + " " + ' ' + cookieAcceptButtonText + ' ' + ' ' + cookieDeclineButtonText + ' ' + '
'); } } else if ((!cookieAnalytics) && (!cookieDiscreetLink)) { // show privacy policy option if (appOrPre) { $('body').append('
' + cookieMessage + cookieAccept + cookieDecline + '
'); } else { $('body').prepend('
' + cookieMessage + cookieAccept + cookieDecline + '
'); } } } if ((cookieCutter) && (!cookieCutterDeclineOnly) && (($cookieDeclined) || (!$cookieAccepted))) { $(cookieDisable).html('
' + cookieErrorMessage + ' ' + cookieAcceptButtonText + ' ' + '
'); } if ((cookieCutter) && (cookieCutterDeclineOnly) && ($cookieDeclined)) { $(cookieDisable).html('
' + cookieErrorMessage + ' ' + cookieAcceptButtonText + ' ' + '
'); } // if bottom is true, switch div to bottom if not in discreet mode if ((cookieNotificationLocationBottom) && (!cookieDiscreetLink)) { $('div.cc-cookies').css("top", "auto"); $('div.cc-cookies').css("bottom", "0"); } if ((cookieNotificationLocationBottom) && (cookieDiscreetLink) && (cookiePolicyPage)) { $('div.cc-cookies').css("top", "auto"); $('div.cc-cookies').css("bottom", "0"); } // setting the cookies // for top bar $('.cc-cookie-accept, .cc-cookie-decline').click(function (e) { e.preventDefault(); if ($(this).is('[href$=#decline]')) { $.cookie("cc_cookie_accept", null, { path: '/' }); $.cookie("cc_cookie_decline", "cc_cookie_decline", { expires: cookieExpires, path: '/' }); if (options.cookieDomain) { // kill google analytics cookies $.cookie("__utma", null, { domain: '.' + options.cookieDomain, path: '/' }); $.cookie("__utmb", null, { domain: '.' + options.cookieDomain, path: '/' }); $.cookie("__utmc", null, { domain: '.' + options.cookieDomain, path: '/' }); $.cookie("__utmz", null, { domain: '.' + options.cookieDomain, path: '/' }); } } else { $.cookie("cc_cookie_decline", null, { path: '/' }); $.cookie("cc_cookie_accept", "cc_cookie_accept", { expires: cookieExpires, path: '/' }); } $(".cc-cookies").fadeOut(function () { // reload page to activate cookies location.reload(); }); }); //reset cookies $('a.cc-cookie-reset').click(function (f) { f.preventDefault(); $.cookie("cc_cookie_accept", null, { path: '/' }); $.cookie("cc_cookie_decline", null, { path: '/' }); $(".cc-cookies").fadeOut(function () { // reload page to activate cookies location.reload(); }); }); //cookie error accept $('.cc-cookies-error a.cc-cookie-accept').click(function (g) { g.preventDefault(); $.cookie("cc_cookie_accept", "cc_cookie_accept", { expires: cookieExpires, path: '/' }); $.cookie("cc_cookie_decline", null, { path: '/' }); // reload page to activate cookies location.reload(); }); }; })(jQuery);