//возвращает количество параметров
function GetCookieCount() {
	var len = document.cookie.length;
	var n=0;
	for (var i=0;i<len;i++) {
		if (document.cookie.charAt(i) == '=') n++;
	}
	return n; 
}

//возвращает значение параметра на основании его имени 
function GetCookieValueByName(name) {
	var beg = document.cookie.indexOf(name+"=");
	if (beg==-1) return false;
	var end = document.cookie.indexOf(";", beg + name.length);
	if (end==-1) end = document.cookie.length;
	return unescape(document.cookie.substring(beg + name.length + 1, end));
}

//возвращает значение параметра на основании его имени 
function GetCookieByName(name) {
	return GetCookieValueByName(name);
}

//возвращает значение параметра на основании его имени 
function GetCookie(name) {
	return GetCookieValueByName(name);
}

//возвращает значение i-го параметра
function GetCookieValueByIndex(index) {
	var len = document.cookie.length;
	var i,n=-1;
	for (i=0;i<len && n!=index;i++) {
		if (document.cookie.charAt(i) == '=') n++;
	}
	var end = document.cookie.indexOf(";", i);
	if (end==-1) end = document.cookie.length;
	return unescape(document.cookie.substring(i, end));
}

//возвращает имя i-го параметра
function GetCookieNameByIndex(index) {
	var len = document.cookie.length;
	var i, n=-1;
	for (i=0;i<len && n!=index-1;i++) {
		if (document.cookie.charAt(i) == ';') n++;
	}
	var end = document.cookie.indexOf("=", i);
	return unescape(document.cookie.substring(i, end));
}

//Устанавливает значение параметра.
//name и value обязательные параметры этой функции, остальные
//могут быть опущены.
//Время жизни задается в переменной expires
//expires задается в следующем виде Thu, 01-Jan-70 00:00:01 GMT
//т.е. День недели, число-месяц-год часы:минуты:секунды
//path задет префикс пути HTML-документов, в которых будет доступно
//значение параметра name
//domain задет доменное имя HTML-документов, в которых будет доступно
//значение параметра name
//secure - если этот параметр указан, то Cookie будут передаваться 
//только по защищенному протоколу HTTPS
function SetCookie(name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) +
					((expires) ? "; expires=" + expires.toGMTString() : "") +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//все тоже самое, только время жизни параметра
//задается не как абсолютная величина, а как относительная
//в неделях относительно текущей даты
function SetCookieForNWeeks(name, value, weeks, path, domain, secure) {
	var today = new Date();
	expires = new Date(today.getTime() + weeks*7*24*60*60*1000);
	document.cookie = name + "=" + escape(value) +
					"; expires=" + expires.toGMTString() +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//соответственно в днях
function SetCookieForNDays(name, value, days, path, domain, secure) {
	var today = new Date();
	expires = new Date(today.getTime() + days*24*60*60*1000);
	document.cookie = name + "=" + escape(value) +
					"; expires=" + expires.toGMTString() +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//соответственно в часах
function SetCookieForNHours(name, value, hours, path, domain, secure) {
	var today = new Date();
	expires = new Date(today.getTime() + hours*60*60*1000);
	document.cookie = name + "=" + escape(value) +
					"; expires=" + expires.toGMTString() +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//в минутах
function SetCookieForNMinuts(name, value, minuts, path, domain, secure) {
	var today = new Date();
	expires = new Date(today.getTime() + minuts*60*1000);
	document.cookie = name + "=" + escape(value) +
					"; expires=" + expires.toGMTString() +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//и, наконец, в секундах
function SetCookieForNSeconds(name, value, seconds, path, domain, secure) {
	var today = new Date();
	expires = new Date(today.getTime() + seconds*1000);
	document.cookie = name + "=" + escape(value) +
					"; expires=" + expires.toGMTString() +
					((path) ? "; path=" + path : "") +
					((domain) ? "; domain=" + domain : "") +
					((secure) ? "; secure" : "");
}

//удаляет параметр Cookie,
//установив ему время жизни 1 Января 1970 года
function DeleteCookie(name, path, domain) {
	if(GetCookieByName(name))
		document.cookie = name + "=" + 
						((path) ? "; path=" + path : "") +
						((domain) ? "; domain=" + domain : "") +
						"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

