/* *********************************************
 * qm2_cookies.js
 * originally taken from http://www.quirksmode.org/js/cookies.html
 * modified expiration handling
/* *********************************************/

/****************************************
* write a new cookie with expiration time
* params: cookieName,cookieValue,expiration,expirationUnits
* expiration: integer; default: 7
* expirationUnits: String (years,months,days,hours,minutes,seconds); default: days
****************************************/
function createTimedCookie(name,value,expiration,expirationUnits)
{
	var expires = cookieExpiration(expiration,expirationUnits);	
	if(expires) document.cookie = name+"="+value+"; expires="+expires+"; path=/";
	else document.cookie = name+"="+value+"; path=/";
}

/****************************************
* write a new cookie expiring with session
* params: cookieName,cookieValue,expiration,expirationUnits
* expiration: integer; default: 7
* expirationUnits: String (years,months,days,hours,minutes,seconds); default: days
****************************************/
function createSessionCookie(name,value)
{
	document.cookie = name+"="+value+"; path=/";
}

/****************************************
* read a  cookie
* params: cookieName
****************************************/
function readACookie(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;
}

/****************************************
* delete a  cookie
* params: cookieName
****************************************/
function eraseACookie(name)
{
	createCookie(name,"",-1);
}

/*****************************************************************
* calculate expiration in ms
* params: expiration,units
* copied from a script by http://www.einfach-fuer-alle.de/ and modified
******************************************************************/
function cookieExpiration(expiration,units) {
	// set default expiration time if it wasn't supplied
	expiration = (expiration>0)?expiration:7;
	// supply default units if units weren't supplied
	units = (units)?units:'days';
	// new date object we'll use to get the expiration time
	var date = new Date();
	// set expiration time according to units supplied
	switch(units) {
		case 'years':
			date.setFullYear(date.getFullYear() + expiration);
			break;
		case 'months':
			date.setMonth(date.getMonth() + expiration);
			break;
		case 'hours':
			date.setTime(date.getTime()+(expiration*60*60*1000));
			break;
		case 'minutes':
			date.setTime(date.getTime()+(expiration*60*1000));
			break;
		case 'seconds':
			date.setTime(date.getTime()+(expiration*1000));
			break;
		default:
		case 'days':
			date.setTime(date.getTime()+(expiration*24*60*60*1000));
			break;
		}
	// return expiration as GMT string
	return date.toGMTString();
}