//------------------------------------------------------------------------------
// JavaScript functions supporting operations on Cookies
// Author: fwo
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------
// CONSTANTS
//-----------------------------------------------------------------------------------

DEFAULT_MULTI_COOKIE_SEPARATOR = "#";

//-----------------------------------------------------------------------------------
function getCookie(name) {
	var arg		= name + '=';
	var alen	= arg.length;
	var	clen	=	document.cookie.length;
	var i = 0;
	while (i<clen) {
		var j = i + alen;
		if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
		i = document.cookie.indexOf(" ",i) + 1;
		if (i==0) break;
		};
	return null;
};

//-----------------------------------------------------------------------------------
function setCookie(name,value,path) 
{
	str = name + "=" + value;
  if (path!==null) str += ";path="+path;
  document.cookie = str;
};

//-----------------------------------------------------------------------------------
function setCookieParam(cookieName, paramName, value, path)
{
	var s = getCookie(cookieName);
	if (s!=null)
	{
		var i = s.indexOf(DEFAULT_MULTI_COOKIE_SEPARATOR + paramName + DEFAULT_MULTI_COOKIE_SEPARATOR);
		if (i!=-1)
		{
			var j = s.indexOf(DEFAULT_MULTI_COOKIE_SEPARATOR,i + paramName.length+2);
			if (j==-1) j=s.length;
			//if (i>0) i--;
			s = s.substr(0,i) + s.substr(j,s.length);
		}
	}
	else
	{
		s = "";
	}
	if (value!=null)
	{
		s += DEFAULT_MULTI_COOKIE_SEPARATOR + paramName + DEFAULT_MULTI_COOKIE_SEPARATOR + value;
	}

	setCookie(cookieName,s,path);
}

//-----------------------------------------------------------------------------------
function getCookieParam(cookieName, paramName, defaultValue)
{
	var s = getCookie(cookieName);
	if (s!=null)
	{
		var i = s.indexOf(DEFAULT_MULTI_COOKIE_SEPARATOR + paramName + DEFAULT_MULTI_COOKIE_SEPARATOR);
		if (i!=-1)
		{
			var j = s.indexOf(DEFAULT_MULTI_COOKIE_SEPARATOR,i + paramName.length+2);
			if (j==-1) j=s.length;
			i += paramName.length+2
			return s.substr(i, j-i);
		}
		return defaultValue;
	}
	else
	{
		return defaultValue;
	}
}

//-----------------------------------------------------------------------------------
function getCookieVal(offset) {
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr==-1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset,endstr));
};

//-----------------------------------------------------------------------------------
function delCookie(name) {
  if (getCookie(name)) {
    document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}
