//>>built define("dojox/rpc/OfflineRest",["dojo","dojox","dojox/data/ClientFilter","dojox/rpc/Rest","dojox/storage"],function(_1,_2){ var _3=_2.rpc.Rest; var _4="dojox_rpc_OfflineRest"; var _5; var _6=_3._index; _2.storage.manager.addOnLoad(function(){ _5=_2.storage.manager.available; for(var i in _6){ _7(_6[i],i); } }); var _8; function _9(_a){ return _a.replace(/[^0-9A-Za-z_]/g,"_"); }; function _7(_b,id){ if(_5&&!_8&&(id||(_b&&_b.__id))){ _2.storage.put(_9(id||_b.__id),typeof _b=="object"?_2.json.ref.toJson(_b):_b,function(){ },_4); } }; function _c(_d){ return _d instanceof Error&&(_d.status==503||_d.status>12000||!_d.status); }; function _e(){ if(_5){ var _f=_2.storage.get("dirty",_4); if(_f){ for(var _10 in _f){ _11(_10,_f); } } } }; var _12; function _13(){ _12.sendChanges(); _12.downloadChanges(); }; var _14=setInterval(_13,15000); _1.connect(document,"ononline",_13); _12=_2.rpc.OfflineRest={turnOffAutoSync:function(){ clearInterval(_14); },sync:_13,sendChanges:_e,downloadChanges:function(){ },addStore:function(_15,_16){ _12.stores.push(_15); _15.fetch({queryOptions:{cache:true},query:_16,onComplete:function(_17,_18){ _15._localBaseResults=_17; _15._localBaseFetch=_18; }}); }}; _12.stores=[]; var _19=_3._get; _3._get=function(_1a,id){ try{ _e(); if(window.navigator&&navigator.onLine===false){ throw new Error(); } var dfd=_19(_1a,id); } catch(e){ dfd=new _1.Deferred(); dfd.errback(e); } var _1b=_2.rpc._sync; dfd.addCallback(function(_1c){ _7(_1c,_1a._getRequest(id).url); return _1c; }); dfd.addErrback(function(_1d){ if(_5){ if(_c(_1d)){ var _1e={}; var _1f=function(id,_20){ if(_1e[id]){ return _20; } var _21=_1.fromJson(_2.storage.get(_9(id),_4))||_20; _1e[id]=_21; for(var i in _21){ var val=_21[i]; id=val&&val.$ref; if(id){ if(id.substring&&id.substring(0,4)=="cid:"){ id=id.substring(4); } _21[i]=_1f(id,val); } } if(_21 instanceof Array){ for(i=0;i<_21.length;i++){ if(_21[i]===undefined){ _21.splice(i--,1); } } } return _21; }; _8=true; var _22=_1f(_1a._getRequest(id).url); if(!_22){ return _1d; } _8=false; return _22; }else{ return _1d; } }else{ if(_1b){ return new Error("Storage manager not loaded, can not continue"); } dfd=new _1.Deferred(); dfd.addCallback(arguments.callee); _2.storage.manager.addOnLoad(function(){ dfd.callback(); }); return dfd; } }); return dfd; }; function _23(_24,_25,_26,_27,_28){ if(_24=="delete"){ _2.storage.remove(_9(_25),_4); }else{ _2.storage.put(_9(_26),_27,function(){ },_4); } var _29=_28&&_28._store; if(_29){ _29.updateResultSet(_29._localBaseResults,_29._localBaseFetch); _2.storage.put(_9(_28._getRequest(_29._localBaseFetch.query).url),_2.json.ref.toJson(_29._localBaseResults),function(){ },_4); } }; _1.addOnLoad(function(){ _1.connect(_2.data,"restListener",function(_2a){ var _2b=_2a.channel; var _2c=_2a.event.toLowerCase(); var _2d=_2.rpc.JsonRest&&_2.rpc.JsonRest.getServiceAndId(_2b).service; _23(_2c,_2b,_2c=="post"?_2b+_2a.result.id:_2b,_1.toJson(_2a.result),_2d); }); }); var _2e=_3._change; _3._change=function(_2f,_30,id,_31){ if(!_5){ return _2e.apply(this,arguments); } var _32=_30._getRequest(id).url; _23(_2f,_32,_2.rpc.JsonRest._contentId,_31,_30); var _33=_2.storage.get("dirty",_4)||{}; if(_2f=="put"||_2f=="delete"){ var _34=_32; }else{ _34=0; for(var i in _33){ if(!isNaN(parseInt(i))){ _34=i; } } _34++; } _33[_34]={method:_2f,id:_32,content:_31}; return _11(_34,_33); }; function _11(_35,_36){ var _37=_36[_35]; var _38=_2.rpc.JsonRest.getServiceAndId(_37.id); var _39=_2e(_37.method,_38.service,_38.id,_37.content); _36[_35]=_37; _2.storage.put("dirty",_36,function(){ },_4); _39.addBoth(function(_3a){ if(_c(_3a)){ return null; } var _3b=_2.storage.get("dirty",_4)||{}; delete _3b[_35]; _2.storage.put("dirty",_3b,function(){ },_4); return _3a; }); return _39; }; _1.connect(_6,"onLoad",_7); _1.connect(_6,"onUpdate",_7); return _2.rpc.OfflineRest; });