/** * Handles the cookie used by several JavaScript functions * * Only a single cookie is written and read. You may only save * sime name-value pairs - no complex types! * * You should only use the getValue and setValue methods * * @author Andreas Gohr <andi@splitbrain.org> * @author Michal Rezler <m.rezler@centrum.cz> */ DokuCookie = { data: Array(), name: 'DOKU_PREFS', /** * Save a value to the cookie * * @author Andreas Gohr <andi@splitbrain.org> */ setValue: function(key,val){ this.init(); this.data[key] = val; // prepare expire date var now = new Date(); this.fixDate(now); now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000); //expire in a year //save the whole data array var text = ''; for(var key in this.data){ if (!this.data.hasOwnProperty(key)) continue; text += '#'+escape(key)+'#'+this.data[key]; } this.setCookie(this.name,text.substr(1),now,DOKU_BASE); }, /** * Get a Value from the Cookie * * @author Andreas Gohr <andi@splitbrain.org> */ getValue: function(key){ this.init(); return this.data[key]; }, /** * Loads the current set cookie * * @author Andreas Gohr <andi@splitbrain.org> */ init: function(){ if(this.data.length) return; var text = this.getCookie(this.name); if(text){ var parts = text.split('#'); for(var i=0; i<parts.length; i+=2){ this.data[unescape(parts[i])] = unescape(parts[i+1]); } } }, /** * This sets a cookie by JavaScript * * @link http://www.webreference.com/js/column8/functions.html */ setCookie: function(name, value, expires_, path_, domain_, secure_) { var params = { expires: expires_, path: path_, domain: domain_, secure: secure_, }; jQuery.cookie(name, value, params); }, /** * This reads a cookie by JavaScript * * @link http://www.webreference.com/js/column8/functions.html */ getCookie: function(name) { return unescape(jQuery.cookie(name)); }, /** * This is needed for the cookie functions * * @link http://www.webreference.com/js/column8/functions.html */ fixDate: function(date) { var base = new Date(0); var skew = base.getTime(); if (skew > 0){ date.setTime(date.getTime() - skew); } } };