function CreateCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function ReadCookie(name)
{
	var nameEQ = name + "=";
	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;
}

function EraseCookie(name)
{
	CreateCookie(name,"",-1);
}

var NAMEVALUE_DELIMITER = "*";
var PARAM_DELIMITER = ",";
var EXPIRES = 30;


function SetCookieParam(cookieName, paramName, paramValue)
{
	if (paramName == "" || paramName == null)
		return;
	var currentVal = GetCookieParamValue(cookieName, paramName);
	if (currentVal == null) {
		currentVal = paramName + NAMEVALUE_DELIMITER + paramValue + PARAM_DELIMITER
		var newCookie = currentVal;
		if (ReadCookie(cookieName) != null)
			newCookie = ReadCookie(cookieName) + currentVal;
		CreateCookie(cookieName,newCookie, EXPIRES)
	} else {
		var cookieVal = ReadCookie(cookieName);
			
		cookieVal = cookieVal.replace(paramName + NAMEVALUE_DELIMITER + currentVal + PARAM_DELIMITER, 
						  paramName + NAMEVALUE_DELIMITER + paramValue + PARAM_DELIMITER);	
		CreateCookie(cookieName,cookieVal, EXPIRES)	
	}
}
function GetCookieParamValue(cookieName, paramName)
{
	var retVal = null;
	var nv = GetCookieNameValues(cookieName);
	for(var i=0;i < nv.length;i++){
		var c = nv[i];
		var pair = c.split(NAMEVALUE_DELIMITER);
		if (pair){
			if (pair[0] != "" && pair[0]== paramName) {
				retVal = pair[1];
			}
		}
	}
	return retVal;
}

function GetCookieNameValues(cookieName)
{
	var cookieValue = ReadCookie(cookieName);
	if (cookieValue == null) {
		cookieValue = "";
		CreateCookie(cookieName,cookieValue, EXPIRES)
	}
	var nv = cookieValue.split(PARAM_DELIMITER);
	return nv;
}




/* Some extra functions. They're only here to allow me to add some
	alerts to the example */

function saveIt(name)
{
	var x = document.forms[0].cookievalue.value;
	if (!x)
		alert('Please fill in a value in the input box.');
	else
		CreateCookie(name,x,7);
}

function readIt(name)
{
	alert('The value of the cookie is ' + ReadCookie(name));
}

function eraseIt(name)
{
	EraseCookie(name);
	alert('Cookie erased');
}

function setValue(name)
{
	SetCookieParam(name, document.forms[0].paramname.value, document.forms[0].paramvalue.value)
	document.forms[0].cookievalue.value = ReadCookie(name);
}
function getValue(cookiename, paramname)
{
	alert("value=" + GetCookieParamValue(cookiename, paramname));
}

function init()
{
	for (var i=1;i<3;i++)
	{
		var x = ReadCookie('ppkcookie' + i);
		if (x) alert('Cookie ppkcookie' + i + '\nthat you set on a previous visit, is still active.\nIts value is ' + x);
	}
}

/*
</script>
</head>
<body>
<FORM ID="Form1"><p>
The value of the cookie should be <INPUT NAME=cookievalue ID="Text1">
<br> Param Name: 
<INPUT NAME=paramname ID="Text2">
<br> Param Value: 
<INPUT NAME=paramvalue ID="Text3">
</p></FORM>
<p><a href="javascript:saveIt('ppkcookie1')" class="page">Create cookie 1</a><br>
<a href="javascript:readIt('ppkcookie1')" class="page">Read cookie 1</a><br>
<a href="javascript:eraseIt('ppkcookie1')" class="page">Erase cookie 1</a><br>
<a href="javascript:getValue('ppkcookie1', document.forms[0].paramname.value)" class="page">Get Param</a><br>
<a href="javascript:setValue('ppkcookie1')" class="page">Set Param</a>.</p>
</body></html>
*/

