var ajaxMode;
var ajaxPath;

// ________________________________________ moteur chargement AJAX
//___ url : ulr du fichier XML ou autre à charger
//___ todo : fonction à éxécuter après le chargement
//___ ddiv : contenant

function ajaxLoadXML(url, todo, ddiv) 
{
    var http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
            // Voir la note ci-dessous à propos de cette ligne
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Abandon :( Impossible de créer une instance XMLHTTP');
        return false;
    }
    http_request.open('GET', ajaxPath+'getXML.php?xml='+escape(url)+'&mode='+ajaxMode, true);
    //http_request.open('GET', 'getXML.php?xml=rss.xml', true);
    //http_request.open('GET', url , true);
    http_request.onreadystatechange = function() { todo(http_request, ddiv, url); };
    http_request.send(null);
}

// ________________________________________ récupère une valeur de contenu XML
//___ node : noeud courant
//___ path : chemin du tag à récupérer, eg. channel/0/title/0

function xmlData( node, path)
{
	var i, tab, sz, xml;
	tab = path.split('/');
	sz = tab.length;
	xml = node;
	//alert(path);
	for(i=0; i<sz; i+=2)
	{
		if(xml && xml.getElementsByTagName(tab[i])) xml = xml.getElementsByTagName(tab[i]).item(tab[i+1]);
	}
	if(xml.firstChild) return xml.firstChild.data;
	return '';
}

// ________________________________________ récupère un noeud XML
//___ node : noeud courant
//___ path : chemin du tag à récupérer, eg. channel/0/title/0

function xmlNode( node, path)
{
	var i, tab, sz, xml;
	tab = path.split('/');
	sz = tab.length;
	xml = node;
	//alert(path);
	for(i=0; i<sz; i+=2)
	{
		xml = xml.getElementsByTagName(tab[i]).item(tab[i+1]);
	}
	if(xml) return xml;
	return '';
}


// ________________________________________ récupère un attribut de contenu XML
//___ node : noeud courant
//___ path : chemin du tag à récupérer, eg. channel/0/title/0
//___ attr : attribut

function xmlAttr( node, path, attr)
{
	var i, tab, sz, xml;
	tab = path.split('/');
	sz = tab.length;
	xml = node;
	//alert(path);
	for(i=0; i<sz; i+=2)
	{
		xml = xml.getElementsByTagName(tab[i]).item(tab[i+1]);
	}
	if(xml) return xml.getAttribute(attr);
	return '';
}

// ________________________________________ récupère un noeud XML
//___ node : noeud courant
//___ path : chemin du tag à récupérer, eg. channel/0/title/0

function xmlNode( node, path)
{
	var i, tab, sz, xml;
	tab = path.split('/');
	sz = tab.length;
	xml = node;
	for(i=0; i<sz; i+=2)
	{
		if(i+2<sz) xml = xml.getElementsByTagName(tab[i]).item(tab[i+1]);
		else xml = xml.getElementsByTagName(tab[i]);
	}
	if(xml) return xml;
	return null;
}

// _________________________________ parse du path

function parsePath(url)
{
	var http = url.split('/');
	var parsePath = new Array();
	var p;
	parsePath[0] = '';
	parsePath[1] = http[http.length-1];
	for(p=0; p<http.length-1; p++)
	{
		parsePath[0] += http[p]+'/';
	}
	return parsePath;
}

// __________________________________ isArray
 function isFunction(a)
 {
      return typeof a == 'function';
 }
 function isObject(a)
 {
     return (typeof a == 'object' && !!a) || isFunction(a);
 }
 function isArray(a)
 {
  return isObject(a) && a.constructor == Array;
 }

// _________________________________ récupère un flux HTML
 
 function ajaxGetHTML(http_request, ddiv, flux) 
{
    if (http_request.readyState == 4) 
	{
        if (http_request.status == 200) 
		{
			//__________________________________________________________
			var txtdoc = http_request.responseText;
			//alert(txtdoc);
			if(txtdoc) jsObj(ddiv).innerHTML = txtdoc;
        } 
		else 
		{
           // alert('Un problème est survenu avec la requête.');
        }
    }
}
