/* ----------------------------------------------------------------------- */
/* Les scripts ci-dessous sont nécéssaires à l'execution des routines AJAX */
/* ----------------------------------------------------------------------- */
initAJAX = function(params) {
	params=params?params:new Array(0);
	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };

	//définition du calque indicateur
	param_default("imgPath", "");
	param_default("imgSrc","clock.gif");
	param_default("divWidth", "100%");
	param_default("divBgColor", "#FFFFCC");
	param_default("divBorder", "1px solid silver");
	param_default("divTextColor", "#FF3333");
	param_default("divText", "traitement...");
	
    document.write("<div id=\"ajx_flag\" style=\"position:absolute; top:1px; left:1px; width:"+params['divWidth']+";  background-color:"+params['divBgColor']+"; border:"+params['divBorder']+"; color:"+params['divTextColor']+"; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; padding:3px; display:none; z-index:100;\"><img src=\""+params['imgPath']+""+params['imgSrc']+"\" align=\"absmiddle\"/> "+params['divText']+"</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"; }

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;  }
}
