function CookiesWrapper(serialized_cookies, TTL) {
	this.cookies = new Array();
	this.ttl = CookiesWrapper.arguments.length < 2 ? null : TTL;
	
	this.get = getCookieItem;
	this.set = setCookieItem;
	this._addItem = _addCookieItem;
	this._getExpiration = _getCookieExpiration;
	
	var splitted_cookies = serialized_cookies.split(";");
	for (key = 0; key < splitted_cookies.length; key++)
		this._addItem(splitted_cookies[key]);
}

function getCookieItem(id) {
	for (key in this.cookies)
		if(id == key)
			return this.cookies[id];
}

function setCookieItem(id, value) {
	this.cookies[id] = value;
	document.cookie = escape(id) + "=" + escape(value) + (this.ttl ? "; expires=" + this._getExpiration() : "") + "; path=/;";
}

function _addCookieItem(subject) {
	var cookie_item = subject.split("=");
	this.cookies[unescape(cookie_item[0].replace(/(\s*)(.*)(\s*)/g, "$2"))] = unescape(cookie_item[1]);
}

function _getCookieExpiration() {
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + this.ttl);
	return expDate.toGMTString();
}
