var MainLoader = function(param_sitemap , param_callback){
	
	this.callback = param_callback;
	this._sitemap = param_sitemap;
	this._mass = new MassLoader(this.callback);
	this.callback.call();
	this.build();
};

MainLoader.prototype = {
		

	build:function() {
		var tree = this._sitemap.tree();
		var sectionAssets;
		var o;
		var len;
		var assetList = tree.assets;

		// General assets
		var tabLength = assetList.length;
		var filter = new AssetsFilter(assetList);
		assetList = filter.getFilteredList();
		for (var i = 0; i < tabLength ; ++i) {
			this._mass.addFile(assetList[i].path , assetList[i].id , assetList[i].group , assetList[i].options);
		}
		
		// Section specific assets
		tabLength = tree.sections.length;
		for (i = 0; i < tabLength ; ++i) {
			if (tree.sections[i]['default'] == true || tree.sections[i].load_at_runtime == true) {
				sectionAssets = tree.sections[i].assets;
				filter = new AssetsFilter(sectionAssets);
				sectionAssets = filter.getFilteredList();
				len =  sectionAssets.length;
				for (o = 0; o < len ; ++o) {
					sectionAssets[o].group = sectionAssets[o].group == '' ? 'section_' +  tree.sections[i].id : sectionAssets[o].group;
					this._mass.addFile(sectionAssets[o].path , sectionAssets[o].id ,  sectionAssets[o].group , sectionAssets[o].options);
				}
				//if (_sitemap.tree.sections[i].external)
					//_mass.addFile(Application.getInstance().pathFinder.get('swf')  + 'sections/' + _sitemap.tree.sections[i].id + '.swf' , 'section_' + _sitemap.tree.sections[i].id);
			}
		}
		

	},
	
	
	launch:function(){
		this._mass.launch();
	},
	

	addAssetList:function(param_list) {
		var filter = new AssetsFilter(param_list);
		param_list = filter.getFilteredList();
		var tabLength = param_list.length;
		for (var i = 0; i < tabLength ; ++i) {
			_mass.addFile(param_list[i].path , param_list[i].id , param_list[i].group , param_list[i].options);
		}
	},
			
	

	getLoadedData:function(param_group) {
		return _mass.getLoadedData(param_group);
	},
	
	
		
		
};
