if (!Edito) var Edito = new Object();

// Obsługa Cookie po stronie klienta
Edito.Cookie =
{
	// Ustawia cookie
	setCookie : function(name, value, days, path, domain, secure)
	{
		var expires = null;
		//value = escape(value);
		
		if (days)
		{
			expires = new Date();
			var theDay = expires.getDate();
			theDay = theDay + days;
			expires.setDate(theDay);
		}
		
		document.cookie = name + "=" + value +
			((expires) ? "; expires=" + expires.toGMTString() : "") +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			((secure) ? "; secure" : "");
	},

	// Pobiera wartość cookie na podstawie nazwy
	getCookie : function(name)
	{
		var dc = document.cookie;
		var cname = name + "=";
		var clen = dc.length;
		var cbegin = 0;
		
		while (cbegin < clen)
		{ 
			var vbegin = cbegin + cname.length;
			if (dc.substring(cbegin, vbegin) == cname)
			{ 
				var vend = dc.indexOf (";", vbegin);
				if (vend == -1) vend = clen;
				
				//return unescape(dc.substring(vbegin, vend));
				return dc.substring(vbegin, vend);
			}
			cbegin = dc.indexOf(" ", cbegin) + 1;
			
			if (cbegin== 0) break;
		}
		return null;
	},
	
	// Serializacja obiektu do stringa
	Serialize : function(data)
	{
		var cookie = new String();
		
		for (key in data)
		{
			if (cookie.length > 0)
				cookie += "&";
			
			cookie += key + "=" + data[key];
		}
		
		return cookie;
	},
	
	// Deserializacja obiektu ze stringa
	Unserialize : function(cookie)
	{
		var data = new Object();
		
		if (cookie != null)
		{
			var values = cookie.split('&');
			for (var i = 0; i < values.length; i++)
			{
				if (values[i].length > 0)
				{
					var item = values[i].split('=');
					data[item[0]] = item[1];
				}
			}
		}
		
		return data;
	},
	
	// Zapamiętuje wartość w cookie
	Add : function(cookieName, key, value)
	{
		var cookie = this.getCookie(cookieName);
		var data = this.Unserialize(cookie);
		
		data[key] = escape(value);
		
		cookie = this.Serialize(data);
		this.setCookie(cookieName, cookie, 365, '/');
	},

	// Pobiera wartość klucza z cookie
	GetValue: function(cookieName, key)
	{
		var cookie = this.getCookie(cookieName);
		var data = this.Unserialize(cookie);
		
		if (data[key] != undefined)
			return unescape(data[key]);
		else
			return null;
	},

	// Zwraca wszystkie klucze cookie
	GetKeys : function(cookieName)
	{
		var keys = new Array();
		var cookie = this.getCookie(cookieName);
		var data = this.Unserialize(cookie);
		
		for (key in data)
		{
			keys[keys.length] = key;
		}
		
		return keys;
	}
}
