return [].concat(rs); 
var results = []; for(var i = 0; i < rs.length; i++){ results.push(rs[i].key); }  return results; 
	(function(){		// make sure we don't define the gears provider if we're not gears		// enabled				dojo.declare("dojox.storage.GearsStorageProvider", 			[ dojox.storage.Provider ],			function(){				// summary:				//		Storage provider that uses the features of Google Gears				//		to store data (it is saved into the local SQL database				//		provided by Gears, using dojox.sql)				// description: 				//						//				//		You can disable this storage provider with the following djConfig				//		variable:				//		var djConfig = { disableGearsStorage: true };				//						//		Authors of this storage provider-					//			Brad Neuberg, bkn3@columbia.edu 			},			{				// instance methods and properties				TABLE_NAME: "__DOJO_STORAGE",				initialized: false,								_available: null,								initialize: function(){					if(djConfig["disableGearsStorage"] == true){						return;					}										// create the table that holds our data					try{						dojox.sql.open();						dojox.sql("CREATE TABLE IF NOT EXISTS " + this.TABLE_NAME + "( "									+ " namespace TEXT, "									+ " key TEXT UNIQUE, "									+ " value TEXT "									+ ")"								);						dojox.sql("CREATE UNIQUE INDEX IF NOT EXISTS namespace_key_index" 									+ " ON " + this.TABLE_NAME									+ " (namespace, key)");						dojox.sql.close();					}catch(e){						console.debug("dojox.storage.Gears.initialize:", e);												this.initialized = false; // we were unable to initialize						dojox.storage.manager.loaded();						return;					}										// indicate that this storage provider is now loaded					this.initialized = true;					dojox.storage.manager.loaded();					},								isAvailable: function(){					// is Google Gears available and defined?					return this._available = dojo.isGears;				},				put: function(key, value, resultsHandler, namespace){					if(this.isValidKey(key) == false){						throw new Error("Invalid key given: " + key);					}					namespace = namespace||this.DEFAULT_NAMESPACE;										// serialize the value;					// handle strings differently so they have better performance					if(dojo.isString(value)){						value = "string:" + value;					}else{						value = dojo.toJson(value);					}										// try to store the value						try{						dojox.sql.open();						dojox.sql("DELETE FROM " + this.TABLE_NAME									+ " WHERE namespace = ? AND key = ?",									namespace, key);						dojox.sql("INSERT INTO " + this.TABLE_NAME									+ " VALUES (?, ?, ?)",									namespace, key, value);						dojox.sql.close();					}catch(e){						// indicate we failed						// console.debug(this.FAILED, key, e);						resultsHandler(this.FAILED, key, e.toString());						return;					}										resultsHandler(dojox.storage.SUCCESS, key, null);				},				get: function(key, namespace){					if(this.isValidKey(key) == false){						throw new Error("Invalid key given: " + key);					}					namespace = namespace||this.DEFAULT_NAMESPACE;					// console.debug(key, namespace);										// try to find this key in the database					dojox.sql.open();					var results = dojox.sql("SELECT * FROM " + this.TABLE_NAME												+ " WHERE namespace = ? AND "												+ " key = ?",												namespace, key);					dojox.sql.close();					if(!results.length){						return null;					}else{						results = results[0].value;					}										// destringify the content back into a 					// real JavaScript object;					// handle strings differently so they have better performance					if(dojo.isString(results) && (/^string:/.test(results))){						results = results.substring("string:".length);					}else{						results = dojo.fromJson(results);					}										return results;				},								getNamespaces: function(){					var results = [ dojox.storage.DEFAULT_NAMESPACE ];										dojox.sql.open();					var rs = dojox.sql("SELECT namespace FROM " + this.TABLE_NAME										+ " DESC GROUP BY namespace");					dojox.sql.close();					for(var i = 0; i < rs.length; i++){						if(rs[i].namespace != dojox.storage.DEFAULT_NAMESPACE){							results.push(rs[i].namespace);						}					}										return results;				},				getKeys: function(namespace){					if(this.isValidKey(namespace) == false){						throw new Error("Invalid namespace given: " + namespace);					}					namespace = namespace||this.DEFAULT_NAMESPACE;										dojox.sql.open();					var rs = dojox.sql("SELECT key FROM " + this.TABLE_NAME										+ " WHERE namespace = ?",										namespace);					dojox.sql.close();										return [].concat(rs);				},				clear: function(namespace){					if(this.isValidKey(namespace) == false){						throw new Error("Invalid namespace given: " + namespace);					}					namespace = namespace||this.DEFAULT_NAMESPACE;										dojox.sql.open();					dojox.sql("DELETE FROM " + this.TABLE_NAME 								+ " WHERE namespace = ?",								namespace);					dojox.sql.close();				},								remove: function(key, namespace){					namespace = namespace||this.DEFAULT_NAMESPACE;										dojox.sql.open();					dojox.sql("DELETE FROM " + this.TABLE_NAME 								+ " WHERE namespace = ? AND"								+ " key = ?",								namespace,								key);					dojox.sql.close();				},								isPermanent: function(){ return true; },				getMaximumSize: function(){ return this.SIZE_NO_LIMIT; },				hasSettingsUI: function(){ return false; },								showSettingsUI: function(){					throw new Error(this.getType() + " does not support a storage settings user-interface");				},								hideSettingsUI: function(){					throw new Error(this.getType() + " does not support a storage settings user-interface");				},								getType: function(){					return "dojox.storage.GearsStorageProvider";				}			}		);		// register the existence of our storage providers		dojox.storage.manager.register("dojox.storage.GearsStorageProvider",										new dojox.storage.GearsStorageProvider());	})();
5168	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5168/f90361786e3cd064192a7a10280e5b8a8949e6cd/GearsStorageProvider.js/buggy/storage/GearsStorageProvider.js