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 }());