<!--
/* ---------------------------------------------
 * Created:		20.02.2007
 * Revision:		15.03.2007
 * Author:		Philippe Jos
 * Copyrights:		Philippe Jos
 * Email:		jos.philippe@wanadoo.fr
 * ---------------------------------------------
 */

XML = new Object();

XML.CreateEmptyDocument = function() {
	if( XML.IsDOMDocument() ) return( document.implementation.createDocument( "", "", null ) );	
	else return( XML.CreateMSXMLParser() );								
};


XML.CreateMSXMLParser = function(){
	var msXMLParser = null;
	for (var i=5; i>0; i-- ) {
		try {
			msXMLParser = new ActiveXObject( "MSXML2.DOMDocument."+i+".0" );
			break;
		}
		catch(exp){}
	}
	return( msXMLParser );				
};

XML.IsDOMDocument = function() {
	return( document.implementation && document.implementation.createDocument );
};



XML.Load = function( uri ) {
	var xmlDoc = XML.CreateEmptyDocument();								

	xmlDoc.async = false;										
	xmlDoc.load( uri );										

	return( xmlDoc );										
};


XML.AsyncLoad = function( uri, callback ) {
	var xmlDoc = XML.CreateEmptyDocument();								
	xmlDoc.async = true;										
	
	if( XML.IsDOMDocument() ) xmlDoc.onload = function(){ callback( xmlDoc ) };			
	else xmlDoc.onreadystatechange = function(){ if(xmlDoc.readyState == 4) callback( xmlDoc ) };
		
 	xmlDoc.load( uri );										
};


XML.HTTPLoad = function( uri ){
	var request = new XMLHttpRequest();							
	request.open("GET", uri, false);							
	XML.SetRequestHeaders( request );							
	request.send(null);									

	if (XML.IsRequestReady(request) && XML.NoRequestError(request) )  			
		if (XML.IsResponseXML( request )) return( request.responseXML );				
};




XML.HTTPAsyncLoad = function( uri, callback ){
	var request = new XMLHttpRequest();							
	request.callback = callback;

	request.onreadystatechange = function() {						
		if (XML.IsRequestReady(request) && XML.NoRequestError(request) )  		
			if (XML.IsResponseXML( request )) callback( request.responseXML );					
	}

	request.open("GET", uri, true);								
	XML.SetRequestHeaders( request );							
	request.send(null);									
												
};


XML.IsRequestReady = function( request ) {
	return( request.readyState == 4 );
};


XML.NoRequestError = function( request ) {
	if( request.status == 200 ) return(true);							
	else alert("Error " + request.status + ": " + request.statusText);				
	
	return(false);
};

XML.IsResponseXML = function( request ) {
	return( request.getResponseHeader("Content-Type") == "application/xml" );
};

XML.SetRequestHeaders = function( request  ) {
	request.setRequestHeader("User-Agent", "XMLHttpRequest");
	request.setRequestHeader("Accept-Language", "fr");
	request.setRequestHeader("Content-Type", "application/xml");
};


