text: /*!
  * jQuery Cookie Plugin v1.3
  * https://github.com/carhartl/jquery-cookie
  *
  * Copyright 2011, Klaus Hartl
  * Dual licensed under the MIT or GPL Version 2 licenses.
  * http://www.opensource.org/licenses/mit-license.php
  * http://www.opensource.org/licenses/GPL-2.0
  */
  (function ($, document, undefined) {
    
    var pluses = /\+/g;
    
    function raw(s) {
      return s;
    }
    
    function decoded(s) {
      return decodeURIComponent(s.replace(pluses, ' '));
    }
    
    var config = $.cookie = function (key, value, options) {
      
      // write
      if (value !== undefined) {
        options = $.extend({}, config.defaults, options);
        
        if (value === null) {
          options.expires = -1;
        }
        
        if (typeof options.expires === 'number') {
          var days = options.expires, t = options.expires = new Date();
          t.setDate(t.getDate() + days);
        }
        
        value = config.json ? JSON.stringify(value) : String(value);
        
        return (document.cookie = [
          encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
          options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
          options.path    ? '; path=' + options.path : '',
          options.domain  ? '; domain=' + options.domain : '',
          options.secure  ? '; secure' : ''
          ].join(''));
        }
        
        // read
        var decode = config.raw ? raw : decoded;
        var cookies = document.cookie.split('; ');
        for (var i = 0, l = cookies.length; i < l; i++) {
          var parts = cookies[i].split('=');
          if (decode(parts.shift()) === key) {
            var cookie = decode(parts.join('='));
            return config.json ? JSON.parse(cookie) : cookie;
          }
        }
        
        return null;
      };
      
      config.defaults = {};
      
      $.removeCookie = function (key, options) {
        if ($.cookie(key) !== null) {
          $.cookie(key, null, options);
          return true;
        }
        return false;
      };
      
    })(jQuery, document);
    
    /*!
    * Data Saver - v0.1
    *
    * Copyright (c) 2013 Dave Olsen, http://dmolsen.com
    * Licensed under the MIT license
    */
    
    var DataSaver = {
      
      // the name of the cookie to store the data in
      cookieName: "patternlab",
      
      /**
      * Add a given value to the cookie
      * @param  {String}       the name of the key
      * @param  {String}       the value
      */
      addValue: function (name,val) {
        var cookieVal = $.cookie(this.cookieName);
        if ((cookieVal == null) || (cookieVal == "")) {
          cookieVal = name+"~"+val;
        } else {
          cookieVal = cookieVal+"|"+name+"~"+val;
        }
        $.cookie(this.cookieName,cookieVal);
      },
      
      /**
      * Update a value found in the cookie. If the key doesn't exist add the value
      * @param  {String}       the name of the key
      * @param  {String}       the value
      */
      updateValue: function (name,val) {
        if (this.findValue(name)) {
          var updateCookieVals = "";
          var cookieVals = $.cookie(this.cookieName).split("|");
          for (var i = 0; i < cookieVals.length; i++) {
            var fieldVals = cookieVals[i].split("~");
            if (fieldVals[0] == name) {
              fieldVals[1] = val;
            }
            if (i > 0) {
              updateCookieVals += "|"+fieldVals[0]+"~"+fieldVals[1];
            } else {
              updateCookieVals += fieldVals[0]+"~"+fieldVals[1];
            }	
          }
          $.cookie(this.cookieName,updateCookieVals);
        } else {
          this.addValue(name,val);
        }
      },
      
      /**
      * Remove the given key
      * @param  {String}       the name of the key
      */
      removeValue: function (name) {
        var updateCookieVals = "";
        var cookieVals = $.cookie(this.cookieName).split("|");
        var k = 0;
        for (var i = 0; i < cookieVals.length; i++) {
          var fieldVals = cookieVals[i].split("~");
          if (fieldVals[0] != name) {
            if (k == 0) {
              updateCookieVals += fieldVals[0]+"~"+fieldVals[1];
            } else {
              updateCookieVals += "|"+fieldVals[0]+"~"+fieldVals[1];
            }
            k++;
          }
        }
        $.cookie(this.cookieName,updateCookieVals);
      },
      
      /**
      * Find the value using the given key
      * @param  {String}       the name of the key
      *
      * @return {String}       the value of the key or false if the value isn't found
      */
      findValue: function (name) {
        if ($.cookie(this.cookieName)) {
          var cookieVals = $.cookie(this.cookieName).split("|");
          var k = 0;
          for (var i = 0; i < cookieVals.length; i++) {
            var fieldVals = cookieVals[i].split("~");
            if (fieldVals[0] == name) {
              return fieldVals[1];
            }
          }
        } 
        return false;
      }
      
    };
    
  