
function getCookie(name) {
	var pairs = document.cookie.split(";");
	for (var i=0; i < pairs.length; i++) {
		pairs[i] = pairs[i].split("=");
		if (pairs[i][0].replace(/^ +| +$/g, "") == name)
			return unescape(pairs[i][1]);
	}
	return null;
}

function setCookie(name, value, expires, path, domain, secure) {

	if (expires) {
		var expdate = new Date();
		expdate.setTime(expdate.getTime() + (expires * 24 * 60 * 60 * 1000));
		expires = expdate;
	}

	document.cookie = name + "=" + escape(value) +
		(expires ? "; expires=" + expires.toGMTString() : "") +
		(path ? "; path=" + path : "") +
		(domain ? "; domain=" + domain : "") +
		(secure ? "; secure" : "");

}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		setCookie(name, "", -1, path, domain, false);
	}
}

var csgCookieJar = {
	getCookieData: function (prefix) {
		var result = [];
		for (var i = 0; i < csgCookieJar.cookieDataArray.length; i++) {
			var data = csgCookieJar.cookieDataArray[i].split("=");
			if (data[0] == prefix) result[result.length] = unescape(data[1]);
		}
		return result;
	},

	deleteCookieData: function (prefix) {
		var result = [];
		for (var i = 0; i < csgCookieJar.cookieDataArray.length; i++) {
			var data = csgCookieJar.cookieDataArray[i];
			if (data.split("=")[0] != prefix) result[result.length] = data;
		}
		csgCookieJar.cookieDataArray = result;
	},

	appendCookieData: function (prefix, datalist) {
		for (var i = 0; i < datalist.length; i++) {
			csgCookieJar.cookieDataArray[csgCookieJar.cookieDataArray.length] = 
				prefix + "=" + escape(datalist[i]);
		}
	},

	replaceCookieData: function (prefix, datalist) {
		csgCookieJar.deleteCookieData(prefix);
		csgCookieJar.appendCookieData(prefix, datalist);
	},

	queueCookieData: function (prefix, datalist, max) {
		var data = csgCookieJar.getCookieData(prefix);

		if (data.length > 0 && datalist.length > 0) 
			for (var i = data.length - 1; i >= 0; i--) 
				for (var j = 0; j < datalist.length; j++) 
					if (data[i] == datalist[j])
						data.splice(i, 1);

		data = data.concat(datalist);

		if (max > 0 && data.length > max) {
			data.splice(0, data.length - max);
		}
		csgCookieJar.replaceCookieData(prefix, data);
	},

	commitCookieData: function() {
		csgCookieJar.cookieData = csgCookieJar.cookieDataArray.join("&");
		setCookie(csgCookieJar.cookieName, csgCookieJar.cookieData, 10 * 365, "/");
	}
};

csgCookieJar.cookieName = "TMD";
csgCookieJar.cookieData = getCookie(csgCookieJar.cookieName);
csgCookieJar.cookieDataArray = csgCookieJar.cookieData ? csgCookieJar.cookieData.split("&") : [];

