function Cookie(){

	var name, value, expires, path="/", domain, secure=false;

	this.setName = function(sName){
		name=sName;
	}
	
	this.getName = function(){
		return name;
	}

	this.getValue = function(){
		return unescape(
			(value instanceof Array)?
			value.join("&"):
			value
			);
	}

	this.setValue = function(sValue){
		value=escape(sValue);
	}
	this.add = function(key, val){
		if(!(value instanceof Array)){
			var temp = value;
			value = [];
			if(temp){
				value[value.length] = temp;
			}
		}
		value[value.length] = key+"="+escape(val);
	}
	this.setExpires = function(date){
		expires=date;
	}
	this.getExpires = function(){
		return expires;
	}
	this.setDomain = function(sD){
		domain=sD;
	}
	this.getDomain = function(){
		return domain;
	}
	this.setSecure = function(scr){
		secure = !!scr;
	}
	this.getSecure = function(){
		return secure;
	}
	this.save = function(){
		if(name  && value){
			if(value instanceof Array){
				// if the value is as array, we join the array
				value=value.join("&");
			}
			document.cookie = name+'='+escape( value ) +
			( ( expires ) ? ';expires='+expires.toGMTString() : '' ) + //expires.toGMTString()
			( ( path ) ? ';path=' + path : '' ) +
			( ( domain ) ? ';domain=' + domain : '' ) +
			( ( secure ) ? ';secure' : '' );
		}
	}
	this.remove = function(){
		// The cookie removed if the expires date is before today
		expires = new Date(new Date().getTime()-1000*60*60*24);
		this.save();
	}
};

Cookie.get = function(name){
	/*
            the document.cookie return a string contains all the cookies available in the browser for the specific domain in format of: Name=Value;Name=Value;Name=Value
            this function take only the cookie with the requested name and return a Cookie object with it's value.
            if there isn't a cookie with the requested name, the function returns an empty cookie object with the requested name
	 */
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	var cookie = new Cookie();
	if ( !((( !start ) && ( name != document.cookie.substring( 0, name.length ) )) || (start==-1) ) ) {
		var end = document.cookie.indexOf( ';', len );
		if ( end == -1 ) end = document.cookie.length;
		cookie.setValue(unescape( document.cookie.substring( len, end ) ));
	}

	cookie.setName(name);
	return cookie;
}


//// Create a new cookie and save it
//var c = new Cookie();
//c.setName("test");
//c.setValue("val");
//c.save();
//
//var c1 = new Cookie();
//c1.setName("test1");
//c1.add("key1","value1");
//c1.add("key2","value2");
//c1.save();
//
//
//
//
//// Get a cookie and alert it's name and value
//var c2 = Cookie.get("test");
//alert(c2.getName() + ":" + c2.getValue());
//
//// Remove the cookie
//c.remove();
