//=============================================================================
// Fonctions globales Ajax
// Copyright 2006 - M-tech Industries
// Version        : 0.7
// Derniere modif : HJ 30/05/07 - Passage en POST
// Projets ref	  : CRA, UMP, Lookimmo (XML)
//=============================================================================

function createOutputDiv() {
	// Cree un DIV pour transit resultats onreadystatechnage
	if (!testOutputDiv()) {
		var div=document.createElement("DIV");
		div.id="ajaxOutputTmp";
		div.style.display="none";
		//div.style.zIndex=99; // Pour debug
		div.innerHTML="";
		document.body.appendChild(div);
	}
}

function testOutputDiv() {
	if (document.getElementById('ajaxOutputTmp')) { return true }
	return false;
}

function getHTTPObject()
{
  var xmlhttp = false;
  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/
 
  /* on essaie de creer l'objet si ce n'est pas deja fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }
 
  return xmlhttp;
}

function sendData(method, url, data) {
/* Envoie des donnees a l'aide d'XmlHttpRequest?
* @param string methode d'envoi ['GET'|'POST']
* @param string url
* @param string donnees a envoyer sous la forme var1=value1&var2=value2... */
 var xmlhttp = getHTTPObject();
 if (!xmlhttp) { return false; }
 
 if (method == "GET") {
  if (data == 'null') {
   xmlhttp.open("GET", url, true); //ouverture asynchrone
  } else {
   xmlhttp.open("GET", url+"?"+data, true); }
  xmlhttp.send(null);
 }
 else if(method == "POST") {
  xmlhttp.open("POST", url, true); //ouverture asynchrone
  xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  xmlhttp.send(data); }
 return true;
}

function getAjaxResponse(ajaxID) {
// Param 1 : id pour Select Case de AJAX_Parser.asp
// Param 2 : fonction de traitement une fois la reponse asynchrone Ajax recue
// Param 3 ˆ n : parametres personnalises
	createOutputDiv();
	theParams="id="+ajaxID;
	theNxtFnct=getAjaxResponse.arguments[1];
	for (var i=2; i<getAjaxResponse.arguments.length; ++i) {
		theParams+="&arg"+i+"="+getAjaxResponse.arguments[i];
	}
	//xmlhttp.open("GET", homePath+"config/includes/AJAX_Parser.asp?"+theParams,true);
	xmlhttp.open("POST", homePath+"config/includes/AJAX_Parser.asp",true);
	//Placer xmlhttp.onreadystatechange entre xmlhttp.OPEN et xmlhttp.SEND
	// http://www.monsieurn.com/billets/170/les-problemes-de-xmlhttprequest-dans-les-differents-navigateurs
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				if (xmlhttp.responseText != "") { document.getElementById('ajaxOutputTmp').innerHTML=xmlhttp.responseText; eval(theNxtFnct); }
			} else {
//alert("err : " + xmlhttp.responseText);
				document.getElementById('ajaxOutputTmp').innerHTML="Erreur: code status " + xmlhttp.status + " " + xmlhttp.statusText;
			}
		}
	};
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	xmlhttp.send(theParams);
}

function getAjaxXMLResponse(ajaxID) {
// Param 1 : id pour Select Case de AJAX_Parser.asp
// Param 2 : fonction de traitement une fois la reponse asynchrone Ajax recue
// Param 3 ˆ n : parametres personnalises
	theParams="id="+ajaxID;
	theNxtFnct=getAjaxXMLResponse.arguments[1];
	for (var i=2; i<getAjaxXMLResponse.arguments.length; ++i) {
		theParams+="&arg"+i+"="+getAjaxXMLResponse.arguments[i];
	}
	xmlhttp.open("GET", homePath+"config/includes/AJAX_Parser.asp?"+theParams,true);
	//Placer xmlhttp.onreadystatechange entre xmlhttp.OPEN et xmlhttp.SEND
	// http://www.graphiks.net/cours/ajax/71-xmlhttprequest-dit-ajax.html
	// http://www.xul.fr/xml-ajax.html
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				if (window.XMLHttpRequest) {
					G_AjaxXML = xmlhttp.responseXML;
				} else if (window.ActiveXObject) {
					G_AjaxXML = new ActiveXObject("Microsoft.XMLDOM");
					G_AjaxXML.loadXML(xmlhttp.responseText);
				}				
				eval(theNxtFnct);
				//}
			} else {
				G_AjaxXML="Erreur: code status " + xmlhttp.status + " " + xmlhttp.statusText;
			}
		}
	};
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	xmlhttp.send(null);
}

function getElementTextNS(prefix, local, parentElem, index) { // [HJ 02/05/07]
// retrieve text of an XML document element, including elements using namespaces
	var result = "";
	if (prefix && isIE) {
		// IE/Windows way of handling namespaces
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	} else {
		// the namespace versions of this method 
		// (getElementsByTagNameNS()) operate
		// differently in Safari and Mozilla, but both
		// return value with just local name, provided 
		// there aren't conflicts with non-namespace element
		// names
		result = parentElem.getElementsByTagName(local)[index];
	}
	if (result) {
		// get text, accounting for possible
		// whitespace (carriage return) text nodes 
		if (result.childNodes.length > 1) {
			return result.childNodes[1].nodeValue;
		} else {
			if(result.firstChild!=null) {
				return result.firstChild.nodeValue; // marche pour CDATA aussi ?
			//if (result.firstChild.data) return result.firstChild.data;
			} else {
//alert(result.firstChild);
			}
		}
	} else {
		return "n/a";
	}
}


/* CrŽation de l'objet : */
var xmlhttp = getHTTPObject(); 

var G_AjaxXML=null; // XML de retour Ajax