
var xmlhttp;

//fonction de creation d'un objet xmlHttpRequest necessaire a la communication Ajax
function createXmlHttpRequest(){

	// code for Mozilla, etc.
	if (window.XMLHttpRequest){
		xmlhttp = new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject){
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	return xmlhttp;
}

//fonction chargement des sous comptes avec appel d'une fonction au retour
function loadSubaccounts(urlAction, xmlhttp, nodeBusinessAccountList, nodeBusinessSubaccountList) {

	xmlhttp = createXmlHttpRequest();

	//verification qu'il existe une instance de l'objet xmlhttp
	if (xmlhttp != null && nodeBusinessAccountList != null){

		var accountId = nodeBusinessAccountList.options[nodeBusinessAccountList.selectedIndex].value;

		// d?finition de la fonction de call-back
		xmlhttp.onreadystatechange= function(){ processBusinessSubaccountReply(xmlhttp, nodeBusinessSubaccountList, null); };

		//ecriture de l'url d'appel : action + variable code postal
		var url = urlAction + accountId;

		// 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 processBusinessSubaccountReply (xmlhttp, nodeBusinessSubaccountList, fctCallBack){

	// 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 sous comptes
			if(null != nodeBusinessSubaccountList){
				writeListSubaccounts(xmlhttp, nodeBusinessSubaccountList);
			}
			else window.alert("liste déroulante des sous comptes non trouvée");

			//appel de la fonction voulue
			if (fctCallBack != null){
				fctCallBack.apply();
			}
		}
	}
}

//place la liste des sous comptes dans la comboBox voulue
function writeListSubaccounts(xmlhttp, nodeBusinessSubaccountList){




	// Effacer la liste
	nodeBusinessSubaccountList.options.length = 0;

	// Ajouter les nouveaux
	var nodeXmlSubaccounts = xmlhttp.responseXML.documentElement;
	var listeSubAccounts = nodeXmlSubaccounts.children;
	var nodeXmlSubaccount = nodeXmlSubaccounts.firstChild;



	if(null == nodeXmlSubaccount) {

		document.getElementById("selectSousComptesLabel").style.display="none";
		nodeBusinessSubaccountList.style.display="none";

	}
	else {
		document.getElementById("selectSousComptesLabel").style.display="";
		nodeBusinessSubaccountList.style.display="";
		nodeBusinessSubaccountList.options.length = 0;
		var i = 0;
		
		while (nodeXmlSubaccount != null)
		{
			
			if(nodeXmlSubaccount.firstChild != null){	
				var value = "";
				if(nodeXmlSubaccount.firstChild.firstChild != null && nodeXmlSubaccount.firstChild.firstChild.nodeValue != null) value = nodeXmlSubaccount.firstChild.firstChild.nodeValue;
				var value2 = "";
				if(nodeXmlSubaccount.lastChild != null && nodeXmlSubaccount.lastChild.firstChild != null) value2 = nodeXmlSubaccount.lastChild.firstChild.nodeValue;;
				if("" != value2) nodeBusinessSubaccountList.options[i++] = new Option(value2, value);
			}


			nodeXmlSubaccount = nodeXmlSubaccount.nextSibling;
		}
	}
}


