cache-min.js revision d49f394f1b80e68357a4896ef90df98cbd63e909
YUI.add("cache-base",function(d){var a=d.Lang,b=d.Lang.isDate,c=function(){c.superclass.constructor.apply(this,arguments);};d.mix(c,{NAME:"cache",ATTRS:{max:{value:0,setter:"_setMax"},size:{readOnly:true,getter:"_getSize"},uniqueKeys:{value:false},expires:{value:0,validator:function(e){return d.Lang.isDate(e)||(d.Lang.isNumber(e)&&e>=0);}},entries:{readOnly:true,getter:"_getEntries"}}});d.extend(c,d.Base,{_entries:null,initializer:function(e){this.publish("add",{defaultFn:this._defAddFn});this.publish("flush",{defaultFn:this._defFlushFn});this._entries=[];},destructor:function(){this._entries=[];},_setMax:function(f){var e=this._entries;if(f>0){if(e){while(e.length>f){e.shift();}}}else{f=0;this._entries=[];}return f;},_getSize:function(){return this._entries.length;},_getEntries:function(){return this._entries;},_defAddFn:function(i){var g=this._entries,f=this.get("max"),h=i.entry;if(this.get("uniqueKeys")&&(this.retrieve(i.entry.request))){g.shift();}while(f&&g.length>=f){g.shift();}g[g.length]=h;},_defFlushFn:function(h){var f=this._entries,g=h.details[0],i;if(g&&a.isValue(g.request)){i=this._position(g.request);if(a.isValue(i)){f.splice(i,1);}}else{this._entries=[];}},_isMatch:function(f,e){if(!e.expires||new Date()<e.expires){return(f===e.request);}return false;},_position:function(h){var e=this._entries,g=e.length,f=g-1;if((this.get("max")===null)||this.get("max")>0){for(;f>=0;f--){if(this._isMatch(h,e[f])){return f;}}}return null;},add:function(g,f){var e=this.get("expires");if(this.get("initialized")&&((this.get("max")===null)||this.get("max")>0)&&(a.isValue(g)||a.isNull(g)||a.isUndefined(g))){this.fire("add",{entry:{request:g,response:f,cached:new Date(),expires:b(e)?e:(e?new Date(new Date().getTime()+this.get("expires")):null)}});}else{}},flush:function(e){this.fire("flush",{request:(a.isValue(e)?e:null)});},retrieve:function(h){var e=this._entries,g=e.length,f=null,i;if((g>0)&&((this.get("max")===null)||(this.get("max")>0))){this.fire("request",{request:h});i=this._position(h);if(a.isValue(i)){f=e[i];this.fire("retrieve",{entry:f});if(i<g-1){e.splice(i,1);e[e.length]=f;}return f;}}return null;}});d.Cache=c;},"@VERSION@",{requires:["base"]});YUI.add("cache-offline",function(f){function d(){d.superclass.constructor.apply(this,arguments);}var a=null,c=f.JSON;try{a=f.config.win.localStorage;}catch(b){}f.mix(d,{NAME:"cacheOffline",ATTRS:{sandbox:{value:"default",writeOnce:"initOnly"},expires:{value:86400000},max:{value:null,readOnly:true},uniqueKeys:{value:true,readOnly:true,setter:function(){return true;}}},flushAll:function(){var e=a,g;if(e){if(e.clear){e.clear();}else{for(g in e){if(e.hasOwnProperty(g)){e.removeItem(g);delete e[g];}}}}else{}}});f.extend(d,f.Cache,a?{_setMax:function(e){return null;},_getSize:function(){var h=0,g=0,e=a.length;for(;g<e;++g){if(a.key(g).indexOf(this.get("sandbox"))===0){h++;}}return h;},_getEntries:function(){var e=[],j=0,h=a.length,g=this.get("sandbox");for(;j<h;++j){if(a.key(j).indexOf(g)===0){e[j]=c.parse(a.key(j).substring(g.length));}}return e;},_defAddFn:function(l){var k=l.entry,j=k.request,i=k.cached,g=k.expires;k.cached=i.getTime();k.expires=g?g.getTime():g;try{a.setItem(this.get("sandbox")+c.stringify({"request":j}),c.stringify(k));}catch(h){this.fire("error",{error:h});}},_defFlushFn:function(j){var h,g=a.length-1;for(;g>-1;--g){h=a.key(g);if(h.indexOf(this.get("sandbox"))===0){a.removeItem(h);}}},retrieve:function(j){this.fire("request",{request:j});var i,g,h;try{h=this.get("sandbox")+c.stringify({"request":j});try{i=c.parse(a.getItem(h));}catch(l){}}catch(k){}if(i){i.cached=new Date(i.cached);g=i.expires;g=!g?null:new Date(g);i.expires=g;if(this._isMatch(j,i)){this.fire("retrieve",{entry:i});return i;}}return null;}}:{_setMax:function(e){return null;}});f.CacheOffline=d;},"@VERSION@",{requires:["cache-base","json"]});YUI.add("cache-plugin",function(b){function a(e){var d=e&&e.cache?e.cache:b.Cache,f=b.Base.create("dataSourceCache",d,[b.Plugin.Base]),c=new f(e);f.NS="tmpClass";return c;}b.mix(a,{NS:"cache",NAME:"cachePlugin"});b.namespace("Plugin").Cache=a;},"@VERSION@",{requires:["plugin","cache-base"]});YUI.add("cache",function(a){},"@VERSION@",{use:["cache-base","cache-offline","cache-plugin"]});