var pagestate = {

	epoch: new Date("Thu, 01-Jan-70 00:00:01 GMT"),

	getAll: function() {
		var values = new Object();
		if (document.cookie == "") return values;
		
		var cookies = document.cookie.split(";");
		for (var i = 0; i < cookies.length; i++) {
			var pair = cookies[i].split("=");
			values[pair[0].toLowerCase()] = unescape(pair[1]);
		}
		return values;
	},
	
	get: function(name, default_) {
		if (default_ == null) default_ = null;
		if (document.cookie == "") return default_;
		
		var cookies = document.cookie.split(";");
		name = escape(name.toLowerCase());
		for(var i = 0; i < cookies.length; i++) {
			var pair = cookies[i].split("=");
			if (name == pair[0].toLowerCase().replace(/^\s*/, '').replace(/\s*$/, '')) return unescape(pair[1]);
		}
		return default_;
	},
	
	set: function(name, value, options) {
		var cookie_parts = new Array();
						
		if (value == null) value = "";
		cookie_parts.push(escape(name.toLowerCase()) + "=" + escape(value));
		
		if (options){
			var expires = options["expires"];
			if (expires != null) {
				if (typeof expires != "Date") expires = new Date(expires);
				cookie_parts.push("expires=" + expires.toGMTString());
			}
			
			var path = options["path"];
			if (path != null)
				cookie_parts.push("path=" + path);
	
			var domain = options["domain"];
			if (domain != null)
				cookie_parts.push("domain=" + domain);
				
			if (options["secure"]) cookie_parts.push("secure");
		}

		document.cookie = cookie_parts.join("; ");
	},

	remove: function(name, options, secure) {
		if (options == null) options = new Object();
		options["expires"] = pagestate.epoch;
		pagestate.set(name, null, options);
	}
};
