/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

	http://dojotoolkit.org/license

*/

/*
	This is a compiled version of Dojo, built for deployment and not for
	development. To get an editable version, please visit:

		http://dojotoolkit.org

	for documentation and information on getting the source.
*/

if(!dojo._hasResource["dojo.data.util.filter"]){dojo._hasResource["dojo.data.util.filter"]=true;dojo.provide("dojo.data.util.filter");dojo.data.util.filter.patternToRegExp=function(_1,_2){var _3="^";var c=null;for(var i=0;i<_1.length;i++){c=_1.charAt(i);switch(c){case "\\":_3+=c;i++;_3+=_1.charAt(i);break;case "*":_3+=".*";break;case "?":_3+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":_3+="\\";default:_3+=c;}}_3+="$";if(_2){return new RegExp(_3,"mi");}else{return new RegExp(_3,"m");}};}if(!dojo._hasResource["dojo.data.util.sorter"]){dojo._hasResource["dojo.data.util.sorter"]=true;dojo.provide("dojo.data.util.sorter");dojo.data.util.sorter.basicComparator=function(a,b){var _8=0;if(a>b||typeof a==="undefined"||a===null){_8=1;}else{if(a<b||typeof b==="undefined"||b===null){_8=-1;}}return _8;};dojo.data.util.sorter.createSortFunction=function(_9,_a){var _b=[];function createSortFunction(_c,_d){return function(_e,_f){var a=_a.getValue(_e,_c);var b=_a.getValue(_f,_c);var _12=null;if(_a.comparatorMap){if(typeof _c!=="string"){_c=_a.getIdentity(_c);}_12=_a.comparatorMap[_c]||dojo.data.util.sorter.basicComparator;}_12=_12||dojo.data.util.sorter.basicComparator;return _d*_12(a,b);};};var _13;for(var i=0;i<_9.length;i++){_13=_9[i];if(_13.attribute){var _15=(_13.descending)?-1:1;_b.push(createSortFunction(_13.attribute,_15));}}return function(_16,_17){var i=0;while(i<_b.length){var ret=_b[i++](_16,_17);if(ret!==0){return ret;}}return 0;};};}if(!dojo._hasResource["dojo.data.util.simpleFetch"]){dojo._hasResource["dojo.data.util.simpleFetch"]=true;dojo.provide("dojo.data.util.simpleFetch");dojo.data.util.simpleFetch.fetch=function(_1a){_1a=_1a||{};if(!_1a.store){_1a.store=this;}var _1b=this;var _1c=function(_1d,_1e){if(_1e.onError){var _1f=_1e.scope||dojo.global;_1e.onError.call(_1f,_1d,_1e);}};var _20=function(_21,_22){var _23=_22.abort||null;var _24=false;var _25=_22.start?_22.start:0;var _26=(_22.count&&(_22.count!==Infinity))?(_25+_22.count):_21.length;_22.abort=function(){_24=true;if(_23){_23.call(_22);}};var _27=_22.scope||dojo.global;if(!_22.store){_22.store=_1b;}if(_22.onBegin){_22.onBegin.call(_27,_21.length,_22);}if(_22.sort){_21.sort(dojo.data.util.sorter.createSortFunction(_22.sort,_1b));}if(_22.onItem){for(var i=_25;(i<_21.length)&&(i<_26);++i){var _29=_21[i];if(!_24){_22.onItem.call(_27,_29,_22);}}}if(_22.onComplete&&!_24){var _2a=null;if(!_22.onItem){_2a=_21.slice(_25,_26);}_22.onComplete.call(_27,_2a,_22);}};this._fetchItems(_1a,_20,_1c);return _1a;};}if(!dojo._hasResource["dojo.data.ItemFileReadStore"]){dojo._hasResource["dojo.data.ItemFileReadStore"]=true;dojo.provide("dojo.data.ItemFileReadStore");dojo.declare("dojo.data.ItemFileReadStore",null,{constructor:function(_2b){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_2b.url;this._jsonData=_2b.data;this._datatypeMap=_2b.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_2c){return dojo.date.stamp.fromISOString(_2c);}};}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(_2b.urlPreventCache!==undefined){this.urlPreventCache=_2b.urlPreventCache?true:false;}if(_2b.clearOnClose){this.clearOnClose=true;}},url:"",data:null,clearOnClose:false,urlPreventCache:false,_assertIsItem:function(_2d){if(!this.isItem(_2d)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_2e){if(typeof _2e!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(_2f,_30,_31){var _32=this.getValues(_2f,_30);return (_32.length>0)?_32[0]:_31;},getValues:function(_33,_34){this._assertIsItem(_33);this._assertIsAttribute(_34);return _33[_34]||[];},getAttributes:function(_35){this._assertIsItem(_35);var _36=[];for(var key in _35){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_36.push(key);}}return _36;},hasAttribute:function(_38,_39){return this.getValues(_38,_39).length>0;},containsValue:function(_3a,_3b,_3c){var _3d=undefined;if(typeof _3c==="string"){_3d=dojo.data.util.filter.patternToRegExp(_3c,false);}return this._containsValue(_3a,_3b,_3c,_3d);},_containsValue:function(_3e,_3f,_40,_41){return dojo.some(this.getValues(_3e,_3f),function(_42){if(_42!==null&&!dojo.isObject(_42)&&_41){if(_42.toString().match(_41)){return true;}}else{if(_40===_42){return true;}}});},isItem:function(_43){if(_43&&_43[this._storeRefPropName]===this){if(this._arrayOfAllItems[_43[this._itemNumPropName]]===_43){return true;}}return false;},isItemLoaded:function(_44){return this.isItem(_44);},loadItem:function(_45){this._assertIsItem(_45.item);},getFeatures:function(){return this._features;},getLabel:function(_46){if(this._labelAttr&&this.isItem(_46)){return this.getValue(_46,this._labelAttr);}return undefined;},getLabelAttributes:function(_47){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_48,_49,_4a){var _4b=this;var _4c=function(_4d,_4e){var _4f=[];if(_4d.query){var _50=_4d.queryOptions?_4d.queryOptions.ignoreCase:false;var _51={};for(var key in _4d.query){var _53=_4d.query[key];if(typeof _53==="string"){_51[key]=dojo.data.util.filter.patternToRegExp(_53,_50);}}for(var i=0;i<_4e.length;++i){var _55=true;var _56=_4e[i];if(_56===null){_55=false;}else{for(var key in _4d.query){var _53=_4d.query[key];if(!_4b._containsValue(_56,key,_53,_51[key])){_55=false;}}}if(_55){_4f.push(_56);}}_49(_4f,_4d);}else{for(var i=0;i<_4e.length;++i){var _57=_4e[i];if(_57!==null){_4f.push(_57);}}_49(_4f,_4d);}};if(this._loadFinished){_4c(_48,this._getItemsArray(_48.queryOptions));}else{if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_48,filter:_4c});}else{this._loadInProgress=true;var _58={url:_4b._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache};var _59=dojo.xhrGet(_58);_59.addCallback(function(_5a){try{_4b._getItemsFromLoadedData(_5a);_4b._loadFinished=true;_4b._loadInProgress=false;_4c(_48,_4b._getItemsArray(_48.queryOptions));_4b._handleQueuedFetches();}catch(e){_4b._loadFinished=true;_4b._loadInProgress=false;_4a(e,_48);}});_59.addErrback(function(_5b){_4b._loadInProgress=false;_4a(_5b,_48);});}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_4c(_48,this._getItemsArray(_48.queryOptions));}catch(e){_4a(e,_48);}}else{_4a(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_48);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _5d=this._queuedFetches[i];var _5e=_5d.args;var _5f=_5d.filter;if(_5f){_5f(_5e,this._getItemsArray(_5e.queryOptions));}else{this.fetchItemByIdentity(_5e);}}this._queuedFetches=[];}},_getItemsArray:function(_60){if(_60&&_60.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_61){if(this.clearOnClose&&(this._jsonFileUrl!=="")){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_62){var _63=false;function valueIsAnItem(_64){var _65=((_64!=null)&&(typeof _64=="object")&&(!dojo.isArray(_64)||_63)&&(!dojo.isFunction(_64))&&(_64.constructor==Object||dojo.isArray(_64))&&(typeof _64._reference=="undefined")&&(typeof _64._type=="undefined")&&(typeof _64._value=="undefined"));return _65;};var _66=this;function addItemAndSubItemsToArrayOfAllItems(_67){_66._arrayOfAllItems.push(_67);for(var _68 in _67){var _69=_67[_68];if(_69){if(dojo.isArray(_69)){var _6a=_69;for(var k=0;k<_6a.length;++k){var _6c=_6a[k];if(valueIsAnItem(_6c)){addItemAndSubItemsToArrayOfAllItems(_6c);}}}else{if(valueIsAnItem(_69)){addItemAndSubItemsToArrayOfAllItems(_69);}}}}};this._labelAttr=_62.label;var i;var _6e;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_62.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){_6e=this._arrayOfTopLevelItems[i];if(dojo.isArray(_6e)){_63=true;}addItemAndSubItemsToArrayOfAllItems(_6e);_6e[this._rootItemPropName]=true;}var _6f={};var key;for(i=0;i<this._arrayOfAllItems.length;++i){_6e=this._arrayOfAllItems[i];for(key in _6e){if(key!==this._rootItemPropName){var _71=_6e[key];if(_71!==null){if(!dojo.isArray(_71)){_6e[key]=[_71];}}else{_6e[key]=[null];}}_6f[key]=key;}}while(_6f[this._storeRefPropName]){this._storeRefPropName+="_";}while(_6f[this._itemNumPropName]){this._itemNumPropName+="_";}while(_6f[this._reverseRefMap]){this._reverseRefMap+="_";}var _72;var _73=_62.identifier;if(_73){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_73;for(i=0;i<this._arrayOfAllItems.length;++i){_6e=this._arrayOfAllItems[i];_72=_6e[_73];var _74=_72[0];if(!this._itemsByIdentity[_74]){this._itemsByIdentity[_74]=_6e;}else{if(this._jsonFileUrl){throw new Error("dojo.data.ItemFileReadStore:  The json data as specified by: ["+this._jsonFileUrl+"] is malformed.  Items within the list have identifier: ["+_73+"].  Value collided: ["+_74+"]");}else{if(this._jsonData){throw new Error("dojo.data.ItemFileReadStore:  The json data provided by the creation arguments is malformed.  Items within the list have identifier: ["+_73+"].  Value collided: ["+_74+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){_6e=this._arrayOfAllItems[i];_6e[this._storeRefPropName]=this;_6e[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){_6e=this._arrayOfAllItems[i];for(key in _6e){_72=_6e[key];for(var j=0;j<_72.length;++j){_71=_72[j];if(_71!==null&&typeof _71=="object"){if(_71._type&&_71._value){var _76=_71._type;var _77=this._datatypeMap[_76];if(!_77){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+_76+"'");}else{if(dojo.isFunction(_77)){_72[j]=new _77(_71._value);}else{if(dojo.isFunction(_77.deserialize)){_72[j]=_77.deserialize(_71._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_71._reference){var _78=_71._reference;if(!dojo.isObject(_78)){_72[j]=this._itemsByIdentity[_78];}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _7a=this._arrayOfAllItems[k];var _7b=true;for(var _7c in _78){if(_7a[_7c]!=_78[_7c]){_7b=false;}}if(_7b){_72[j]=_7a;}}}if(this.referenceIntegrity){var _7d=_72[j];if(this.isItem(_7d)){this._addReferenceToMap(_7d,_6e,key);}}}else{if(this.isItem(_71)){if(this.referenceIntegrity){this._addReferenceToMap(_71,_6e,key);}}}}}}}},_addReferenceToMap:function(_7e,_7f,_80){},getIdentity:function(_81){var _82=this._features["dojo.data.api.Identity"];if(_82===Number){return _81[this._itemNumPropName];}else{var _83=_81[_82];if(_83){return _83[0];}}return null;},fetchItemByIdentity:function(_84){if(!this._loadFinished){var _85=this;if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_84});}else{this._loadInProgress=true;var _86={url:_85._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache};var _87=dojo.xhrGet(_86);_87.addCallback(function(_88){var _89=_84.scope?_84.scope:dojo.global;try{_85._getItemsFromLoadedData(_88);_85._loadFinished=true;_85._loadInProgress=false;var _8a=_85._getItemByIdentity(_84.identity);if(_84.onItem){_84.onItem.call(_89,_8a);}_85._handleQueuedFetches();}catch(error){_85._loadInProgress=false;if(_84.onError){_84.onError.call(_89,error);}}});_87.addErrback(function(_8b){_85._loadInProgress=false;if(_84.onError){var _8c=_84.scope?_84.scope:dojo.global;_84.onError.call(_8c,_8b);}});}}else{if(this._jsonData){_85._getItemsFromLoadedData(_85._jsonData);_85._jsonData=null;_85._loadFinished=true;var _8d=_85._getItemByIdentity(_84.identity);if(_84.onItem){var _8e=_84.scope?_84.scope:dojo.global;_84.onItem.call(_8e,_8d);}}}}else{var _8d=this._getItemByIdentity(_84.identity);if(_84.onItem){var _8e=_84.scope?_84.scope:dojo.global;_84.onItem.call(_8e,_8d);}}},_getItemByIdentity:function(_8f){var _90=null;if(this._itemsByIdentity){_90=this._itemsByIdentity[_8f];}else{_90=this._arrayOfAllItems[_8f];}if(_90===undefined){_90=null;}return _90;},getIdentityAttributes:function(_91){var _92=this._features["dojo.data.api.Identity"];if(_92===Number){return null;}else{return [_92];}},_forceLoad:function(){var _93=this;if(this._jsonFileUrl){var _94={url:_93._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,sync:true};var _95=dojo.xhrGet(_94);_95.addCallback(function(_96){try{if(_93._loadInProgress!==true&&!_93._loadFinished){_93._getItemsFromLoadedData(_96);_93._loadFinished=true;}else{if(_93._loadInProgress){throw new Error("dojo.data.ItemFileReadStore:  Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){console.log(e);throw e;}});_95.addErrback(function(_97){throw _97;});}else{if(this._jsonData){_93._getItemsFromLoadedData(_93._jsonData);_93._jsonData=null;_93._loadFinished=true;}}}});dojo.extend(dojo.data.ItemFileReadStore,dojo.data.util.simpleFetch);}if(!dojo._hasResource["dojo.data.ItemFileWriteStore"]){dojo._hasResource["dojo.data.ItemFileWriteStore"]=true;dojo.provide("dojo.data.ItemFileWriteStore");dojo.declare("dojo.data.ItemFileWriteStore",dojo.data.ItemFileReadStore,{constructor:function(_98){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(obj){return dojo.date.stamp.toISOString(obj,{zulu:true});};}if(_98&&(_98.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_9a){if(!_9a){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){var _9b=this.getFeatures()["dojo.data.api.Identity"];return _9b;},newItem:function(_9c,_9d){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _9c!="object"&&typeof _9c!="undefined"){throw new Error("newItem() was passed something other than an object");}var _9e=null;var _9f=this._getIdentifierAttribute();if(_9f===Number){_9e=this._arrayOfAllItems.length;}else{_9e=_9c[_9f];if(typeof _9e==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(dojo.isArray(_9e)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_9e]==="undefined");}this._assert(typeof this._pending._newItems[_9e]==="undefined");this._assert(typeof this._pending._deletedItems[_9e]==="undefined");var _a0={};_a0[this._storeRefPropName]=this;_a0[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_9e]=_a0;_a0[_9f]=[_9e];}this._arrayOfAllItems.push(_a0);var _a1=null;if(_9d&&_9d.parent&&_9d.attribute){_a1={item:_9d.parent,attribute:_9d.attribute,oldValue:undefined};var _a2=this.getValues(_9d.parent,_9d.attribute);if(_a2&&_a2.length>0){var _a3=_a2.slice(0,_a2.length);if(_a2.length===1){_a1.oldValue=_a2[0];}else{_a1.oldValue=_a2.slice(0,_a2.length);}_a3.push(_a0);this._setValueOrValues(_9d.parent,_9d.attribute,_a3,false);_a1.newValue=this.getValues(_9d.parent,_9d.attribute);}else{this._setValueOrValues(_9d.parent,_9d.attribute,_a0,false);_a1.newValue=_a0;}}else{_a0[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_a0);}this._pending._newItems[_9e]=_a0;for(var key in _9c){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _a5=_9c[key];if(!dojo.isArray(_a5)){_a5=[_a5];}_a0[key]=_a5;if(this.referenceIntegrity){for(var i=0;i<_a5.length;i++){var val=_a5[i];if(this.isItem(val)){this._addReferenceToMap(val,_a0,key);}}}}this.onNew(_a0,_a1);return _a0;},_removeArrayElement:function(_a8,_a9){var _aa=dojo.indexOf(_a8,_a9);if(_aa!=-1){_a8.splice(_aa,1);return true;}return false;},deleteItem:function(_ab){this._assert(!this._saveInProgress);this._assertIsItem(_ab);var _ac=_ab[this._itemNumPropName];var _ad=this.getIdentity(_ab);if(this.referenceIntegrity){var _ae=this.getAttributes(_ab);if(_ab[this._reverseRefMap]){_ab["backup_"+this._reverseRefMap]=dojo.clone(_ab[this._reverseRefMap]);}dojo.forEach(_ae,function(_af){dojo.forEach(this.getValues(_ab,_af),function(_b0){if(this.isItem(_b0)){if(!_ab["backupRefs_"+this._reverseRefMap]){_ab["backupRefs_"+this._reverseRefMap]=[];}_ab["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_b0),attr:_af});this._removeReferenceFromMap(_b0,_ab,_af);}},this);},this);var _b1=_ab[this._reverseRefMap];if(_b1){for(var _b2 in _b1){var _b3=null;if(this._itemsByIdentity){_b3=this._itemsByIdentity[_b2];}else{_b3=this._arrayOfAllItems[_b2];}if(_b3){for(var _b4 in _b1[_b2]){var _b5=this.getValues(_b3,_b4)||[];var _b6=dojo.filter(_b5,function(_b7){return !(this.isItem(_b7)&&this.getIdentity(_b7)==_ad);},this);this._removeReferenceFromMap(_ab,_b3,_b4);if(_b6.length<_b5.length){this._setValueOrValues(_b3,_b4,_b6,true);}}}}}}this._arrayOfAllItems[_ac]=null;_ab[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_ad];}this._pending._deletedItems[_ad]=_ab;if(_ab[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_ab);}this.onDelete(_ab);return true;},setValue:function(_b8,_b9,_ba){return this._setValueOrValues(_b8,_b9,_ba,true);},setValues:function(_bb,_bc,_bd){return this._setValueOrValues(_bb,_bc,_bd,true);},unsetAttribute:function(_be,_bf){return this._setValueOrValues(_be,_bf,[],true);},_setValueOrValues:function(_c0,_c1,_c2,_c3){this._assert(!this._saveInProgress);this._assertIsItem(_c0);this._assert(dojo.isString(_c1));this._assert(typeof _c2!=="undefined");var _c4=this._getIdentifierAttribute();if(_c1==_c4){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _c5=this._getValueOrValues(_c0,_c1);var _c6=this.getIdentity(_c0);if(!this._pending._modifiedItems[_c6]){var _c7={};for(var key in _c0){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_c7[key]=_c0[key];}else{if(key===this._reverseRefMap){_c7[key]=dojo.clone(_c0[key]);}else{_c7[key]=_c0[key].slice(0,_c0[key].length);}}}this._pending._modifiedItems[_c6]=_c7;}var _c9=false;if(dojo.isArray(_c2)&&_c2.length===0){_c9=delete _c0[_c1];_c2=undefined;if(this.referenceIntegrity&&_c5){var _ca=_c5;if(!dojo.isArray(_ca)){_ca=[_ca];}for(var i=0;i<_ca.length;i++){var _cc=_ca[i];if(this.isItem(_cc)){this._removeReferenceFromMap(_cc,_c0,_c1);}}}}else{var _cd;if(dojo.isArray(_c2)){var _ce=_c2;_cd=_c2.slice(0,_c2.length);}else{_cd=[_c2];}if(this.referenceIntegrity){if(_c5){var _ca=_c5;if(!dojo.isArray(_ca)){_ca=[_ca];}var map={};dojo.forEach(_ca,function(_d0){if(this.isItem(_d0)){var id=this.getIdentity(_d0);map[id.toString()]=true;}},this);dojo.forEach(_cd,function(_d2){if(this.isItem(_d2)){var id=this.getIdentity(_d2);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_d2,_c0,_c1);}}},this);for(var rId in map){var _d5;if(this._itemsByIdentity){_d5=this._itemsByIdentity[rId];}else{_d5=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_d5,_c0,_c1);}}else{for(var i=0;i<_cd.length;i++){var _cc=_cd[i];if(this.isItem(_cc)){this._addReferenceToMap(_cc,_c0,_c1);}}}}_c0[_c1]=_cd;_c9=true;}if(_c3){this.onSet(_c0,_c1,_c5,_c2);}return _c9;},_addReferenceToMap:function(_d6,_d7,_d8){var _d9=this.getIdentity(_d7);var _da=_d6[this._reverseRefMap];if(!_da){_da=_d6[this._reverseRefMap]={};}var _db=_da[_d9];if(!_db){_db=_da[_d9]={};}_db[_d8]=true;},_removeReferenceFromMap:function(_dc,_dd,_de){var _df=this.getIdentity(_dd);var _e0=_dc[this._reverseRefMap];var _e1;if(_e0){for(_e1 in _e0){if(_e1==_df){delete _e0[_e1][_de];if(this._isEmpty(_e0[_e1])){delete _e0[_e1];}}}if(this._isEmpty(_e0)){delete _dc[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i<this._arrayOfAllItems.length;i++){var _e3=this._arrayOfAllItems[i];if(_e3&&_e3[this._reverseRefMap]){console.log("Item: ["+this.getIdentity(_e3)+"] is referenced by: "+dojo.toJson(_e3[this._reverseRefMap]));}}},_getValueOrValues:function(_e4,_e5){var _e6=undefined;if(this.hasAttribute(_e4,_e5)){var _e7=this.getValues(_e4,_e5);if(_e7.length==1){_e6=_e7[0];}else{_e6=_e7;}}return _e6;},_flatten:function(_e8){if(this.isItem(_e8)){var _e9=_e8;var _ea=this.getIdentity(_e9);var _eb={_reference:_ea};return _eb;}else{if(typeof _e8==="object"){for(var _ec in this._datatypeMap){var _ed=this._datatypeMap[_ec];if(dojo.isObject(_ed)&&!dojo.isFunction(_ed)){if(_e8 instanceof _ed.type){if(!_ed.serialize){throw new Error("ItemFileWriteStore:  No serializer defined for type mapping: ["+_ec+"]");}return {_type:_ec,_value:_ed.serialize(_e8)};}}else{if(_e8 instanceof _ed){return {_type:_ec,_value:_e8.toString()};}}}}return _e8;}},_getNewFileContentString:function(){var _ee={};var _ef=this._getIdentifierAttribute();if(_ef!==Number){_ee.identifier=_ef;}if(this._labelAttr){_ee.label=this._labelAttr;}_ee.items=[];for(var i=0;i<this._arrayOfAllItems.length;++i){var _f1=this._arrayOfAllItems[i];if(_f1!==null){var _f2={};for(var key in _f1){if(key!==this._storeRefPropName&&key!==this._itemNumPropName){var _f4=key;var _f5=this.getValues(_f1,_f4);if(_f5.length==1){_f2[_f4]=this._flatten(_f5[0]);}else{var _f6=[];for(var j=0;j<_f5.length;++j){_f6.push(this._flatten(_f5[j]));_f2[_f4]=_f6;}}}}_ee.items.push(_f2);}}var _f8=true;return dojo.toJson(_ee,_f8);},_isEmpty:function(_f9){var _fa=true;if(dojo.isObject(_f9)){var i;for(i in _f9){_fa=false;break;}}else{if(dojo.isArray(_f9)){if(_f9.length>0){_fa=false;}}}return _fa;},save:function(_fc){this._assert(!this._saveInProgress);this._saveInProgress=true;var _fd=this;var _fe=function(){_fd._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};_fd._saveInProgress=false;if(_fc&&_fc.onComplete){var _ff=_fc.scope||dojo.global;_fc.onComplete.call(_ff);}};var _100=function(){_fd._saveInProgress=false;if(_fc&&_fc.onError){var _101=_fc.scope||dojo.global;_fc.onError.call(_101);}};if(this._saveEverything){var _102=this._getNewFileContentString();this._saveEverything(_fe,_100,_102);}if(this._saveCustom){this._saveCustom(_fe,_100);}if(!this._saveEverything&&!this._saveCustom){_fe();}},revert:function(){this._assert(!this._saveInProgress);var _103;for(_103 in this._pending._modifiedItems){var _104=this._pending._modifiedItems[_103];var _105=null;if(this._itemsByIdentity){_105=this._itemsByIdentity[_103];}else{_105=this._arrayOfAllItems[_103];}_104[this._storeRefPropName]=this;_105[this._storeRefPropName]=null;var _106=_105[this._itemNumPropName];this._arrayOfAllItems[_106]=_104;if(_105[this._rootItemPropName]){var i;for(i=0;i<this._arrayOfTopLevelItems.length;i++){var _108=this._arrayOfTopLevelItems[i];if(this.getIdentity(_108)==_103){this._arrayOfTopLevelItems[i]=_104;break;}}}if(this._itemsByIdentity){this._itemsByIdentity[_103]=_104;}}var _109;for(_103 in this._pending._deletedItems){_109=this._pending._deletedItems[_103];_109[this._storeRefPropName]=this;var _10a=_109[this._itemNumPropName];if(_109["backup_"+this._reverseRefMap]){_109[this._reverseRefMap]=_109["backup_"+this._reverseRefMap];delete _109["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_10a]=_109;if(this._itemsByIdentity){this._itemsByIdentity[_103]=_109;}if(_109[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_109);}}for(_103 in this._pending._deletedItems){_109=this._pending._deletedItems[_103];if(_109["backupRefs_"+this._reverseRefMap]){dojo.forEach(_109["backupRefs_"+this._reverseRefMap],function(_10b){var _10c;if(this._itemsByIdentity){_10c=this._itemsByIdentity[_10b.id];}else{_10c=this._arrayOfAllItems[_10b.id];}this._addReferenceToMap(_10c,_109,_10b.attr);},this);delete _109["backupRefs_"+this._reverseRefMap];}}for(_103 in this._pending._newItems){var _10d=this._pending._newItems[_103];_10d[this._storeRefPropName]=null;this._arrayOfAllItems[_10d[this._itemNumPropName]]=null;if(_10d[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_10d);}if(this._itemsByIdentity){delete this._itemsByIdentity[_103];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(item){if(item){var _10f=this.getIdentity(item);return new Boolean(this._pending._newItems[_10f]||this._pending._modifiedItems[_10f]||this._pending._deletedItems[_10f]).valueOf();}else{if(!this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems)){return true;}return false;}},onSet:function(item,_111,_112,_113){},onNew:function(_114,_115){},onDelete:function(_116){},close:function(_117){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{if(this._jsonFileUrl!==""){throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store.  Please save or revert the changes before invoking close.");}}}}});}if(!dojo._hasResource["tgc.data.QueryReadStore"]){dojo._hasResource["tgc.data.QueryReadStore"]=true;dojo.provide("tgc.data.QueryReadStore");dojo.declare("tgc.data.QueryReadStore",null,{url:"",requestMethod:"GET",_items:[],_lastServerQuery:null,_numRows:null,doClientPaging:false,doClientSorting:false,_itemsByIdentity:null,_identifier:null,_features:{"dojo.data.api.Read":true,"dojo.data.api.Identity":true},_labelAttr:"label",constructor:function(_118){dojo.mixin(this,_118);this.requestMethod=this.requestMethod.toUpperCase();this._S="_S";this._0="_0";this._N="_N";},getValue:function(item,_11a,_11b){var _11c=this.getValues(item,_11a);return (_11c.length>0)?_11c[0]:_11b;},getValues:function(item,_11e){this._assertIsItem(item);this._assertIsAttribute(_11e);return item[_11e]==undefined?[]:dojo.isArray(item[_11e])?item[_11e]:[item[_11e]];},getAttributes:function(item){this._assertIsItem(item);var _120=[];for(var key in item){if((key!==this._S)&&(key!==this._N)){_120.push(key);}}return _120;},hasAttribute:function(item,_123){return this.getValues(item,_123).length>0;},containsValue:function(item,_125,_126){var _127=undefined;if(typeof _126==="string"){_127=dojo.data.util.filter.patternToRegExp(_126,false);}return this._containsValue(item,_125,_126,_127);},_containsValue:function(item,_129,_12a,_12b){return dojo.some(this.getValues(item,_129),function(_12c){if(_12c!==null&&!dojo.isObject(_12c)&&_12b){if(_12c.toString().match(_12b)){return true;}}else{if(_12a===_12c){return true;}}return false;});},isItem:function(_12d){if(_12d&&_12d[this._S]===this&&this._itemsByIdentity[_12d[this._identifier]]===_12d){return true;}return false;},isItemLoaded:function(_12e){return this.isItem(_12e);},loadItem:function(args){if(this.isItemLoaded(args.item)){return;}args.identity=args.item[this._identifier];this.fetchItemByIdentity(args);},getFeatures:function(){return this._features;},close:function(_130){this._items=[];this._itemsByIdentity=null;this._numRows=null;this._lastServerQuery=null;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},_xhrFetchHandler:function(data,_134,_135,_136){data=this._filterResponse(data);if(data.label){this._labelAttr=data.label;}var R=this._S;var N=this._0;var ID=this._N;this._items=[];var _13a=data.identifier;this._itemsByIdentity={};var _13b=dojo.mixin({},_134);var _13c=_134.scope||dojo.global;var _13d=_134.onItem||null;_13b.onItem=function(item,req){var _140=req.store;if(item){item[R]=_140;item[N]=_140._items.length;_140._items.push(item);}if(_13d){_13d.call(_13c,item,req);}};var _141=_134.onComplete||null;var _142="${classname}: The json specified by [${url}] "+"is malformed. Items within the list have identifier "+"[${identifier}]. Value collided: [${identity}].";_13b.onComplete=function(_143,req){var _145=req.store;_145._identifier=_13a||Number;dojo.forEach(_145._items,function(item,_147){var _148=item[_13a]||_147;if(!_145._itemsByIdentity[_148]){if(!_13a){item[ID]=_148;}_145._itemsByIdentity[_148]=item;}else{throw new Error(dojo.string.substitute(_142,{classname:_145.declaredClass,url:_145.url,identifier:_13a,identity:_148}));}});if(_141){_141.call(_13c,_145._items,req);}};if(!this.doClientPaging){_13b.start=0;}else{if(_13b.start){_13b.start=Number(_13b.start);}}if(_13b.count){_13b.count=Number(_134.count);}if(!this.doClientSorting){_13b.sort=null;}_135(data.items,_13b);this._numRows=this._items.length;},_fetchItems:function(_149,_14a,_14b){var _14c=dojo.clone(_149.serverQuery||_149.query||{});if(!this.doClientPaging){_14c.start=_149.start||0;if(_149.count){_14c.count=Number(_149.count);}}if(!this.doClientSorting){if(_149.sort){var sort=_149.sort[0];if(sort&&sort.attribute){_14c.sort=(sort.descending?"-":"")+sort.attribute;}}}var _14e=dojo.toJson(_14c);if(this.doClientPaging&&this._lastServerQuery!==null&&_14e==this._lastServerQuery){var _14f=[];dojo.forEach(this._items,function(item){if(item){item[this._0]=_14f.length;_14f.push(item);}});if(_14f.length!=this._items.length){this._numRows=null;this._items=_14f;}this._numRows=this._numRows||this._items.length;_14a(this._items,_149,this._numRows);}else{var _151=dojo.xhr(this.requestMethod,{url:this.url,handleAs:"json-comment-optional",content:_14c},true);_151.addCallback(dojo.hitch(this,function(data){this._xhrFetchHandler(data,_149,_14a,_14b);}));_151.addErrback(function(_153){_14b(_153,_149);});this._lastServerQuery=_14e;}},_filterResponse:function(data){return data;},_assertIsItem:function(item){if(!this.isItem(item)){console.log("***Failed assert:",item);throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_156){if(typeof _156!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument ('"+_156+"').");}},fetchItemByIdentity:function(_157){var _158=_157.scope||dojo.global;var self=this;var R=this._S;var N=this._0;if(this._itemsByIdentity){var item=this._itemsByIdentity[_157.identity];if(!(item===undefined)){if(_157.onItem){_157.onItem.call(_158,item);}return;}}if(this._identifier&&this._identifier===Number){if(_157.onItem){_157.onItem.call(_158,null);}return;}var _15d=function(_15e,_15f){if(_157.onError){_157.onError.call(_158,_15e);}};var _160=function(data,_162){try{var item=null;if(data.label&&!this._labelAttr){this._labelAttr=data.label;}var _164=data.identifier;if((!self._identifier)&&_164){self._identifier=_164;}if(data.items&&data.items.length==1){item=data.items[0];item[R]=self;item[N]=self._items.length;self._items.push(item);self._itemsByIdentity[item[_164]]=item;}if(_157.onItem){_157.onItem.call(_158,item);}}catch(error){if(_157.onError){_157.onError.call(_158,error);}}};var _165={start:0,count:1};_165[this._identifier||"id"]=_157.identity;var _166=dojo.xhr(this.requestMethod,{url:this.url,handleAs:"json-comment-optional",content:_165},true);_166.addCallback(dojo.hitch(this,function(data){_160(data,_165);}));_166.addErrback(function(_168){_15d(_168,_165);});},getIdentity:function(item){return this._identifier===Number?item[this._N]:item[this._identifier];},getIdentityAttributes:function(item){return [this._identifier];}});dojo.extend(tgc.data.QueryReadStore,dojo.data.util.simpleFetch);}if(!dojo._hasResource["tgc.data.QueryWriteStore"]){dojo._hasResource["tgc.data.QueryWriteStore"]=true;dojo.provide("tgc.data.QueryWriteStore");dojo.declare("tgc.data.QueryWriteStore",tgc.data.QueryReadStore,{constructor:function(_16b){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._saveInProgress=false;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};},referenceIntegrity:false,_copyObject:function(o){if(!o){return o;}if(o===this){return o;}if(dojo.isArray(o)||o instanceof [].constructor){var r=[];for(var i=0;i<o.length;++i){r.push(this._copyObject(o[i]));}return r;}if(!dojo.isObject(o)){return o;}if(o.nodeType&&o.cloneNode){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}var r=new o.constructor();for(var i in o){if(!(i in r)||r[i]!=o[i]){r[i]=dojo.clone(o[i]);}}return r;},newItem:function(_16f,_170){var _171=_16f[this._identifier];var item=this._copyObject(_16f);item[this._S]=this;item[this._0]=this._items.length;if(this._identifier===Number){item[this._N]=this._items.length;}this._items.push(item);this._numRows=this._items.length;this._itemsByIdentity[_171]=item;this._pending._newItems[_171]=item;this.onNew(item);return true;},deleteItem:function(item){var _174=this.getIdentity(item);if(this._itemsByIdentity){delete this._itemsByIdentity[_174];}item[item[this._0]]=null;this._pending._deletedItems[_174]=item;this.onDelete(item);return true;},setValue:function(item,_176,_177){var _178=this.getIdentity(item);var _179=item[_176];if(_179==_177){return true;}var _17a=this._pending._modifiedItems[_178];if(!_17a){item[this._S]=null;_17a=this._copyObject(item);this._pending._modifiedItems[_178]=_17a;item[this._S]=this;_17a._A={};}else{if(_177==_17a[_176]){if(_17a._A[_176]){delete _17a._A[_176];}var _17b=true;for(k in _17a._A){_17b=false;break;}if(_17b){delete this._pending._modifiedItems[_178];}}}_17a._A[_176]=true;item[_176]=_177;this.onSet(item,_176,_179,_177);return true;},setValues:function(item,_17d,_17e){},unsetAttribute:function(item,_180){},save:function(_181){if(this._saveInProgress){return;}this._saveInProgress=true;var self=this;var _183=function(){self._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};self._saveInProgress=false;if(_181&&_181.onComplete){var _184=_181.scope||dojo.global;_181.onComplete.call(_184);}};var _185=function(){self._saveInProgress=false;if(_181&&_181.onError){var _186=_181.scope||dojo.global;_181.onError.call(_186);}};if(this._saveCustom){this._saveCustom(_183,_185);}else{_183();}},revert:function(){if(this._saveInProgress){return false;}var R=this._S;var N=this._0;for(identity in this._pending._deletedItems){var item=this._pending._deletedItems[identity];item[R]=this;this._items[item[N]]=item;this._itemsByIdentity[identity]=item;this.onNew(item);}for(identity in this._pending._modifiedItems){var _18a=this._pending._modifiedItems[identity];var _18b=this._items[_18a[N]];var _18c=_18a._A;delete _18a._A;for(attr in _18c){_18b[attr]=_18a[attr];this.onSet(_18b,attr,_18b[attr],_18a[attr]);}}for(identity in this._pending._newItems){var item=this._pending._newItems[identity];delete this._itemsByIdentity[identity];this._items[item[N]]=null;this.onDelete(item);item[R]=null;}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},_isEmpty:function(_18d){var _18e=true;if(dojo.isObject(_18d)){var i;for(i in _18d){_18e=false;break;}}else{if(dojo.isArray(_18d)){if(_18d.length>0){_18e=false;}}}return _18e;},isDirty:function(item){if(item){var _191=this.getIdentity(item);return new Boolean(this._pending._newItems[_191]||this._pending._modifiedItems[_191]||this._pending._deletedItems[_191]).valueOf();}else{if(!this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems)){return true;}return false;}},isItemNew:function(item){if(item){var _193=this.getIdentity(item);return new Boolean(this._pending._newItems[_193]).valueOf();}return false;},isItemModified:function(item){if(item){var _195=this.getIdentity(item);return new Boolean(this._pending._modifiedItems[_195]).valueOf();}return false;},isItemDeleted:function(item){if(item){var _197=this.getIdentity(item);return new Boolean(this._pending._deletedItems[_197]).valueOf();}return false;},onSet:function(item,_199,_19a,_19b){},onNew:function(_19c,_19d){},onDelete:function(_19e){}});}

