// depends on common.js: QQ
QQ.Cookie = function(cookieName){    

    // initialize
    var COOKIE_NAME;
    if (cookieName !== undefined) COOKIE_NAME = cookieName; else COOKIE_NAME = "default";
    var setCookieData;
    var getCookieData;
    var clearCookie;
    var updateJSCookie;
    var grabJSCookieField;
    var checkJSCookieExistence;
   
    
    setCookieData = function(parameter, parameterValue){
        updateJSCookie(parameter, parameterValue);
    };

    getCookieData = function(field){
        return grabJSCookieField(field);
    };

    grabJSCookieField = function(field){
        var cs = checkJSCookieExistence(this.COOKIE_NAME);
        if (cs){
           var fields = cs.split('&');
	   for(var i=1;i<fields.length;i++){
	       var nv = fields[i].split('=');
               if (field == nv[0]){return nv[1];}
	   }
	   return false;
        }else{
           return false;
        }
    };

    updateJSCookie = function(parameter, parameterValue){

        var date = new Date();
      	date.setTime(date.getTime()+(9999999*24*60*60*1000));
      	var expires = "; expires="+date.toGMTString();

        var cs = checkJSCookieExistence(this.COOKIE_NAME);

        if (cs){
              // update existing cookie
              var fields = cs.split('&');

              cs = '';
              var foundField = false;
              for(var i=1;i<fields.length;i++){
                  var nv = fields[i].split('=');
                  if (parameter == nv[0]){nv[1] = parameterValue;foundField = true;}
                  cs += "&" + nv[0] + "=" + nv[1];
              }
              if (!foundField){
                  cs += "&" + parameter + "=" + parameterValue;
              }
              document.cookie = "cookiename=" + this.COOKIE_NAME + cs + expires + "; path=/";

        }else{
              // create new cookie
              //alert("create new js cookie");
              document.cookie = "cookiename=" + this.COOKIE_NAME + "&" + parameter + "=" + parameterValue + expires + "; path=/";
        }
    };
	
	checkJSCookieExistence = function(name){
		var nameEQ = "cookiename=" + name;
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' '){c = c.substring(1,c.length);}
			if (c.indexOf(nameEQ) === 0){return c.substring(nameEQ.length,c.length);}
		}
		return null;
	 };
    
    clearCookie = function(cookieType){
	 var date = new Date();
	  date.setTime(date.getTime()+(-9999*24*60*60*1000));
	  var expires = "; expires="+date.toGMTString();

	  document.cookie = "cookiename=" + this.COOKIE_NAME + expires + "; path=/";
    };
    
    // public functions
    this.setCookieData = setCookieData;
    this.getCookieData = getCookieData;
    this.clearCookie = clearCookie;
};