text: /*
  	Copyright (c) 2004-2012, 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
  */
  
  
  if(!dojo._hasResource["dojox.mobile.parser"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  dojo._hasResource["dojox.mobile.parser"] = true;
  dojo.provide("dojox.mobile.parser");
  dojo.provide("dojo.parser"); // not to load dojo.parser unexpectedly
  
  dojox.mobile.parser = new function(){
  	this.instantiate = function(list, defaultParams){
  		// summary:
  		//		Function for instantiating a list of widget nodes.
  		// list:
  		//		The list of DOMNodes to walk and instantiate widgets on.
  		var ws = [];
  		if(list){
  			var i, len;
  			len = list.length;
  			for(i = 0; i < len; i++){
  				var node = list[i];
  				var cls = dojo.getObject(dojo.attr(node, "dojoType"));
  				var proto = cls.prototype;
  				var params = {};
  
  				if(defaultParams){
  					for(var name in defaultParams){
  						params[name] = defaultParams[name];
  					}
  				}
  				for(var prop in proto){
  					var val = dojo.attr(node, prop);
  					if(!val){ continue; }
  					if(typeof proto[prop] == "string"){
  						params[prop] = val;
  					}else if(typeof proto[prop] == "number"){
  						params[prop] = val - 0;
  					}else if(typeof proto[prop] == "boolean"){
  						params[prop] = (val != "false");
  					}else if(typeof proto[prop] == "object"){
  						params[prop] = eval("(" + val + ")");
  					}
  				}
  				params["class"] = node.className;
  				params["style"] = node.style && node.style.cssText;
  				var instance = new cls(params, node);
  				ws.push(instance);
  				var jsId = node.getAttribute("jsId");
  				if(jsId){
  					dojo.setObject(jsId, instance);
  				}
  			}
  			len = ws.length;
  			for(i = 0; i < len; i++){
  				var w = ws[i];
  				w.startup && !w._started && (!w.getParent || !w.getParent()) && w.startup();
  			}
  		}
  		return ws;
  	};
  
  	this.parse = function(rootNode, defaultParams){
  		// summary:
  		//		Function to handle parsing for widgets in the current document.
  		//		It is not as powerful as the full dojo parser, but it will handle basic
  		//		use cases fine.
  		// rootNode:
  		//		The root node in the document to parse from
  		if(!rootNode){
  			rootNode = dojo.body();
  		}else if(!defaultParams && rootNode.rootNode){
  			// Case where 'rootNode' is really a params object.
  			rootNode = rootNode.rootNode;
   		}
  
  		var nodes = rootNode.getElementsByTagName("*");
  		var list = [];
  		for(var i = 0, len = nodes.length; i < len; i++){
  			if(nodes[i].getAttribute("dojoType")){
  				list.push(nodes[i]);
  			}
  		}
  		return this.instantiate(list, defaultParams);
  	};
  }();
  dojo._loaders.unshift(function(){
  	if(dojo.config.parseOnLoad){
  		dojox.mobile.parser.parse();
  	}
  });
  
  
  }
  