function getXhr() {

    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) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    } else { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
        xhr = false;
    }
    return xhr;
}

// Lance le calcul du classement d'une saison
// force_journee : vaut 1 si on force le calcul de la première à la dernière journée
//                 vaut 0 si on se base sur la fourchette saisie par l'utilisateur
// nécéssaire car lors d'un changement de saison, on regénère les <select> de journee_debut et journee_fin
// et on ne peut pas garantir leur valeur dès le lancement de cette fonction pendant le laps de temps de génération
function generer_classement(force_journee) {

    var xhr = getXhr();

    xhr.onreadystatechange = function() {

        if (xhr.readyState == 4 && xhr.status == 200) {
            new_classement = xhr.responseText;
            document.getElementById("classement").innerHTML = new_classement;
        }
    }

    // préparation du POST
    xhr.open("POST", "public/related/ajax_classement.php", true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // argument en POST
    if (force_journee == 1) {
        journee_debut = 1;
        journee_fin = 0;
        mois_debut = 0;
        mois_fin = 0;
        minute_debut = 1;
        minute_fin = 100;
        premiers = 0;
    } else {
        journee_debut = document.getElementsByName("journee_debut")[0].options[document.getElementsByName("journee_debut")[0].selectedIndex].value;
        journee_fin = document.getElementsByName("journee_fin")[0].options[document.getElementsByName("journee_fin")[0].selectedIndex].value;
        mois_debut = document.getElementsByName("mois_debut")[0].options[document.getElementsByName("mois_debut")[0].selectedIndex].value;
        mois_fin = document.getElementsByName("mois_fin")[0].options[document.getElementsByName("mois_fin")[0].selectedIndex].value;
        minute_debut = document.getElementsByName("minute_debut")[0].options[document.getElementsByName("minute_debut")[0].selectedIndex].value;
        minute_fin = document.getElementsByName("minute_fin")[0].options[document.getElementsByName("minute_fin")[0].selectedIndex].value;
        premiers = document.getElementsByName("premiers")[0].options[document.getElementsByName("premiers")[0].selectedIndex].value;
    }

    id_pays = document.getElementsByName("id_pays")[0].value;
    division = document.getElementsByName("division")[0].value;
    choix_saison = document.getElementsByName("choix_saison")[0].options[document.getElementsByName("choix_saison")[0].selectedIndex].value;
    domext = document.getElementsByName("domext")[0].options[document.getElementsByName("domext")[0].selectedIndex].value;
    ordre  = document.getElementsByName("ordre")[0].options[document.getElementsByName("ordre")[0].selectedIndex].value;
    reglev = document.getElementsByName("reglev")[0].options[document.getElementsByName("reglev")[0].selectedIndex].value;

    if (!(undefined===document.getElementsByName("regleb")[0])) {
        regleb = document.getElementsByName("regleb")[0].options[document.getElementsByName("regleb")[0].selectedIndex].value;
    } else {
        regleb = 1;
    }

    post  = "choix_saison=" + choix_saison;
    post += "&id_pays=" + id_pays;
    post += "&division=" + division;
    post += "&journee_debut=" + journee_debut;
    post += "&journee_fin=" + journee_fin;
    post += "&mois_debut=" + mois_debut;
    post += "&mois_fin=" + mois_fin;
    post += "&minute_debut=" + minute_debut;
    post += "&minute_fin=" + minute_fin;
    post += "&domext=" + domext;
    post += "&ordre=" + ordre;
    post += "&reglev=" + reglev;
    post += "&regleb=" + regleb;
    post += "&dernier=" + dernier;
    post += "&premiers=" + premiers;
    xhr.send(post);

}

function maj_select_journee() {
    generer_select_journee('div_select_journee_debut');
    generer_select_journee('div_select_journee_fin');
}

function maj_select_minute() {
    generer_select_temps('div_select_minute_debut');
    generer_select_temps('div_select_minute_fin');
}

function maj_select_mois() {
    generer_select_mois('div_select_mois_debut');
    generer_select_mois('div_select_mois_fin');
}

/* On a besoin de savoir si la dernière modification touche la fourchette de journées ou la fourchette de mois */
var dernier = 'journee';
function derniere_modif(type) {
    dernier = type;
}

// Génère le <select> de minute_debut ou de minute_fin en fonction de la saison (avant 1989 c'est figé)
// Note : en appelant la fonction 'generer_select_minute' on fait bugguer js de IE6...
function generer_select_temps(minute) {

    var xhr = getXhr();

    xhr.onreadystatechange = function() {

        if (xhr.readyState == 4 && xhr.status == 200) {
            minute_select = xhr.responseText;
            document.getElementById(minute).innerHTML = minute_select;
        }
    }

    // préparation du POST
    xhr.open("POST", "public/related/ajax_select_nb_minute.php", true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // argument en POST
    id_pays = document.getElementsByName("id_pays")[0].value;
    division = document.getElementsByName("division")[0].value;
    choix_saison = document.getElementsByName("choix_saison")[0].options[document.getElementsByName("choix_saison")[0].selectedIndex].value;

    post  = "choix_saison=" + choix_saison;
    post += "&id_pays=" + id_pays;
    post += "&division=" + division;
    post += "&choix_minute=" + minute;
    xhr.send(post);

}

// Génère le <select> de journee_debut ou de journee_fin en fonction de la saison
function generer_select_journee(journee) {

    var xhr = getXhr();

    xhr.onreadystatechange = function() {

        if (xhr.readyState == 4 && xhr.status == 200) {
            journee_select = xhr.responseText;
            document.getElementById(journee).innerHTML = journee_select;
        }
    }

    // préparation du POST
    xhr.open("POST", "public/related/ajax_select_nb_journee.php", true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // argument en POST
    id_pays = document.getElementsByName("id_pays")[0].value;
    division = document.getElementsByName("division")[0].value;
    choix_saison = document.getElementsByName("choix_saison")[0].options[document.getElementsByName("choix_saison")[0].selectedIndex].value;

    post  = "choix_saison=" + choix_saison;
    post += "&id_pays=" + id_pays;
    post += "&division=" + division;
    post += "&choix_journee=" + journee;
    xhr.send(post);

}

// Génère le <select> de liste des x premiers (18 ou 20) en fonction de la saison
function generer_select_premiers() {

    var xhr = getXhr();

    xhr.onreadystatechange = function() {

        if (xhr.readyState == 4 && xhr.status == 200) {
            premiers_select = xhr.responseText;
            document.getElementById('div_select_premiers').innerHTML = premiers_select;
        }
    }

    // préparation du POST
    xhr.open("POST", "public/related/ajax_select_premiers.php", true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // argument en POST
    id_pays = document.getElementsByName("id_pays")[0].value;
    division = document.getElementsByName("division")[0].value;
    choix_saison = document.getElementsByName("choix_saison")[0].options[document.getElementsByName("choix_saison")[0].selectedIndex].value;

    post  = "choix_saison=" + choix_saison;
    post += "&id_pays=" + id_pays;
    post += "&division=" + division;
    xhr.send(post);

}

// Génère le <select> de mois_debut ou de mois_fin en fonction de la saison
function generer_select_mois(mois) {

    var xhr = getXhr();

    xhr.onreadystatechange = function() {

        if (xhr.readyState == 4 && xhr.status == 200) {
            mois_select = xhr.responseText;
            document.getElementById(mois).innerHTML = mois_select;
        }
    }

    // préparation du POST
    xhr.open("POST", "public/related/ajax_select_mois.php", true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // argument en POST
    id_pays = document.getElementsByName("id_pays")[0].value;
    division = document.getElementsByName("division")[0].value;
    choix_saison = document.getElementsByName("choix_saison")[0].options[document.getElementsByName("choix_saison")[0].selectedIndex].value;

    post  = "choix_saison=" + choix_saison;
    post += "&id_pays=" + id_pays;
    post += "&division=" + division;
    post += "&choix_mois=" + mois;
    xhr.send(post);

}

// Lance la génération de l'image de l'évolution des classements
function generer_graphique($url) {

		equipe1      = document.getElementsByName("equipe1")[0].options[document.getElementsByName("equipe1")[0].selectedIndex].value;
    equipe2      = document.getElementsByName("equipe2")[0].options[document.getElementsByName("equipe2")[0].selectedIndex].value;

    get  = "equipe1=" + equipe1;
    get += "&equipe2=" + equipe2;

    var loader = new ImageLoader($url + '?' + get);

    setStatusText(' chargement...', 'status');

    loader.loadEvent = function(url, image) {
        setStatusText('', 'status');
        putImage(image);
    }

    loader.load();

}

function getRadioValue(radio) {
	for (var i = 0; i < document.getElementsByName(radio).length; i++) {
		if (document.getElementsByName(radio)[i].checked) {
			return document.getElementsByName(radio)[i].value;
		}
	}
}


// Lance la génération de l'image de l'évolution des classements
function generer_graphique_comparaison_saison($url) {

		equipe1      = document.getElementsByName("equipe1")[0].options[document.getElementsByName("equipe1")[0].selectedIndex].value;
    equipe2      = document.getElementsByName("equipe2")[0].options[document.getElementsByName("equipe2")[0].selectedIndex].value;
		saison1      = document.getElementsByName("saison1")[0].options[document.getElementsByName("saison1")[0].selectedIndex].value;
    saison2      = document.getElementsByName("saison2")[0].options[document.getElementsByName("saison2")[0].selectedIndex].value;
		mode = getRadioValue('mode');

    get  = "equipe1=" + equipe1;
    get += "&equipe2=" + equipe2;
    get += "&saison1=" + saison1;
    get += "&saison2=" + saison2;
    get += "&mode=" + mode;

    var loader = new ImageLoader($url + '?' + get);

    setStatusText(' chargement...', 'status');

    loader.loadEvent = function(url, image) {
        setStatusText('', 'status');
        putImage(image);
    }

    loader.load();

}


/**
* A simple JavaScript image loaderimage loader
* @author Cuong Tham
* @url
* @usage
* var loader = new ImageLoader('IMAGE_URL');
* //set event handler
* loader.loadEvent = function(url, image){
*   //action to perform when the image is loaded
*   document.body.appendChild(image);
* }
* loader.load();
*/

//source: http://snipplr.com/view.php?codeview&id=561
// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling)
{
  bubbling = bubbling || false;
  if(window.addEventListener)   { // Standard
    element.addEventListener(type, expression, bubbling);
    return true;
  } else if(window.attachEvent) { // IE
    element.attachEvent('on' + type, expression);
    return true;
  } else return false;
}

var ImageLoader = function(url){
  this.url = url;
  this.image = null;
  this.loadEvent = null;
};

ImageLoader.prototype = {
  load:function(){
    this.image = document.createElement('img');
    var url = this.url;
    var image = this.image;
    var loadEvent = this.loadEvent;
    addListener(this.image, 'load', function(e){
      if(loadEvent != null){
        loadEvent(url, image);
      }
    }, false);
    this.image.src = this.url;
  },
  getImage:function(){
    return this.image;
  }
};

function putImage(image) {
    var h = document.getElementById('imageHolder');
    while (h.firstChild) {
        h.removeChild(h.firstChild);
    }

    h.appendChild(image);
}

function setStatusText(text, id){
  var t = document.getElementById(id);
  while(t.firstChild){
    t.removeChild(t.firstChild);
  }

  t.appendChild(document.createTextNode(text));
}

function loadImage2(){

    var loader = new ImageLoader('http://localhost/Abyssum/poteau-rentrant/public/related/gif_liste_classement.php?first=1');

    setStatusText('chargement de l\'image...', 'status');

    loader.loadEvent = function(url, image) {
        setStatusText('', 'status');
        putImage(image);
    }

    loader.load();

}
