var cookieToday = new Date();

function cookieGetAll(name)
	{
	var cookies;
	var prefix;
	var suffix;
	var value;
	var pos;
	
	name = name.toUpperCase();
	
	cookies = document.cookie;
	
	if ( cookies.lastIndexOf(name + "=") >= 0 )
		{
		prefix = cookies.split(name + "=");
		suffix = prefix[1];

		pos = suffix.indexOf(";");
		
		if ( pos > 0 )	
			value = suffix.substring(0, pos);
		else
			value = suffix;

		return(value);
		}
		
	return("");
	}
	

function cookieGet(name)
	{
	var keycookie;
	var cookies;
	var prefix;
	var suffix;
	var value;
	var pos1;
	var pos2;
	
	name = name.toUpperCase();

	// SIMPLE cookies are separated by "; "
	
	cookies = "; " + document.cookie + ";";
	
	if ( cookies.lastIndexOf("; " + name + "=") >= 0 )
		{
		prefix = cookies.split("; " + name + "=");
		suffix = prefix[1];

		pos1 = suffix.indexOf(";");
		value = unescape(suffix.substring(0, pos1));

		return(value);
		}
	else
		{
		// KEY cookies are separated by "&"
		
		keycookie = "&" + cookieSAL() + "&";
		
		if ( keycookie.lastIndexOf("&" + name + "=") >= 0 )
			{
			prefix = keycookie.split("&" + name + "=");
			suffix = prefix[1];

			pos1 = suffix.indexOf("&");
			value = unescape(suffix.substring(0, pos1));
			
			return(value);
			}
		
		return("");
		}
	}
	

function cookieSAL()
	{
	var cookies;
	var prefix;
	var suffix;
	var value;
	var pos1;
	
	cookies = "; " + document.cookie + ";";
	
	if ( cookies.lastIndexOf("; SAL=") >= 0 )
		{
		prefix = cookies.split("; SAL=");
		suffix = prefix[1];

		pos1 = suffix.indexOf(";");
		value = unescape(suffix.substring(0, pos1));

		return(value);
		}
		
	return("");
	}
	
	
function cookieSet(name, value) 
	{
	if ( (name.toUpperCase() == "SQL") || (value.length > 29) )
		{
		cookieDeleteKey(name);
		cookieWriteSimple(name, value, new Date(cookieToday.getTime() + (COOKIE_LIMIT)), "/");
		}
	else
		{
		cookieDeleteSimple(name);
		cookieWriteKey(name, value, new Date(cookieToday.getTime() + (COOKIE_LIMIT)), "/");
		}
	}
	

function cookieDelete(name)   
	{
	cookieDeleteKey(name);
   	cookieDeleteSimple(name);
	}


function cookieDeleteSimple(name, timelimit)
	{
	var limit;
	
	name = name.toUpperCase();
	
	if ( document.cookie.lastIndexOf("; " + name + "=") >= 0 )
		{
		if ( cookieDeleteSimple.arguments.length == 2 )
			limit = timelimit;
		else
			limit = DAY;
		
		cookieWriteSimple(name, "", new Date(cookieToday.getTime() - (limit)), "/", "", "");
		}
	}
		

function cookieDeleteKey(name)
	{
	var newcookie;
	var cookie;
	var pos1;
	var pos2;

	name = name.toUpperCase();
	
//	alert("OLD DELETEKEY=" + cookieGet(KEY))
	
	cookie = "&" + cookieGet(KEY) + "&";
	
	if ( cookie.lastIndexOf("&" + name + "=") >= 0 )
		{
		cookie = "&" + cookieGetAll(KEY);

		pos1 = cookie.indexOf("&" + name + "=");
	
		if ( pos1 >= 0 )
			{
			pos2 = cookie.indexOf("&", pos1 + 1);
			
			newcookie = cookie.substr(1, pos1 - 1);
			
			if ( pos2 >= 0 )
				newcookie = newcookie + cookie.substr(pos2);
				
			if ( newcookie.substr(0, 1) == "&" )
				newcookie = newcookie.substr(1);
				
//alert("NEW DELETEKEY=" + newcookie)	

			cookieWriteSimple(KEY, newcookie, new Date(cookieToday.getTime() + (COOKIE_LIMIT)), "/");				
			}
		}
	}
	

function cookieWriteKey(name, value, expires, path, domain, secure)
	{
	var newcookie;
	var cookie;
	var pos1;
	var pos2;
	
	name = name.toUpperCase();
	
	cookie = "&" + cookieGetAll(KEY);

	// &cookie1=value1&cookie2=value2&cookie3=value3
	
	pos1 = cookie.indexOf("&" + name + "=");
	
	if ( pos1 >= 0 )
		{
		pos2 = cookie.indexOf("&", pos1 + 1);

		newcookie = cookie.substr(0, pos1) + "&" +  name + "=" + escape(value);
		
		if ( pos2 >= 0 )
			newcookie = newcookie + cookie.substr(pos2);
			
		// &cookie1=value1&cookie2=newvalue2&cookie3=value3
		}
	else
		{
		if ( cookie.indexOf("=") >= 0 )
			cookie = cookie + "&";
			
		newcookie = cookie + name + "=" + escape(value);
		}
		
	newcookie = newcookie.substr(1);
//alert("cookie=" + cookie)	
//alert("newcookie" + newcookie) // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
	cookieWriteSimple(KEY, newcookie, new Date(cookieToday.getTime() + (COOKIE_LIMIT)), "/");
	}


function cookieWriteSimple(name, value, expires, path, domain, secure)
	{
	var newvalue;

	name = name.toUpperCase();
	
	if ( name == KEY )
		newvalue = value;
	else
		newvalue = escape(value);
		
	newvalue = replace(newvalue, "+", "%2B");
	
	document.cookie = name + "=" + newvalue 						+
		( (expires)  ? "; expires="  + expires.toGMTString() : "")	+
		( (path)     ? "; path="     + path : "")					+ 
		( (domain)   ? "; domain="   + domain : "")					+
		( (secure)   ? "; secure" : "");
	}

