/**
 * Sets a cookie with the given arguments.
 * An argument will assume its default value if it is passed in as null.
 * A null argument is not required for trailing omitted arguments.
 *
 * @param name    the name of the cookie.
 * @param value   the value of the cookie.
 * @param expires expiration date of the cookie (defaults to end of current session).
 * @param path    path for which the cookie is valid (defaults to path of calling document).
 * @param domain  domain for which the cookie is valid (defaults to domain of calling document).
 * @pararm secure Boolean value indicating if the cookie transmission requires a secure transmission.
 */
function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value)
		+ ((expires) ? "; expires=" + expires.toGMTString() : "")
		+ ((path)    ? "; path=" + path                     : "")
		+ ((domain)  ? "; domain=" + domain                 : "")
		+ ((secure)  ? "; secure"                           : "");
	document.cookie = curCookie;
}

/**
 * Returns the value in the named cookie or null if cookie does not exist.
 *
 * @param name the name of the desired cookie.
 * @return the value of the cookie with the given name.
 */
function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	}
	else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

/**
 * Deletes the cookie specified by the given arguments.
 * The path and domain assume default values if assigned null or omitted.
 *
 * @param name   the name of the cookie
 * @param path   path of the cookie (must be same as path used to create cookie)
 * @param domain domain of the cookie (must be same as domain used to create cookie)
 */
function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "="
			+ ((path)   ? "; path=" + path     : "")
			+ ((domain) ? "; domain=" + domain : "")
			+ "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}
