//CVS:       $Id: cookie.js,v 1.1 2003/03/20 01:24:24 cvsdevel Exp $
//Title:       cookie
//Version:     1.0
//Copyright:   Copyright (c) 2000
//Author:      REVIE
//Company:     Rhino Productions
//Description: cookie javascript utilities

/*
   1.00  REVIE 2000/02/05  created
 */

function checkCookie() {
   var oreo = new Cookie(document, "browsercheck");
   oreo.remove();
   oreo.favorite = "doublestuff";
   oreo.store();
   oreo.favorite = null;

   // now, let's try retrieving the cookie
   if(!oreo.load() || !oreo.favorite || oreo.favorite!="doublestuff") { 
      alert("Your browser must be cookie enabled in order to effectively use this web site.");
   } oreo.remove(); return(true);
} // checkCookie

function Cookie(document, name, hours, path, domain, secure) {
   // We use '$' to distinguish from actual properties.  Just bear with me.
   this.$document = document;
   this.$name = name;
   if(hours)
      this.$expiration = new Date((new Date()).getTime()+hours*3600000);
   else this.$expiration = null;
   if(path) this.$path = path; else this.$path = null;
   if(domain) this.$domain = domain; else this.$domain = null;
   if(secure) this.$secure = true; else this.$secure = false;

   this.store  = _Cookie_store;
   this.load   = _Cookie_load;
   this.remove = _Cookie_remove;
} // Cookie initializer

function _Cookie_store() {
   var cookieval = "";
   for(var prop in this) {
      if((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
         continue;
      if(cookieval != "") cookieval += '&';
      cookieval += prop + ':' + escape(this[prop]);
   }

   var cookie = this.$name + '=' + cookieval;
   if(this.$expiration)
      cookie += '; expires=' + this.$expiration.toGMTString();
   if(this.$path) cookie += '; path=' + this.$path;
   if(this.$domain) cookie += '; domain=' + this.$domain;
   if(this.$secure) cookie += '; secure';

   this.$document.cookie = cookie
} // store() function of Cookie class

function _Cookie_load() {
   var allcookies = this.$document.cookie;
   if(allcookies=="") return(false);

   var start = allcookies.indexOf(this.$name + '=');
   if(start==-1) return(false); // undefined
   start += this.$name.length + 1;
   var end = allcookies.indexOf(';',start);
   if(end<0) end = allcookies.length;
   var cookieval = allcookies.substring(start, end);

   var a = cookieval.split('&');
   for(var i=0; i<a.length; i++)
      a[i]=a[i].split(':');

   for(var i=0; i<a.length; i++)
      this[a[i][0]] = unescape(a[i][1]);

   return(true);
} // load() function of Cookie class

function _Cookie_remove() {
   var cookie = this.$name + '=';
   if(this.$path) cookie += '; path='+this.$path;
   if(this.$domain) cookie += '; domain='+this.$domain;
   cookie += '; expires Fri, 02-Jan-1970 00:00:00 GMT';

   this.$document.cookie = cookie;
} // remove() function of Cookie clas
