	function writeCookie(cookieName, cookieValue, expires, domain, path, secureFlag)
	{
		if (cookieName)
		{
			var cookieDetails = cookieName + "=" + escape(cookieValue);
			cookieDetails += (expires ? "; expires=" + expires.toGMTString(): '');
			cookieDetails += (domain ? "; domain=" + domain: '');
			cookieDetails += (path ? "; path=" + path: '');
			cookieDetails += (secureFlag ? "; secure": '');
			document.cookie = cookieDetails;
		}
	}
	function readUnescapedCookie(cookieName)
	{
		var cookieValue = document.cookie;
		var cookieRegExp = new RegExp("\\b" + cookieName + "=([^;]*)");
		cookieValue = cookieRegExp.exec(cookieValue);

		if (cookieValue != null)
		{
			cookieValue = cookieValue[1];
		}
		return cookieValue;
	}
	function readCookie(cookieName)
	{
		cookieValue = readUnescapedCookie(cookieName);
	
		if (cookieValue != null)
		{
			cookieValue = unescape(cookieValue);
		}
		return cookieValue;
	}
	function deleteCookie(cookieName)
	{
		var expireDate = new Date();
		expireDate.setMonth(-1);
		writeCookie(cookieName, "", expireDate);
	}
	function writeMultiValueCookie( cookieName, multiValueName, value, expires, domain, path, secureFlag)
	{
		var cookieValue = readUnescapedCookie(cookieName);
		if (cookieValue)
		{	
			var stripAttributeRegExp = new RegExp("(^|&)" + multiValueName + "=[^&]*&?");
			cookieValue = cookieValue.replace(stripAttributeRegExp, "$1");
			if (cookieValue.length != 0)
			{
				cookieValue += "&";
			}
		}
		else
			cookieValue = "";

		cookieValue += multiValueName + "=" + escape(value);
		var cookieDetails = cookieName + "=" + cookieValue;
		cookieDetails += (expires ? "; expires=" + expires.toGMTString(): '');
		cookieDetails += (domain ? "; domain=" + domain: '');
		cookieDetails += (path ? "; path=" + path: '');
		cookieDetails += (secureFlag ? "; secure": '');
		document.cookie = cookieDetails;
	}
	function readMultiValueCookie(cookieName, multiValueName)
	{
		var cookieValue = readUnescapedCookie(cookieName);
		var extractMultiValueCookieRegExp = new RegExp("\\b" + multiValueName + "=([^;&]*)");
		cookieValue = extractMultiValueCookieRegExp.exec(cookieValue);

		if (cookieValue != null)
		{
			cookieValue = unescape(cookieValue[1]);
		}

		return cookieValue;
	}
	function deleteMultiValueCookie(cookieName, multiValueName, expires, domain, path, secureFlag)
	{
		var cookieValue = readUnescapedCookie(cookieName);
		if (cookieValue)
		{
			var stripAttributeRegExp = new RegExp("(^|&)" + multiValueName + "=[^&]*&?");
			cookieValue = cookieValue.replace(stripAttributeRegExp,"$1");
			if (cookieValue.length != 0)
			{
				var cookieDetails = cookieName + "=" + cookieValue;
				cookieDetails += (expires ? "; expires=" + expires.toGMTString(): '');
				cookieDetails += (domain ? "; domain=" + domain: '');
				cookieDetails += (path ? "; path=" + path: '');
				cookieDetails += (secureFlag ? "; secure": '');
				document.cookie = cookieDetails;
			}
			else
			{
				deleteCookie(cookieName)
			}
		}
	}
	function cookiesEnabled()
	{
		var cookiesEnabled = window.navigator.cookieEnabled;

		if (!cookiesEnabled)
		{
			document.cookie = "cookiesEnabled=True";
			cookiesEnabled = new Boolean(document.cookie).valueOf();
		}
		return cookiesEnabled;
	}
