
////////////////////////////////////////////////////////////////////////////
//
// Функция    : SetCookie
// Назначение : установка значения cookie с заданным именем
//
// Прототип   :
//
// SetCookie(strName, oValue [, oDateExpires [, strDomain [, strPath [, bSecure]]]])

function SetCookie(strName, oValue)
{
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;

	var oDate = false; // аргумент expires

	if((argc > 2) && (argv[2] != null))
	{
		// задана дата
		// дату допустимо задавать:
		//	объектом Date,
		//	числом (миллисекундное смещение от 00:00:00 01.01.1970)
		//	строкой в формате, приемлемом для Date.parse

		var nStamp = (typeof(argv[2]) != "number")	?
				Date.parse(argv[2].toString())	:
				argv[2];

		if(!isNaN(nStamp))
			oDate = new Date(nStamp);
	}

	document.cookie =	strName + "=" + escape(oValue.toString())			+
				(oDate ? "; expires=" + oDate.toGMTString() : "")		+
				(((argc > 3) && (argv[3])) ? "; domain=" + argv[3] : "")	+
				(((argc > 4) && (argv[4])) ? "; path=" + argv[4] : "")		+
				((argc > 5) ? (argv[5] ? "; secure" : "") : "");
}


////////////////////////////////////////////////////////////////////////////
//
// Функция    : GetCookie
// Назначение : возвращает значение cookie с заданным именем
//

function GetCookie(strName)
{
	if((typeof(strName) == "string") && strName.length)
	{
		var i = 0, j;

		var strFind	= strName + "=";
		var strCookie	= document.cookie;

		do
		{
			j = i + strFind.length;

			if(strCookie.substring(i, j) == strFind)
			{
				var nEnd = strCookie.indexOf(";", j);

				if(nEnd < 0)
					nEnd = strCookie.length;

				return unescape(strCookie.substring(j, nEnd));
			}
		}
		while(i = strCookie.indexOf(" ", j) + 1);
	}

	return null;
}


////////////////////////////////////////////////////////////////////////////
//
// Функция    : DeleteCookie
// Назначение : удаляет cookie с заданным именем
//

function DeleteCookie(strName)
{
	document.cookie = strName + "=0; expires=" + (new Date(0)).toGMTString();
}


////////////////////////////////////////////////////////////////////////////
//
// Функция    : DeleteAllCookie
// Назначение : удаляет все cookie, связанные с документом
//

function DeleteAllCookie()
{
	var arr = new Array();
	var str = document.cookie;

	var i = 0, nBeg = 0, nEnd;

	do
	{
		if((nEnd = str.indexOf("=", nBeg)) > -1)
			arr[i] = str.substring(nBeg, nEnd);
	}
	while(i++, nBeg = str.indexOf(" ", nEnd) + 1);

	for(i = 0; i < arr.length; i++)
		DeleteCookie(arr[i]);
}


////////////////////////////////////////////////////////////////////////////
//
// Функция    : IsCookieEnabled
// Назначение : определяет, "включены" ли куки на основе свойства
//		navigator.cookieEnabled, либо путем установки
//		"тестовой" куки

function IsCookieEnabled()
{
	if(typeof(navigator.cookieEnabled) != "undefined")
		return navigator.cookieEnabled;
	else
	{
		// свойство navigator.cookieEnabled не поддерживается
		// установим и получим тестовую куку

		var _c = "__V_TEST_COOKIE_NAME_";

		SetCookie(_c, "1");

		if(GetCookie(_c) != null)
		{
			DeleteCookie(_c);
			return true;
		}

		return false;
	}
}