var Cookie = { data: {}, options: {expires: 1, domain: "", path: "", secure: false}, init: function(options, data) { Cookie.options = Object.extend(Cookie.options, options || {}); var payload = Cookie.retrieve(); if(payload) { Cookie.data = payload.evalJSON(); } else { Cookie.data = data || {}; } Cookie.store(); }, getData: function(key) { return Cookie.data[key]; }, setData: function(key, value) { Cookie.data[key] = value; Cookie.store(); }, removeData: function(key) { delete Cookie.data[key]; Cookie.store(); }, retrieve: function() { var start = document.cookie.indexOf(Cookie.options.name + "="); if(start == -1) { return null; } if(Cookie.options.name != document.cookie.substr(start, Cookie.options.name.length)) { return null; } var len = start + Cookie.options.name.length + 1; var end = document.cookie.indexOf(';', len); if(end == -1) { end = document.cookie.length; } return unescape(document.cookie.substring(len, end)); }, store: function() { var expires = ''; if (Cookie.options.expires) { var today = new Date(); expires = Cookie.options.expires * 86400000; expires = ';expires=' + new Date(today.getTime() + expires); } document.cookie = Cookie.options.name + '=' + escape(Object.toJSON(Cookie.data)) + Cookie.getOptions() + expires; }, erase: function() { document.cookie = Cookie.options.name + '=' + Cookie.getOptions() + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; }, getOptions: function() { return (Cookie.options.path ? ';path=' + Cookie.options.path : '') + (Cookie.options.domain ? ';domain=' + Cookie.options.domain : '') + (Cookie.options.secure ? ';secure' : ''); } };