//$$$$$$$$$$$$$$$$$ XML PARSER CLASS $$$$$$$$$$$$$$$$$$$
/*
 simple xml parser
  usage :

var toto = new XMLParser;
toto.parseUrl('references.xml');
alert(toto.getXmlAsText());

ou bien :

var obj = toto.getRootNode();
alert(obj.nodeName);

*/


var XMLParser = function(){
//****************
//  PRIVATE VARS
//****************
var myUrl = '';
var myIsIE = true;
var myRequest = false;
var myXmlAsText = ''
//****************
//  PUBLIC VARS
//****************


//****************
// PRIVATE METHODS
//****************
var mCheckUserAgent=function(){
 if(document.getElementById && document.all){
 	 return true; // ie6
 	} else {
 	return false;
 }
}
//---------------------------------
	//
//---------------------------------
var getAjxObj=function(){
var obj ;
if (window.XMLHttpRequest){
    obj = new XMLHttpRequest();
    if(obj.overrideMimeType){obj.overrideMimeType('text/xml');}
 } else if (window.ActiveXObject) { 
    try {
      obj = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) {
      try  {
        obj = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (e) { 
      obj = false ;
      }
     } // fin de catch (e)
} // fin if
return obj;
}
//---------------------------------
	//
//---------------------------------
var makeRequest=function(){
myRequest = getAjxObj();
if (! myRequest) {
 throw new Error("Impossible to create object XMLHttpRequest ! \n" + myRequest);
 return 0;
  }
// on passe la requête :
myRequest.onreadystatechange = function(){
	 if(myRequest.readyState != 4){return 0;}
	
	// if (myRequest.status == 200 || myRequest.status == 0 || myRequest.status == undefined){ 
	if (myRequest.status == 200 || location.protocol == 'file:'){
             myXmlAsText = myRequest.responseText;
		} else {
		 	throw new Error("Request failed " + myRequest.status);}
	};
myRequest.open("GET", myUrl, true);
try { 
	myRequest.send(null);
  } catch (e) {
       throw new Error("Impossible to send request \n" + myRequest);
   }
}

//****************
// PUBLIC METHODS
//****************
//---------------------------------
	//
//---------------------------------
this.parseUrl = function(url){	
	myUrl = url;
	myIsIE = mCheckUserAgent();
	makeRequest();
}
//---------------------------------
	//
//---------------------------------
this.getXmlAsText=function(){
	return myXmlAsText;
}
//---------------------------------
	//
//---------------------------------
this.getXmlAsObj=function(){
if (!myIsIE){
	if(!myRequest){
	throw new Error("Echec de la requete \n" + myRequest);
	}
	return myRequest.responseXML;
} else {
	var temp = new ActiveXObject("Microsoft.XMLDOM");
	temp.loadXML(myXmlAsText);
	return temp;
	}
}
//---------------------------------
	//
//---------------------------------
this.getRootNode=function(){
    return this.getXmlAsObj().documentElement;
}
//---------------------------------
	//
//---------------------------------
this.selectNode=function(xpathexpr){
	// TODO
  }
//---------------------------------
	//
//---------------------------------  
}
//$$$$$$$$$$$$$$$$$ FIN XML PARSER $$$$$$$$$$$$$$$$$$$
