/**
 * class to manage cookies
 */
var Cookie = {

	/**
	 * set a document cookie
	 * @param name string
	 * @param value mixed
	 * @param expiresec string
	 */
	set : function (name, value,  expiresec ) {
		/*var exdate=new Date();
		exdate.setDate(exdate.getDate() + 1);
		document.cookie = name + "=" + escape(value) +	 ";expires="+exdate.toGMTString()+"; path=/";*/
		 var expires = "";
         if (typeof expiresec == "undefined") expiresec = 86400 ;
        
		if (expiresec) {
			var date = new Date();
			date.setTime(date.getTime()+(expiresec*1000));
			expires = "; expires="+date.toGMTString();
		}

		document.cookie = name+"="+escape(value)+expires+"; path=/";

	},

	/**
	 * get a single document cookie
	 * @param name string
	 * @return string
	 */
	get : function (name) { 
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
            }
		return null;

		/*if (document.cookie.length > 0)  {
			start = document.cookie.indexOf(name + '=');

			if (start!=-1) {
				start = start + name.length + 1;
				end = document.cookie.indexOf(';', start);

				if (end == -1)
					end = document.cookie.length;

				return unescape(document.cookie.substring(start, end));
			}
		}
		
		return '';*/
	},

	/**
	 * get all document cookies
	 * @return object
	 */
	getAll : function () {
		var cookies = '';

		cookies = document.cookie.replace(/\;/g, ', ' ).replace(/=/g, ' : ');
		cookies = cookies.split(',');

		for (i in cookies) {
			data = cookies[i].split(':');
			data[1] = '"' + Cookie._trim(data[1]) + '"';
			cookies[i] = data.join(':');
		}
		
		cookies = eval('({' + cookies.join(',', cookies) + '})');

		for (i in cookies) {
			cookies[i] = unescape(cookies[i]);
		}

		return cookies;
	},

	/**
	 * checks if cookie exists
	 * @param name string
	 * @return bool
	 */
	isSet : function (name) {
		return Cookie.get(name) ? true : false;
	},

	_trim : function (text) {
		 return text.replace(/^\s*|\s*$/g, '');
	},

	/**
	 *  removes cookie by name
	 *  @param name string
	 */
	remove : function (name) {
		if (Cookie.isSet(name)) {
			Cookie.set(name, '');
		} else {
			return false;
		}
	},

	/**
	 * updates existing cookie
	 * @param name string
	 * @param value mixed
	 */
	update : function (name, value) {
		Cookie.set(name, value);
	}

}
