Index: ComboBox.js
===================================================================
--- ComboBox.js	(revision 24525)
+++ ComboBox.js	(working copy)
@@ -1,9 +1,6 @@
-define("dojox/mobile/ComboBox", ["dojo", "dijit", "dojox", "dojox/mobile/TextBox", "dojox/mobile/_ComboBoxMenu", "dijit/form/_AutoCompleterMixin"], function(dojo, dijit, dojox) {
+define(["./TextBox", "./_ComboBoxMenu", "dijit/form/_AutoCompleterMixin"], function(TextBox,ComboBoxMenu,AutoCompleterMixin) {
 
-dojo.declare(
-	"dojox.mobile.ComboBox",
-	[dojox.mobile.TextBox, dijit.form._AutoCompleterMixin],
-	{
+	return dojo.declare("dojox.mobile.ComboBox",[TextBox, AutoCompleterMixin],{
 		// summary:
 		//		A non-templated auto-completing text box widget
 		//
@@ -11,7 +8,9 @@
 		// dropDownClass: [protected extension] String
 		//		Name of the dropdown widget class used to select a date/time.
 		//		Subclasses should specify this.
-		dropDownClass: "dojox.mobile._ComboBoxMenu",
+		//
+		//dropDownClass: "dojox.mobile._ComboBoxMenu",
+		dropDownClass: ComboBoxMenu,
 
 		// initially disable selection since iphone displays selection handles that makes it hard to pick from the list
 		selectOnClick: false,
@@ -34,8 +33,5 @@
 			}
 			return ret;
 		}
-	}
-);
-
-return dojox.mobile.ComboBox;
+	});
 });
Index: _DataListMixin.js
===================================================================
--- _DataListMixin.js	(revision 24525)
+++ _DataListMixin.js	(working copy)
@@ -1,8 +1,4 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "dojox/mobile/ListItem"], function(dojo, dijit, dojox){
+define(["dojo/_base/array", "./ListItem"],function(darray, ListItem){
 	// module:
 	//		dojox/mobile/_DataListMixin
 	// summary:
@@ -13,98 +9,93 @@
 	//		as the child nodes of the widget and automatically re-generated
 	//		whenever the corresponding data items are modified.
 
-dojo.declare(
-	"dojox.mobile._DataListMixin",
-	null,
-{
-	// store: Object
-	//		Reference to data provider object
-	store: null,
+	return dojo.declare("dojox.mobile._DataListMixin", null,{
+		// store: Object
+		//		Reference to data provider object
+		store: null,
 
-	// query: Object
-	//		A query that can be passed to 'store' to initially filter the items.
-	query: null,
+		// query: Object
+		//		A query that can be passed to 'store' to initially filter the items.
+		query: null,
 
-	queryOptions: null,
+		queryOptions: null,
 
-	buildRendering: function(){
-		this.inherited(arguments);
-		if(!this.store){ return; }
-		var store = this.store;
-		this.store = null;
-		this.setStore(store, this.query, this.queryOptions);
-	},
+		buildRendering: function(){
+			this.inherited(arguments);
+			if(!this.store){ return; }
+			var store = this.store;
+			this.store = null;
+			this.setStore(store, this.query, this.queryOptions);
+		},
 
-	setStore: function(store, query, queryOptions){
-		if(store === this.store){ return; }
-		this.store = store;
-		this.query = query;
-		this.queryOptions = queryOptions;
-		if(store && store.getFeatures()["dojo.data.api.Notification"]){
-			dojo.forEach(this._conn || [], dojo.disconnect);
-			this._conn = [
-				dojo.connect(store, "onSet", this, "onSet"),
-				dojo.connect(store, "onNew", this, "onNew"),
-				dojo.connect(store, "onDelete", this, "onDelete")
-			];
-		}
-		this.refresh();
-	},
+		setStore: function(store, query, queryOptions){
+			if(store === this.store){ return; }
+			this.store = store;
+			this.query = query;
+			this.queryOptions = queryOptions;
+			if(store && store.getFeatures()["dojo.data.api.Notification"]){
+				dojo.forEach(this._conn || [], dojo.disconnect);
+				this._conn = [
+					dojo.connect(store, "onSet", this, "onSet"),
+					dojo.connect(store, "onNew", this, "onNew"),
+					dojo.connect(store, "onDelete", this, "onDelete")
+				];
+			}
+			this.refresh();
+		},
 
-	refresh: function() {
-		// summary:
-		//		Generate the list items.
-		if(!this.store){ return; }
-		this.store.fetch({
-			query: this.query,
-			queryOptions: this.queryOptions,
-			onComplete: dojo.hitch(this, "generateList"),
-			onError: dojo.hitch(this, "onError")
-		});
-	},
+		refresh: function() {
+			// summary:
+			//		Generate the list items.
+			if(!this.store){ return; }
+			this.store.fetch({
+				query: this.query,
+				queryOptions: this.queryOptions,
+				onComplete: dojo.hitch(this, "generateList"),
+				onError: dojo.hitch(this, "onError")
+			});
+		},
 
-	createListItem: function(item) {
-		var attr = {};
-		var arr = this.store.getLabelAttributes(item);
-		var labelAttr = arr ? arr[0] : null;
-		dojo.forEach(this.store.getAttributes(item), function(name){
-			if(name === labelAttr){
-				attr["label"] = this.store.getLabel(item);
-			}else{
-				attr[name] = this.store.getValue(item, name);
-			}
-		}, this);
-		var w = new dojox.mobile.ListItem(attr);
-		item._widgetId = w.id;
-		return w;
-	},
+		createListItem: function(item) {
+			var attr = {};
+			var arr = this.store.getLabelAttributes(item);
+			var labelAttr = arr ? arr[0] : null;
+			dojo.forEach(this.store.getAttributes(item), function(name){
+				if(name === labelAttr){
+					attr["label"] = this.store.getLabel(item);
+				}else{
+					attr[name] = this.store.getValue(item, name);
+				}
+			}, this);
+			var w = new ListItem(attr);
+			item._widgetId = w.id;
+			return w;
+		},
 
-	generateList: function(/*Array*/items, /*Object*/ dataObject) {
-		dojo.forEach(this.getChildren(), function(child){
-			child.destroyRecursive();
-		});
-		dojo.forEach(items, function(item, index){
-			this.addChild(this.createListItem(item));
-		}, this);
-	}, 
+		generateList: function(/*Array*/items, /*Object*/ dataObject) {
+			dojo.forEach(this.getChildren(), function(child){
+				child.destroyRecursive();
+			});
+			dojo.forEach(items, function(item, index){
+				this.addChild(this.createListItem(item));
+			}, this);
+		}, 
 
-	onError: function(errText){
-	},
+		onError: function(errText){
+		},
 
-	onSet: function(/* item */ item,
-					/* attribute-name-string */ attribute,
-					/* object | array */ oldValue,
-					/* object | array */ newValue){
-	},
+		onSet: function(/* item */ item,
+			/* attribute-name-string */ attribute,
+			/* object | array */ oldValue,
+			/* object | array */ newValue){
+		},
 
-	onNew: function(/* item */ newItem, /*object?*/ parentInfo){
-		this.addChild(this.createListItem(newItem));
-	},
+		onNew: function(/* item */ newItem, /*object?*/ parentInfo){
+			this.addChild(this.createListItem(newItem));
+		},
 
-	onDelete: function(/* item */ deletedItem){
-		dijit.byId(deletedItem._widgetId).destroyRecursive();
-	}
+		onDelete: function(/* item */ deletedItem){
+			dijit.byId(deletedItem._widgetId).destroyRecursive();
+		}
+	});
 });
-
-return dojox.mobile._DataListMixin;
-});
Index: deviceTheme.js
===================================================================
--- deviceTheme.js	(revision 24525)
+++ deviceTheme.js	(working copy)
@@ -1,7 +1,4 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox"], function(dojo, dijit, dojox){
+define(["dojo/_base/array", "./_base"], function(darray,mbase){
 	// module:
 	//		dojox/mobile/deviceTheme
 	// summary:
@@ -53,79 +50,78 @@
 	//	|	dojox/mobile/themes/iphone/iphone.css
 	//	|	com/acme/themes/iphone/MyWidget.css
 
-dojox.mobile.loadCssFile = function(/*String*/file){
-	dojo.create("LINK", {
-		href: file,
-		type: "text/css",
-		rel: "stylesheet"
-	}, dojo.doc.getElementsByTagName('head')[0]);
-};
+	dojox.mobile.loadCssFile = function(/*String*/file){
+		dojo.create("LINK", {
+			href: file,
+			type: "text/css",
+			rel: "stylesheet"
+		}, dojo.doc.getElementsByTagName('head')[0]);
+	};
 
-dojox.mobile.themeMap = dojox.mobile.themeMap ||
-[
-	// summary:
-	//		A map of user-agents to theme files.
-	// description:
-	//		The first array element is a regexp pattern that matches the
-	//		userAgent string.
-	//
-	//		The second array element is a theme folder name.
-	//
-	//		The third array element is an array of css file paths to load.
-	//
-	//		The matching is performed in the array order, and stops after the
-	//		first match.
-	[
-		"Android",
-		"android",
-		[]
-	],
-	[
-		"BlackBerry",
-		"blackberry",
-		[]
-	],
-	[
-		"iPad",
-		"iphone",
-		[dojo.moduleUrl("dojox.mobile", "themes/iphone/ipad.css")]
-	],
-	[
-		".*",
-		"iphone",
-		[]
-	]
-];
+	dojox.mobile.themeMap = dojox.mobile.themeMap || [
+		// summary:
+		//		A map of user-agents to theme files.
+		// description:
+		//		The first array element is a regexp pattern that matches the
+		//		userAgent string.
+		//
+		//		The second array element is a theme folder name.
+		//
+		//		The third array element is an array of css file paths to load.
+		//
+		//		The matching is performed in the array order, and stops after the
+		//		first match.
+		[
+			"Android",
+			"android",
+			[]
+		],
+		[
+			"BlackBerry",
+			"blackberry",
+			[]
+		],
+		[
+			"iPad",
+			"iphone",
+			[dojo.moduleUrl("dojox.mobile", "themes/iphone/ipad.css")]
+		],
+		[
+			".*",
+			"iphone",
+			[]
+		]
+	];
 
-dojox.mobile.loadDeviceTheme = function(){
-	var t = dojo.config["mblThemeFiles"] || dojox.mobile.themeFiles || ["@theme"];
-	if(!dojo.isArray(t)){ alert("loadDeviceTheme: array is expected but found: "+t); }
-	var i, j;
-	var m = dojox.mobile.themeMap;
-	var ua = (location.search.match(/theme=(\w+)/)) ? RegExp.$1 : navigator.userAgent;
-	for(i = 0; i < m.length; i++){
-		if(ua.match(new RegExp(m[i][0]))){
-			var theme = m[i][1];
-			var files = m[i][2];
-			for(j = t.length - 1; j >= 0; j--){
-				var pkg = dojo.isArray(t[j]) ? t[j][0] : "dojox.mobile";
-				var name = dojo.isArray(t[j]) ? t[j][1] : t[j];
-				var f = "themes/" + theme + "/" +
-					(name === "@theme" ? theme : name) + ".css";
-				files.unshift(dojo.moduleUrl(pkg, f));
+	dojox.mobile.loadDeviceTheme = function(){
+		var t = dojo.config["mblThemeFiles"] || dojox.mobile.themeFiles || ["@theme"];
+		if(!dojo.isArray(t)){ alert("loadDeviceTheme: array is expected but found: "+t); }
+		var i, j;
+		var m = dojox.mobile.themeMap;
+		var ua = (location.search.match(/theme=(\w+)/)) ? RegExp.$1 : navigator.userAgent;
+		for(i = 0; i < m.length; i++){
+			if(ua.match(new RegExp(m[i][0]))){
+				var theme = m[i][1];
+				var files = m[i][2];
+				for(j = t.length - 1; j >= 0; j--){
+					var pkg = dojo.isArray(t[j]) ? t[j][0] : "dojox.mobile";
+					var name = dojo.isArray(t[j]) ? t[j][1] : t[j];
+					var f = "themes/" + theme + "/" +
+						(name === "@theme" ? theme : name) + ".css";
+					files.unshift(dojo.moduleUrl(pkg, f));
+				}
+				for(j = 0; j < files.length; j++){
+					dojox.mobile.loadCssFile(files[j]);
+				}
+				break;
 			}
-			for(j = 0; j < files.length; j++){
-				dojox.mobile.loadCssFile(files[j]);
-			}
-			break;
 		}
+	};
+	
+	if(dojox.mobile.configDeviceTheme){
+		dojox.mobile.configDeviceTheme();
 	}
-};
+	dojox.mobile.loadDeviceTheme();
 
-if(dojox.mobile.configDeviceTheme){
-	dojox.mobile.configDeviceTheme();
-}
-dojox.mobile.loadDeviceTheme();
-
-return dojox.mobile.deviceTheme;
+	return dojox.mobile.deviceTheme;
 });
Index: EdgeToEdgeDataList.js
===================================================================
--- EdgeToEdgeDataList.js	(revision 24525)
+++ EdgeToEdgeDataList.js	(working copy)
@@ -1,19 +1,7 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "dojox/mobile/EdgeToEdgeList",
-  "dojox/mobile/_DataListMixin"], function(dojo, dijit, dojox){
+define(["./EdgeToEdgeList", "./_DataListMixin"], function(EdgeToEdgeList,DataListMixin){
 	// module:
 	//		dojox/mobile/EdgeToEdgeDataList
 	// summary:
 	//		TODOC
-
-dojo.declare(
-	"dojox.mobile.EdgeToEdgeDataList",
-	[dojox.mobile.EdgeToEdgeList, dojox.mobile._DataListMixin],
-{
+	return dojo.declare("dojox.mobile.EdgeToEdgeDataList", [EdgeToEdgeList,DataListMixin],{});
 });
-
-return dojox.mobile.EdgeToEdgeDataList;
-});
Index: tests/test_iPhone-EdgeToEdge.html
===================================================================
--- tests/test_iPhone-EdgeToEdge.html	(revision 24525)
+++ tests/test_iPhone-EdgeToEdge.html	(working copy)
@@ -11,6 +11,10 @@
 			//dojo.require("dojo.parser"); // Use the lightweight parser.
 			dojo.require("dojox.mobile.parser");
 			dojo.require("dojox.mobile");
+			dojo.reuqire("dojox.mobile.View");
+			dojo.require("dojox.mobile.Heading");
+			dojo.require("dojox.mobile.EdgeToEdgeList");
+			dojo.require("dojox.mobile.ListItem");
 			dojo.requireIf(!dojo.isWebKit, "dojox.mobile.compat");
 		</script>
 	</head>
Index: common.js
===================================================================
--- common.js	(revision 24525)
+++ common.js	(working copy)
@@ -1,4 +1,4 @@
-define(["dojo", "dijit", "dojox", "dijit/_WidgetBase"], function(dojo, dijit, dojox){
+define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/html", "dijit/_WidgetBase"], function(dlang,darray, dhtml, WidgetBase){
 
 	dojo.getObject("mobile", true, dojox);
 
@@ -22,7 +22,6 @@
 //		Note that use of dijit._Templated and dojo.query was intentionally
 //		avoided to reduce download code size.
 
-(function(){
 	var d = dojo;
 	var ua = navigator.userAgent;
 
@@ -49,269 +48,267 @@
 		d.isIPod ? "dj_ipod" : "",
 		d.isIPad ? "dj_ipad" : ""
 	].join(" ").replace(/ +/g," "));
-})();
 
-var dm = dojox.mobile;
+	var dm = dojox.mobile;
 
-dm.getScreenSize = function(){
-	return {
-		h: dojo.global.innerHeight || dojo.doc.documentElement.clientHeight,
-		w: dojo.global.innerWidth || dojo.doc.documentElement.clientWidth
+	dm.getScreenSize = function(){
+		return {
+			h: dojo.global.innerHeight || dojo.doc.documentElement.clientHeight,
+			w: dojo.global.innerWidth || dojo.doc.documentElement.clientWidth
+		};
 	};
-};
 
-dm.updateOrient = function(){
-	var dim = dm.getScreenSize();
-	dojo.replaceClass(dojo.doc.documentElement,
-					  dim.h > dim.w ? "dj_portrait" : "dj_landscape",
-					  dim.h > dim.w ? "dj_landscape" : "dj_portrait");
-};
-dm.updateOrient();
+	dm.updateOrient = function(){
+		var dim = dm.getScreenSize();
+		dojo.replaceClass(dojo.doc.documentElement,
+				  dim.h > dim.w ? "dj_portrait" : "dj_landscape",
+				  dim.h > dim.w ? "dj_landscape" : "dj_portrait");
+	};
+	dm.updateOrient();
 
-dm.tabletSize = 500;
-dm.detectScreenSize = function(){
-	var dim = dm.getScreenSize();
-	var sz = Math.min(dim.w, dim.h);
-	var from, to;
-	if(sz >= dm.tabletSize && (!this._sz || this._sz < dm.tabletSize)){
-		from = "phone";
-		to = "tablet";
-	}else if(sz < dm.tabletSize && (!this._sz || this._sz >= dm.tabletSize)){
-		from = "tablet";
-		to = "phone";
-	}
-	if(to){
-		dojo.replaceClass(dojo.doc.documentElement, "dj_"+to, "dj_"+from);
-		dojo.publish("/dojox/mobile/screenSize/"+to, [dim]);
-	}
-	this._sz = sz;
-};
+	dm.tabletSize = 500;
+	dm.detectScreenSize = function(){
+		var dim = dm.getScreenSize();
+		var sz = Math.min(dim.w, dim.h);
+		var from, to;
+		if(sz >= dm.tabletSize && (!this._sz || this._sz < dm.tabletSize)){
+			from = "phone";
+			to = "tablet";
+		}else if(sz < dm.tabletSize && (!this._sz || this._sz >= dm.tabletSize)){
+			from = "tablet";
+			to = "phone";
+		}
+		if(to){
+			dojo.replaceClass(dojo.doc.documentElement, "dj_"+to, "dj_"+from);
+			dojo.publish("/dojox/mobile/screenSize/"+to, [dim]);
+		}
+		this._sz = sz;
+	};
 
-dm.setupIcon = function(/*DomNode*/iconNode, /*String*/iconPos){
-	if(iconNode && iconPos){
-		var arr = dojo.map(iconPos.split(/[ ,]/),
-								function(item){ return item - 0; });
-		var t = arr[0]; // top
-		var r = arr[1] + arr[2]; // right
-		var b = arr[0] + arr[3]; // bottom
-		var l = arr[1]; // left
-		iconNode.style.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)";
-		iconNode.style.top = dojo.style(iconNode, "top") - t + "px";
-		iconNode.style.left = dojo.style(iconNode.parentNode, "paddingLeft") - l + "px";
-	}
-};
+	dm.setupIcon = function(/*DomNode*/iconNode, /*String*/iconPos){
+		if(iconNode && iconPos){
+			var arr = dojo.map(iconPos.split(/[ ,]/),function(item){return item-0});
+			var t = arr[0]; // top
+			var r = arr[1] + arr[2]; // right
+			var b = arr[0] + arr[3]; // bottom
+			var l = arr[1]; // left
+			iconNode.style.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)";
+			iconNode.style.top = dojo.style(iconNode, "top") - t + "px";
+			iconNode.style.left = dojo.style(iconNode.parentNode, "paddingLeft") - l + "px";
+		}
+	};
 
-dm.hideAddressBarWait = 1000; // [ms]
-dm.hideAddressBar = function(/*Event?*/evt, /*Boolean?*/doResize){
-	dojo.body().style.minHeight = "1000px"; // to ensure enough height for scrollTo to work
-	setTimeout(function(){ scrollTo(0, 1); }, 100);
-	setTimeout(function(){ scrollTo(0, 1); }, 400);
-	setTimeout(function(){
-		scrollTo(0, 1);
-		// re-define the min-height with the actual height
-		dojo.body().style.minHeight = dm.getScreenSize().h + "px";
-		if(doResize !== false){ dm.resizeAll(); }
-	}, dm.hideAddressBarWait);
-};
+	dm.hideAddressBarWait = 1000; // [ms]
+	dm.hideAddressBar = function(/*Event?*/evt, /*Boolean?*/doResize){
+		dojo.body().style.minHeight = "1000px"; // to ensure enough height for scrollTo to work
+		setTimeout(function(){ scrollTo(0, 1); }, 100);
+		setTimeout(function(){ scrollTo(0, 1); }, 400);
+		setTimeout(function(){
+			scrollTo(0, 1);
+			// re-define the min-height with the actual height
+			dojo.body().style.minHeight = dm.getScreenSize().h + "px";
+			if(doResize !== false){ dm.resizeAll(); }
+		}, dm.hideAddressBarWait);
+	};
 
-dm.resizeAll = function(/*Event?*/evt, /*Widget?*/root){
-	// summary:
-	//		Call the resize() method of all the top level resizable widgets.
-	// description:
-	//		Find all widgets that do not have a parent or the parent does not
-	//		have the resize() method, and call resize() for them.
-	//		If a widget has a parent that has resize(), call of the widget's
-	//		resize() is its parent's responsibility.
-	// evt:
-	//		Native event object
-	// root:
-	//		If specified, search the specified widget recursively for top level
-	//		resizable widgets.
-	//		root.resize() is always called regardless of whether root is a
-	//		top level widget or not.
-	//		If omitted, search the entire page.
-	dojo.publish("/dojox/mobile/resizeAll", [evt, root]);
-	dm.updateOrient();
-	dm.detectScreenSize();
-	var isTopLevel = function(w){
-		var parent = w.getParent && w.getParent();
-		return !!((!parent || !parent.resize) && w.resize);
+	dm.resizeAll = function(/*Event?*/evt, /*Widget?*/root){
+		// summary:
+		//		Call the resize() method of all the top level resizable widgets.
+		// description:
+		//		Find all widgets that do not have a parent or the parent does not
+		//		have the resize() method, and call resize() for them.
+		//		If a widget has a parent that has resize(), call of the widget's
+		//		resize() is its parent's responsibility.
+		// evt:
+		//		Native event object
+		// root:
+		//		If specified, search the specified widget recursively for top level
+		//		resizable widgets.
+		//		root.resize() is always called regardless of whether root is a
+		//		top level widget or not.
+		//		If omitted, search the entire page.
+		dojo.publish("/dojox/mobile/resizeAll", [evt, root]);
+		dm.updateOrient();
+		dm.detectScreenSize();
+		var isTopLevel = function(w){
+			var parent = w.getParent && w.getParent();
+			return !!((!parent || !parent.resize) && w.resize);
+		};
+		var resizeRecursively = function(w){
+			dojo.forEach(w.getChildren(), function(child){
+				if(isTopLevel(child)){ child.resize(); }
+				resizeRecursively(child);
+			});
+		};
+		if(root){
+			if(root.resize){ root.resize(); }
+			resizeRecursively(root);
+		}else{
+			dijit.registry.filter(isTopLevel).forEach(function(w){
+				w.resize();
+			});
+		}
 	};
-	var resizeRecursively = function(w){
-		dojo.forEach(w.getChildren(), function(child){
-			if(isTopLevel(child)){ child.resize(); }
-			resizeRecursively(child);
-		});
+
+	dm.openWindow = function(url, target){
+		dojo.global.open(url, target || "_blank");
 	};
-	if(root){
-		if(root.resize){ root.resize(); }
-		resizeRecursively(root);
-	}else{
-		dijit.registry.filter(isTopLevel).forEach(function(w){
-			w.resize();
+
+	dm.createDomButton = function(/*DomNode*/refNode, /*Object?*/style, /*DomNode?*/toNode){
+		var s = refNode.className;
+		var node = toNode || refNode;
+		if(s.match(/(mblDomButton\w+)/) && s.indexOf("/") === -1){
+			var btnClass = RegExp.$1;
+			var nDiv = 4;
+			if(s.match(/(mblDomButton\w+_(\d+))/)){
+				nDiv = RegExp.$2 - 0;
+			}
+			for(var i = 0, p = node; i < nDiv; i++){
+				p = p.firstChild || dojo.create("DIV", null, p);
+			}
+			if(toNode){
+				setTimeout(function(){
+					dojo.removeClass(refNode, btnClass);
+				}, 0);
+				dojo.addClass(toNode, btnClass);
+			}
+		}else if(s.indexOf(".") !== -1){ // file name
+			dojo.create("IMG", {src:s}, node);
+		}else{
+			return null;
+		}
+		dojo.addClass(node, "mblDomButton");
+		dojo.style(node, style);
+		return node;
+	};
+	
+	if(dojo.config.parseOnLoad){
+		dojo.ready(90, function(){
+			// avoid use of dojo.query
+			/*
+			var list = dojo.query('[lazy=true] [dojoType]', null);
+			list.forEach(function(node, index, nodeList){
+				node.setAttribute("__dojoType", node.getAttribute("dojoType"));
+				node.removeAttribute("dojoType");
+			});
+			*/
+		
+			var nodes = dojo.body().getElementsByTagName("*");
+			var i, len, s;
+			len = nodes.length;
+			for(i = 0; i < len; i++){
+				s = nodes[i].getAttribute("dojoType");
+				if(s){
+					if(nodes[i].parentNode.getAttribute("lazy") == "true"){
+						nodes[i].setAttribute("__dojoType", s);
+						nodes[i].removeAttribute("dojoType");
+					}
+				}
+			}
 		});
 	}
-};
-
-dm.openWindow = function(url, target){
-	dojo.global.open(url, target || "_blank");
-};
-
-dm.createDomButton = function(/*DomNode*/refNode, /*Object?*/style, /*DomNode?*/toNode){
-	var s = refNode.className;
-	var node = toNode || refNode;
-	if(s.match(/(mblDomButton\w+)/) && s.indexOf("/") === -1){
-		var btnClass = RegExp.$1;
-		var nDiv = 4;
-		if(s.match(/(mblDomButton\w+_(\d+))/)){
-			nDiv = RegExp.$2 - 0;
+	
+	dojo.addOnLoad(function(){
+		dm.detectScreenSize();
+		if(dojo.config["mblApplyPageStyles"] !== false){
+			dojo.addClass(dojo.doc.documentElement, "mobile");
+			if(dojo.isAndroid >= 2.2){ // workaround for android screen flicker problem
+				dojo.doc.documentElement.style.webkitBackfaceVisibility = "hidden";
+			}
 		}
-		for(var i = 0, p = node; i < nDiv; i++){
-			p = p.firstChild || dojo.create("DIV", null, p);
+	
+		//	You can disable hiding the address bar with the following djConfig.
+		//	var djConfig = { mblHideAddressBar: false };
+		var f = dm.resizeAll;
+		if(dojo.config["mblHideAddressBar"] !== false &&
+			navigator.appVersion.indexOf("Mobile") != -1 ||
+			dojo.config["mblForceHideAddressBar"] === true){
+			dm.hideAddressBar();
+			if(dojo.config["mblAlwaysHideAddressBar"] === true){
+				f = dm.hideAddressBar;
+			}
 		}
-		if(toNode){
-			setTimeout(function(){
-				dojo.removeClass(refNode, btnClass);
-			}, 0);
-			dojo.addClass(toNode, btnClass);
-		}
-	}else if(s.indexOf(".") !== -1){ // file name
-		dojo.create("IMG", {src:s}, node);
-	}else{
-		return null;
-	}
-	dojo.addClass(node, "mblDomButton");
-	dojo.style(node, style);
-	return node;
-};
-
-if(dojo.config.parseOnLoad){
-	dojo.ready(90, function(){
+		dojo.connect(null, (dojo.global.onorientationchange !== undefined && !dojo.isAndroid)
+			? "onorientationchange" : "onresize", null, f);
+	
 		// avoid use of dojo.query
 		/*
-		var list = dojo.query('[lazy=true] [dojoType]', null);
+		var list = dojo.query('[__dojoType]', null);
 		list.forEach(function(node, index, nodeList){
-			node.setAttribute("__dojoType", node.getAttribute("dojoType"));
-			node.removeAttribute("dojoType");
+			node.setAttribute("dojoType", node.getAttribute("__dojoType"));
+			node.removeAttribute("__dojoType");
 		});
 		*/
 	
 		var nodes = dojo.body().getElementsByTagName("*");
-		var i, len, s;
-		len = nodes.length;
+		var i, len = nodes.length, s;
 		for(i = 0; i < len; i++){
-			s = nodes[i].getAttribute("dojoType");
+			s = nodes[i].getAttribute("__dojoType");
 			if(s){
-				if(nodes[i].parentNode.getAttribute("lazy") == "true"){
-					nodes[i].setAttribute("__dojoType", s);
-					nodes[i].removeAttribute("dojoType");
-				}
+				nodes[i].setAttribute("dojoType", s);
+				nodes[i].removeAttribute("__dojoType");
 			}
 		}
+	
+		if(dojo.hash){
+			// find widgets under root recursively
+			var findWidgets = function(root){
+				var arr;
+				arr = dijit.findWidgets(root);
+				var widgets = arr;
+				for(var i = 0; i < widgets.length; i++){
+					arr = arr.concat(findWidgets(widgets[i].containerNode));
+				}
+				return arr;
+			};
+			dojo.subscribe("/dojo/hashchange", null, function(value){
+				var view = dm.currentView;
+				if(!view){ return; }
+				var params = dm._params;
+				if(!params){ // browser back/forward button was pressed
+					var moveTo = value ? value : dm._defaultView.id;
+					var widgets = findWidgets(view.domNode);
+					var dir = 1, transition = "slide";
+					for(i = 0; i < widgets.length; i++){
+						var w = widgets[i];
+						if("#"+moveTo == w.moveTo){
+							// found a widget that has the given moveTo
+							transition = w.transition;
+								dir = (w instanceof dm.Heading) ? -1 : 1;
+							break;
+						}
+					}
+					params = [ moveTo, dir, transition ];
+				}
+				view.performTransition.apply(view, params);
+				dm._params = null;
+			});
+		}
+	
+		dojo.body().style.visibility = "visible";
 	});
-}
-
-dojo.addOnLoad(function(){
-	dm.detectScreenSize();
-	if(dojo.config["mblApplyPageStyles"] !== false){
-		dojo.addClass(dojo.doc.documentElement, "mobile");
-		if(dojo.isAndroid >= 2.2){ // workaround for android screen flicker problem
-			dojo.doc.documentElement.style.webkitBackfaceVisibility = "hidden";
+	
+	dijit.getEnclosingWidget = function(node){
+		while(node && node.tagName !== "BODY"){
+			if(node.getAttribute && node.getAttribute("widgetId")){
+				return dijit.registry.byId(node.getAttribute("widgetId"));
+			}
+			node = node._parentNode || node.parentNode;
 		}
-	}
+		return null;
+	};
 
-	//	You can disable hiding the address bar with the following djConfig.
-	//	var djConfig = { mblHideAddressBar: false };
-	var f = dm.resizeAll;
-	if(dojo.config["mblHideAddressBar"] !== false &&
-		navigator.appVersion.indexOf("Mobile") != -1 ||
-		dojo.config["mblForceHideAddressBar"] === true){
-		dm.hideAddressBar();
-		if(dojo.config["mblAlwaysHideAddressBar"] === true){
-			f = dm.hideAddressBar;
-		}
-	}
-	dojo.connect(null, (dojo.global.onorientationchange !== undefined && !dojo.isAndroid)
-		? "onorientationchange" : "onresize", null, f);
-
-	// avoid use of dojo.query
-	/*
-	var list = dojo.query('[__dojoType]', null);
-	list.forEach(function(node, index, nodeList){
-		node.setAttribute("dojoType", node.getAttribute("__dojoType"));
-		node.removeAttribute("__dojoType");
+	dojo.extend(dijit._WidgetBase, {
+		_cv: function(s){ return s; } // convert the given string
 	});
-	*/
 
-	var nodes = dojo.body().getElementsByTagName("*");
-	var i, len = nodes.length, s;
-	for(i = 0; i < len; i++){
-		s = nodes[i].getAttribute("__dojoType");
-		if(s){
-			nodes[i].setAttribute("dojoType", s);
-			nodes[i].removeAttribute("__dojoType");
+	(function(){
+		// feature detection
+		if(dojo.isWebKit){
+			dm.hasTouch = (typeof dojo.doc.documentElement.ontouchstart != "undefined" &&
+				navigator.appVersion.indexOf("Mobile") != -1);
 		}
-	}
+	})();
 
-	if(dojo.hash){
-		// find widgets under root recursively
-		var findWidgets = function(root){
-			var arr;
-			arr = dijit.findWidgets(root);
-			var widgets = arr;
-			for(var i = 0; i < widgets.length; i++){
-				arr = arr.concat(findWidgets(widgets[i].containerNode));
-			}
-			return arr;
-		};
-		dojo.subscribe("/dojo/hashchange", null, function(value){
-			var view = dm.currentView;
-			if(!view){ return; }
-			var params = dm._params;
-			if(!params){ // browser back/forward button was pressed
-				var moveTo = value ? value : dm._defaultView.id;
-				var widgets = findWidgets(view.domNode);
-				var dir = 1, transition = "slide";
-				for(i = 0; i < widgets.length; i++){
-					var w = widgets[i];
-					if("#"+moveTo == w.moveTo){
-						// found a widget that has the given moveTo
-						transition = w.transition;
-						dir = (w instanceof dm.Heading) ? -1 : 1;
-						break;
-					}
-				}
-				params = [ moveTo, dir, transition ];
-			}
-			view.performTransition.apply(view, params);
-			dm._params = null;
-		});
-	}
-
-	dojo.body().style.visibility = "visible";
+	return dm.common;
 });
-
-dijit.getEnclosingWidget = function(node){
-	while(node && node.tagName !== "BODY"){
-		if(node.getAttribute && node.getAttribute("widgetId")){
-			return dijit.registry.byId(node.getAttribute("widgetId"));
-		}
-		node = node._parentNode || node.parentNode;
-	}
-	return null;
-};
-
-dojo.extend(dijit._WidgetBase, {
-	_cv: function(s){ return s; } // convert the given string
-});
-
-(function(){
-	// feature detection
-	if(dojo.isWebKit){
-		dm.hasTouch = (typeof dojo.doc.documentElement.ontouchstart != "undefined" &&
-			navigator.appVersion.indexOf("Mobile") != -1);
-	}
-})();
-
-return dm.common;
-});
Index: EdgeToEdgeCategory.js
===================================================================
--- EdgeToEdgeCategory.js	(revision 24525)
+++ EdgeToEdgeCategory.js	(working copy)
@@ -1,22 +1,8 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "dojox/mobile/RoundRectCategory"], function(dojo, dijit, dojox){
-	// module:
-	//		dojox/mobile/EdgeToEdgeCategory
-	// summary:
-	//		TODOC
-
-dojo.declare(
-	"dojox.mobile.EdgeToEdgeCategory",
-	dojox.mobile.RoundRectCategory,
-{
-	buildRendering: function(){
-		this.inherited(arguments);
-		this.domNode.className = "mblEdgeToEdgeCategory";
-	}
+define(["./RoundRectCategory"],function(RoundRectCategory){
+	return dojo.declare("dojox.mobile.EdgeToEdgeCategory", RoundRectCategory, {
+		buildRendering: function(){
+			this.inherited(arguments);
+			this.domNode.className = "mblEdgeToEdgeCategory";
+		}
+	});
 });
-
-return dojox.mobile.EdgeToEdgeCategory;
-});
Index: Heading.js
===================================================================
--- Heading.js	(revision 24525)
+++ Heading.js	(working copy)
@@ -1,162 +1,150 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "./common",
-  "dijit/_WidgetBase",
-  "dijit/_Container",
-  "dijit/_Contained"], function(dojo, dijit, dojox){
+define(["dojo/_base/html", "dojo/_base/array", "dojo/_base/lang", "./common","dijit/_WidgetBase","dijit/_Container","dijit/_Contained"],[dhtml,darray,dlang, mcommon,WidgetBase,Container,Contained],{
 	// module:
 	//		dojox/mobile/Heading
 	// summary:
 	//		TODOC
 
-dojo.declare(
-	"dojox.mobile.Heading",
-	[dijit._WidgetBase, dijit._Container, dijit._Contained],
-{
-	back: "",
-	href: "",
-	moveTo: "",
-	transition: "slide",
-	label: "",
-	iconBase: "",
-	backProp: {className: "mblArrowButton"},
+	return dojo.declare("dojox.mobile.Heading", [WidgetBase,Container,Contained],{
+		back: "",
+		href: "",
+		moveTo: "",
+		transition: "slide",
+		label: "",
+		iconBase: "",
+		backProp: {className: "mblArrowButton"},
 
-	buildRendering: function(){
-		this.domNode = this.containerNode = this.srcNodeRef || dojo.doc.createElement("H1");
-		this.domNode.className = "mblHeading";
-		if(this.label){
-			this.labelNode = dojo.create("SPAN", null, this.domNode);
-		}else{
-			dojo.forEach(this.domNode.childNodes, function(n){
-				if(n.nodeType == 3){
-					var v = dojo.trim(n.nodeValue);
-					if(v){
-						this.label = v;
-						this.labelNode = dojo.create("SPAN", {innerHTML:v}, n, "replace");
+		buildRendering: function(){
+			this.domNode = this.containerNode = this.srcNodeRef || dojo.doc.createElement("H1");
+			this.domNode.className = "mblHeading";
+			if(this.label){
+				this.labelNode = dojo.create("SPAN", null, this.domNode);
+			}else{
+				dojo.forEach(this.domNode.childNodes, function(n){
+					if(n.nodeType == 3){
+						var v = dojo.trim(n.nodeValue);
+						if(v){
+							this.label = v;
+							this.labelNode = dojo.create("SPAN", {innerHTML:v}, n, "replace");
+						}
 					}
+				}, this);
+			}
+			if(this.back){
+				var btn = dojo.create("DIV", this.backProp, this.domNode, "first");
+				var head = dojo.create("DIV", {className:"mblArrowButtonHead"}, btn);
+				var body = dojo.create("DIV", {className:"mblArrowButtonBody mblArrowButtonText"}, btn);
+	
+				this._body = body;
+				this._head = head;
+				this._btn = btn;
+				this.backBtnNode = btn;
+				this.connect(body, "onclick", "onClick");
+				var neck = dojo.create("DIV", {className:"mblArrowButtonNeck"}, btn);
+			}
+		},
+
+		startup: function(){
+			if(this._started){ return; }
+			var parent = this.getParent && this.getParent();
+			if(!parent || !parent.resize){ // top level widget
+				this.resize();
+			}
+			this.inherited(arguments);
+		},
+	
+		resize: function(){
+			if(this._btn){
+				this._btn.style.width = this._body.offsetWidth + this._head.offsetWidth + "px";
+				this._btn.style.position = "absolute";
+				var dim = dojo.marginBox(this._btn);
+	
+				var hasBtn = false;
+				var children = this.containerNode.childNodes;
+				for(i = 0; i < children.length; i++){
+					var c = children[i];
+					if(c.nodeType === 1 && dojo.hasClass(c, "mblToolbarButton")){
+						hasBtn = true;
+						break;
+					}
 				}
-			}, this);
-		}
-		if(this.back){
-			var btn = dojo.create("DIV", this.backProp, this.domNode, "first");
-			var head = dojo.create("DIV", {className:"mblArrowButtonHead"}, btn);
-			var body = dojo.create("DIV", {className:"mblArrowButtonBody mblArrowButtonText"}, btn);
+	
+				this._btn.style.position = !hasBtn && this.labelNode &&
+					(dim.l + dim.w < this.labelNode.offsetLeft) ? "absolute" : "relative";
+			}
+			dojo.forEach(this.getChildren(), function(child){
+				if(child.resize){ child.resize(); }
+			});
+		},
 
-			this._body = body;
-			this._head = head;
-			this._btn = btn;
-			this.backBtnNode = btn;
-			this.connect(body, "onclick", "onClick");
-			var neck = dojo.create("DIV", {className:"mblArrowButtonNeck"}, btn);
-		}
-	},
-
-	startup: function(){
-		if(this._started){ return; }
-		var parent = this.getParent && this.getParent();
-		if(!parent || !parent.resize){ // top level widget
+		_setBackAttr: function(/*String*/back){
+			this.back = back;
+			this._body.innerHTML = this._cv(this.back);
 			this.resize();
-		}
-		this.inherited(arguments);
-	},
-
-	resize: function(){
-		if(this._btn){
-			this._btn.style.width = this._body.offsetWidth + this._head.offsetWidth + "px";
-			this._btn.style.position = "absolute";
-			var dim = dojo.marginBox(this._btn);
-
-			var hasBtn = false;
-			var children = this.containerNode.childNodes;
-			for(i = 0; i < children.length; i++){
-				var c = children[i];
-				if(c.nodeType === 1 && dojo.hasClass(c, "mblToolbarButton")){
-					hasBtn = true;
-					break;
-				}
+		},
+	
+		_setLabelAttr: function(/*String*/label){
+			this.label = label;
+			this.labelNode.innerHTML = this._cv(label);
+		},
+	
+		findCurrentView: function(){
+			var w = this;
+			while(true){
+				w = w.getParent();
+				if(!w){ return null; }
+				if(w instanceof dojox.mobile.View){ break; }
 			}
+			return w;
+		},
 
-			this._btn.style.position = !hasBtn && this.labelNode &&
-				(dim.l + dim.w < this.labelNode.offsetLeft) ? "absolute" : "relative";
-		}
-		dojo.forEach(this.getChildren(), function(child){
-			if(child.resize){ child.resize(); }
-		});
-	},
-
-	_setBackAttr: function(/*String*/back){
-		this.back = back;
-		this._body.innerHTML = this._cv(this.back);
-		this.resize();
-	},
-
-	_setLabelAttr: function(/*String*/label){
-		this.label = label;
-		this.labelNode.innerHTML = this._cv(label);
-	},
-
-	findCurrentView: function(){
-		var w = this;
-		while(true){
-			w = w.getParent();
-			if(!w){ return null; }
-			if(w instanceof dojox.mobile.View){ break; }
-		}
-		return w;
-	},
-
-	onClick: function(e){
-		var h1 = this.domNode;
-		dojo.addClass(h1, "mblArrowButtonSelected");
-		setTimeout(function(){
-			dojo.removeClass(h1, "mblArrowButtonSelected");
-		}, 1000);
-
-		// keep the clicked position for transition animations
-		var view = this.findCurrentView();
-		if(view){
-			view.clickedPosX = e.clientX;
-			view.clickedPosY = e.clientY;
-		}
-
-		this.goTo(this.moveTo, this.href);
-	},
-
-	goTo: function(moveTo, href){
-		var view = this.findCurrentView();
-		if(!view){ return; }
-		if(href){
-			view.performTransition(null, -1, this.transition, this, function(){location.href = href;});
-		}else{
-			if(dojox.mobile.app && dojox.mobile.app.STAGE_CONTROLLER_ACTIVE){
-				// If in a full mobile app, then use its mechanisms to move back a scene
-				dojo.publish("/dojox/mobile/app/goback");
+		onClick: function(e){
+			var h1 = this.domNode;
+			dojo.addClass(h1, "mblArrowButtonSelected");
+			setTimeout(function(){
+				dojo.removeClass(h1, "mblArrowButtonSelected");
+			}, 1000);
+	
+			// keep the clicked position for transition animations
+			var view = this.findCurrentView();
+			if(view){
+				view.clickedPosX = e.clientX;
+				view.clickedPosY = e.clientY;
+			}
+	
+			this.goTo(this.moveTo, this.href);
+		},
+	
+		goTo: function(moveTo, href){
+			var view = this.findCurrentView();
+			if(!view){ return; }
+			if(href){
+				view.performTransition(null, -1, this.transition, this, function(){location.href = href;});
 			}else{
-				// Basically transition should be performed between two
-				// siblings that share the same parent.
-				// However, when views are nested and transition occurs from
-				// an inner view, search for an ancestor view that is a sibling
-				// of the target view, and use it as a source view.
-				var node = dijit.byId(view.convertToId(moveTo));
-				if(node){
-					var parent = node.getParent();
-					while(view){
-						var myParent = view.getParent();
-						if (parent === myParent){
-							break;
+				if(dojox.mobile.app && dojox.mobile.app.STAGE_CONTROLLER_ACTIVE){
+					// If in a full mobile app, then use its mechanisms to move back a scene
+					dojo.publish("/dojox/mobile/app/goback");
+				}else{
+					// Basically transition should be performed between two
+					// siblings that share the same parent.
+					// However, when views are nested and transition occurs from
+					// an inner view, search for an ancestor view that is a sibling
+					// of the target view, and use it as a source view.
+					var node = dijit.byId(view.convertToId(moveTo));
+					if(node){
+						var parent = node.getParent();
+						while(view){
+							var myParent = view.getParent();
+							if (parent === myParent){
+								break;
+							}
+							view = myParent;
 						}
-						view = myParent;
 					}
+					if(view){
+						view.performTransition(moveTo, -1, this.transition);
+					}
 				}
-				if(view){
-					view.performTransition(moveTo, -1, this.transition);
-				}
 			}
 		}
-	}
+	});
 });
-
-return dojox.mobile.Heading;
-});
Index: _base.js
===================================================================
--- _base.js	(revision 24525)
+++ _base.js	(working copy)
@@ -1,7 +1,4 @@
 define([
-  "dojo",
-  "dijit",
-  "dojox",
   "./common",
   "./View",
   "./Heading",
Index: Button.js
===================================================================
--- Button.js	(revision 24525)
+++ Button.js	(working copy)
@@ -1,8 +1,8 @@
-define("dojox/mobile/Button", ["dojo", "dijit", "dojox", "dijit/_WidgetBase", "dijit/form/_FormWidgetMixin", "dijit/form/_ButtonMixin"], function(dojo, dijit, dojox){
+define(["dojo/_base/array", "dojo/_base/html","dijit/_WidgetBase", "dijit/form/_FormWidgetMixin", "dijit/form/_ButtonMixin"], function(darray, html, WidgetBase,FormWidgetMixin,ButtonMixin)){
 
-dojo.declare("dojox.mobile.Button", [dijit._WidgetBase, dijit.form._FormWidgetMixin, dijit.form._ButtonMixin], {
+	return dojo.declare("dojox.mobile.Button", [WidgetBase, FormWidgetMixin, ButtonMixin], {
 		// summary:
-		//		Non-templated BUTTON widget with a thin API wrapper for click events and setting the label
+		//	Non-templated BUTTON widget with a thin API wrapper for click events and setting the label
 		//
 		// description:
 		//              Buttons can display a label, an icon, or both.
@@ -43,7 +43,6 @@
 			this.inherited(arguments);
 			this.connect(this.domNode, "onclick", "_onClick");
 		}
-});
+	});
 
-return dojox.mobile.Button;
 });
Index: ExpandingTextArea.js
===================================================================
--- ExpandingTextArea.js	(revision 24525)
+++ ExpandingTextArea.js	(working copy)
@@ -1,6 +1,6 @@
-define("dojox/mobile/ExpandingTextArea", ["dojo", "dijit", "dojox", "dojox/mobile/TextArea", "dijit/form/_ExpandingTextAreaMixin"], function(dojo, dijit, dojox){
+define(["./TextArea", "dijit/form/_ExpandingTextAreaMixin"], function(TextArea,ExpandingTextAreaMixin){
 
-dojo.declare("dojox.mobile.ExpandingTextArea", [dojox.mobile.TextArea, dijit.form._ExpandingTextAreaMixin], {
+	return dojo.declare("dojox.mobile.ExpandingTextArea", [TextArea, ExpandingTextAreaMixin], {
 		// summary:
 		//		Non-templated TEXTAREA widget with the capability to adjust it's height according to the amount of data.
 		//
@@ -15,7 +15,5 @@
 		// |	<textarea dojoType="dojox.mobile.ExpandingTextArea">...</textarea>
 
 		baseClass: "mblTextArea mblExpandingTextArea"
+	});
 });
-
-return dojox.mobile.ExpandingTextArea;
-});
Index: ContentPane.js
===================================================================
--- ContentPane.js	(revision 24525)
+++ ContentPane.js	(working copy)
@@ -1,89 +1,83 @@
-define("dojox/mobile/ContentPane", ["dojo", "dijit", "dojox", "dijit/_WidgetBase", "dijit._Container", "dijit._Contained", "dojo/_base/xhr"], function(dojo, dijit, dojox) {
+define(["dijit/_WidgetBase", "dijit._Container", "dijit._Contained", "dojo/_base/xhr","./ProgressIndicator"], function(WidgetBase,Container,Contained,xhr,ProgressIndicator) {
 
-// summary:
-//		A very simple content pane to embed an HTML fragment.
-// description:
-//		This widget embeds an HTML fragment and run the parser.
-//		onLoad() is called when parsing is done and the content is ready.
-//		"dojo/_base/xhr" is in the dependency list. Usually this is not
-//		necessary, but there is a case where dojox.mobile custom build does not
-//		contain dojo._base.xhr.
+	// summary:
+	//		A very simple content pane to embed an HTML fragment.
+	// description:
+	//		This widget embeds an HTML fragment and run the parser.
+	//		onLoad() is called when parsing is done and the content is ready.
+	//		"dojo/_base/xhr" is in the dependency list. Usually this is not
+	//		necessary, but there is a case where dojox.mobile custom build does not
+	//		contain dojo._base.xhr.
 
-dojo.declare(
-	"dojox.mobile.ContentPane",
-	[dijit._WidgetBase, dijit._Container, dijit._Contained],
-{
-	href: "",
-	content: "",
-	parseOnLoad: true,
-	prog: true, // show progress indicator
+	return dojo.declare("dojox.mobile.ContentPane", [WidgetBase,Container,Contained],{
+		href: "",
+		content: "",
+		parseOnLoad: true,
+		prog: true, // show progress indicator
 
-	startup: function(){
-		if(this._started){ return; }
-		if(this.prog){
-			this._p = dojox.mobile.ProgressIndicator.getInstance();
-		}
-		if(this.href){
-			this.set("href", this.href);
-		}else if(this.content){
-			this.set("content", this.content);
-		}
-		var parent = this.getParent && this.getParent();
-		if(!parent || !parent.resize){ // top level widget
-			this.resize();
-		}
-		this.inherited(arguments);
-	},
+		startup: function(){
+			if(this._started){ return; }
+			if(this.prog){
+				this._p = dojox.mobile.ProgressIndicator.getInstance();
+			}
+			if(this.href){
+				this.set("href", this.href);
+			}else if(this.content){
+				this.set("content", this.content);
+			}
+			var parent = this.getParent && this.getParent();
+			if(!parent || !parent.resize){ // top level widget
+				this.resize();
+			}
+			this.inherited(arguments);
+		},
+	
+		resize: function(){
+			dojo.forEach(this.getChildren(), function(child){
+				if(child.resize){ child.resize(); }
+			});
+		},
+	
+		loadHandler: function(/*String*/response){
+			this.set("content", response);
+		},
+	
+		errorHandler: function(err){
+			if(p){ p.stop(); }
+		},
+	
+		onLoad: function(){
+			// Stub method to allow the application to connect to.
+			// Called when parsing is done and the content is ready.
+		},
+	
+		_setHrefAttr: function(/*String*/href){
+			var p = this._p;
+			if(p){
+				dojo.body().appendChild(p.domNode);
+				p.start();
+			}
+			this.href = href;
+			dojo.xhrGet({
+				url: href,
+				handleAs: "text",
+				load: dojo.hitch(this, "loadHandler"),
+				error: dojo.hitch(this, "errorHandler")
+			});
+		},
 
-	resize: function(){
-		dojo.forEach(this.getChildren(), function(child){
-			if(child.resize){ child.resize(); }
-		});
-	},
-
-	loadHandler: function(/*String*/response){
-		this.set("content", response);
-	},
-
-	errorHandler: function(err){
-		if(p){ p.stop(); }
-	},
-
-	onLoad: function(){
-		// Stub method to allow the application to connect to.
-		// Called when parsing is done and the content is ready.
-	},
-
-	_setHrefAttr: function(/*String*/href){
-		var p = this._p;
-		if(p){
-			dojo.body().appendChild(p.domNode);
-			p.start();
+		_setContentAttr: function(/*String|DomNode*/data){
+			this.destroyDescendants();
+			if(typeof data === "object"){
+				this.domNode.appendChild(data);
+			}else{
+				this.domNode.innerHTML = data;
+			}
+			if(this.parseOnLoad){
+				dojo.parser.parse(this.domNode);
+			}
+			if(this._p){ this._p.stop(); }
+			this.onLoad();
 		}
-		this.href = href;
-		dojo.xhrGet({
-			url: href,
-			handleAs: "text",
-			load: dojo.hitch(this, "loadHandler"),
-			error: dojo.hitch(this, "errorHandler")
-		});
-	},
-
-	_setContentAttr: function(/*String|DomNode*/data){
-		this.destroyDescendants();
-		if(typeof data === "object"){
-			this.domNode.appendChild(data);
-		}else{
-			this.domNode.innerHTML = data;
-		}
-		if(this.parseOnLoad){
-			dojo.parser.parse(this.domNode);
-		}
-		if(this._p){ this._p.stop(); }
-		this.onLoad();
-	}
+	});
 });
-
-
-return dojox.mobile.ContentPane;
-});
Index: i18n.js
===================================================================
--- i18n.js	(revision 24525)
+++ i18n.js	(working copy)
@@ -1,31 +1,27 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "dojo/i18n"], function(dojo, dijit, dojox){
+define(["dojo/_base/lang", "./common", "dojo/i18n"], function(dlang,mcommon, i18n){
 	// module:
 	//		dojox/mobile/i18n
 	// summary:
 	//		TODOC
 
-dojo.getObject("mobile.i18n", true, dojox);
+	dojo.getObject("mobile.i18n", true, dojox);
 
-dojox.mobile.i18n.load = function(/*String*/packageName, /*String*/bundleName, /*String?*/locale){
-	return dojox.mobile.i18n.registerBundle(dojo.i18n.getLocalization(packageName, bundleName, locale));
-};
+	dojox.mobile.i18n.load = function(/*String*/packageName, /*String*/bundleName, /*String?*/locale){
+		return dojox.mobile.i18n.registerBundle(dojo.i18n.getLocalization(packageName, bundleName, locale));
+	};
 
-dojox.mobile.i18n.registerBundle = function(/*Array*/bundle){
-	if(!dojox.mobile.i18n.bundle){ dojox.mobile.i18n.bundle = []; }
-	return dojo.mixin(dojox.mobile.i18n.bundle, bundle);
-};
+	dojox.mobile.i18n.registerBundle = function(/*Array*/bundle){
+		if(!dojox.mobile.i18n.bundle){ dojox.mobile.i18n.bundle = []; }
+		return dojo.mixin(dojox.mobile.i18n.bundle, bundle);
+	};
 
-dojo.extend(dijit._WidgetBase, {
-	mblNoConv: false,
-	_cv: function(s){
-		if(this.mblNoConv || !dojox.mobile.i18n.bundle){ return s; }
-		return dojox.mobile.i18n.bundle[dojo.trim(s)] || s;
-	}
-});
+	dojo.extend(dijit._WidgetBase, {
+		mblNoConv: false,
+		_cv: function(s){
+			if(this.mblNoConv || !dojox.mobile.i18n.bundle){ return s; }
+			return dojox.mobile.i18n.bundle[dojo.trim(s)] || s;
+		}
+	});
 
-return dojox.mobile.i18n;
+	return dojox.mobile.i18n;
 });
Index: compat.js
===================================================================
--- compat.js	(revision 24525)
+++ compat.js	(working copy)
@@ -1,12 +1,4 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "./common",
-  "dijit/_base/sniff",
-  "dojo/_base/fx",
-  "dojo/fx",
-  "dojox/fx/flip"], function(dojo, dijit, dojox){
+define(["dojo/_base/lang", "./common","dijit/_base/sniff","dojo/_base/fx","dojox/fx","dojox/fx/flip"],function(dlang, common,sniff,fxbase,fx,flip){
 	// module:
 	//		dojox/mobile/compat
 	// summary:
@@ -31,449 +23,454 @@
 	//		If you explicitly load iphone-compat.css with <link> or @import,
 	//		this module will not load the already loaded file.
 
-if(!dojo.isWebKit){
-
-if(dojox.mobile.View){
-dojo.extend(dojox.mobile.View, {
-	_doTransition: function(fromNode, toNode, transition, dir){
-		var anim;
-		this.wakeUp(toNode);
-		if(!transition || transition == "none"){
-			toNode.style.display = "";
-			fromNode.style.display = "none";
-			toNode.style.left = "0px";
-			this.invokeCallback();
-		}else if(transition == "slide" || transition == "cover" || transition == "reveal"){
-			var w = fromNode.offsetWidth;
-			var s1 = dojo.fx.slideTo({
-				node: fromNode,
-				duration: 400,
-				left: -w*dir,
-				top: dojo.style(fromNode, "top")
-			});
-			var s2 = dojo.fx.slideTo({
-				node: toNode,
-				duration: 400,
-				left: 0,
-				top: dojo.style(toNode, "top")
-			});
-			toNode.style.position = "absolute";
-			toNode.style.left = w*dir + "px";
-			toNode.style.display = "";
-			anim = dojo.fx.combine([s1,s2]);
-			dojo.connect(anim, "onEnd", this, function(){
-				fromNode.style.display = "none";
-				fromNode.style.left = "0px";
-				toNode.style.position = "relative";
-				toWidget = dijit.byNode(toNode);
-				if(toWidget && !dojo.hasClass(toWidget.domNode, "out")){
-					// Reset the temporary padding
-					toWidget.containerNode.style.paddingTop = "";
+	if(!dojo.isWebKit){
+		if(dojox.mobile.View){
+			dojo.extend(dojox.mobile.View, {
+				_doTransition: function(fromNode, toNode, transition, dir){
+					var anim;
+					this.wakeUp(toNode);
+					if(!transition || transition == "none"){
+						toNode.style.display = "";
+						fromNode.style.display = "none";
+						toNode.style.left = "0px";
+						this.invokeCallback();
+					}else if(transition == "slide" || transition == "cover" || transition == "reveal"){
+						var w = fromNode.offsetWidth;
+						var s1 = dojo.fx.slideTo({
+							node: fromNode,
+							duration: 400,
+							left: -w*dir,
+							top: dojo.style(fromNode, "top")
+						});
+						var s2 = dojo.fx.slideTo({
+							node: toNode,
+							duration: 400,
+							left: 0,
+							top: dojo.style(toNode, "top")
+						});
+						toNode.style.position = "absolute";
+						toNode.style.left = w*dir + "px";
+						toNode.style.display = "";
+						anim = dojo.fx.combine([s1,s2]);
+						dojo.connect(anim, "onEnd", this, function(){
+							fromNode.style.display = "none";
+							fromNode.style.left = "0px";
+							toNode.style.position = "relative";
+							toWidget = dijit.byNode(toNode);
+							if(toWidget && !dojo.hasClass(toWidget.domNode, "out")){
+								// Reset the temporary padding
+								toWidget.containerNode.style.paddingTop = "";
+							}
+							this.invokeCallback();
+						});
+						anim.play();
+					}else if(transition == "slidev" || transition == "coverv"){
+						var h = fromNode.offsetHeight;
+						var s1 = dojo.fx.slideTo({
+							node: fromNode,
+							duration: 400,
+							left: 0,
+							top: -h*dir
+						});
+						var s2 = dojo.fx.slideTo({
+							node: toNode,
+							duration: 400,
+							left: 0,
+							top: 0
+						});
+						toNode.style.position = "absolute";
+						toNode.style.top = h*dir + "px";
+						toNode.style.left = "0px";
+						toNode.style.display = "";
+						anim = dojo.fx.combine([s1,s2]);
+						dojo.connect(anim, "onEnd", this, function(){
+							fromNode.style.display = "none";
+							toNode.style.position = "relative";
+							this.invokeCallback();
+						});
+						anim.play();
+					}else if(transition == "flip" || transition == "flip2"){
+						anim = dojox.fx.flip({
+							node: fromNode,
+							dir: "right",
+							depth: 0.5,
+							duration: 400
+						});
+						toNode.style.position = "absolute";
+						toNode.style.left = "0px";
+						dojo.connect(anim, "onEnd", this, function(){
+							fromNode.style.display = "none";
+							toNode.style.position = "relative";
+							toNode.style.display = "";
+							this.invokeCallback();
+						});
+						anim.play();
+					}else {
+						// other transitions - "fade", "dissolve", "swirl"
+						anim = dojo.fx.chain([
+							dojo.fadeOut({
+								node: fromNode,
+								duration: 600
+							}),
+							dojo.fadeIn({
+								node: toNode,
+								duration: 600
+							})
+						]);
+						toNode.style.position = "absolute";
+						toNode.style.left = "0px";
+						toNode.style.display = "";
+						dojo.style(toNode, "opacity", 0);
+						dojo.connect(anim, "onEnd", this, function(){
+							fromNode.style.display = "none";
+							toNode.style.position = "relative";
+							dojo.style(fromNode, "opacity", 1);
+							this.invokeCallback();
+						});
+						anim.play();
+					}
+				},
+			
+				wakeUp: function(node){
+				// summary:
+				//		Function to force IE to redraw a node since its layout code tends to misrender
+				//		in partial draws.
+				//	node:
+				//		The node to forcibly redraw.
+				// tags:
+				//		public
+					if(dojo.isIE && !node._wokeup){
+						node._wokeup = true;
+						var disp = node.style.display;
+						node.style.display = "";
+						var nodes = node.getElementsByTagName("*");
+						for(var i = 0, len = nodes.length; i < len; i++){
+							var val = nodes[i].style.display;
+							nodes[i].style.display = "none";
+							nodes[i].style.display = "";
+							nodes[i].style.display = val;
+						}
+						node.style.display = disp;
+					}
 				}
-				this.invokeCallback();
-			});
-			anim.play();
-		}else if(transition == "slidev" || transition == "coverv"){
-			var h = fromNode.offsetHeight;
-			var s1 = dojo.fx.slideTo({
-				node: fromNode,
-				duration: 400,
-				left: 0,
-				top: -h*dir
-			});
-			var s2 = dojo.fx.slideTo({
-				node: toNode,
-				duration: 400,
-				left: 0,
-				top: 0
-			});
-			toNode.style.position = "absolute";
-			toNode.style.top = h*dir + "px";
-			toNode.style.left = "0px";
-			toNode.style.display = "";
-			anim = dojo.fx.combine([s1,s2]);
-			dojo.connect(anim, "onEnd", this, function(){
-				fromNode.style.display = "none";
-				toNode.style.position = "relative";
-				this.invokeCallback();
-			});
-			anim.play();
-		}else if(transition == "flip" || transition == "flip2"){
-			anim = dojox.fx.flip({
-				node: fromNode,
-				dir: "right",
-				depth: 0.5,
-				duration: 400
-			});
-			toNode.style.position = "absolute";
-			toNode.style.left = "0px";
-			dojo.connect(anim, "onEnd", this, function(){
-				fromNode.style.display = "none";
-				toNode.style.position = "relative";
-				toNode.style.display = "";
-				this.invokeCallback();
-			});
-			anim.play();
-		}else {
-			// other transitions - "fade", "dissolve", "swirl"
-			anim = dojo.fx.chain([
-				dojo.fadeOut({
-					node: fromNode,
-					duration: 600
-				}),
-				dojo.fadeIn({
-					node: toNode,
-					duration: 600
-				})
-			]);
-			toNode.style.position = "absolute";
-			toNode.style.left = "0px";
-			toNode.style.display = "";
-			dojo.style(toNode, "opacity", 0);
-			dojo.connect(anim, "onEnd", this, function(){
-				fromNode.style.display = "none";
-				toNode.style.position = "relative";
-				dojo.style(fromNode, "opacity", 1);
-				this.invokeCallback();
-			});
-			anim.play();
+			});	
 		}
-	},
-
-	wakeUp: function(node){
-		// summary:
-		//		Function to force IE to redraw a node since its layout code tends to misrender
-		//		in partial draws.
-		//	node:
-		//		The node to forcibly redraw.
-		// tags:
-		//		public
-		if(dojo.isIE && !node._wokeup){
-			node._wokeup = true;
-			var disp = node.style.display;
-			node.style.display = "";
-			var nodes = node.getElementsByTagName("*");
-			for(var i = 0, len = nodes.length; i < len; i++){
-				var val = nodes[i].style.display;
-				nodes[i].style.display = "none";
-				nodes[i].style.display = "";
-				nodes[i].style.display = val;
-			}
-			node.style.display = disp;
+	
+		if(dojox.mobile.Switch){
+			dojo.extend(dojox.mobile.Switch, {
+				_changeState: function(/*String*/state, /*Boolean*/anim){
+					// summary:
+					//		Function to toggle the switch state on the switch
+					// state:
+					//		The state to toggle, switch 'on' or 'off'
+					// anim:
+					//		Whether to use animation or not
+					// tags:
+					//		private
+					var on = (state === "on");
+		
+					var pos;
+					if(!on){
+						pos = -this.inner.firstChild.firstChild.offsetWidth;
+					}else{
+						pos = 0;
+					}
+		
+					this.left.style.display = "";
+					this.right.style.display = "";
+		
+					var _this = this;
+					var f = function(){
+						dojo.removeClass(_this.domNode, on ? "mblSwitchOff" : "mblSwitchOn");
+						dojo.addClass(_this.domNode, on ? "mblSwitchOn" : "mblSwitchOff");
+						_this.left.style.display = on ? "" : "none";
+						_this.right.style.display = !on ? "" : "none";
+					};
+		
+					if(anim){
+						var a = dojo.fx.slideTo({
+							node: this.inner,
+							duration: 300,
+							left: pos,
+							onEnd: f
+						});
+						a.play();
+					}else{
+						f();
+					}
+				}
+			});	
 		}
-	}
-});}
-
-if(dojox.mobile.Switch){
-dojo.extend(dojox.mobile.Switch, {
-	_changeState: function(/*String*/state, /*Boolean*/anim){
-		// summary:
-		//		Function to toggle the switch state on the switch
-		// state:
-		//		The state to toggle, switch 'on' or 'off'
-		// anim:
-		//		Whether to use animation or not
-		// tags:
-		//		private
-		var on = (state === "on");
-
-		var pos;
-		if(!on){
-			pos = -this.inner.firstChild.firstChild.offsetWidth;
-		}else{
-			pos = 0;
-		}
-
-		this.left.style.display = "";
-		this.right.style.display = "";
-
-		var _this = this;
-		var f = function(){
-			dojo.removeClass(_this.domNode, on ? "mblSwitchOff" : "mblSwitchOn");
-			dojo.addClass(_this.domNode, on ? "mblSwitchOn" : "mblSwitchOff");
-			_this.left.style.display = on ? "" : "none";
-			_this.right.style.display = !on ? "" : "none";
-		};
-
-		if(anim){
-			var a = dojo.fx.slideTo({
-				node: this.inner,
-				duration: 300,
-				left: pos,
-				onEnd: f
+	
+		if(dojo.isIE){
+			if(dojox.mobile.RoundRect){
+				dojo.extend(dojox.mobile.RoundRect, {
+					buildRendering: function(){
+						// summary:
+						//		Function to simulate the borderRadius appearance on IE, since
+						//		IE does not support this CSS style.
+						// tags:
+						//		protected
+						dojox.mobile.createRoundRect(this);
+						this.domNode.className = "mblRoundRect";
+					}
+				});
+			}
+		
+			if(dojox.mobile.RoundRectList){
+				dojox.mobile.RoundRectList._addChild = dojox.mobile.RoundRectList.prototype.addChild;
+				dojo.extend(dojox.mobile.RoundRectList, {
+					buildRendering: function(){
+						// summary:
+						//		Function to simulate the borderRadius appearance on IE, since
+						//		IE does not support this CSS style.
+						// tags:
+						//		protected
+						dojox.mobile.createRoundRect(this, true);
+						this.domNode.className = "mblRoundRectList";
+					},
+				
+					postCreate: function(){
+						this.redrawBorders();
+					},
+		
+					addChild: function(widget){
+						dojox.mobile.RoundRectList._addChild.apply(this, arguments);
+						this.redrawBorders();
+						if(dojox.mobile.applyPngFilter){
+							dojox.mobile.applyPngFilter(widget.domNode);
+						}
+					},
+			
+					redrawBorders: function(){
+						// summary:
+						//		Function to adjust the creation of RoundRectLists on IE.
+						//		Removed undesired styles.
+						// tags:
+						//		public
+				
+						// Remove a border of the last ListItem.
+						// This is for browsers that do not support the last-child CSS pseudo-class.
+				
+						var lastChildFound = false;
+						for(var i = this.containerNode.childNodes.length - 1; i >= 0; i--){
+							var c = this.containerNode.childNodes[i];
+							if(c.tagName == "LI"){
+								c.style.borderBottomStyle = lastChildFound ? "solid" : "none";
+								lastChildFound = true;
+							}
+						}
+					}
+				});	
+			}
+	
+			if(dojox.mobile.EdgeToEdgeList){
+				dojo.extend(dojox.mobile.EdgeToEdgeList, {
+					buildRendering: function(){
+					this.domNode = this.containerNode = this.srcNodeRef || dojo.doc.createElement("UL");
+						this.domNode.className = "mblEdgeToEdgeList";
+					}
+				});
+			}
+	
+			if(dojox.mobile.IconContainer){
+				dojox.mobile.IconContainer._addChild = dojox.mobile.IconContainer.prototype.addChild;
+				dojo.extend(dojox.mobile.IconContainer, {
+					addChild: function(widget){
+						dojox.mobile.IconContainer._addChild.apply(this, arguments);
+						if(dojox.mobile.applyPngFilter){
+							dojox.mobile.applyPngFilter(widget.domNode);
+						}
+					}
+				});
+			}
+		
+			dojo.mixin(dojox.mobile, {
+				createRoundRect: function(_this, isList){
+					// summary:
+					//		Function to adjust the creation of rounded rectangles on IE.
+					//		Deals with IE's lack of borderRadius support
+					// tags:
+					//		public
+					var i;
+					_this.domNode = dojo.doc.createElement("DIV");
+					_this.domNode.style.padding = "0px";
+					_this.domNode.style.backgroundColor = "transparent";
+					_this.domNode.style.borderStyle = "none";
+					_this.containerNode = dojo.doc.createElement(isList?"UL":"DIV");
+					_this.containerNode.className = "mblRoundRectContainer";
+					if(_this.srcNodeRef){
+						_this.srcNodeRef.parentNode.replaceChild(_this.domNode, _this.srcNodeRef);
+						for(i = 0, len = _this.srcNodeRef.childNodes.length; i < len; i++){
+							_this.containerNode.appendChild(_this.srcNodeRef.removeChild(_this.srcNodeRef.firstChild));
+						}
+						_this.srcNodeRef = null;
+					}
+					_this.domNode.appendChild(_this.containerNode);
+		
+					for(i = 0; i <= 5; i++){
+						var top = dojo.create("DIV");
+						top.className = "mblRoundCorner mblRoundCorner"+i+"T";
+						_this.domNode.insertBefore(top, _this.containerNode);
+		
+						var bottom = dojo.create("DIV");
+						bottom.className = "mblRoundCorner mblRoundCorner"+i+"B";
+						_this.domNode.appendChild(bottom);
+					}
+				}
 			});
-			a.play();
-		}else{
-			f();
-		}
-	}
-});}
+		
+			if(dojox.mobile.ScrollableView){
+				dojo.extend(dojox.mobile.ScrollableView, {
+					postCreate: function(){
+						// On IE, margin-top of the first child does not seem to be effective,
+						// probably because padding-top is specified for containerNode
+						// to make room for a fixed header. This dummy node is a workaround for that.
+						var dummy = dojo.create("DIV", {className:"mblDummyForIE", innerHTML:"&nbsp;"}, this.containerNode, "first");
+						dojo.style(dummy, {
+							position: "relative",
+							marginBottom: "-2px",
+							fontSize: "1px"
+						});
+					}
+				});
+			}
+	
+		} // if	(dojo.isIE)
+	
+		if(dojo.isIE <= 6){
+			dojox.mobile.applyPngFilter = function(root){
+				root = root || dojo.body();
+				var nodes = root.getElementsByTagName("IMG");
+				var blank = dojo.moduleUrl("dojo", "resources/blank.gif");
+				for(var i = 0, len = nodes.length; i < len; i++){
+					var img = nodes[i];
+					var w = img.offsetWidth;
+					var h = img.offsetHeight;
+					if(w === 0 || h === 0){
+						// The reason why the image has no width/height may be because
+						// display is "none". If that is the case, let's change the
+						// display to "" temporarily and see if the image returns them.
+						if(dojo.style(img, "display") != "none"){ continue; }
+						img.style.display = "";
+						w = img.offsetWidth;
+						h = img.offsetHeight;
+						img.style.display = "none";
+						if(w === 0 || h === 0){ continue; }
+					}
+					var src = img.src;
+					if(src.indexOf("resources/blank.gif") != -1){ continue; }
+					img.src = blank;
+					img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src+"')";
+					img.style.width = w + "px";
+					img.style.height = h + "px";
+				}
+			};
+		} // if(dojo.isIE <= 6)
 
-if(dojo.isIE){
-
-if(dojox.mobile.RoundRect){
-dojo.extend(dojox.mobile.RoundRect, {
-	buildRendering: function(){
-		// summary:
-		//		Function to simulate the borderRadius appearance on IE, since
-		//		IE does not support this CSS style.
-		// tags:
-		//		protected
-		dojox.mobile.createRoundRect(this);
-		this.domNode.className = "mblRoundRect";
-	}
-});}
-
-if(dojox.mobile.RoundRectList){
-dojox.mobile.RoundRectList._addChild = dojox.mobile.RoundRectList.prototype.addChild;
-dojo.extend(dojox.mobile.RoundRectList, {
-	buildRendering: function(){
-		// summary:
-		//		Function to simulate the borderRadius appearance on IE, since
-		//		IE does not support this CSS style.
-		// tags:
-		//		protected
-		dojox.mobile.createRoundRect(this, true);
-		this.domNode.className = "mblRoundRectList";
-	},
-
-	postCreate: function(){
-		this.redrawBorders();
-	},
-
-	addChild: function(widget){
-		dojox.mobile.RoundRectList._addChild.apply(this, arguments);
-		this.redrawBorders();
-		if(dojox.mobile.applyPngFilter){
-			dojox.mobile.applyPngFilter(widget.domNode);
-		}
-	},
-
-	redrawBorders: function(){
-		// summary:
-		//		Function to adjust the creation of RoundRectLists on IE.
-		//		Removed undesired styles.
-		// tags:
-		//		public
-
-		// Remove a border of the last ListItem.
-		// This is for browsers that do not support the last-child CSS pseudo-class.
-
-		var lastChildFound = false;
-		for(var i = this.containerNode.childNodes.length - 1; i >= 0; i--){
-			var c = this.containerNode.childNodes[i];
-			if(c.tagName == "LI"){
-				c.style.borderBottomStyle = lastChildFound ? "solid" : "none";
-				lastChildFound = true;
+		// override deviceTheme.js
+		dojox.mobile.loadCssFile = function(/*String*/file){
+			if(dojo.doc.createStyleSheet){
+				// for some reason, IE hangs when you try to load
+				// multiple css files almost at once.
+				setTimeout(function(file){
+					return function(){
+						dojo.doc.createStyleSheet(file);
+					};
+				}(file), 0);
+			}else{
+				dojo.create("LINK", {
+					href: file,
+					type: "text/css",
+					rel: "stylesheet"
+				}, dojo.doc.getElementsByTagName('head')[0]);
 			}
-		}
-	}
-});}
+		};
 
-if(dojox.mobile.EdgeToEdgeList){
-dojo.extend(dojox.mobile.EdgeToEdgeList, {
-	buildRendering: function(){
-		this.domNode = this.containerNode = this.srcNodeRef || dojo.doc.createElement("UL");
-		this.domNode.className = "mblEdgeToEdgeList";
-	}
-});}
-
-if(dojox.mobile.IconContainer){
-dojox.mobile.IconContainer._addChild = dojox.mobile.IconContainer.prototype.addChild;
-dojo.extend(dojox.mobile.IconContainer, {
-	addChild: function(widget){
-		dojox.mobile.IconContainer._addChild.apply(this, arguments);
-		if(dojox.mobile.applyPngFilter){
-			dojox.mobile.applyPngFilter(widget.domNode);
-		}
-	}
-});}
-
-dojo.mixin(dojox.mobile, {
-	createRoundRect: function(_this, isList){
-		// summary:
-		//		Function to adjust the creation of rounded rectangles on IE.
-		//		Deals with IE's lack of borderRadius support
-		// tags:
-		//		public
-		var i;
-		_this.domNode = dojo.doc.createElement("DIV");
-		_this.domNode.style.padding = "0px";
-		_this.domNode.style.backgroundColor = "transparent";
-		_this.domNode.style.borderStyle = "none";
-		_this.containerNode = dojo.doc.createElement(isList?"UL":"DIV");
-		_this.containerNode.className = "mblRoundRectContainer";
-		if(_this.srcNodeRef){
-			_this.srcNodeRef.parentNode.replaceChild(_this.domNode, _this.srcNodeRef);
-			for(i = 0, len = _this.srcNodeRef.childNodes.length; i < len; i++){
-				_this.containerNode.appendChild(_this.srcNodeRef.removeChild(_this.srcNodeRef.firstChild));
+		dojox.mobile.loadCss = function(/*String|Array*/files){
+			// summary:
+			//		Function to load and register CSS files with the page
+			//	files: String|Array
+			//		The CSS files to load and register with the page.
+			// tags:
+			//		private
+			if(!dojo.global._loadedCss){
+				var obj = {};
+				dojo.forEach(dojox.mobile.getCssPaths(), function(path){
+					obj[path] = true;
+				});
+				dojo.global._loadedCss = obj;
 			}
-			_this.srcNodeRef = null;
-		}
-		_this.domNode.appendChild(_this.containerNode);
+			if(!dojo.isArray(files)){ files = [files]; }
+				for(var i = 0; i < files.length; i++){
+					var file = files[i];
+					if(!dojo.global._loadedCss[file]){
+						dojo.global._loadedCss[file] = true;
+						dojox.mobile.loadCssFile(file);
+				}
+			}
+		};
 
-		for(i = 0; i <= 5; i++){
-			var top = dojo.create("DIV");
-			top.className = "mblRoundCorner mblRoundCorner"+i+"T";
-			_this.domNode.insertBefore(top, _this.containerNode);
+		dojox.mobile.getCssPaths = function(){
+			var paths = [];
+			var i, j;
 
-			var bottom = dojo.create("DIV");
-			bottom.className = "mblRoundCorner mblRoundCorner"+i+"B";
-			_this.domNode.appendChild(bottom);
-		}
-	}
-});
-
-if(dojox.mobile.ScrollableView){
-dojo.extend(dojox.mobile.ScrollableView, {
-	postCreate: function(){
-		// On IE, margin-top of the first child does not seem to be effective,
-		// probably because padding-top is specified for containerNode
-		// to make room for a fixed header. This dummy node is a workaround for that.
-		var dummy = dojo.create("DIV", {className:"mblDummyForIE", innerHTML:"&nbsp;"}, this.containerNode, "first");
-		dojo.style(dummy, {
-			position: "relative",
-			marginBottom: "-2px",
-			fontSize: "1px"
-		});
-	}
-});}
-
-} // if(dojo.isIE)
-
-if(dojo.isIE <= 6){
-	dojox.mobile.applyPngFilter = function(root){
-		root = root || dojo.body();
-		var nodes = root.getElementsByTagName("IMG");
-		var blank = dojo.moduleUrl("dojo", "resources/blank.gif");
-		for(var i = 0, len = nodes.length; i < len; i++){
-			var img = nodes[i];
-			var w = img.offsetWidth;
-			var h = img.offsetHeight;
-			if(w === 0 || h === 0){
-				// The reason why the image has no width/height may be because
-				// display is "none". If that is the case, let's change the
-				// display to "" temporarily and see if the image returns them.
-				if(dojo.style(img, "display") != "none"){ continue; }
-				img.style.display = "";
-				w = img.offsetWidth;
-				h = img.offsetHeight;
-				img.style.display = "none";
-				if(w === 0 || h === 0){ continue; }
+			// find @import
+			var s = dojo.doc.styleSheets;
+			for(i = 0; i < s.length; i++){
+				if(s[i].href){ continue; }
+				var r = s[i].cssRules || s[i].imports;
+				if(!r){ continue; }
+				for(j = 0; j < r.length; j++){
+					if(r[j].href){
+						paths.push(r[j].href);
+					}
+				}
 			}
-			var src = img.src;
-			if(src.indexOf("resources/blank.gif") != -1){ continue; }
-			img.src = blank;
-			img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src+"')";
-			img.style.width = w + "px";
-			img.style.height = h + "px";
-		}
-	};
-} // if(dojo.isIE <= 6)
+		
+			// find <link>
+			var elems = dojo.doc.getElementsByTagName("link");
+			for(i = 0, len = elems.length; i < len; i++){
+				if(elems[i].href){
+					paths.push(elems[i].href);
+				}
+			}
+			return paths;
+		};
 
-// override deviceTheme.js
-dojox.mobile.loadCssFile = function(/*String*/file){
-	if(dojo.doc.createStyleSheet){
-		// for some reason, IE hangs when you try to load
-		// multiple css files almost at once.
-		setTimeout(function(file){
-			return function(){
-				dojo.doc.createStyleSheet(file);
-			};
-		}(file), 0);
-	}else{
-		dojo.create("LINK", {
-			href: file,
-			type: "text/css",
-			rel: "stylesheet"
-		}, dojo.doc.getElementsByTagName('head')[0]);
-	}
-};
+		dojox.mobile.loadCompatPattern = /\/mobile\/themes\/.*\.css$/;
 
-dojox.mobile.loadCss = function(/*String|Array*/files){
-	// summary:
-	//		Function to load and register CSS files with the page
-	//	files: String|Array
-	//		The CSS files to load and register with the page.
-	// tags:
-	//		private
-	if(!dojo.global._loadedCss){
-		var obj = {};
-		dojo.forEach(dojox.mobile.getCssPaths(), function(path){
-			obj[path] = true;
-		});
-		dojo.global._loadedCss = obj;
-	}
-	if(!dojo.isArray(files)){ files = [files]; }
-	for(var i = 0; i < files.length; i++){
-		var file = files[i];
-		if(!dojo.global._loadedCss[file]){
-			dojo.global._loadedCss[file] = true;
-			dojox.mobile.loadCssFile(file);
-		}
-	}
-};
-
-dojox.mobile.getCssPaths = function(){
-	var paths = [];
-	var i, j;
-
-	// find @import
-	var s = dojo.doc.styleSheets;
-	for(i = 0; i < s.length; i++){
-		if(s[i].href){ continue; }
-		var r = s[i].cssRules || s[i].imports;
-		if(!r){ continue; }
-		for(j = 0; j < r.length; j++){
-			if(r[j].href){
-				paths.push(r[j].href);
+		dojox.mobile.loadCompatCssFiles = function(){
+			// summary:
+			//		Function to perform page-level adjustments on browsers such as
+			//		IE and firefox.  It loads compat specific css files into the
+			//		page header.
+			var paths = dojox.mobile.getCssPaths();
+			for(var i = 0; i < paths.length; i++){
+				var href = paths[i];
+				if((href.match(dojox.mobile.loadCompatPattern) || location.href.indexOf("mobile/tests/")) && href.indexOf("-compat.css") == -1){
+					var compatCss = href.substring(0, href.length-4)+"-compat.css";
+					dojox.mobile.loadCss(compatCss);
+				}
 			}
-		}
-	}
+		};
 	
-	// find <link>
-	var elems = dojo.doc.getElementsByTagName("link");
-	for(i = 0, len = elems.length; i < len; i++){
-		if(elems[i].href){
-			paths.push(elems[i].href);
-		}
-	}
-	return paths;
-};
+		dojox.mobile.hideAddressBar = function(/*Event?*/evt, /*Boolean?*/doResize){
+		if(doResize !== false){ dojox.mobile.resizeAll(); }
+		};
 
-dojox.mobile.loadCompatPattern = /\/mobile\/themes\/.*\.css$/;
+		dojo.addOnLoad(function(){
+			if(dojo.config["mblLoadCompatCssFiles"] !== false){
+				setTimeout(function(){ // IE needs setTimeout
+					dojox.mobile.loadCompatCssFiles();
+				}, 0);
+			}
+			if(dojox.mobile.applyPngFilter){
+				dojox.mobile.applyPngFilter();
+			}
+		});
 
-dojox.mobile.loadCompatCssFiles = function(){
-	// summary:
-	//		Function to perform page-level adjustments on browsers such as
-	//		IE and firefox.  It loads compat specific css files into the
-	//		page header.
-	var paths = dojox.mobile.getCssPaths();
-	for(var i = 0; i < paths.length; i++){
-		var href = paths[i];
-		if((href.match(dojox.mobile.loadCompatPattern) || location.href.indexOf("mobile/tests/")) && href.indexOf("-compat.css") == -1){
-			var compatCss = href.substring(0, href.length-4)+"-compat.css";
-			dojox.mobile.loadCss(compatCss);
-		}
-	}
-};
+	} // end of if(!dojo.isWebKit){
 
-dojox.mobile.hideAddressBar = function(/*Event?*/evt, /*Boolean?*/doResize){
-	if(doResize !== false){ dojox.mobile.resizeAll(); }
-};
-
-dojo.addOnLoad(function(){
-	if(dojo.config["mblLoadCompatCssFiles"] !== false){
-		setTimeout(function(){ // IE needs setTimeout
-			dojox.mobile.loadCompatCssFiles();
-		}, 0);
-	}
-	if(dojox.mobile.applyPngFilter){
-		dojox.mobile.applyPngFilter();
-	}
+	return dojox.mobile.compat;
 });
-
-} // end of if(!dojo.isWebKit){
-
-return dojox.mobile.compat;
-});
Index: CheckBox.js
===================================================================
--- CheckBox.js	(revision 24525)
+++ CheckBox.js	(working copy)
@@ -1,23 +1,21 @@
-define("dojox/mobile/CheckBox", ["dojo", "dijit", "dojox", "dojox/mobile/ToggleButton", "dijit/form/_CheckBoxMixin"], function(dojo, dijit, dojox) {
+define(["dojo/_base/html", "dojox/mobile/ToggleButton", "dijit/form/_CheckBoxMixin"], function(dhtml,ToggleButton,CheckBoxMixin) {
 
-dojo.declare("dojox.mobile.CheckBox", [dojox.mobile.ToggleButton, dijit.form._CheckBoxMixin], {
-	// summary:
-	//		A non-templated checkbox widget that can be in two states (checked or not).
+	return dojo.declare("dojox.mobile.CheckBox", [ToggleButton, CheckBoxMixin], {
+		// summary:
+		//		A non-templated checkbox widget that can be in two states (checked or not).
 
-	baseClass: "mblCheckBox",
+		baseClass: "mblCheckBox",
 
-	_setTypeAttr: function(){}, // cannot be changed: IE complains w/o this
+		_setTypeAttr: function(){}, // cannot be changed: IE complains w/o this
 
-	buildRendering: function(){
-		if(!this.srcNodeRef){
-			// The following doesn't work on IE < 8 if the default state is checked.
-			// You have to use "<input checked>" instead but it's not worth the bytes here.
-			this.srcNodeRef = dojo.create("input", {type: this.type});
+		buildRendering: function(){
+			if(!this.srcNodeRef){
+				// The following doesn't work on IE < 8 if the default state is checked.
+				// You have to use "<input checked>" instead but it's not worth the bytes here.
+				this.srcNodeRef = dojo.create("input", {type: this.type});
+			}
+			this.inherited(arguments);
+			this.focusNode = this.domNode;
 		}
-		this.inherited(arguments);
-		this.focusNode = this.domNode;
-	}
+	});
 });
-
-return dojox.mobile.CheckBox;
-});
Index: FixedSplitter.js
===================================================================
--- FixedSplitter.js	(revision 24525)
+++ FixedSplitter.js	(working copy)
@@ -1,10 +1,4 @@
-define([
-  "dojo",
-  "dijit",
-  "dojox",
-  "dijit/_WidgetBase",
-  "dijit/_Container",
-  "dijit/_Contained"], function(dojo, dijit, dojox){
+define(["dojo/_base/html","dojo/_base/lang",  "dojo/_base/array", "dijit/_WidgetBase","dijit/_Container","dijit/_Contained"],function(dhtml,dlang,darray,WidgetBase,Container,Contained){
 	// module:
 	//		dojox/mobile/FixedSplitter
 	// summary:
@@ -28,77 +22,56 @@
 	// |		</div>
 	// |	</div>
 
-dojo.declare(
-	"dojox.mobile.FixedSplitter",
-	[dijit._WidgetBase, dijit._Container, dijit._Contained],
-{
-	orientation: "H", // "H" or "V"
+	return dojo.declare("dojox.mobile.FixedSplitter", [WidgetBase,Container,Contained], {
+		orientation: "H", // "H" or "V"
 
-	isContainer: true,
+		isContainer: true,
 
-	buildRendering: function(){
-		this.domNode = this.containerNode = this.srcNodeRef ? this.srcNodeRef : dojo.doc.createElement("DIV");
-		dojo.addClass(this.domNode, "mblFixedSpliter");
-	},
+		buildRendering: function(){
+			this.domNode = this.containerNode = this.srcNodeRef ? this.srcNodeRef : dojo.doc.createElement("DIV");
+			dojo.addClass(this.domNode, "mblFixedSpliter");
+		},
 
-	startup: function(){
-		if(this._started){ return; }
-		var children = dojo.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; });
-		dojo.forEach(children, function(node){
-			dojo.addClass(node, "mblFixedSplitterPane"+this.orientation);
-		}, this);
-		this.inherited(arguments);
+		startup: function(){
+			if(this._started){ return; }
+			var children = dojo.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; });
+			dojo.forEach(children, function(node){
+				dojo.addClass(node, "mblFixedSplitterPane"+this.orientation);
+			}, this);
+			this.inherited(arguments);
+	
+			var _this = this;
+			setTimeout(function(){
+				var parent = _this.getParent && _this.getParent();
+				if(!parent || !parent.resize){ // top level widget
+					_this.resize();
+				}
+			}, 0);
+		},
+	
+		resize: function(){
+			this.layout();
+		},
 
-		var _this = this;
-		setTimeout(function(){
-			var parent = _this.getParent && _this.getParent();
-			if(!parent || !parent.resize){ // top level widget
-				_this.resize();
+		layout: function(){
+			var sz = this.orientation == "H" ? "w" : "h";
+			var children = dojo.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; });
+			var offset = 0;
+			for(var i = 0; i < children.length; i++){
+				dojo.marginBox(children[i], this.orientation == "H" ? {l:offset} : {t:offset});
+				if(i < children.length - 1){
+					offset += dojo.marginBox(children[i])[sz];
+				}
 			}
-		}, 0);
-	},
-
-	resize: function(){
-		this.layout();
-	},
-
-	layout: function(){
-		var sz = this.orientation == "H" ? "w" : "h";
-		var children = dojo.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; });
-		var offset = 0;
-		for(var i = 0; i < children.length; i++){
-			dojo.marginBox(children[i], this.orientation == "H" ? {l:offset} : {t:offset});
-			if(i < children.length - 1){
-				offset += dojo.marginBox(children[i])[sz];
-			}
+	
+			var l = dojo.marginBox(this.domNode)[sz] - offset;
+			var props = {};
+			props[sz] = l;
+			dojo.marginBox(children[children.length - 1], props);
+	
+			dojo.forEach(this.getChildren(), function(child){
+				if(child.resize){ child.resize(); }
+			});
 		}
-
-		var l = dojo.marginBox(this.domNode)[sz] - offset;
-		var props = {};
-		props[sz] = l;
-		dojo.marginBox(children[children.length - 1], props);
-
-		dojo.forEach(this.getChildren(), function(child){
-			if(child.resize){ child.resize(); }
-		});
-	}
+	});
 });
-
-dojo.declare(
-	"dojox.mobile.FixedSplitterPane",
-	[dijit._WidgetBase, dijit._Container, dijit._Contained],
-{
-	buildRendering: function(){
-		this.inherited(arguments);
-		dojo.addClass(this.domNode, "mblFixedSplitterPane");
-	},
-
-	resize: function(){
-		dojo.forEach(this.getChildren(), function(child){
-			if(child.resize){ child.resize(); }
-		});
-	}
-});
-
-return dojox.mobile.FixedSplitter;
-});
Index: FlippableView.js
===================================================================
--- FlippableView.js	(revision 24525)
+++ FlippableView.js	(working copy)
@@ -1,9 +1,5 @@
-define("dojox/mobile/FlippableView", ["dojo", "dijit", "dojox/mobile/SwapView"], function(dojo, dijit) {
-
-dojo.deprecated("dojox.mobile.FlippableView is deprecated", "dojox.mobile.FlippableView moved to dojox.mobile.SwapView", 1.7);
-
-dojox.mobile.FlippableView = dojox.mobile.SwapView;
-
-
-return dojox.mobile.FlippableView;
+define(["dojox/mobile/SwapView"], function(SwapView) {
+	dojo.deprecated("dojox.mobile.FlippableView is deprecated", "dojox.mobile.FlippableView moved to dojox.mobile.SwapView", 1.7);
+	dojox.mobile.FlippableView = SwapView;
+	return SwapView;
 });
