// Jacek Wiślicki 2006-05-24 (wersja 2006-07-05)

//tworzy cookie
function setCookie(cookieName, value, seconds)
{
	if(seconds)
	{
		var date = new Date();
		date.setTime(date.getTime() + (seconds*1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else 
		var expires = "";
	
	document.cookie = cookieName + "=" + value + expires + "; path=/";
}

//zwraca wartość cookie
function readCookie(cookieName)
{
	var nameEQ = cookieName + "=";
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++)
	{
		var c = ca[i];
		while(c.charAt(0)==' ')
			c = c.substring(1, c.length);
		if(c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length,c.length);
	}
	return null;
}

//kasuje cookie
function eraseCookie(cookieName)
{
	setCookie(cookieName, "", -1);
}

//aktualizuje wartość do wartości cookie (po przecinku)
function updateCookieValue(cookieName, field)
{
	//brak uprawnionych w ramach organizacji
	if(field == null)
		return;

	var cookieValue = readCookie(cookieName);
	
	if(cookieValue == null)
		cookieValue = "";
	var values = cookieValue.split(",");
	var newValue = "";
				
	var singleOption = field.length == null;//grupa składa się tylko z 1 opcji	
	if(singleOption)
	{
		//dopisywanie wartości z bieżącego pola
		if(field.type == "checkbox" || field.type == "radio")
		{
			if(field.checked)
				newValue += field.value + ",";
			//przepisywanie pozostalych zapamiętanych wartości (z innych - niewidocznych - grup)
			for(i = 0; i < values.length; i++)
			{
				var inField = values[i] == field.value;
				if(!inField && values[i] != null && values[i].length > 0)
					newValue += values[i] + ",";
			}
		}
		else if(field.type == "select-one" || field.type == "select-multiple")
			newValue = field.options[field.selectedIndex].value;
		else
			newValue = field.value;
	}
	else
	{
		if(field.type == "select-one" || field.type == "select-multiple")
		{
			for(i = 0; i < field.options.length; i++)
				if(field.options[i].selected)
					newValue += field.options[i].value + ",";
		}
		else
		{
			//dopisywanie wartości z bieżącej grupy
			for(i = 0; i < field.length; i++)
				if(field[i].checked)
					newValue += field[i].value + ",";
		
			//przepisywanie pozostalych zapamiętanych wartości (z innych - niewidocznych - grup)
			for(i = 0; i < values.length; i++)
			{
				var inField = false;
				for(j = 0; j < field.length; j++)
				{
					if(values[i] == field[j].value)
					{
						inField = true;
						break;
					}
				}
				if(!inField && values[i] != null && values[i].length > 0)
					newValue += values[i] + ",";
			}
		}
	}

	setCookie(cookieName, newValue, null);
}

//ustawia wartość ukrytego pola formularza na podstawie wartości z cookie
function setHidden(cookieName, form, hiddenName)
{
	var cookieValue = readCookie(cookieName);
	if(cookieValue == null)
		cookieValue = "";
		
	var values = cookieValue.split(",");
	for(i = 0; i < values.length; i++)
		if(values[i] != null && values[i].length > 0)
		{
			var element = document.createElement("input");
			element.type = "hidden";
			element.name = hiddenName;
			element.value = values[i];

			form.appendChild(element);
		}
}

//ustawia wartość pola na podstawie wartośc cookie
function setFieldValue(cookieName, field)
{
	//brak uprawnionych w ramach organizacji
	if(field == null)
		return;
	
	var singleOption = field.length == null;//grupa składa się tylko z 1 opcji
	
	var valuesString = readCookie(cookieName);
	if(valuesString == null)
	{
		if(singleOption && (field.type == "checkbox" || field.type == "radio"))
			field.checked = false;
			
		return;
	}
		
	var values = valuesString.split(",");
	if(singleOption)
	{
		if(field.type == "checkbox" || field.type == "radio")
		{
			for(i = 0; i < values.length; i++)
				if(values[i] != null && values[i].length > 0 && field.value == values[i])
				{
					field.checked = true;
					break;
				}
		}
		else if(field.type == "select-one" || field.type == "select-multiple")
		{
			for(i = 0; i < values.length; i++)
				for(j = 0; j < field.options.length; j++)
					if(field.options[j].value == values[i])
					{
						field.options[j].selected = true;
						break;
					}
		}
		else
		{
			//można użyć valuesString, ale w ten sposob usuwany jest przecinek na końcu
			field.value = values[0];
		}
	}
	else
	{
		
		if(field.type == "select-one" || field.type == "select-multiple")
		{
			for(i = 0; i < values.length; i++)
				for(j = 0; j < field.options.length; j++)
					if(field.options[j].value == values[i])
					{
						field.options[j].selected = true;
						break;
					}
		}
		else
		{
			for(i = 0; i < field.length; i++)
				for(j = 0; j < values.length; j++)
					if(values[j] == field[i].value)
					{
						field[i].checked = true;
						break;
					}
		}
	}
}
