text: 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);
  