function xhr_call() {

	if (window.XMLHttpRequest) { 
		//cas des navigateurs récente qui intègre xmlhttprequest nativement
		xhr = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		//cas d'internet explorer <= 6 qui intègre xmlhttprequest sous form d'ActiveX
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}

	// la fonction de controle des réponses de xmlhttprequest
	xhr.onreadystatechange = function() {    
		if (xhr.readyState == 4 && xhr.status == 200 ) { 
			// le serveur a répondu ok
			xml = xhr.responseXML.documentElement;
			// lecture du xml de la réponse du serveur
			if( !xml || !xml.childNodes[0].firstChild) {
				// si le xml est mal formé ou absent c'est qu'il y a sans doute une erreur de syntaxe
				alert(xhr.responseText);
				// on affiche la réponse recu pour debugger
				return;
			}               
	
			for(var i=0;i<xml.childNodes.length;i++) {
				//pour chaque noeud xml on décode les actions renvoyés
				if(xml.childNodes[i].firstChild ) {
					data = xml.childNodes[i].firstChild.data;
				}
	
				for (var j=0; j<xml.childNodes[i].attributes.length; j++) {
					if(xml.childNodes[i].attributes[j].name == "type"){
						type = xml.childNodes[i].attributes[j].value;
					}
					else if(xml.childNodes[i].attributes[j].name == "id"){
						id = xml.childNodes[i].attributes[j].value;
					}
				}
	
				switch( type ) {
				// en fonction du type d'action renvoyé on execute l'action sur la page web
					case 'assign':
						document.getElementById( id ).innerHTML = data;
						//modifie en dom le contenu de la balise html id par la chaine assigné par la fonction xhr_assign
					break;
					case 'script':
						eval( data );
						//execute le javascript dans le cas d'un xhr_script
					break;
				}
			}
		}
	}
	
	xhr_uri = '/xhr_ws.php?xhr_func='+encodeURIComponent(arguments[0]);
	//construction de l'url get, encodage du nom de la fonction serveur
	for (i=1; i<arguments.length; i++) {
		xhr_uri += '&xhr_args[]=' + encodeURIComponent(arguments[i]) ;
		//puis encodage des paramètres variables
	}

	xhr.open( 'GET', xhr_uri, true );
	// ouverture de la requete
	xhr.send(null);
	// envoi de la requete
} 
