// renvoi un httprequest en fonction du navigateur
function getXMLHTTP() {
  var xhr = null;
  if(window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) { // Internet Explorer
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) {
      try {
	xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e1) {
	xhr = null;
      }
    }
  }
  else { // XMLHttpRequest non supporte par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  }

  return xhr;
}

function parcoursArbre(arbre,father) {

  while (father.childNodes.length>0) {
    father.removeChild(father.firstChild);
  }

  for (var i = 0; i<arbre.childNodes.length; i++) {
    var Elt= arbre.childNodes[i];
    if (Elt.nodeType!=3) {
      if (Elt.tagName=="input" && document.all && Elt.attributes[0].nodeName == "type" && Elt.attributes[0].nodeValue == "radio") {
	var contenu="<"+Elt.tagName+" ";
	for (var k=0; k<Elt.attributes.length; k++) {
	  if (Elt.attributes[k].specified) {
	    contenu+=Elt.attributes[k].nodeName+"='"+Elt.attributes[k].nodeValue+"' ";
	  }
	}
	contenu+=">";
	var newElt = document.createElement(contenu);
      }
      else {
	var newElt = document.createElement(Elt.tagName);
	for (var j=0; j<Elt.attributes.length; j++) {
	  if (Elt.attributes[j].specified) {
	    newElt.setAttribute(Elt.attributes[j].nodeName,Elt.attributes[j].nodeValue)
	  }
	}
      }
      father.appendChild(newElt);
      parcoursArbre(arbre.childNodes[i],newElt);
    } else {
      father.appendChild(document.createTextNode(arbre.childNodes[i].nodeValue));
    }	
  }
}

function getAjaxFile(fichier,Elt,Meth,Param, callback, htmlCallback) {
    var xhr=getXMLHTTP();
    var zoomElt = null;
    if (Elt != null) {
	zoomElt=document.getElementById(Elt);
    }
    xhr.open(Meth, fichier, true);
    xhr.onreadystatechange = function() {
	if(xhr.readyState==4){
	    if (xhr.status == 200) {
		if (Elt != null) {
		    parcoursArbre(xhr.responseXML,zoomElt);
		    zoomElt.style.display="";
		}
		else {
		    if (callback != null) {
			if(htmlCallback == null) {
			    callback(xhr.responseXML);
			}
			else {
			    var res = document.createElement('div');
			    parcoursArbre(xhr.responseXML, res);
			    callback(res);
			}
		    }
		    else
			alert(xhr.responseText);
		}  
	    }
	}
    };
    if (Param != null) xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send(Param);
}

