/*
 * Content
 *     variable
 *         COOKIE_EXPIRE_DAYS
 *         COOKIE_LIST_DELIMITER
 *         COOKIE_PATH
 *     function
 *         getCookie( Iname )
 *         getCookieList( Iname )
 *         formatCurrency( Iamount )
 *         setCookie( Iname, Ivalue, IexpireDays, Ipath )
 *         setCookieList( Iname, Ilist, IexpireDays, Ipath )
 *
 * Copyright (C) 2000-2003 Netnørds
 * www.netnords.dk <netnords@netnords.dk>
 *
 * Todo
 *     setCookie()
 *         Autodetect (multi-dim) array and convert to string
 *         Array, preserve associative keys
 *         Init cookie function
 *         What to return if cookie don't exists ?
 *             Option ?
 *         What to return if getCookieList not are an array. cookie or [ cookie ] ?
 *             Option ?
 *         Save arrays better
 */

	// Default values
	var COOKIE_EXPIRE_DAYS    = 30;
	var COOKIE_LIST_DELIMITER = ':';
	var COOKIE_PATH           = '/';

/*
// How to use

	alert( 'cookie demo first:\n' + document.cookie );

	// Set/retrieve number
	setCookie( 'rand', Math.random() );
	alert( 'rand: '+getCookie( 'rand' ) );

	// Set/retrieve strint
	setCookie( 'bird', 'black bird' );
	alert( 'bird: '+getCookie( 'bird' ) );

	// Set/retrieve an array
	if ( true ){
		var aList = [ 117, 'c:olon', 9, 'nine', 3.1415926, 'PI' ];
		setCookieList( 'someData', aList );
	}else {
		setCookie( 'someData string', 'asdasd' ); // Ups, not an array in, what out ?
	}

	var dummy = getCookieList( 'someData' );
	alert( 'someData.length: ' + dummy.length + '\nsomeData: ' + dummy );
	for ( var i=1; i<dummy.length; i++ )
	{
		alert( 'someData['+i+']: '+dummy[i] );
	}

	alert( 'cookie demo last:\n' + document.cookie );

//*/	


// No a cookie function, but i need it.
function formatCurrency(Iamount)
{
	var aArray  = (Iamount+0.00001).toString().split(/[,\.]/);
	return aArray[0]+','+(aArray[1]).substr(0, 2);
}


function getCookie(Iname)
{
	var Iname = Iname + "=";

   if ( 0 == document.cookie.length )
   {
   	return '';
	}

	start = document.cookie.indexOf( Iname );
	if ( -1 == start )
	{ 
   	return '';
	}

	start += Iname.length 
	stop   = document.cookie.indexOf( ';', start );
	if ( -1 == stop )
	{
		stop = document.cookie.length;
	}

	return unescape( document.cookie.substring( start, stop ) );
}


function getCookieList( Iname )
{
	str = getCookie( Iname );

	if ( undefined == str )
	{
		return '';
	}

	var aList = str.split( COOKIE_LIST_DELIMITER );
	for ( var i=0; i<aList.length; i++ )
	{
		aList[i] = (undefined!=aList[i]) && ('undefined'!=aList[i])
		         ? unescape( aList[i] )
		         : '';
	}

 	return aList;
}


function setCookie( Iname, Ivalue, IexpireDays, Ipath )
{
	if ( !IexpireDays ) IexpireDays = COOKIE_EXPIRE_DAYS;
	if ( !Ipath )       Ipath       = COOKIE_PATH;

	var expire = new Date(); 
	expire.setTime( expire.getTime() + IexpireDays * 86400000 );

	var cookieStr  = Iname + '='  + escape( Ivalue ) + ';'
	               + ' expires=' + expire.toGMTString() + ';';
	               + ' path='    + Ipath;

	document.cookie = cookieStr;
}


function setCookieList( Iname, Ilist, IexpireDays, Ipath )
{
	var str = '';

	if ( 0 == Ilist.length )
	{
		str = '';
	}
	else
	{
		str = escape( Ilist[0] );
		for ( var i=1; i<Ilist.length; i++ )
		{
			str += COOKIE_LIST_DELIMITER + escape(Ilist[i]);
		}
	}

	setCookie( Iname, str, IexpireDays, Ipath );
}


