text: /*
  	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  	Available via Academic Free License >= 2.1 OR the modified BSD license.
  	see: http://dojotoolkit.org/license for details
  */
  
  
  if(!dojo._hasResource["dojox.data.ServiceStore"]){
  dojo._hasResource["dojox.data.ServiceStore"]=true;
  dojo.provide("dojox.data.ServiceStore");
  dojo.declare("dojox.data.ServiceStore",dojox.data.ClientFilter,{service:null,constructor:function(_1){
  this.byId=this.fetchItemByIdentity;
  this._index={};
  if(_1){
  dojo.mixin(this,_1);
  }
  this.idAttribute=(_1&&_1.idAttribute)||(this.schema&&this.schema._idAttr);
  this.labelAttribute=this.labelAttribute||"label";
  },schema:null,idAttribute:"id",syncMode:false,estimateCountFactor:1,getSchema:function(){
  return this.schema;
  },loadLazyValues:true,getValue:function(_2,_3,_4){
  var _5=_2[_3];
  return _5||(_3 in _2?_5:_2._loadObject?(dojox.rpc._sync=true)&&arguments.callee.call(this,dojox.data.ServiceStore.prototype.loadItem({item:_2})||{},_3,_4):_4);
  },getValues:function(_6,_7){
  var _8=this.getValue(_6,_7);
  return _8 instanceof Array?_8:_8===undefined?[]:[_8];
  },getAttributes:function(_9){
  var _a=[];
  for(var i in _9){
  if(_9.hasOwnProperty(i)&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")){
  _a.push(i);
  }
  }
  return _a;
  },hasAttribute:function(_b,_c){
  return _c in _b;
  },containsValue:function(_d,_e,_f){
  return dojo.indexOf(this.getValues(_d,_e),_f)>-1;
  },isItem:function(_10){
  return (typeof _10=="object")&&_10&&!(_10 instanceof Date);
  },isItemLoaded:function(_11){
  return _11&&!_11._loadObject;
  },loadItem:function(_12){
  var _13;
  if(_12.item._loadObject){
  _12.item._loadObject(function(_14){
  _13=_14;
  delete _13._loadObject;
  var _15=_14 instanceof Error?_12.onError:_12.onItem;
  if(_15){
  _15.call(_12.scope,_14);
  }
  });
  }else{
  if(_12.onItem){
  _12.onItem.call(_12.scope,_12.item);
  }
  }
  return _13;
  },_currentId:0,_processResults:function(_16,_17){
  if(_16&&typeof _16=="object"){
  var id=_16.__id;
  if(!id){
  if(this.idAttribute){
  id=_16[this.idAttribute];
  }else{
  id=this._currentId++;
  }
  if(id!==undefined){
  var _18=this._index[id];
  if(_18){
  for(var j in _18){
  delete _18[j];
  }
  _16=dojo.mixin(_18,_16);
  }
  _16.__id=id;
  this._index[id]=_16;
  }
  }
  for(var i in _16){
  _16[i]=this._processResults(_16[i],_17).items;
  }
  var _19=_16.length;
  }
  return {totalCount:_17.request.count==_19?(_17.request.start||0)+_19*this.estimateCountFactor:_19,items:_16};
  },close:function(_1a){
  return _1a&&_1a.abort&&_1a.abort();
  },fetch:function(_1b){
  _1b=_1b||{};
  if("syncMode" in _1b?_1b.syncMode:this.syncMode){
  dojox.rpc._sync=true;
  }
  var _1c=this;
  var _1d=_1b.scope||_1c;
  var _1e=this.cachingFetch?this.cachingFetch(_1b):this._doQuery(_1b);
  _1e.request=_1b;
  _1e.addCallback(function(_1f){
  if(_1b.clientFetch){
  _1f=_1c.clientSideFetch({query:_1b.clientFetch,sort:_1b.sort,start:_1b.start,count:_1b.count},_1f);
  }
  var _20=_1c._processResults(_1f,_1e);
  _1f=_1b.results=_20.items;
  if(_1b.onBegin){
  _1b.onBegin.call(_1d,_20.totalCount,_1b);
  }
  if(_1b.onItem){
  for(var i=0;i<_1f.length;i++){
  _1b.onItem.call(_1d,_1f[i],_1b);
  }
  }
  if(_1b.onComplete){
  _1b.onComplete.call(_1d,_1b.onItem?null:_1f,_1b);
  }
  return _1f;
  });
  _1e.addErrback(_1b.onError&&function(err){
  return _1b.onError.call(_1d,err,_1b);
  });
  _1b.abort=function(){
  _1e.cancel();
  };
  _1b.store=this;
  return _1b;
  },_doQuery:function(_21){
  var _22=typeof _21.queryStr=="string"?_21.queryStr:_21.query;
  return this.service(_22);
  },getFeatures:function(){
  return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true,"dojo.data.api.Schema":this.schema};
  },getLabel:function(_23){
  return this.getValue(_23,this.labelAttribute);
  },getLabelAttributes:function(_24){
  return [this.labelAttribute];
  },getIdentity:function(_25){
  return _25.__id;
  },getIdentityAttributes:function(_26){
  return [this.idAttribute];
  },fetchItemByIdentity:function(_27){
  var _28=this._index[(_27._prefix||"")+_27.identity];
  if(_28){
  if(_28._loadObject){
  _27.item=_28;
  return this.loadItem(_27);
  }else{
  if(_27.onItem){
  _27.onItem.call(_27.scope,_28);
  }
  }
  }else{
  return this.fetch({query:_27.identity,onComplete:_27.onItem,onError:_27.onError,scope:_27.scope}).results;
  }
  return _28;
  }});
  }
  