new function(){ var w = window, undef = 'undefined', h = 'length', r = 'replace'; w.ra || (w.ra = {}); w.ra.cookie = { 'get': function(name) { var a = document.cookie.split(/;\s*/g), t = false, d = decodeURIComponent, e = /%[\da-fA-F]{2}/g, c = {}; while (a[h]){ t=a[a[h]-1].split('='); c[t[0][r](e,d)] = t.slice(1).join(''); a[h]-- } return typeof(name)!=undef ? ( typeof(t=c[name])!=undef ? t[r](e,d) : false ) : c }, 'set': function(name, value, opt){ var i, t, d = encodeURIComponent, e = /[^<>:\^\+\$\?\&#\[\]\\,\.\{\}\'\/]+/g, a = [name[r](e,d),'='], k = 'secure,path,expires,domain'.split(','), f=[ function(b, k){return (b && v) ? k : ''}, function(b, k, v){return k + ((b && v) ? v : '/')}, function(b, k, v){return (b && v.constructor == Date) ? k+v.toGMTString() : ''}, function(b, k, v){return k + ((b && v )? v : location.hostname)} ]; opt || (opt={}); a[a[h]]= typeof opt['encoded'] != undef ? value : value.replace(e,d); for (i=k[h]; i--;){ t=k[i]; a[a[h]]=f[i](typeof opt[t] != undef, '; '+t+'=', opt[t]) } if( (i=4*1024-(t=a.join('')).length) < 0 ){ t = a[2].slice(0,i); i = a[2].slice(i); a[2]=t; t=a.join('') } else { i = false }; document.cookie = t; return i }, 'del': function(name){ var r = this.get(name); this.set(name, '', {'expires':new Date(0)}); return r }, 'test': function(){ var testName = 'test_cookie_', testValue = '{value:"%test>"}'; this.set(testName,testValue); return this.del(testName) == testValue } }; w.ra.cookie.test = w.ra.cookie.test(); // w.ra.cookie.test = navigator.cookieEnabled; };