rem:  for(i = 0; i < arrayOfItems.length; ++i){ item = arrayOfItems[i]; item[this._storeRef] = this; item[this._itemId] = i; 
add:        for(i = 0; i < arrayOfAllItems.length; ++i){ item = arrayOfAllItems[i]; 
context: 	_getItemsFromLoadedData: function(/* Object */ dataObject){		//	summary:		//		Function to parse the loaded data into item format and build the internal items array.		//	description:		//		Function to parse the loaded data into item format and build the internal items array.		//		//	dataObject:		//		The JS data object containing the raw data to convery into item format.		//		// 	returns: array		//		Array of items in store item format.		var arrayOfItems = dataObject.items;		var i;		var item;		var attrNames = {};		this._labelAttr = dataObject.label;		// We need to do some transformations to convert the data structure		// that we read from the file into a format that will be convenient		// to work with in memory.		// Step 1: We walk through all the attribute values of all the items, 		// and replace single values with arrays.  For example, we change this:		//		{ name:'Miss Piggy', pets:'Foo-Foo'}		// into this:		//		{ name:['Miss Piggy'], pets:['Foo-Foo']}		// Also store off the keys so we can validate our store reference and item 		// id special properties for the O(1) isItem		for(i = 0; i < arrayOfItems.length; ++i){			item = arrayOfItems[i];			for(var key in item){				var value = item[key];				if(value !== null){					if(!dojo.isArray(value)){						item[key] = [value];					}				}else{					item[key] = [null];				}				attrNames[key]=key;			}		}		//Build unique keys for id and store ref.		//This should go really fast, it will generally		// never even run the loop..		while(attrNames[this._storeRef]){			this._storeRef += "_";		}		while(attrNames[this._itemId]){			this._itemId += "_";		}		// Step 2: Some data files specify an optional 'identifier', which is 		// the name of an attribute that holds the identity of each item.  If 		// this data file specified an identifier attribute, then build an 		// hash table of items keyed by the identity of the items.		var identifier = dataObject.identifier;		var arrayOfValues = null;		if(identifier){			this._features['dojo.data.api.Identity'] = identifier;			this._itemsByIdentity = {};			for(var i = 0; i < arrayOfItems.length; ++i){				item = arrayOfItems[i];				arrayOfValues = item[identifier];				identity = arrayOfValues[0];				if(!this._itemsByIdentity[identity]){					this._itemsByIdentity[identity] = item;				}else{					if(this._jsonFileUrl){						throw new Error("dojo.data.JsonItemStore:  The json data as specified by: [" + this._jsonFileUrl + "] is malformed.  Items within the list have identifier: [" + identifier + "].  Value collided: [" + identity + "]");					}else if(this._jsonData){						throw new Error("dojo.data.JsonItemStore:  The json data provided by the creation arguments is malformed.  Items within the list have identifier: [" + identifier + "].  Value collided: [" + identity + "]");					}				}			}		}		// Step 3: We walk through all the attribute values of all the items,		// and replace references with pointers to items.  For example, we change:		//		{ name:['Kermit'], friends:[{reference:{name:'Miss Piggy'}}] }		// into this:		//		{ name:['Kermit'], friends:[miss_piggy] } 		// (where miss_piggy is the object representing the 'Miss Piggy' item).		// Also generate the associate map for all items for the O(1) isItem function.		for(i = 0; i < arrayOfItems.length; ++i){			item = arrayOfItems[i]; // example: { name:['Kermit'], friends:[{reference:{name:'Miss Piggy'}}] }			item[this._storeRef] = this;			item[this._itemId] = i;			for(key in item){				arrayOfValues = item[key]; // example: [{reference:{name:'Miss Piggy'}}]				for(var j = 0; j < arrayOfValues.length; ++j) {					value = arrayOfValues[j]; // example: {reference:{name:'Miss Piggy'}}					if(value !== null && typeof value == "object" && value.reference){						var referenceDescription = value.reference; // example: {name:'Miss Piggy'}						if(dojo.isString(referenceDescription)){							// example: 'Miss Piggy'							// from an item like: { name:['Kermit'], friends:[{reference:'Miss Piggy'}]}							arrayOfValues[j] = this._itemsByIdentity[referenceDescription];						}else{							// example: {name:'Miss Piggy'}							// from an item like: { name:['Kermit'], friends:[{reference:{name:'Miss Piggy'}}] }							for(var k = 0; k < arrayOfItems.length; ++k){								var candidateItem = arrayOfItems[k];								var found = true;								for(var refKey in referenceDescription){									if(candidateItem[refKey] != referenceDescription[refKey]){ 										found = false; 									}								}								if(found){ 									arrayOfValues[j] = candidateItem; 								}							}						}					}				}			}		}		return arrayOfItems; //Array	},
meta: 4497	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/4497/8e7c573bad43970f08c4b2a4e8d3d9002b8d2413/JsonItemStore.js/buggy/data/JsonItemStore.js