!function(t){t.su.Manager=function(){var e=function(){if("object"==typeof this.constructor.instance)return this.constructor.instance;t.su.Observable.call(this),this.constructor.instance=this,this._map={},this._infoMap={},this.type=null};return t.su.inherit(t.su.Observable,e),e.prototype.define=function(e,i,n){this._infoMap[e]={},this._infoMap[e].constructor=n?function(e,i){return function(n){e.call(this,n),!!i&&t.extend(this,i.call(this))}}(this.type,n):this.type,this._infoMap[e].options=i},e.prototype.init=function(t){this._infoMap[t]&&(this._map[t]=new this._infoMap[t].constructor(this._infoMap[t].options))},e.prototype.get=function(t){return this._map[t]},e.prototype.destroy=function(t){delete this._map[t]},e}()}(jQuery),function(t){t.su.ModelManager=function(){var e=function(){t.su.Manager.call(this),this.type=t.su.Model};return t.su.inherit(t.su.Manager,e),e.prototype.define=function(e,i,n){var o=t.extend({name:e,factory:n},i);if(!this._infoMap[e])if(this._infoMap[e]={settings:o,constructor:null,status:"defined"},n){var s=function(e){t.su.Model.call(this,e);var i=n.call(this);!!i&&t.extend(this,i)};t.su.inherit(t.su.Model,s),this._infoMap[e].constructor=s}else this._infoMap[e].constructor=t.su.Model},e.prototype.init=function(t){if(!this._infoMap[t]||"available"==this._infoMap[t].status)return null;this._map[t]=new this._infoMap[t].constructor(this._infoMap[t].settings),this._infoMap[t].status="available"},e.prototype.get=function(t){return this._map[t]?this._map[t]:null},e.prototype.loadDefine=function(e,i){t.su.router.loadModel(e,i)},e.prototype.getStatus=function(t){return this._infoMap[t]?this._infoMap[t].status:null},e.prototype.isDefined=function(t){return!!this._infoMap[t]},e.prototype.isAvailable=function(t){return!(!this._infoMap[t]||"available"!==this._infoMap[t].status)},e.prototype.destroy=function(t){delete this._map[t]},e}()}(jQuery),function(t){t.su.StoreManager=function(){var e=function(){t.su.Manager.call(this),this.type=t.su.Store};return t.su.inherit(t.su.Manager,e),e.prototype.define=function(e,i,n){var o=t.extend({name:e,factory:n},i);this._infoMap[e]||(this._infoMap[e]={settings:o,status:"defined"})},e.prototype.init=function(e){if(!this._infoMap[e]||"available"==this._infoMap[e].status)return null;var i=this._infoMap[e].settings.type||"store";this._map[e]=new(t.su[t.su.format.capitalize(i)])(this._infoMap[e].settings),this._infoMap[e].status="available"},e.prototype.get=function(t){return this._map[t]?this._map[t]:null},e.prototype.loadDefine=function(e,i){t.su.router.loadModel(e,i)},e.prototype.getStatus=function(t){return this._infoMap[t]?this._infoMap[t].status:null},e.prototype.isDefined=function(t){return!!this._infoMap[t]},e.prototype.isAvailable=function(t){return!(!this._infoMap[t]||"available"!==this._infoMap[t].status)},e.prototype.destroy=function(t){delete this._map[t]},e}()}(jQuery),function(t){t.su=t.su||{},t.su.ModuleManager=function(){var e=function(){t.su.Manager.call(this),this.type=t.su.Module,this._depMap={},this._toDestroy=[]};t.su.inherit(t.su.Manager,e);var i=function(e,i){var n=this._infoMap[e].settings,o=n.model,s=n.store,a=n.deps,r=!1,u=!1,p=!1,f=function(){for(var e=0;e=0||this._depMap[i[n]].push(e):this._depMap[i[n]]=[e]};return e.prototype.define=function(e,o,s){var a=this,r=t.extend({name:e,deps:[],model:[],store:[]},o);if(!this._infoMap[e]){n.call(this,r.name,r.deps),this._infoMap[e]={settings:r,constructor:null,status:"loadingDefine"};var u=function(e){this.factory=s,t.su.Module.call(this,e)};t.su.inherit(t.su.Module,u),this._infoMap[e].constructor=u,i.call(this,e,function(){a._infoMap[e].status="defined",t(a).trigger("ev_module_"+e+"_defined")})}},e.prototype.query=function(t){return!!this._map[t]&&this._map[t]},e.prototype.unload=function(t){this._map[t]&&(this._map[t].destroy(),delete this._map[t],this._infoMap[t].status="defined")},e.prototype.load=function(e,i){t(this).one("ev_module_"+e+"_defined",i),t.su.router.loadController(e)},e.prototype.getStatus=function(t){return this._infoMap[t]?this._infoMap[t].status:null},e.prototype.isDefined=function(t){return!(!this._infoMap[t]||"loadingDefine"===this._infoMap[t].status)},e.prototype.isAvailable=function(t){return!(!this._infoMap[t]||"available"!==this._infoMap[t].status)},e.prototype.init=function(t){var e=this;this._infoMap[t]&&"available"!=this._infoMap[t].status&&(this._map[t]=new this._infoMap[t].constructor(this._infoMap[t].settings),this._infoMap[t].status="available",this._map[t].addListener("ev_to_destroy",function(t,i){e.prepareDestroy(i)}))},e.prototype.prepareDestroy=function(e){if(this._depMap[e])for(var i=0;i=0&&this._toDestroy.splice(o,1);for(var s=this._infoMap[e].settings.deps,a=0;a=0&&this.prepareDestroy(s[a])},e.prototype.launch=function(e,i){switch(t.su.moduleManager.getStatus(e)){case"loadingDefine":t(t.su.moduleManager).one("ev_module_"+e+"_defined",function(){t.su.moduleManager.init(e),t.su.moduleManager.query(e).load(),!!i&&i()});break;case"defined":t.su.moduleManager.init(e),t.su.moduleManager.query(e).load(),!!i&&i();break;case"available":t.su.moduleManager.query(e).load(),!!i&&i();break;case!1:default:t.su.moduleManager.load(e,function(){t.su.moduleManager.init(e),t.su.moduleManager.query(e).load(),!!i&&i()})}},e}()}(jQuery),function(t){t.su.ViewManager=function(){var e=function(){t.su.Manager.call(this),this.type=t.su.View};return t.su.inherit(t.su.Manager,e),e.prototype.init=function(e){if("string"==typeof e)this._map[e]=new t.su.View(e);else{var i=e;this._map[i.id]=new t.su.View(i)}},e.prototype.get=function(t){var e="string"==typeof t?t:t.id;if(this._map[e])return this._map[e]},e}()}(jQuery),function(t){t.su.ServiceManager=function(){var e=function(){t.su.Manager.call(this),this.type=t.su.Service};return t.su.inherit(t.su.Manager,e),e.prototype.register=function(t,e){if(this._map[t])return this._map[t];this._map[t]=e},e.prototype.get=function(t){return this._map[t]?this._map[t]:null},e}()}(jQuery);