jQuery.cookie=function(name,value,options){
if(typeof value!='undefined'){
options=options||{};
if(value===null){
value='';
options.expires=-1;
}
var expires='';
if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){
var date;
if(typeof options.expires=='number'){
date=new Date();
date.setTime(date.getTime()+(options.expires*24*60*60*1000));
}else{
date=options.expires;
}
expires='; expires='+date.toUTCString();
}
var path=options.path?'; path='+(options.path):'';
var domain=options.domain?'; domain='+(options.domain):'';
var secure=options.secure?'; secure':'';
document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');
}else{
var cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(';');
for(var i=0;i<cookies.length;i++){
var cookie=jQuery.trim(cookies[i]);
if(cookie.substring(0,name.length+1)==(name+'=')){
cookieValue=decodeURIComponent(cookie.substring(name.length+1));
break;
}
}
}
return cookieValue;
}
};
(function($){
var isObject=function(x){
return(typeof x==='object')&&!(x instanceof Array)&&(x!==null);
};
$.extend({
getJSONCookie:function(cookieName){
var cookieData=$.cookie(cookieName);
return cookieData?JSON.parse(cookieData):{};
},
setJSONCookie:function(cookieName,data,options){
var cookieData='';
options=$.extend({
expires:90,
path:'/'
},options);
if(!isObject(data)){
throw new Error('JSONCookie data must be an object');
}
cookieData=JSON.stringify(data);
return $.cookie(cookieName,cookieData,options);
},
removeJSONCookie:function(cookieName){
return $.cookie(cookieName,null);
},
JSONCookie:function(cookieName,data,options){
if(data){
$.setJSONCookie(cookieName,data,options);
}
return $.getJSONCookie(cookieName);
}
});
})(jQuery);
