(
function
(factory) {
if
(
typeof
define ===
'function'
&& define.amd) {
define([
'jquery'
], factory);
}
else
{
factory(jQuery);
}
}(
function
($) {
var
pluses = /\+/g;
function
decode(s) {
if
(config.raw) {
return
s;
}
return
decodeURIComponent(s.replace(pluses,
' '
));
}
function
decodeAndParse(s) {
if
(s.indexOf(
'"'
) === 0) {
s = s.slice(1, -1).replace(/\\"/g,
'"'
).replace(/\\\\/g,
'\\'
);
}
s = decode(s);
try
{
return
config.json ? JSON.parse(s) : s;
}
catch
(e) {}
}
var
config = $.cookie =
function
(key, value, options) {
if
(value !== undefined) {
options = $.extend({}, config.defaults, options);
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 = [
config.raw ? key : encodeURIComponent(key),
'='
,
config.raw ? value : encodeURIComponent(value),
options.expires ?
'; expires='
+ options.expires.toUTCString() :
''
,
options.path ?
'; path='
+ options.path :
''
,
options.domain ?
'; domain='
+ options.domain :
''
,
options.secure ?
'; secure'
:
''
].join(
''
));
}
var
cookies = document.cookie.split(
'; '
);
var
result = key ? undefined : {};
for
(
var
i = 0, l = cookies.length; i < l; i++) {
var
parts = cookies[i].split(
'='
);
var
name = decode(parts.shift());
var
cookie = parts.join(
'='
);
if
(key && key === name) {
result = decodeAndParse(cookie);
break
;
}
if
(!key) {
result[name] = decodeAndParse(cookie);
}
}
return
result;
};
config.defaults = {};
$.removeCookie =
function
(key, options) {
if
($.cookie(key) !== undefined) {
$.cookie(key,
''
, $.extend({}, options, { expires: -1 }));
return
true
;
}
return
false
;
};
}));