
// Creation objet XMLHttpRequest en fonction du navigateur :
function createXMLHttpRequest() 
{
   try { if (window.XMLHttpRequest) return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   try { return new XMLHttpRequest(); } catch(e) {}
	alert("Nous vous informons que votre navigateur ne prend pas en charge certaines fonctions\n" +
	"permettant le bon fonctionnement de l'ecocalculateur, ou bien ces fonctions sont\n" +
	"desactivees par un parametrage de securite de votre navigateur.");
   return null;
}
var ajax = createXMLHttpRequest(); // Objet AJAX

// Fonction qui lance la requete AJAX asynchrone.
function lanceRequeteAjaxAdmin(url_page) 
{	
	// TODO tester la gestion des erreurs
	// TODO timeout de requete AJAX	
	// Je ne lance pas une requete si une autre est deja active.
	if (ajax.readyState == 0 || ajax.readyState == 4 ) 
	{
		// recuperation de la valeur des champs du formulaire
		var listeChamps = ["conteneur", "volume", "distanceTrajetPrincipalSituationReference", "zoneTrajetPrincipalSituationReference", "bassin", "bateau", "distanceTrajetPrincipalSituationProjetFluvial", "distanceAcheminementSituationProjetFluvial", "zoneAcheminementSituationProjetFluvial", "methode"];
		var nbChamps = listeChamps.length;
		var valeurChamp;
		var chaineUrl = "" + url_page + "/pages/servlet/appelServletAjaxAdmin.jsp?";

		for(var i = 0; i < nbChamps; i++) {
			valeurChamp = eval ("document.forms[0]." + listeChamps[i] + ".value");
			chaineUrl = chaineUrl + listeChamps[i] + "=" + escape(valeurChamp);
			if (i < nbChamps - 1) {
				chaineUrl = chaineUrl + "&";
			}
		}

		ajax.open("GET",chaineUrl, true);
		ajax.onreadystatechange = reactAjaxAdmin; // Fait en sorte que la fonction reactAjax soit appelee quand la requete AJAX sera terminee
		ajax.send(null);
		
	}
}

// Fonction appelee automatiquement aux changements d'etats de la requete AJAX.
function reactAjaxAdmin() 
{
	// On ne reagit qu'a l'etat "requete terminee" (etat 4) :
	if (ajax.readyState == 4) 
	{
	
		if( ajax.status >= 300 ) 
		{
			// Une erreur est survenue :

		} 
		else
		{
		
		// on rend visible les div de resultat
		faireApparaitreResultat();
		
		// on rend invisible les div de saisie
		changeStyleSelonClasse("divSaisie","div","display","'none'");
		changeStyleSelonClasse("divSaisie","div","visibility","'hidden'");
		
		
			// Recupere la reponse AJAX
			if (window.ActiveXObject) {
				var repDOM = new ActiveXObject("Microsoft.XMLDOM");
		 		repDOM.async = true;
				repDOM.loadXML(ajax.responseText);
			} else if (window.XMLHttpRequest) {
				repDOM = ajax.responseXML;
			} 

			var repDocument = repDOM.documentElement;
			if(null==repDOM.documentElement){
				//si on est sous IE, on ne rentre pas dans le else suivant				
				/*
				var myhtml = '';
				myhtml += '<p>Aucun resultat</p>';
					
				div_resultat.innerHTML = myhtml;
				*/
			} else {
			
var tabResultat = new Array("energiePrimaireReference","energiePrimaireProjetFluvial","energiePrimaireGain","effetSerreReference","effetSerreProjetFluvial","effetSerreGain","coutInsecuriteReference","coutInsecuriteProjetFluvial","coutInsecuriteGain","coutPollutionReference","coutPollutionProjetFluvial","coutPollutionGain","coutEffetSerreReference","coutEffetSerreProjetFluvial","coutEffetSerreGain","coutCongestionReference","coutCongestionProjetFluvial","coutCongestionGain","coutBruitReference","coutBruitProjetFluvial","coutBruitGain","coutTotalReference","coutTotalProjetFluvial","coutTotalGain","divisionEmission","divisionCoutSociete","divisionCarburant","resultatConditionnement","resultatBassin","resultatVolume","resultatDistanceFluviale","texteEconomieTransportFluvial","texteDivision","texteCoutSociete","texteDivisionCoutSociete");
				document.getElementById('ecocalculateur_generationPdfForm_commonFields').innerHTML = '';/**05/02/2010 $$ Generation PDF*/
				for(var i=0, taille = tabResultat.length; i < taille; i+=1){
					// on recupere les span contenant les resultats a modifier
					chargerResultat(tabResultat[i]);
			}
		}
	}
	// curseur par defaut
	document.body.style.cursor='default';
}


function chargerResultat (champ) {
//var elements = document.getElementsByName(champ);
		var elements = getElementsByName_iefix('span',champ);
		if (elements) {
			/*for (var j = 0, nbElements = elements.length; j < nbElements; j+=1){
				var element_resultat = elements[j];
				element_resultat.innerHTML = '';
				var res = repDocument.getElementsByTagName(champ);
				var myhtml = '';
				myhtml = res[0].firstChild.nodeValue;
				if (window.ActiveXObject) {
					element_resultat.innerHTML = myhtml;
				} else if (window.XMLHttpRequest) {
					element_resultat.innerHTML += myhtml;
						
				} 
			}*/
			/**05/02/2010 $$ Generation PDF*/
			var pdfResultFormDiv = document.getElementById('ecocalculateur_generationPdfForm_commonFields');
			var myhtml = '';
			for (var j = 0, nbElements = elements.length; j < nbElements; j+=1){
				var element_resultat = elements[j];
				element_resultat.innerHTML = '';
				var res = repDocument.getElementsByTagName(champ);
				myhtml = '';
				myhtml = res[0].firstChild.nodeValue;
				if (window.ActiveXObject) {
					element_resultat.innerHTML = myhtml;
				} else if (window.XMLHttpRequest) {
					element_resultat.innerHTML += myhtml;
						
				} 
			}
			 var node = document.createElement("INPUT");
			 node.name = champ;
			 node.type = "hidden";
			 node.value = myhtml;
			 pdfResultFormDiv.appendChild(node);
			/** FIN -05/02/2010 $$ Generation PDF*/
		}
	}
}



// Fonction qui lance la requete AJAX asynchrone pour le distancier.
function lanceRequeteAjaxDistance(url_page) 
{	
	
	// TODO tester la gestion des erreurs
	// TODO timeout de requete AJAX	
	// Je ne lance pas une requete si une autre est deja active.
	if (ajax.readyState == 0 || ajax.readyState == 4 ) 
	{
		
	
		// recuperation de la valeur des champs du formulaire
		var listeChamps = ["portDepart", "portArrivee"];
		var nbChamps = listeChamps.length;
		var valeurChamp;
		var chaineUrl = "" + url_page + "/pages/servlet/appelServletAjaxDistance.jsp?";
	
		for(var i = 0; i < nbChamps; i++) {
			valeurChamp = eval ("document.forms[0]." + listeChamps[i] + ".value");
			chaineUrl = chaineUrl + listeChamps[i] + "=" + escape(valeurChamp);
			if (i < nbChamps - 1) {
				chaineUrl = chaineUrl + "&";
			}
		}
	
		ajax.open("GET",chaineUrl, true);
	
		ajax.onreadystatechange = reactAjaxDistance; // Fait en sorte que la fonction reactAjax soit appelee quand la requete AJAX sera terminee
		ajax.send(null);
		
	}
	
}




// Fonction appelee automatiquement aux changements d'etats de la requete AJAX.
function reactAjaxDistance() 
{
	// On ne reagit qu'a l'etat "requete terminee" (etat 4) :
	if (ajax.readyState == 4) 
	{
	
		if( ajax.status >= 300 ) 
		{
			// Une erreur est survenue :

		} 
		else
		{
		
		
			// Recupere la reponse AJAX
			if (window.ActiveXObject) {
				var repDOM = new ActiveXObject("Microsoft.XMLDOM");
		 		repDOM.async = true;
				repDOM.loadXML(ajax.responseText);
			} else if (window.XMLHttpRequest) {
				repDOM = ajax.responseXML;
			} 

			var repDocument = repDOM.documentElement;
			if(null==repDOM.documentElement){
				//si on est sous IE, on ne rentre pas dans le else suivant				
				/*
				var myhtml = '';
				myhtml += '<p>Aucun resultat</p>';
					
				div_resultat.innerHTML = myhtml;
				*/
			} else {
			
			
			var recupBassin = repDocument.getElementsByTagName("resultatBassin");
			var bassin = recupBassin[0].firstChild.nodeValue;
			document.forms[0].bassin.value = bassin;
			
			
			var res = repDocument.getElementsByTagName("resultatDistanceFluviale");
			var distance = res[0].firstChild.nodeValue;
			document.forms[0].distanceTrajetPrincipalSituationProjetFluvial.value = distance;
			document.forms[0].distanceTrajetPrincipalSituationProjetFluvial.focus();
			document.forms[0].distanceTrajetPrincipalSituationProjetFluvial.select();
			document.getElementById('portdepart').disabled=false;
			document.getElementById('portarrivee').disabled=false;
			document.getElementById('distancefluviale').readOnly=false;
			document.getElementById('boutoncalculerinput').disabled = false;
			document.body.style.cursor='default';
			}
		}
	}
	
}
