
    
    function getDocumentCookie() {
	  var ret = "";
	  if (document.cookie) {
	    var start = document.cookie.indexOf("=") + 1;
	    var end = document.cookie.indexOf(";");
	    ret = document.cookie.substring(start, end==-1?document.cookie.length:end);
	  }
	  return unescape(ret);
	}
		
	function setDocumentCookie (key, value, valide) {
	  var date = new Date();
	  var end = new Date(date.getTime() + valide);
	  document.cookie = key + "=" + escape(value) + "; expires=" + end.toGMTString() + ";";
	}
	
	function getCookieMap() {
		var map=getDocumentCookie().split(";");
		var ret={};
		for(var i=0; i<map.length; i++) {
			var idx=map[i].indexOf("=");
			var key=idx==-1?map[i]:map[i].substring(0,idx);
			var value=idx==-1?null:map[i].substring(idx+1);
			ret[key]=value;
		}		
		return ret;
	}
	
	function setCookieMap(map) {
		var ss="";
		for(var key in map) {
			if (map[key]) {
				ss+=ss==""?"":";";
				ss+=key+"="+map[key];
			}
		}
		setDocumentCookie("cookies",ss,1000*60*60*24*365);
	}
	
	function setCookie(key,value) {
		var map=getCookieMap();
		map[key]=value;
		setCookieMap(map);
	}
	
	function getCookie(key) {
		var map=getCookieMap();
		return map[key];
	}	
	function removeCookie(key) {
		setCookie(key,null);
	}
	
	function saveCookieArray(key, arr,valide) {
		var value="";
		for(var n in arr) {
			if (arr[n]) {
  			 value+=value==""?"":",";
			 value+=n+":\""+arr[n]+"\"";
			} 
		}
		setCookie(key,value,valide);
	}
	
	function loadCookieArray(key) {
		var value=getCookie(key);
		var ret=null;
		if (value) {
			eval("ret={"+value+"};");
		}
		return ret;
	}
