

//fonction de creation d'un objet xmlHttpRequest necessaire a la communication Ajax
function createXmlHttpRequest(){
	
	var xmlhttp;
	
	// code for Mozilla, etc.
	if (window.XMLHttpRequest){
		xmlhttp = new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject){
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	return xmlhttp;
}

function updateSenderForm(urlAction, urlActionCities, xmlhttp1, nodeSender, nodeRaisonSociale, nodeName, nodeFirstName, nodeAddress, nodeAddress2,
						 nodeZipcode, nodeCity, nodeCountry, nodePhone, nodeEmail, nodeCityCombo1, nodeCityText1){

	xmlhttp = createXmlHttpRequest();	
	if (xmlhttp !== null) {
		var idAddress = nodeSender.value;
		// d?finition de la fonction de call-back ^
		//TODO : supprimer
		xmlhttp.onreadystatechange= function(){ processSenderFormReply(urlActionCities, xmlhttp1, nodeSender, nodeRaisonSociale, nodeName, 
					nodeFirstName, nodeAddress, nodeAddress2, nodeZipcode, nodeCity, nodeCountry, nodePhone, nodeEmail, nodeCityCombo1, nodeCityText1); };

		//ecriture de l'url d'appel : action + variable code postal
		var url = urlAction + idAddress;

		// param?trage de la requ?te (true = asynchrone)
		xmlhttp.open("GET",url,true);
		// envoi de la requ?te
		xmlhttp.send(null);
	}
}


//fonction call-back renvoyant vers la fonction de traitement de mise a jour de la liste des villes de la comboBox
function processSenderFormReply (urlActionCities, xmlhttp1, nodeSender, nodeRaisonSociale, nodeName, nodeFirstName, nodeAddress, nodeAddress2,
						 nodeZipcode, nodeCity, nodeCountry, nodePhone, nodeEmail, nodeCityCombo1, nodeCityText1){
	

	// si xmlhttp est "loaded"
	if (xmlhttp.readyState==4){
		// si "OK"
		if (xmlhttp.status==200){
			//la reponse Ajax est arrive, on appelle la methode de MAJ de la liste des villes
			fillSenderForm(urlActionCities, xmlhttp1, nodeSender, nodeRaisonSociale, nodeName, nodeFirstName, nodeAddress, nodeAddress2,
						 nodeZipcode, nodeCity, nodeCountry, nodePhone, nodeEmail, nodeCityCombo1, nodeCityText1);
		}
	}
}

function fillSenderForm(urlActionCities, xmlhttp1, nodeSender, nodeRaisonSociale, nodeName, nodeFirstName, nodeAddress, nodeAddress2,
						 nodeZipcode, nodeCity, nodeCountry, nodePhone, nodeEmail, nodeCityCombo1, nodeCityText1) {

	// Effacer la liste des villes
	nodeSender.value = 'effacé';
	
	// Ajouter les nouvelles villes
	var nodeInfosSender = xmlhttp.responseXML.documentElement;
	var nodeXmlSender = nodeInfosSender.firstChild;
	var i = 0;
	while (nodeXmlSender !== null)
	{
		var value =" ";
		var node = nodeXmlSender.firstChild;
		if( null != node){
			value = node.nodeValue;
		}
		switch (i)
		{
			case 0 : nodeRaisonSociale.value = value; break;
			case 1 : nodeName.value = value; break;
			case 2 : nodeFirstName.value = value; break;
			case 3 : nodeAddress.value = value; break;
			case 4 : nodeAddress2.value = value; break;
			case 5 : nodeZipcode.value = value; break;
			case 6 : nodeCityText1.value = value; break;
			case 7 : nodeCountry.value = value; break;
			case 8 : nodePhone.value = value; break;
			case 9 : nodeEmail.value = value; break;
			
		} 		
		nodeXmlSender = nodeXmlSender.nextSibling;	
		i++;
	}
	
	//Mise a jour ajax de la liste des villes en fonction du code postal
	loadCity(urlActionCities, createXmlHttpRequest(), nodeZipcode, nodeCityCombo1, nodeCityText1);
}



