var CookieJar=Class.create();CookieJar.prototype={appendString:"__CJ_",initialize:function(options){this.options={expires:3600,path:'',domain:'',secure:''};Object.extend(this.options,options||{});if(this.options.expires!=''){var date=new Date();date=new Date(date.getTime()+(this.options.expires*1000));this.options.expires='; expires='+date.toGMTString();}if(this.options.path!=''){this.options.path='; path='+encodeURI(this.options.path);}if(this.options.domain!=''){this.options.domain='; domain='+encodeURI(this.options.domain);}if(this.options.secure=='secure'){this.options.secure='; secure';}else{this.options.secure='';}},put:function(name,value){name=this.appendString+name;cookie=this.options;var type=typeof value;switch(type){case 'undefined':case 'function':case 'unknown':return false;case 'boolean':case 'string':case 'number':value=String(value.toString());}var cookie_str=name+"="+encodeURI(Object.toJSON(value));try{document.cookie=cookie_str+cookie.expires+cookie.path+cookie.domain+cookie.secure;}catch(e){return false;}return true;},remove:function(name){name=this.appendString+name;cookie=this.options;try{var date=new Date();date.setTime(date.getTime()-(3600*1000));var expires='; expires='+date.toGMTString();document.cookie=name+"="+expires+cookie.path+cookie.domain+cookie.secure;}catch(e){return false;}return true;},get:function(name){name=this.appendString+name;var cookies=document.cookie.match(name+'=(.*?)(;|$)');if(cookies){return(decodeURI(cookies[1])).evalJSON();}else{return null;}},empty:function(){keys=this.getKeys();size=keys.size();for(i=0;i<size;i++){this.remove(keys[i]);}},getPack:function(){pack={};keys=this.getKeys();size=keys.size();for(i=0;i<size;i++){pack[keys[i]]=this.get(keys[i]);}return pack;},getKeys:function(){keys=$A();keyRe=/[^=; ]+(?=\=)/g;str=document.cookie;CJRe=new RegExp("^"+this.appendString);while((match=keyRe.exec(str))!=undefined){if(CJRe.test(match[0].strip())){keys.push(match[0].strip().gsub("^"+this.appendString,""));}}return keys;}};