JS.Package=new JS.Class({initialize:function(b){this._3=b;this._0=[];this._1=[];},addDependency:function(b){if(typeof b==="string"){b=this.klass.getByName(b);}if(!b){return;}if(JS.indexOf(this._0,b)===-1){this._0.push(b);}},addName:function(b){if(!this.contains(b)){this._1.push(b);}},contains:function(b){return JS.indexOf(this._1,b)!==-1;
},getObjects:function(){var e=[],d=this._1.length,f;while(d--){f=this.klass.getObject(this._1[d]);if(f){e.push(f);}}return e;},isLoaded:function(d){var c=this._0.length;if(d!==false){while(c--){if(!this._0[c].isLoaded()){return false;}}}return this.getObjects().length===this._1.length;},expand:function(f){var e=f||[],h,g;
for(h=0,g=this._0.length;h<g;h++){this._0[h].expand(e);}if(JS.indexOf(e,this)===-1){e.push(this);}return e;},injectScript:function(e,d){if(this.isLoaded(false)){return e.call(d||null);}var f=document.createElement("script");f.type="text/javascript";f.src=this._3;f.onload=f.onreadystatechange=function(){if(!f.readyState||f.readyState==="loaded"||f.readyState==="complete"||(f.readyState===4&&f.status===200)){e.call(d||null);
f=null;}};document.getElementsByTagName("head")[0].appendChild(f);},extend:{_2:{},_4:this,getByPath:function(b){return this._2[b]||(this._2[b]=new this(b));},getByName:function(d){for(var c in this._2){if(this._2[c].contains(d)){return this._2[c];}}return null;},getObject:function(f){var e=this._4,h=f.split("."),g;
while(g=h.shift()){e=(e||{})[g];}return e;},expand:function(f){var e=[];for(var h=0,g=f.length;h<g;h++){f[h].expand(e);}return e;},load:function(e,d,f){if(e.length===0){return d&&d.call(f||null);}e.shift().injectScript(function(){this.load(e,d,f);},this);},DSL:{pkg:function(e,d){var f=d?JS.Package.getByPath(d):JS.Package.getByName(e);
f.addName(e);return new JS.Package.Description(f);}},Description:new JS.Class({initialize:function(b){this._5=b;},requires:function(b){this._5.addDependency(b);return this;}})}});JS.Packages=function(b){b.call(JS.Package.DSL);};require=function(){var d=JS.array(arguments),c=[];while(typeof d[0]==="string"){c.push(JS.Package.getByName(d.shift()));
}c=JS.Package.expand(c);JS.Package.load(c,d[0],d[1]);};
