1/** 2* Handles the cookie used by several JavaScript functions 3* 4* Only a single cookie is written and read. You may only save 5* simple name-value pairs - no complex types! 6* 7* You should only use the getValue and setValue methods 8* 9* @author Andreas Gohr <andi@splitbrain.org> 10* @author Michal Rezler <m.rezler@centrum.cz> 11*/ 12var DokuCookie = { 13 data: {}, 14 name: 'DOKU_PREFS', 15 16 /** 17 * Save a value to the cookie 18 * 19 * @author Andreas Gohr <andi@splitbrain.org> 20 */ 21 setValue: function(key,val){ 22 var text = [], 23 _this = this; 24 this.init(); 25 if (val === false){ 26 delete this.data[key]; 27 }else{ 28 val = val + ""; 29 this.data[key] = val; 30 } 31 32 33 //save the whole data array 34 jQuery.each(_this.data, function (key, val) { 35 if (_this.data.hasOwnProperty(key)) { 36 text.push(encodeURIComponent(key)+'#'+encodeURIComponent(val)); 37 } 38 }); 39 jQuery.cookie(this.name, text.join('#'), {expires: 365, path: DOKU_COOKIE_PARAM.path, secure: DOKU_COOKIE_PARAM.secure}); 40 }, 41 42 /** 43 * Get a Value from the Cookie 44 * 45 * @author Andreas Gohr <andi@splitbrain.org> 46 * @param def default value if key does not exist; if not set, returns undefined by default 47 */ 48 getValue: function(key, def){ 49 this.init(); 50 return this.data.hasOwnProperty(key) ? this.data[key] : def; 51 }, 52 53 /** 54 * Loads the current set cookie 55 * 56 * @author Andreas Gohr <andi@splitbrain.org> 57 */ 58 init: function(){ 59 var text, parts, i; 60 if(!jQuery.isEmptyObject(this.data)) { 61 return; 62 } 63 text = jQuery.cookie(this.name); 64 if(text){ 65 parts = text.split('#'); 66 for(i = 0; i < parts.length; i += 2){ 67 this.data[decodeURIComponent(parts[i])] = decodeURIComponent(parts[i+1]); 68 } 69 } 70 } 71}; 72