/* ----------------------------------------------------------------------- */
/* Les scripts ci-dessous sont nécéssaires à l'execution des routines AJAX */
/* ----------------------------------------------------------------------- */
initAJAX = function(params) {
	
	params=params?params:new Array(0);
	
	function position(e)
	{
		positionX = event.x;
		positionY = event.y;
		//alert("X="+positionX+" - Y="+positionY);
		//positionX = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
		//positionY = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
	}

	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };

	//définition du calque indicateur
	param_default("imgPath", "");
	param_default("imgSrc","AjaxTempo.gif");
	param_default("divWidth", "200");
	param_default("divHeight", "40");
	param_default("divWidth2", "200");
	param_default("divHeight2", "40");
	param_default("divBgColor", "#FFFFCC");
	param_default("divBorder", "2px solid #333333");
	param_default("divTextColor", "#FF3333");
	param_default("divText", "traitement...");
	param_default("divTextSize", "2");
	positionX=screen.width/2-params['divWidth']/2;
	positionY=screen.height/2-params['divHeight']/2;
	param_default("positionX", positionX);
	param_default("positionY", positionY);
	positionX=screen.width/2-params['divWidth2']/2;
	positionY=screen.height/2-params['divHeight2']/2;
	param_default("positionX2", positionX);
	param_default("positionY2", positionY);
	//e=window.event;
	//document.onclick=position;
	//positionX=event.x;
	//positionY=event.y;
	
//    document.write("<div align='center' id=\"ajx_flag\" style=\"vertical-align:middle; position:absolute; top:"+params['positionY']+"; left:"+params['positionX']+"; width:"+params['divWidth']+";  height:"+params['divHeight']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100; filter:alpha(opacity=50); -moz-opacity:0.5; opacity: 0.5;\"><img src=\""+params['imgPath']+""+params['imgSrc']+"\" align=\"absmiddle\"/> <font size='"+params['divTextSize']+"'><b><i><br />"+params['divText']+"</i></b></font></div>");
	
	document.write("<div align='center' id=\"ajx_flag\" style=\"vertical-align:middle; position:absolute; top:"+params['positionY']+"; left:"+params['positionX']+"; width:"+params['divWidth']+";  height:"+params['divHeight']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100; filter:alpha(opacity=50); -moz-opacity:0.5; opacity: 0.5;\">&nbsp;</div>");
    document.write("<div align='center' id=\"ajx_flag2\" style=\"vertical-align:middle; position:absolute; top:"+params['positionY2']+"; left:"+params['positionX2']+"; width:"+params['divWidth2']+";  height:"+params['divHeight2']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100;\"><img src=\""+params['imgPath']+""+params['imgSrc']+"\" align=\"absmiddle\"/> <font size='"+params['divTextSize']+"'><b><i><br />"+params['divText']+"</i></b></font></div>");
//    document.write("<div align='center' id=\"ajx_flag\" style=\"vertical-align:middle; position:absolute; top:"+params['positionY']+"; left:"+params['positionX']+"; width:"+params['divWidth']+";  height:"+params['divHeight']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100; filter:alpha(opacity=50); -moz-opacity:0.5; opacity: 0.5;\><div align='center' style=\"vertical-align:middle; position:absolute; top:"+params['positionY']+"; left:"+params['positionX']+"; width:"+params['divWidth']+";  height:"+params['divHeight']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100; filter:alpha(opacity=50); -moz-opacity:0.5; opacity: 0.5;\"></div><div align='center' style=\"vertical-align:middle; position:absolute; top:"+params['positionY2']+"; left:"+params['positionX2']+"; width:"+params['divWidth2']+";  height:"+params['divHeight2']+";  background-color:red; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:10px; display:none; z-index:100;\"><img src=\""+params['imgPath']+""+params['imgSrc']+"\" align=\"absmiddle\"/> <font size='"+params['divTextSize']+"'><b><i><br />"+params['divText']+"</i></b></font></div></div>");
//    document.write("<div id=\"ajx_flag\" style=\"'background-color:#ffffff;color:red;position:absolute;width:100px;top:100;left:200;height:100px;filter:alpha(opacity=50);-moz-opacity:0.5;opacity: 0.5;'\"><img src=\""+params['imgPath']+""+params['imgSrc']+"\" align=\"absmiddle\"/> <font size='"+params['divTextSize']+"'><b><i><br />"+params['divText']+"</i></b></font></div>");
}

//création de l'objet HTTPRequest utilisé dans la page
var req = new CreateXMLHTTPRequestObject();

function toggleIndicator(flag) {	document.getElementById("ajx_flag").style.display=flag ? "block" : "none"; document.getElementById("ajx_flag2").style.display=flag ? "block" : "none"; }

function sendHTTP(URL,GETparams,innerHTMLid) {
	req.setAsynchronous();	//synchronisation de l'envoi/reception des données
	req.setIndicatorFunction(toggleIndicator);	//fonction à executer pour suivre l'etat de la transaction
	req.getFileGet(URL,GETparams);
	// listener : si on a donné un ID c'est qu'on va renvoyer du HTML ; sinon c'est du javascript
	if (innerHTMLid) {	setTimeout("checkHTMLResponse('"+innerHTMLid+"')", 200);	} else {	setTimeout("checkJSResponse()", 200);	}
}


function sendHTTPPOST(URL,POSTparams,innerHTMLid) {
	req.setAsynchronous();	//synchronisation de l'envoi/reception des données
	req.setIndicatorFunction(toggleIndicator);	//fonction à executer pour suivre l'etat de la transaction
	req.getFilePost(URL,POSTparams);
	// listener : si on a donné un ID c'est qu'on va renvoyer du HTML ; sinon c'est du javascript
	if (innerHTMLid) {	setTimeout("checkHTMLResponse('"+innerHTMLid+"')", 200);	} else {	setTimeout("checkJSResponse()", 200);	}
}

function checkHTMLResponse(IHid) {
	//attends une réponse sous forme de code HTML à insérer à l'id IHid
	if(!req.hasResponse()) {  setTimeout("checkHTMLResponse('"+IHid+"')", 200);  return;  }
	var a = req.getResponse(); 	req.validateRequest();
	var b = eval("document.getElementById('"+IHid+"')");	b.innerHTML=a;
}

function checkJSResponse() {
	//attends une réponse sous forme de code Javascript
	if(!req.hasResponse()) {  setTimeout("checkJSResponse()", 200);  return;  }
	var a = req.getResponse(); 	req.validateRequest();	eval(a);
}


function getFormToString(formName,fields) {
	// crée la chaîne GET à partir des éléments d'un formulaire, listés dans un tableau (optionnel)
	// ex : getFormToString('form1',['champ1','champ2'])  => "&champ1=test&champ2=truc"
	// si on ne précise pas de champs, tous ceux du formulaire seront concaténés
	var result="";
	var f=eval("document."+formName);
	fields=fields?fields:'';

	switch (fields.length) {
	  case 0 :	for (i=0; i<f.length; i++) {  result+=f[i].name!=''?_getFieldValue(f[i]):'';  } return(result);  break;
	  case 1 :	fld=eval("f."+fields); return _getFieldValue(fld);  break;
	  default :	for (i=0; i<fields.length; i++) {  fld=eval("f."+fields[i]);  result+=_getFieldValue(fld);  } return(result);
 	}
}
function _getFieldValue(fld) {
  //interne à getFormToString; renvoie la valeur en fonction du type de champ ; si c'est un checkbox il gère le statut coché.
  if (fld.type=="checkbox") {  return "&"+fld.name+"="+(fld.checked?fld.value:'');  } else {  return "&"+fld.name+"="+fld.value;  }
}
