1 /** 2 * @author Gillis Haasnoot <gillis.haasnoot@gmail.com> 3 * @package Banana.Util 4 * @summary Dom Helper. dom writer for various banana actions 5 */ 6 7 /** @namespace Banana.Util.StateManager */ 8 goog.provide('Banana.Util.StateManager'); 9 10 /** 11 * Creates a statemanager. It allows to store values in a cookie. 12 * 13 * @constructor 14 */ 15 Banana.Util.StateManager = (function() 16 { 17 /** 18 * @ignore 19 */ 20 function setCookie (name, value, expires, path, domain, secure) { 21 var curCookie = name + "=" + escape(value) + 22 ((expires) ? "; expires=" + expires.toGMTString() : "") + 23 ((path) ? "; path=" + path : "") + 24 ((domain) ? "; domain=" + domain : "") + 25 ((secure) ? "; secure" : ""); 26 document.cookie = curCookie; 27 } 28 29 /** 30 * @ignore 31 */ 32 function getCookie(name) { 33 var results = document.cookie.match ( '(^|;) ?' + name + '=([^;]*)(;|$)' ); 34 35 if ( results ) 36 return ( unescape ( results[2] ) ); 37 else 38 return null; 39 } 40 41 return({ 42 43 /** 44 * @param {String} name 45 * @param {String} value 46 */ 47 setState : function(name,value) 48 { 49 //TODO improve speed by not overwriting same values COOKie writing is slow!!! 50 setCookie(name,value); 51 }, 52 53 /** 54 * @param {String} name 55 * @return {String} 56 */ 57 getState : function(name) 58 { 59 var c = getCookie(name); 60 if (c == 'false') {return false;} 61 else if ( c=='true'){return true;} 62 return c; 63 }, 64 65 /** 66 * @param {String} name 67 */ 68 removeState : function(name) 69 { 70 setCookie(name,""); 71 } 72 73 }); 74 }());