// setCookie
// Nastavi cookie se jmenem name na hodnotu value.
// je-li zadan retezec expires, nastavi ho take. Ocekava format GMT.
// je-li zadan retezec path, nastavi ho take.
// je-li zadan retezec domain, nastavi ho take.
// je-li zadan boolean secure, nastavi ho take.
// Cookie muze byt dlouhe maximalne 4096 znaku!
function setCookie (name, value, expires, path, domain, secure) // name a value jsou povinne
{
	var cookie = escape(name) + "=" + escape(value);
	if (setCookie.arguments.length > 1 && expires != null)
	{
		cookie += "; expires=" + expires;
	}
	if (setCookie.arguments.length > 2 && path != null)
	{
		cookie += "; path=" + path;
	}
	if (setCookie.arguments.length > 3 && domain != null)
	{
		cookie += "; domain=" + domain;
	}
	if (setCookie.arguments.length > 4 && secure)
	{
		cookie += "; secure";
	}
	document.cookie = cookie;
}

// deleteCookie
// Vymaze Cookie urcene jmenem
function delCookie (name)
{
	var cookie = readCookie(name);
	for (cookieName in cookie)
	{
		setCookie(name +"["+ cookieName +"]", "", (new Date(0)).toGMTString());
	}
	setCookie(name, "", (new Date(0)).toGMTString());
}

// readCookie
// Vrati hodnotu cookie se jmenem name. Neexistuje-li, vraci false.
// Po prvnim volani funkce uchovava pole cookies v pameti
readCookie.cookieArray = new Array(); // Staticka promenna funkce readCookie
function readCookie (name)
{
	if (readCookie.cookieArray.length == 0) // Prvni volani teto funkce, nebo jsou Cookies prazdne
	{
		readCookie.cookieArray = getCookies ();
	}
	
	if (readCookie.cookieArray[name]) // Vrati takto pojmenovane cookie
	{
		return readCookie.cookieArray[name];
	}
	return false;
}

// getCookies
// Precte vsechna cookies a vraci je rozdelena do pole.
function getCookies ()
{
	var cookieList = document.cookie.split("; "); // Rozdelit seznam cookies na jednotlive cookie
	var cookieArray = new Array();
	for (var i=0; i < cookieList.length; i++)
	{
		var part = cookieList[i].split("="); // Ziskat nazev a hodnotu cookie
		var name = Array();
		name = unescape(part[0]).split("["); // Rozdelit jmeno podle oteviracich hranatych zavorek (nazev se zavorkama vracim jako pole)
		for (var j = 0; j < name.length; j++)
		{
			if (j > 0)
			{
				name[j] = name[j].substring(0, name[j].length - 1); // Diky splitu zustaly na konci hranate zavorky ]
			}
			if (! name[j].match('^[0-9]+$')) // Pokud jmeno nejsou jen cisla
			{
				name[j] = '"' + name[j] + '"'; // Uzavru jmeno do uvozovek
			}
			if (j > 0)
			{
				eval ("if (typeof cookieArray[" + name[0] + "] != 'object') { cookieArray[" + name[0] + "] = new Array(); }"); // Vykonam vytvoreni noveho prvku, pokud zatim neexistuje
				name[0] += "][" + name[j]; // Pridani dalsiho klice
			}
		}
		eval ("cookieArray[" + name[0] + "] = \"" + (unescape(part[1])) + "\";"); // Vykonam ulozeni hodnoty do prvku
	}
	return cookieArray;
}
