|
window.Cookies = { |
|
|
|
/** |
|
* Get the value of a cookie by its key |
|
* @param key {String} Cookie's key |
|
* @param deleteAfter {Boolean} Delete this cookie after reading its value |
|
*/ |
|
read: function ( key, deleteAfter ){ |
|
var cookies = document.cookie.split( '; ' ); |
|
for ( var i = 0, li = cookies.length; i < li; i++ ) { |
|
var cookie = cookies[ i ].split( '=' ); |
|
if ( cookie[0] === key ) { |
|
var val = decodeURIComponent( cookie[1] ); |
|
if ( deleteAfter ) { |
|
this.erase( key ); |
|
} |
|
return val; |
|
} |
|
} |
|
return null; |
|
}, |
|
|
|
/** |
|
* Erase a cookie by its keys |
|
* @param key {String} Cookie's key |
|
*/ |
|
erase: function ( key ) { |
|
var date = new Date(); |
|
date.setDate( date.getDate() - 1 ); |
|
document.cookie = key + '=;expires=' + date.toGMTString(); |
|
}, |
|
|
|
/** |
|
* Writes a new cookie |
|
* @param key {String} The cookie key |
|
* @param value {Object} A value to be stored, will be stringified |
|
* @param opts {Object} Other cookie options |
|
* @param opts.expires {Date} The date to expires the cookie. Default: one year |
|
* @param opts.expiresInDays {Date} Time to expires the cookie in days |
|
* @param opts.expiresInYears {Date} Time to expires the cookie in years |
|
* @param opts.path {Date} The path to save the cookie, default '/' |
|
*/ |
|
write: function ( key, value, opts ) { |
|
var expires = new Date(); |
|
opts = opts || { }; |
|
if (opts.expires && opts.expires.constructor.name === 'Date') { |
|
expires = opts.expires; |
|
} else if ( opts.expiresInDays && opts.expiresInDays.constructor.name === 'Number' ) { |
|
expires.setDate( expires.getDate() + opts.expiresInDays ); |
|
} else if ( opts.expiresInYears && opts.expiresInYears.constructor.name === 'Number' ) { |
|
expires.setFullYear( expires.getFullYear() + opts.expiresInYears ); |
|
} else { |
|
expires.setFullYear( expires.getFullYear() + 1 ); |
|
} |
|
document.cookie = key + '=' + escape( JSON.stringify( value ) ) |
|
+ ';expires=' + expires.toGMTString() |
|
+ ';path=' + ( opts.path ? opts.path : '/' ); |
|
} |
|
}; |