var displaying_request_id=0;
var requests = new Array();
var nb_requests = requests.length;
var xhr=null;
	
function XMLHttpRequest_controller () {
	this.name='YB';
	
	this.addRequest = XMLHttpRequest_controller_addRequest;
	this.setRequest = XMLHttpRequest_controller_setRequest;
	this.setRequests = XMLHttpRequest_controller_setRequests;
	this.getXhr = XMLHttpRequest_controller_getXhr;
	
	/*if (this.xhr) alert('ok');
	else alert('nok');*/
}

function XMLHttpRequest_controller_addRequest(div_id, url, type, request_uri){

	//alert('addRequest');
	request_tmp = new Array();
	request_tmp['div_id'] = div_id;
	request_tmp['url'] = url;
	request_tmp['type'] = type;
	request_tmp['request_uri'] = request_uri;
	request_tmp['displayed'] = false;
	request_tmp['displaying'] = false;
	requests[nb_requests]=request_tmp;
	nb_requests+=1;

	return true;
}
function XMLHttpRequest_controller_setRequests(confirmation, level){
	$return=true;
	//alert('confirm='+confirmation);
	//alert('level='+level+'  nb_requests='+nb_requests);
	/*if (level>10){
		requests=new Array();
		nb_requests=0;
		displaying_request_id=0;
		return;
	}*/
	if (confirmation){
		yes=confirm('Are you sure ?') ;
		if (!yes){
			requests=new Array();
			nb_requests=0;
			displaying_request_id=0;
			return;
		}
	}
	//alert(displaying_request_id);

	//alert("dispayed: "+displaying_request_id);
	if (requests[displaying_request_id] && requests[displaying_request_id]['displayed']){
		//alert("dispayed: "+displaying_request_id);
		//alert("nb_requests: "+nb_requests);
		displaying_request_id+=1;
	}

	if (displaying_request_id<nb_requests){
		//alert("displaying_request_id: "+displaying_request_id);
		if (!requests[displaying_request_id]['displayed'] && !requests[displaying_request_id]['displaying']){
			requests[displaying_request_id]['displaying'] = true;
			//alert("dispaying: "+displaying_request_id);
			div_id=requests[displaying_request_id].div_id;
			url=requests[displaying_request_id].url;
			type=requests[displaying_request_id].type;
			request_uri=requests[displaying_request_id].request_uri;
			//alert(div_id+url+type+request_uri);
			XMLHttpRequest_controller_setRequest(div_id, url, type, request_uri);
			setTimeout('XMLHttpRequest_controller_setRequests(false, "'+(level+1)+'")', 50);
		}
		else{
			//alert('timeout');
			setTimeout('XMLHttpRequest_controller_setRequests(false, "'+(level+1)+'")', 50);
		}
	}
	else{
		//alert('empty all');
		requests=new Array();
		nb_requests=0;
		displaying_request_id=0;
	}

	return $return;
}

function XMLHttpRequest_controller_setRequest(div, url, type, request_uri){
	$return=true;
	//alert(div+" -> "+url+"?"+request_uri);
	if (typeof(div)=="string"){
		dest_div=document.getElementById(div);
	}
	else if (typeof(div)=="object"){
		dest_div=div;
	}
	else return false;
	//alert(dest_div.innerHTML);
	//alert(url);
	//alert(typeof(dest_div));

	if (!url){
		dest_div.innerHTML='';
		requests[displaying_request_id]['displayed'] = true;
		return true;
	}
	
	var xhr_tmp=XMLHttpRequest_controller_getXhr();

	// On défini ce qu'on va faire quand on aura la réponse
	xhr_tmp.onreadystatechange = function(){
		//alert(xhr.readyState+"->"+xhr.status);
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		// et qu'on a pas déja fait
		if((xhr_tmp.readyState == 4 && xhr_tmp.status == 200)){
			if (typeof(div)=="string"){
				dest_div=document.getElementById(div);
			}
			else if (typeof(div)=="object"){
				dest_div=div;
			}
			else return false;
			//alert(xhr.responseText);
			//alert(div+" -> "+url+"?"+request_uri);
			dest_div.innerHTML=xhr_tmp.responseText;
			if (nb_requests>1) 
				requests[displaying_request_id]['displayed'] = true;
		}
	}
	//alert('open');
	type=type=='GET'?'GET':'POST';
	xhr_tmp.open(type, url);
	xhr_tmp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	//alert('send');
	//$chaine="song_url="+$kb_mu_bl_musics[$kb_mu_bl_current_song]['url'];
	//alert($chaine[$kb_mu_bl_current_song]);
	//alert(type+'  '+request_uri);
	//dest_div.innerHTML='';
	xhr_tmp.send(request_uri);

	return $return;
}
function XMLHttpRequest_controller_getXhr(){
	//alert('XMLHttpRequest_controller_getXhr');
	if (window.XMLHttpRequest){
		//alert('Firefox et autres');
		xhr = new XMLHttpRequest(); 
	}
	else if(window.ActiveXObject){
		//alert('Internet Explorer ');
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
	}
	else { 
		alert('XMLHttpRequest non supporté par le navigateur');
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	return xhr;
}