Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.
Name: ui/lib/jquery.cookie.js
1: | /*! |
2: | * jQuery Cookie Plugin v1.4.0 |
3: | * https://github.com/carhartl/jquery-cookie |
4: | * |
5: | * Copyright 2013 Klaus Hartl |
6: | * Released under the MIT license |
7: | */ |
8: | (function (factory) { |
9: | if (typeof define === 'function' && define.amd) { |
10: | // AMD. Register as anonymous module. |
11: | define(['jquery'], factory); |
12: | } else { |
13: | // Browser globals. |
14: | factory(jQuery); |
15: | } |
16: | }(function ($) { |
17: | |
18: | var pluses = /\+/g; |
19: | |
20: | function encode(s) { |
21: | return config.raw ? s : encodeURIComponent(s); |
22: | } |
23: | |
24: | function decode(s) { |
25: | return config.raw ? s : decodeURIComponent(s); |
26: | } |
27: | |
28: | function stringifyCookieValue(value) { |
29: | return encode(config.json ? JSON.stringify(value) : String(value)); |
30: | } |
31: | |
32: | function parseCookieValue(s) { |
33: | if (s.indexOf('"') === 0) { |
34: | // This is a quoted cookie as according to RFC2068, unescape... |
35: | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); |
36: | } |
37: | |
38: | try { |
39: | // Replace server-side written pluses with spaces. |
40: | // If we can't decode the cookie, ignore it, it's unusable. |
41: | s = decodeURIComponent(s.replace(pluses, ' ')); |
42: | } catch(e) { |
43: | return; |
44: | } |
45: | |
46: | try { |
47: | // If we can't parse the cookie, ignore it, it's unusable. |
48: | return config.json ? JSON.parse(s) : s; |
49: | } catch(e) {} |
50: | } |
51: | |
52: | function read(s, converter) { |
53: | var value = config.raw ? s : parseCookieValue(s); |
54: | return $.isFunction(converter) ? converter(value) : value; |
55: | } |
56: | |
57: | var config = $.cookie = function (key, value, options) { |
58: | |
59: | // Write |
60: | if (value !== undefined && !$.isFunction(value)) { |
61: | options = $.extend({}, config.defaults, options); |
62: | |
63: | if (typeof options.expires === 'number') { |
64: | var days = options.expires, t = options.expires = new Date(); |
65: | t.setDate(t.getDate() + days); |
66: | } |
67: | |
68: | return (document.cookie = [ |
69: | encode(key), '=', stringifyCookieValue(value), |
70: | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE |
71: | options.path ? '; path=' + options.path : '', |
72: | options.domain ? '; domain=' + options.domain : '', |
73: | options.secure ? '; secure' : '' |
74: | ].join('')); |
75: | } |
76: | |
77: | // Read |
78: | |
79: | var result = key ? undefined : {}; |
80: | |
81: | // To prevent the for loop in the first place assign an empty array |
82: | // in case there are no cookies at all. Also prevents odd result when |
83: | // calling $.cookie(). |
84: | var cookies = document.cookie ? document.cookie.split('; ') : []; |
85: | |
86: | for (var i = 0, l = cookies.length; i < l; i++) { |
87: | var parts = cookies[i].split('='); |
88: | var name = decode(parts.shift()); |
89: | var cookie = parts.join('='); |
90: | |
91: | if (key && key === name) { |
92: | // If second argument (value) is a function it's a converter... |
93: | result = read(cookie, value); |
94: | break; |
95: | } |
96: | |
97: | // Prevent storing a cookie that we couldn't decode. |
98: | if (!key && (cookie = read(cookie)) !== undefined) { |
99: | result[name] = cookie; |
100: | } |
101: | } |
102: | |
103: | return result; |
104: | }; |
105: | |
106: | config.defaults = {}; |
107: | |
108: | $.removeCookie = function (key, options) { |
109: | if ($.cookie(key) !== undefined) { |
110: | // Must not alter options, thus extending a fresh object... |
111: | $.cookie(key, '', $.extend({}, options, { expires: -1 })); |
112: | return true; |
113: | } |
114: | return false; |
115: | }; |
116: | |
117: | })); |