﻿
function evalRequestResponse(response){
	try{var TheResponse = eval('(' + response + ')');}
	catch(e){
		if(parent.PLg('PLpopUpSubTitle'))parent.PLDisplayMessage('PLpopUpSubTitle',_ErrorCommunication);
		else if(PLg('PLpopUpSubTitle'))PLDisplayMessage('PLpopUpSubTitle',_ErrorCommunication);
		else PLAlert(_ErrorCommunication,true,"Attention")
		return null;
	}
	if(typeof TheResponse != 'object'){
		if(parent.PLg('PLpopUpSubTitle'))parent.PLDisplayMessage('PLpopUpSubTitle',_ErrorCommunication);
		else if(PLg('PLpopUpSubTitle'))PLDisplayMessage('PLpopUpSubTitle',_ErrorCommunication);
		else PLAlert(_ErrorCommunication,true,"Attention")
		return null;
	}
	return TheResponse
}

var _IsRequestMonitored=false;
var _RequestPool=[];
function makeRequest(url,data,strResultFunc) {
	var pos=-1;
	for(var i=0;i<_RequestPool.length;i++){
		if(_RequestPool[i].isfree==1){pos=i;break;}
	}
	if(pos==-1){pos=_RequestPool.length;_RequestPool[pos]=new CreateHttpObject(1);}
	
	if(!_RequestPool[pos].xmlhttp){
	    alert('Une erreur est survenue.\n(Impossible de créer une instance XMLHTTP)');
	    return false;
	}
	
	_RequestPool[pos].isfree = 0;
	if(strResultFunc=='return'){var Asynchrone=false;}
	else{var Asynchrone=true;}

	_RequestPool[pos].xmlhttp.open("POST",url,Asynchrone);
	if(strResultFunc && Asynchrone){
		_RequestPool[pos].xmlhttp.onreadystatechange = function(){
			if(typeof HandleRequestResponse != 'undefined'){
				HandleRequestResponse(pos,data,strResultFunc);
			}
		}
	}
	else{_RequestPool[pos].xmlhttp.onreadystatechange = function(){empty=0}}
	
	_RequestPool[pos].xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	_RequestPool[pos].xmlhttp.send(data);
	if(strResultFunc=='return'){
		var Reponse = _RequestPool[pos].xmlhttp.responseText
		_RequestPool[pos].isfree = 1;
		return Reponse
	}
}

function HandleRequestResponse(pos,requestData,strResultFunc) {
	if(typeof(_RequestPool[pos]) == 'undefined' && _RequestPool[pos].isfree != 0)return;
	if(_RequestPool[pos].xmlhttp.readyState < 4){
		if(_IsRequestMonitored && PLg("PLpopUpSubTitle")){
			try{
				switch(_RequestPool[pos].xmlhttp.readyState){
				case 1 : PLg("PLpopUpSubTitle").innerHTML="Envoi des données..."; break;
				case 2 : PLg("PLpopUpSubTitle").innerHTML="Attente de la réponse..."; break;
				case 3 : PLg("PLpopUpSubTitle").innerHTML="Fermeture de la connexion"; break;
				}
			}catch(e){}
		}
	}
	else if(_RequestPool[pos].xmlhttp.readyState==4) {
		_IsRequestMonitored=false
		//if(_RequestPool[pos].xmlhttp.status > 199 && _RequestPool[pos].xmlhttp.status < 400) {
		if(_RequestPool[pos].xmlhttp.status == 200 || _RequestPool[pos].xmlhttp.status == 304) {
			if (_RequestPool[pos].xmlhttp.getResponseHeader('Location') && _RequestPool[pos].xmlhttp.getResponseHeader('Location') != null){
							DomakeRequest(http_request.getResponseHeader('Location'),requestData,strResultFunc)
			}
			else{eval(strResultFunc + '(_RequestPool['+pos+'].xmlhttp.responseText);');}
		}
		else {
			if(_JSdebug){
				PLAlert('Une erreur est survenue : ('+_RequestPool[pos].xmlhttp.status+')<br>'+_RequestPool[pos].xmlhttp.responseText)
			}
			else{alert(_ErrorCommunication)}
		}
		_RequestPool[pos].isfree = 1;
	}
}

function CreateHttpObject(isfree) {
	this.isfree = isfree;
	this.xmlhttp = false;
	try{this.xmlhttp = new XMLHttpRequest();}
	catch(e){
		var progid = ['MSXML2.XMLHTTP.7.0','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0',
				  'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP']
		for(ct=0;ct<progid.length;ct++){
			try{this.xmlhttp = new ActiveXObject(progid[ct]);}
			catch(e){}
		}
	}
}

