/* Copyright (c) 2004-2011, 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 */ //>>built define("dojo/data/ItemFileReadStore",["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","../_base/window","./util/filter","./util/simpleFetch","../date/stamp"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a){var _b=_3("dojo.data.ItemFileReadStore",[_6],{constructor:function(_c){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_c.url;this._ccUrl=_c.url;this.url=_c.url;this._jsonData=_c.data;this.data=null;this._datatypeMap=_c.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_d){return _a.fromISOString(_d);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_c.urlPreventCache!==undefined){this.urlPreventCache=_c.urlPreventCache?true:false;}if(_c.hierarchical!==undefined){this.hierarchical=_c.hierarchical?true:false;}if(_c.clearOnClose){this.clearOnClose=true;}if("failOk" in _c){this.failOk=_c.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(_e){if(!this.isItem(_e)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_f){if(typeof _f!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(_10,_11,_12){var _13=this.getValues(_10,_11);return (_13.length>0)?_13[0]:_12;},getValues:function(_14,_15){this._assertIsItem(_14);this._assertIsAttribute(_15);return (_14[_15]||[]).slice(0);},getAttributes:function(_16){this._assertIsItem(_16);var _17=[];for(var key in _16){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_17.push(key);}}return _17;},hasAttribute:function(_18,_19){this._assertIsItem(_18);this._assertIsAttribute(_19);return (_19 in _18);},containsValue:function(_1a,_1b,_1c){var _1d=undefined;if(typeof _1c==="string"){_1d=_8.patternToRegExp(_1c,false);}return this._containsValue(_1a,_1b,_1c,_1d);},_containsValue:function(_1e,_1f,_20,_21){return _4.some(this.getValues(_1e,_1f),function(_22){if(_22!==null&&!_2.isObject(_22)&&_21){if(_22.toString().match(_21)){return true;}}else{if(_20===_22){return true;}}});},isItem:function(_23){if(_23&&_23[this._storeRefPropName]===this){if(this._arrayOfAllItems[_23[this._itemNumPropName]]===_23){return true;}}return false;},isItemLoaded:function(_24){return this.isItem(_24);},loadItem:function(_25){this._assertIsItem(_25.item);},getFeatures:function(){return this._features;},getLabel:function(_26){if(this._labelAttr&&this.isItem(_26)){return this.getValue(_26,this._labelAttr);}return undefined;},getLabelAttributes:function(_27){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_28,_29,_2a){var _2b=this,_2c=function(_2d,_2e){var _2f=[],i,key;if(_2d.query){var _30,_31=_2d.queryOptions?_2d.queryOptions.ignoreCase:false;var _32={};for(key in _2d.query){_30=_2d.query[key];if(typeof _30==="string"){_32[key]=_8.patternToRegExp(_30,_31);}else{if(_30 instanceof RegExp){_32[key]=_30;}}}for(i=0;i<_2e.length;++i){var _33=true;var _34=_2e[i];if(_34===null){_33=false;}else{for(key in _2d.query){_30=_2d.query[key];if(!_2b._containsValue(_34,key,_30,_32[key])){_33=false;}}}if(_33){_2f.push(_34);}}_29(_2f,_2d);}else{for(i=0;i<_2e.length;++i){var _35=_2e[i];if(_35!==null){_2f.push(_35);}}_29(_2f,_2d);}};if(this._loadFinished){_2c(_28,this._getItemsArray(_28.queryOptions));}else{if(this._jsonFileUrl!==this._ccUrl){_1.deprecated("dojo.data.ItemFileReadStore: ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_28,filter:_2c});}else{this._loadInProgress=true;var _36={url:_2b._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _37=_5.get(_36);_37.addCallback(function(_38){try{_2b._getItemsFromLoadedData(_38);_2b._loadFinished=true;_2b._loadInProgress=false;_2c(_28,_2b._getItemsArray(_28.queryOptions));_2b._handleQueuedFetches();}catch(e){_2b._loadFinished=true;_2b._loadInProgress=false;_2a(e,_28);}});_37.addErrback(function(_39){_2b._loadInProgress=false;_2a(_39,_28);});var _3a=null;if(_28.abort){_3a=_28.abort;}_28.abort=function(){var df=_37;if(df&&df.fired===-1){df.cancel();df=null;}if(_3a){_3a.call(_28);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_2c(_28,this._getItemsArray(_28.queryOptions));}catch(e){_2a(e,_28);}}else{_2a(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_28);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i