[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / prive / javascript / js.cookie.js
1 /*!
2 * JavaScript Cookie v2.1.4
3 * https://github.com/js-cookie/js-cookie
4 *
5 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
6 * Released under the MIT license
7 */
8 ;(function (factory) {
9 var registeredInModuleLoader = false;
10 if (typeof define === 'function' && define.amd) {
11 define(factory);
12 registeredInModuleLoader = true;
13 }
14 if (typeof exports === 'object') {
15 module.exports = factory();
16 registeredInModuleLoader = true;
17 }
18 if (!registeredInModuleLoader) {
19 var OldCookies = window.Cookies;
20 var api = window.Cookies = factory();
21 api.noConflict = function () {
22 window.Cookies = OldCookies;
23 return api;
24 };
25 }
26 }(function () {
27 function extend () {
28 var i = 0;
29 var result = {};
30 for (; i < arguments.length; i++) {
31 var attributes = arguments[ i ];
32 for (var key in attributes) {
33 result[key] = attributes[key];
34 }
35 }
36 return result;
37 }
38
39 function init (converter) {
40 function api (key, value, attributes) {
41 var result;
42 if (typeof document === 'undefined') {
43 return;
44 }
45
46 // Write
47
48 if (arguments.length > 1) {
49 attributes = extend({
50 path: '/'
51 }, api.defaults, attributes);
52
53 if (typeof attributes.expires === 'number') {
54 var expires = new Date();
55 expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
56 attributes.expires = expires;
57 }
58
59 // We're using "expires" because "max-age" is not supported by IE
60 attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
61
62 try {
63 result = JSON.stringify(value);
64 if (/^[\{\[]/.test(result)) {
65 value = result;
66 }
67 } catch (e) {}
68
69 if (!converter.write) {
70 value = encodeURIComponent(String(value))
71 .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
72 } else {
73 value = converter.write(value, key);
74 }
75
76 key = encodeURIComponent(String(key));
77 key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
78 key = key.replace(/[\(\)]/g, escape);
79
80 var stringifiedAttributes = '';
81
82 for (var attributeName in attributes) {
83 if (!attributes[attributeName]) {
84 continue;
85 }
86 stringifiedAttributes += '; ' + attributeName;
87 if (attributes[attributeName] === true) {
88 continue;
89 }
90 stringifiedAttributes += '=' + attributes[attributeName];
91 }
92 return (document.cookie = key + '=' + value + stringifiedAttributes);
93 }
94
95 // Read
96
97 if (!key) {
98 result = {};
99 }
100
101 // To prevent the for loop in the first place assign an empty array
102 // in case there are no cookies at all. Also prevents odd result when
103 // calling "get()"
104 var cookies = document.cookie ? document.cookie.split('; ') : [];
105 var rdecode = /(%[0-9A-Z]{2})+/g;
106 var i = 0;
107
108 for (; i < cookies.length; i++) {
109 var parts = cookies[i].split('=');
110 var cookie = parts.slice(1).join('=');
111
112 if (cookie.charAt(0) === '"') {
113 cookie = cookie.slice(1, -1);
114 }
115
116 try {
117 var name = parts[0].replace(rdecode, decodeURIComponent);
118 cookie = converter.read ?
119 converter.read(cookie, name) : converter(cookie, name) ||
120 cookie.replace(rdecode, decodeURIComponent);
121
122 if (this.json) {
123 try {
124 cookie = JSON.parse(cookie);
125 } catch (e) {}
126 }
127
128 if (key === name) {
129 result = cookie;
130 break;
131 }
132
133 if (!key) {
134 result[name] = cookie;
135 }
136 } catch (e) {}
137 }
138
139 return result;
140 }
141
142 api.set = api;
143 api.get = function (key) {
144 return api.call(api, key);
145 };
146 api.getJSON = function () {
147 return api.apply({
148 json: true
149 }, [].slice.call(arguments));
150 };
151 api.defaults = {};
152
153 api.remove = function (key, attributes) {
154 api(key, '', extend(attributes, {
155 expires: -1
156 }));
157 };
158
159 api.withConverter = init;
160
161 return api;
162 }
163
164 return init(function () {});
165 }));