function encode(unencoded) {
	var theResult = escape(unencoded);
	return theResult;
}
function decode(encoded) {
	var theResult = unescape(encoded.replace(/\+/g,  " "));
	return theResult;
}

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return "undefined";
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
function getSessionCookie( name ) {
	var theCookie = getCookie("Session");
	var start;
	if (theCookie != null) {
		start = theCookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ( ( !start ) && ( name != theCookie.substring( 0, name.length ) ) ) {
			return null;
		}
		if ( start == -1 ) return null;
		var end = theCookie.indexOf( '&', len );
		if ( end == -1 ) end = theCookie.length;
		return unescape( theCookie.substring( len, end ) );
	} else {
		return "not present";
	}
}


function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+decode(value) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}
function updateSessionCookie( name, value ) {
	var theCookie = getCookie("Session");
	var theKey = getSessionCookie( name );
	if (theKey != null && theKey!="") {
		var start = theCookie.indexOf(name+"=");
		var len = start+name.length+1;
		beforeC = theCookie.substring(0,len);
		afterCraw = theCookie.substring(beforeC.length,theCookie.length);
		afcValLength = afterCraw.indexOf("&");
		if (afcValLength == -1) {
			valueC = afterCraw;
			afterC = "";
		} else {
			valueC = afterCraw.substring(0, afcValLength);
			afterC = afterCraw.substring(afcValLength);
		}
		setCookie("Session", beforeC+value+afterC, 365, "/");
	} else {
		theCookie = theCookie+"&"+name+'='+escape( value );
		setCookie("Session", theCookie, 365, "/");
	}
}

//bonus querystring function
function checkQuerystring(name) {
	var theReturn;
	var qsParam = new Array();
	var query = window.location.search.substring(1);
	var params = query.split('&');
	for (var i=0; i<params.length; i++) {
		var pos = params[i].indexOf('=');
		if (pos > 0) {
			var key = params[i].substring(0,pos);
			var val = params[i].substring(pos+1);
			qsParam[key] = val;
			if (key == name)
			{
				theReturn = val;
			}
		}
	}
	return theReturn;
} 