// retourne un objet xmlHttpRequest.
// méthode compatible entre tous les navigateurs (IE/Firefox/Opera)
var _xmlHttp = null;
var liste;
var listeAffichee;
var compteur;
var navigateur;
var indice;
var id_image;

function getXMLHTTP(){
  var xhr=null;
  if(window.XMLHttpRequest) // Firefox et autres
  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 supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  }
  return xhr;
}

function execution_script(adresse, conteneur){
  if(_xmlHttp&&_xmlHttp.readyState!=0){
    _xmlHttp.abort();
  }
  _xmlHttp=getXMLHTTP();
  if(_xmlHttp){
    //appel à l'url distante
    _xmlHttp.open("GET",adresse,true);
	_xmlHttp.onreadystatechange=function() {
      if(_xmlHttp.readyState==4&&_xmlHttp.responseXML) {
		//Traitement de la réponse xml et stockage des paramètres dans une variable globale
        resultat = traiteReponseXML(_xmlHttp.responseXML);
		liste=resultat[2];
		afficheur=resultat[0];
		vitesse=resultat[1];
		if (liste.length>0)
		{
			//Chargement de toutes les images de la liste
			for(i=0;i<liste.length;++i)
			{
				element=document.createElement("img");
				source = document.createAttribute("src");
				source.nodeValue = afficheur+"?id="+liste[i]+"&taille=original";
				note = document.createAttribute("alt");
				note.nodeValue = "bandeau_superieur";
				id_image="image_bandeau"+i;
				identifiant = document.createAttribute("id");
				identifiant.nodeValue = id_image;
				element.setAttributeNode(source);
				element.setAttributeNode(note);
				element.setAttributeNode(identifiant);
				document.getElementById(conteneur).appendChild(element);
				document.getElementById(id_image).style.display="none";
			}
			//Affichage de la première image de la liste
			indice=Math.floor((Math.random())*(liste.length));
			id_image="image_bandeau"+indice;
			document.getElementById(id_image).style.display="";
			listeAffichee=new Array();
			listeAffichee.push(indice);
			navigateur=detectionNavigateur();
			compteur=1;
			//Lancement de la fonction de défilement d'image
			if (liste.length>1)
			{
				setInterval('changementImage();',vitesse*1000);
			}
		}
      }
    };
    // envoi de la requête
    _xmlHttp.send(null)
  }
}

// Transformation XML en tableau
function traiteReponseXML(xmlDoc) {
  var options = xmlDoc.getElementsByTagName('option');
  var optionsListe = new Array();
  for (var i=0; i < options.length; ++i) {
    optionsListe.push(options[i].firstChild.data);
  }
  var afficheurXml = xmlDoc.getElementsByTagName('afficheur');
  var afficheur=afficheurXml[0].firstChild.data;
  var vitesseXml = xmlDoc.getElementsByTagName('vitesse');
  var vitesse=vitesseXml[0].firstChild.data;
  var resultat=new Array();
  resultat.push(afficheur);
  resultat.push(vitesse);
  resultat.push(optionsListe);
  return resultat;
}

function changementImage()
{
	//Affichage de l'image suivante
	ok=false;
	while (!ok)
	{
		indice=Math.floor((Math.random())*(liste.length));
		dejaAffiche=false;
		index=0;
		while ((!dejaAffiche) && (index<listeAffichee.length))
		{
			if (listeAffichee[index]==indice)
			{
				dejaAffiche=true;
			}
			index=index+1;
		}
		ok=!dejaAffiche;
	}
	opacity(id_image, 100, 0, 1000);
	id_image_suivant="image_bandeau"+indice;
	setTimeout('opacity("'+id_image_suivant+'", '+0+', '+100+', '+1000+')',1050);
	setTimeout("ChangerImage()",1100);
	listeAffichee.push(indice);
	compteur=compteur+1;
	if (compteur==liste.length)
	{
		compteur=0;
		listeAffichee.splice(0,7);
	}
}

function ChangerImage()
{
	//alert('plopch');
	document.getElementById(id_image).style.display="none";
	id_image="image_bandeau"+indice;
	document.getElementById(id_image).style.display="";
}

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}


function opacity(id, opacStart, opacEnd, millisec) {
	//alert('plopop');
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

function detectionNavigateur()
{
	var IE6 = false;
	var IE7 = false;
    var FIREFOX2 = false;
	var FIREFOX = false;
    var NETSCAPE7 = false;
	var NETSCAPE = false;
    var OPERA9 = false; 
	var OPERA = false;
    var AUTRE = false;
    var strChUserAgent = navigator.userAgent;
    var intSplitStart = strChUserAgent.indexOf("(",0);
    var intSplitEnd = strChUserAgent.indexOf(")",0);
    var strChStart = strChUserAgent.substring(0,intSplitStart);
    var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
    var strChEnd = strChUserAgent.substring(strChEnd);
    if(strChMid.indexOf("MSIE 7") != -1)
    return "IE7";
    else if(strChMid.indexOf("MSIE 6") != -1)
    return "IE6";
    else if(strChEnd.indexOf("Firefox/2") != -1)
    return "FIREFOX2";
    else if(strChEnd.indexOf("Firefox") != -1)
    return "FIREFOX";
    else if(strChEnd.indexOf("Netscape/7") != -1)
    return "NETSCAPE7";
    else if(strChEnd.indexOf("Netscape") != -1)
    return "NETSCAPE";
    else if(strChStart.indexOf("Opera/9") != -1)
    return "OPERA9";
    else if(strChStart.indexOf("Opera") != -1)
    return "OPERA";
    else
    return "AUTRE";
}
