/**
 * Copyright (C) 2002-2003, CodeHouse.com. All rights reserved.
 * CodeHouse(TM) is a registered trademark.
 *
 * THIS SOURCE CODE MAY BE USED FREELY PROVIDED THAT
 * IT IS NOT MODIFIED OR DISTRIBUTED, AND IT IS USED
 * ON A PUBLICLY ACCESSIBLE INTERNET WEB SITE.
 *
 * CodeHouse.com JavaScript Library Module: Cookie Utility Class
 *
 * You can obtain this script at http://www.codehouse.com/javascript/scripts/cjl/cookie/
 */

function CJL_CookieUtil(name, duration, path, domain, secure)
{
   this.affix = "";
   // added Andi R.
   this.length=new Number();

   if(duration)
   {
      var date = new Date();
      var curTime = new Date().getTime();
      date.setTime(curTime +(1000 * 60 * duration));
      this.affix = "; expires=" + date.toGMTString();
   }
   if(path)
   {
      this.affix += "; path=" + path;
   }
   if(domain)
   {
      this.affix += "; domain=" + domain;
   }
   if(secure)
   {
      this.affix += "; secure=" + secure;
   }
   
   function getValue()
   {
      var m = document.cookie.match(new RegExp("(" + name + "=[^;]*)(;|$)"));
      return m ? m[1] : null;
   }
   this.cookieExists = function()
   {
      return getValue() ? true : false;
   }
   this.expire = function()
   {
      var date = new Date();
      date.setFullYear(date.getYear() - 1);
      document.cookie = name + "=noop; expires=" + date.toGMTString();
   }
   this.setSubValue = function(key, value)
   {
      var ck = getValue();
      if(/[;, ]/.test(value))
      {
         //Mac IE doesn't support encodeURI
         value = window.encodeURI ? encodeURI(value) : escape(value);
      }
      if(value)
      {
         var attrPair = "@" + key + value;
         if(ck)
         {
            if(new RegExp("@" + key).test(ck))
            {
               document.cookie = ck.replace(new RegExp("@" + key + "[^@;]*"), attrPair) + this.affix;
            }
            else 
            {
               document.cookie = ck.replace(new RegExp("(" + name + "=[^;]*)(;|$)"), "$1" + attrPair) + this.affix;
            }
         }
         else 
         {
            document.cookie = name + "=" + attrPair + this.affix;
         }
         //added andi r.
      	this.length ++;
      }
      else 
      {
         if(new RegExp("@" + key).test(ck))
         {
            document.cookie = ck.replace(new RegExp("@" + key + "[^@;]*"), "") + this.affix;
         }
         //added andi r.
      	this.length --;
      }

   }
   this.getSubValue = function(key)
   {
      var ck = getValue();
      if(ck)
      {
         var m = ck.match(new RegExp("@" + key + "([^@;]*)"));
         if(m)
         {
            var value = m[1];
            if(value)
            {
               //Mac IE doesn't support decodeURI
               return window.decodeURI ? decodeURI(value) : unescape(value);
            }
         }
      }
   }
}
