function com_netobjects_cookieComponent( params ) {
	this.getCookie = ccGetCookie;
	this.setCookie = ccSetCookie;
	this.deleteCookie = ccDeleteCookie;
   this.fixDate = fixDate;

	this.name = (params.name+"" != "undefined" ? params.name : "cookieComponent1");
	this.cookieName = (params.cookieName+"" != "undefined" ? params.cookieName : "");
   this.value = (params.value+"" != "undefined" ? params.value : "");
	this.expires = (params.expires+"" != "undefined" ? params.expires : "");
	this.path = (params.path+"" != "undefined" ? params.path : "");
	this.domain = (params.domain+"" != "undefined" ? params.domain : "");
	this.secure = (params.secure+"" != "undefined" ? params.secure : "");

	// Boolean variable specified if alert should be displayed if cookie exceeds 4KB
	ccCaution = false;
	
   function setcookieName(newCookie) {
	  if(newCookie+"" != "null" && newCookie+"" != "undefined")
  	    this.cookieName = newCookie
	  else
		 alert("You need to specify an appropriate name for the cookie");
   }

	// date - any instance of the Date object
	// * you should hand all instances of the Date object to this function for "repairs"
	// * this function is taken from Chapter 14, "Time and Date in JavaScript", in "Learn Advanced JavaScript Programming"
	function fixDate(date) {        
		var base = new Date(0);
	   var skew = base.getTime(); 
	   if (skew > 0)
	       date.setTime(date.getTime() - skew);
	}

	// name - name of the cookie// value - value of the cookie
	// [expires] - expiration date of the cookie (defaults to end of current session)
	// [path] - path for which the cookie is valid (defaults to path of calling document)
	// [domain] - domain for which the cookie is valid (defaults to domain of calling document)
	// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
	// * an argument defaults when it is assigned null as a placeholder
	// * a null placeholder is not required for trailing omitted arguments
	function ccSetCookie() {
		 if(this.cookieName != "" && this.cookieName+"" != "undefined" && this.cookieName+"" != "null")
		 {
			  var newExpiry = new Date(this.expires);
			  this.fixDate(newExpiry);
	        var curCookie = this.cookieName + "=" + escape(this.value) + 
						(newExpiry ? "; expires=" + newExpiry.toGMTString() : "") +
	                (this.path ? "; path=" + this.path : "") +
	                (this.domain ? "; domain=" + this.domain : "") +
	                (this.secure ? "; secure" : "");
	        if (!ccCaution || (this.cookieName + "=" + this.value).length <= 4000)
	                document.cookie = curCookie;        
	        else if (confirm("Cookie exceeds 4KB and will be cut!"))
	                document.cookie = curCookie;
		 }
	}
	                        
	// name - name of the desired cookie
	// * return string containing value of specified cookie or null if cookie does not exist
	function ccGetCookie() {        
		if(this.cookieName != "" || this.cookieName+"" != "undefined" && this.cookieName+"" != "null")
		{
        var cname = this.cookieName + "=";
        var dc = document.cookie;
        if(dc.length > 0) {
          begin = dc.indexOf(cname);
          if(begin != -1) {
            begin += cname.length;
            end = dc.indexOf(";", begin);
            if(end == -1) end = dc.length;
              return unescape(dc.substring(begin, end));
          }
          return null;
		  }
		}
	}
	
	// name - name of the cookie
	// [path] - path of the cookie (must be same as path used to create cookie)
	// [domain] - domain of the cookie (must be same as domain used to create cookie)
	// * path and domain default if assigned null or omitted if no explicit argument proceeds
	function ccDeleteCookie() {        
		if(this.cookieName != "" || this.cookieName+"" != "undefined" && this.cookieName+"" != "null")
		{
			if (ccGetCookie(this.cookieName)) {
	         document.cookie = this.cookieName + "=" + 
	         	((this.path) ? "; path=" + this.path : "") +
	         	((this.domain) ? "; domain=" + this.domain : "") +
	         	"; expires=Thu, 01-Jan-70 00:00:01 GMT"   
			   return true;
	      }
			return false;
		}
		return false;
	}
}

