function Diaporama(w, h, xp, loader_path, ls)
{
	
	
	// Properties;
	var js_loader = new Js_Loader(new Array(
										loader_path + "diaporama_classes/DomExtra.js",
										loader_path + "diaporama_classes/Request.js",
										loader_path + "diaporama_classes/EventExtra.js",
										loader_path + "diaporama_classes/XMLExtra.js",
										loader_path + "diaporama_classes/StringExtra.js",
										loader_path + "diaporama_classes/Tween.js",
										loader_path + "diaporama_classes/Diaporama_Window.js",
										loader_path + "diaporama_classes/Diaporama_Navigation.js",
										loader_path + "diaporama_classes/Diaporama_Item.js",
										loader_path + "diaporama_classes/Diaporama_Timer.js"
									), load_xml);

	var width = w;
	var height = h;
	var xml_path = xp;
	var label_suite = (ls == "" || ls == undefined ? "Lire la suite" : ls);
	var xml_obj;
	var window_div;
	var window_obj;
	var navigation_div;
	var navigation_obj;
	
	// Constructor;
	create_container();

	// Private Methods;
	function create_container(){
		document.write("<div id='dpr_container' style='width:" + width + "px; height:" + (height + 35) +"px; overflow:hidden'></div>");
	}
	
	function load_xml(){
		Request.make_request(xml_path, retrieve_data);
	}

	function retrieve_data(d){
		xml_obj = new XMLExtra(d);
		init_diaporama();
	}
	
	function init_diaporama(){
		var target = DomExtra.get_obj("dpr_container");
		
		// Crée l'espace window;
		window_div = target.appendChild(DomExtra.create_element("div", ["id", "dpr_window"], ["style", "width:" + width + "px; height:" + height + "px; overflow:hidden"]));
		window_obj = new Diaporama_Window(window_div, xml_obj, width, height, label_suite);
		
		// Crée l'espace navigation;
		navigation_div = target.appendChild(DomExtra.create_element("div", ["id", "dpr_navigation"], ["style", "width:" + width + "px; overflow:hidden"]));
		navigation_obj = new Diaporama_Navigation(navigation_div, xml_obj, width, window_obj);
	}
	
	
	// Privileged Methods;
	
}



// ----------------------------------
// JS Loader ------------------------
// ----------------------------------
function Js_Loader(a, c, p){
	
	// Private properties;
	var load_array = a;
	var callback = c;
	var param = p;
	var loaded_ = 0;
	var html_doc = document.getElementsByTagName("head")[0];
	var browser = (navigator.userAgent.indexOf('MSIE') != -1 ? "IE" : "Autres");

	start_load();
	
	
	
	// Private Method;
	function start_load(){
		var len = load_array.length;
		
		for(var i = 0; i < len; i ++){
			load(load_array[i]);
		}	
	}
	
	function load(js){
		var script = document.createElement("script");

		script.setAttribute("type", "text/javascript");
		script.setAttribute("src", js);
		html_doc.appendChild(script);


		// IE;
		if (browser == "IE") {
			script.onreadystatechange = function(){
				if ((script.readyState == 'complete') || (script.readyState == 'loaded')) {
					check_loaded();
				}
			}
		}else{
			// FireFox;
			script.onload = function(){
				check_loaded();
			}	
		}
	}
	
	function check_loaded(js){
		loaded_ ++;

		if(loaded_ >= load_array.length){
			callback.call(this, param);
		}
	}
	
	
	// Privileged / Public Method;
	// ...
	
}

