//>>builtdefine("dojox/rpc/OfflineRest",["dojo","dojox","dojox/data/ClientFilter","dojox/rpc/Rest","dojox/storage"],function(g,d){functionl(a){returna.replace(/[^0-9A-Za-z_]/g,"_")}functionp(a,b){m&&!r&&(b||a&&a.__id)&&d.storage.put(l(b||a.__id),"object"==typeofa?d.json.ref.toJson(a):a,function(){},"dojox_rpc_OfflineRest")}functionu(a){returnainstanceofError&&(503==a.status||12E3<a.status||!a.status)}functionv(){if(m){vara=d.storage.get("dirty","dojox_rpc_OfflineRest");if(a)for(varbina)w(b,a)}}functiont(){f.sendChanges();f.downloadChanges()}functionx(a,b,c,e,h){"delete"==a?d.storage.remove(l(b),"dojox_rpc_OfflineRest"):d.storage.put(l(c),e,function(){},"dojox_rpc_OfflineRest");if(a=h&&h._store)a.updateResultSet(a._localBaseResults,a._localBaseFetch),d.storage.put(l(h._getRequest(a._localBaseFetch.query).url),d.json.ref.toJson(a._localBaseResults),function(){},"dojox_rpc_OfflineRest")}functionw(a,b){varc=b[a],e=d.rpc.JsonRest.getServiceAndId(c.id),e=y(c.method,e.service,e.id,c.content);b[a]=c;d.storage.put("dirty",b,function(){},"dojox_rpc_OfflineRest");e.addBoth(function(b){if(u(b))returnnull;varc=d.storage.get("dirty","dojox_rpc_OfflineRest")||{};deletec[a];d.storage.put("dirty",c,function(){},"dojox_rpc_OfflineRest");returnb});returne}varn=d.rpc.Rest,m,q=n._index;d.storage.manager.addOnLoad(function(){m=d.storage.manager.available;for(varainq)p(q[a],a)});varr,f,A=setInterval(t,15E3);g.connect(document,"ononline",t);f=d.rpc.OfflineRest={turnOffAutoSync:function(){clearInterval(A)},sync:t,sendChanges:v,downloadChanges:function(){},addStore:function(a,b){f.stores.push(a);a.fetch({queryOptions:{cache:!0},query:b,onComplete:function(b,d){a._localBaseResults=b;a._localBaseFetch=d}})}};f.stores=[];varB=n._get;n._get=function(a,b){try{v();if(window.navigator&&!1===navigator.onLine)throwError();varc=B(a,b)}catch(h){c=newg.Deferred,c.errback(h)}vare=d.rpc._sync;c.addCallback(function(d){p(d,a._getRequest(b).url);returnd});c.addErrback(function(h){if(m){if(u(h)){varf={},z=function(a,b){if(f[a])returnb;b=g.fromJson(d.storage.get(l(a),"dojox_rpc_OfflineRest"))||b;f[a]=b;for(varcinb){vare=b[c];if(a=e&&e.$ref)a.substring&&"cid:"==a.substring(0,4)&&(a=a.substring(4)),b[c]=z(a,e)}if(binstanceofArray)for(c=0;c<b.length;c++)void0===b[c]&&b.splice(c--,1);returnb};r=!0;vark=z(a._getRequest(b).url);if(!k)returnh;r=!1;returnk}returnh}if(e)returnError("Storage manager not loaded, can not continue");c=newg.Deferred;c.addCallback(arguments.callee);d.storage.manager.addOnLoad(function(){c.callback()});returnc});returnc};g.addOnLoad(function(){g.connect(d.data,"restListener",function(a){varb=a.channel,c=a.event.toLowerCase(),e=d.rpc.JsonRest&&d.rpc.JsonRest.getServiceAndId(b).service;x(c,b,"post"==c?b+a.result.id:b,g.toJson(a.result),e)})});vary=n._change;n._change=function(a,b,c,e){if(!m)returny.apply(this,arguments);varh=b._getRequest(c).url;x(a,h,d.rpc.JsonRest._contentId,e,b);varg=d.storage.get("dirty","dojox_rpc_OfflineRest")||{};if("put"==a||"delete"==a)varf=h;else{varf=0,k;for(king)isNaN(parseInt(k))||(f=k);f++}g[f]={method:a,id:h,content:e};returnw(f,g)};g.connect(q,"onLoad",p);g.connect(q,"onUpdate",p);returnf});