/**
 * CookieUtil
 * 
 * @author jonathan@neowiz.com
 */
if ("undefined" == typeof CookieUtil) {
  CookieUtil = {
    
    cookie1day : 86400,
    domainname : document.location.host,
    
    get : function(name,subname){
      var prefix = name + "=";
      var cookieStartIndex = document.cookie.indexOf(prefix);
      if (cookieStartIndex == -1)
        return null;
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
      if (cookieEndIndex == -1)
        cookieEndIndex = document.cookie.length;
    
      if(subname == null || subname == "" || subname == 'undefined')
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex)); // cookie row
      else
        return this.getSub(subname, unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))); // cookie field in cookie row
    },
    
    getSub : function(name,ckstring){      
      var prefix = name + "=";
      var cookieStartIndex = ckstring.indexOf(prefix);
      if (cookieStartIndex == -1)
        return null;
      var cookieEndIndex = ckstring.indexOf("&", cookieStartIndex + prefix.length);
      if (cookieEndIndex == -1)
        cookieEndIndex = ckstring.length;
      return ckstring.substring(cookieStartIndex + prefix.length, cookieEndIndex);

    },   
    
    set : function(name,value,sec,domain){
      domain = (domain) ? domain : this.domainname;
      var exp = new Date();
      if((name==null)||(value==null)) return false;
      exp.setTime(exp.getTime()+(9*60*60*1000)+(sec*1000)); //9시간 차이가 난다. ㅡㅡ;
      document.cookie = escape(name)+"="+escape(value)+"; "+"expires="+exp.toGMTString()+"; path=/; domain="+ domain;
    },    
    
    setField : function(name,subname,value,sec){
      
      var oldcookie = this.get(name, "");    
      if(oldcookie == null)
      {
        this.set(name, subname+"="+value, sec); // "name" 쿠키가 없었으면 생성
      }
      else
      {
        var carray = oldcookie.split("&");
        var fieldfound = false;
        var newcookie = "";
    
        for(var i=0; i<carray.length; i++) // 현재 쿠키에 해당 필드가 있는지 check
        {
          if( carray[i].indexOf(subname+"=") == 0) // field value에 subname+"="이 올 수 있으므로 정확하게 하기위해  //if( carray[i].indexOf(subname+"=") > -1)
          {
            fieldfound = true;
            carray[i] = subname + "=" + value;
            break;
          }
        }
    
        if(fieldfound) // 이미 쿠키에 해당 필드가 존재
        {
          for(var i=0; i<carray.length; i++)
          {
            if(newcookie == "")
              newcookie += carray[i];
            else
              newcookie += "&" + carray[i];
          }
        }
        else
        {
          newcookie = oldcookie + "&" + subname + "=" + value; // oldcookie는 항상 null이 아님(위의 If문)
        }
    
        this.set(name, newcookie, sec);
      }

    },
    
    setNoEscape : function(name,value,sec,domain)
    {
      domain = (domain) ? domain : this.domainname;
      var exp = new Date();
      if((name==null)||(value==null)) return false;
      exp.setTime(exp.getTime()+sec);
      document.cookie = name+"="+value+"; "+"expires="+exp.toGMTString()+"; path=/; domain="+ domain;

    },
    
    del : function(name, domain){
      domain = (domain) ? domain : this.domainname;
      var value = "";
      var exp = new Date();
      if((name==null)||(value==null)) return false;
      exp.setTime(exp.getTime());
      document.cookie = name+"="+escape(value)+"; "+"expires="+exp.toGMTString()+"; path=/; domain="+ domain;
    }    
  }
}

