//>>built
define("dojox/mobile/dh/JsonContentHandler",["dojo/_base/kernel","dojo/_base/array","dojo/_base/declare","dojo/_base/lang","dojo/_base/Deferred","dojo/json","dojo/dom-construct"],function(_1,_2,_3,_4,_5,_6,_7){return _3("dojox.mobile.dh.JsonContentHandler",null,{parse:function(_8,_9,_a){var _b,_c=_7.create("DIV");_9.insertBefore(_c,_a);this._ws=[];this._req=[];var _d=_6.parse(_8);return _5.when(this._loadPrereqs(_d),_4.hitch(this,function(){_b=this._instantiate(_d,_c);_b.style.visibility="hidden";_2.forEach(this._ws,function(w){if(!w._started&&w.startup){w.startup();}});this._ws=null;return _b.id;}));},_loadPrereqs:function(_e){var d=new _5();var _f=this._collectRequires(_e);if(_f.length===0){return true;}if(_1.require){_2.forEach(_f,function(c){_1["require"](c);});return true;}else{_f=_2.map(_f,function(s){return s.replace(/\./g,"/");});require(_f,function(){d.resolve(true);});}return d;},_collectRequires:function(obj){var _10=obj["class"];for(var key in obj){if(key.charAt(0)=="@"||key==="children"){continue;}var cls=_10||key.replace(/:.*/,"");this._req.push(cls);if(!cls){continue;}var _11=_10?[obj]:(_4.isArray(obj[key])?obj[key]:[obj[key]]);for(var i=0;i<_11.length;i++){if(!_10){this._collectRequires(_11[i]);}else{if(_11[i].children){for(var j=0;j<_11[i].children.length;j++){this._collectRequires(_11[i].children[j]);}}}}}return this._req;},_instantiate:function(obj,_12,_13){var _14;var _15=obj["class"];for(var key in obj){if(key.charAt(0)=="@"||key==="children"){continue;}var cls=_4.getObject(_15||key.replace(/:.*/,""));if(!cls){continue;}var _16=cls.prototype,_17=_15?[obj]:(_4.isArray(obj[key])?obj[key]:[obj[key]]);for(var i=0;i<_17.length;i++){var _18={};for(var _19 in _17[i]){if(_19.charAt(0)=="@"){var v=_17[i][_19];_19=_19.substring(1);var t=typeof _16[_19];if(_4.isArray(_16[_19])){_18[_19]=v.split(/\s*,\s*/);}else{if(t==="string"){_18[_19]=v;}else{if(t==="number"){_18[_19]=v-0;}else{if(t==="boolean"){_18[_19]=(v!=="false");}else{if(t==="object"){_18[_19]=_6.parse(v);}else{if(t==="function"){_18[_19]=_4.getObject(v,false)||new Function(v);}}}}}}}}_14=new cls(_18,_12);if(_12){this._ws.push(_14);}if(_13){_14.placeAt(_13.containerNode||_13.domNode);}if(!_15){this._instantiate(_17[i],null,_14);}else{if(_17[i].children){for(var j=0;j<_17[i].children.length;j++){this._instantiate(_17[i].children[j],null,_14);}}}}}return _14&&_14.domNode;}});});