	this.autodetect = function(){		// summary:		//		Autodetects the best possible persistent storage provider		//		available on this platform. 		if(this._initialized){ // already finished			return;		}		// a flag to force the storage manager to use a particular 		// storage provider type, such as 		// djConfig = {forceStorageProvider: "dojox.storage.browser.WhatWGStorageProvider"};		var forceProvider = djConfig["forceStorageProvider"]||false;		// go through each provider, seeing if it can be used		var providerToUse;		for(var i = 0; i < this._providers.length; i++){			providerToUse = this._providers[i];			if(forceProvider == providerToUse.declaredClass){				// still call isAvailable for this provider, since this helps some				// providers internally figure out if they are available				// FIXME: This should be refactored since it is non-intuitive				// that isAvailable() would initialize some state				providerToUse.isAvailable();				break;			}else if(providerToUse.isAvailable()){				break;			}		}				if(!providerToUse){ // no provider available			this._initialized = true;			this.available = false;			this.currentProvider = null;			console.warn("No storage provider found for this platform");			this.loaded();			return;		}					// create this provider and mix in it's properties		// so that developers can do dojox.storage.put rather		// than dojox.storage.currentProvider.put, for example		this.currentProvider = providerToUse;		dojo.mixin(dojox.storage, this.currentProvider);				// have the provider initialize itself		dojox.storage.initialize();				this._initialized = true;		this.available = true;	};
5168	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5168/5ec235f0fcbfd02706f8b5be8fdc40d9c517acd6/manager.js/clean/storage/manager.js