xhr = null;
function getXhr()
{
    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; 
    }
}   
getXhr();

// cette variable va nous servir a savoir si il faut ou non afficher le status de chargement d'ajax.
affiche = true;

function go_cal(url, zone, id_cal, val_affiche)
{
    if (xhr.readyState != 0 && xhr.readyState != 4)
    {
        setTimeout('go_cal("'+url+'", "'+zone+'", "'+id_cal+'", '+val_affiche+')', 10);
        return;
    }
    getXhr();
    affiche = val_affiche;
    var temp = return_display(id_cal)
    if (temp != "")
        url = url+'&display='+temp;
    next = false;
    cible = document.getElementById(zone);
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
        if ((xhr.readyState >= 1 && xhr.readyState <= 3) && affiche == true)
        {
//          alert("xhr.readyState = "+xhr.readyState);
            cible.innerHTML = "Chargement en cours.";
        }
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if(xhr.readyState == 4/* && xhr.status == 200*/){
            leselect = xhr.responseText;
            // On se sert de innerHTML pour rajouter les options a la liste
            cible.innerHTML = leselect;
        }
    }
    // Ici on va voir comment faire du post
    xhr.open("GET",url,true);
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    xhr.send(null);
}

/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(url, zone, val_affiche)
{
    if (xhr.readyState != 0 && xhr.readyState != 4)
    {
        setTimeout('go("'+url+'", "'+zone+'", '+val_affiche+')', 10);
        return;
    }
    getXhr();
    affiche = val_affiche;
//              alert("next = "+next);
    cible = document.getElementById(zone);
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
        if ((xhr.readyState >= 1 && xhr.readyState <= 3) && affiche == true)
        {
//                          alert("xhr.readyState = "+xhr.readyState);
            cible.innerHTML = "Chargement en cours.";
        }
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if(xhr.readyState == 4){
            leselect = xhr.responseText;
            // On se sert de innerHTML pour rajouter les options a la liste
            cible.innerHTML = leselect;
            var nb = 0;
            var temp;
//                      for (nb = 1; temp = document.getElementById('cible'+nb); nb++)
//                      if (temp != null)
//                      {
//                          alert("on a cible"+nb+"qui existe sur la page");
//                          setTimeout('go("'+temp.name+'", "'+temp.value+'")', 500);
//                      }
        }
    }

    // Ici on va voir comment faire du post
    xhr.open("GET",url,true);
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    xhr.send(null);
}

function my_submit(url, zone, id_start, id_stop, val_affiche)
{
    if (xhr.readyState != 0 && xhr.readyState != 4)
    {
        setTimeout('my_submit("'+url+'", "'+zone+'", "'+id_start+'", "'+id_stop+'", '+val_affiche+')', 10);
        return;
    }
    getXhr();
    affiche = val_affiche;
    var nb = 0;
    var post = '';
    var temp, nom, valeur;
    for (nb = id_start; nb <= id_stop; nb++)
    {
        temp = document.getElementById(nb);
        nom = temp.name;
        valeur = temp.value;
        if (nb != id_start)
            post += '&';
        // on code tous les caracteres spéciaux dans un format URL
        post = post+nom+'='+escape(valeur);
    }
    
    cible = document.getElementById(zone);
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
        if ((xhr.readyState >= 1 && xhr.readyState <= 3) && affiche == true)
                {
//                      alert("xhr.readyState = "+xhr.readyState);
                    cible.innerHTML = "Chargement en cours.";
                }
        if(xhr.readyState == 4)
        {
            leselect = xhr.responseText;
            // On se sert de innerHTML pour afficher la page chargé.
            cible.innerHTML = leselect;
            var temp = document.getElementById('en-tete');
            if (temp != null)
                go(temp.name, temp.value, affiche);
            var temp = document.getElementById('cible');
            if (temp != null)
            // valeur de temp a afiner pour settimeout.
                go(temp.name, temp.value, affiche);
        }
    }
    // Ici on va voir comment faire du post
    xhr.open("POST",url,true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, l'id de l'auteur
    xhr.send(post);
}

function GetId(id)
{
    return document.getElementById(id);
}
var i=false; // La variable i nous dit si la bulle est visible ou non

function move(e)
{
  if(i == true)
  {  // Si la bulle est visible, on calcul en temps reel sa position ideale
    if (navigator.appName!="Microsoft Internet Explorer")
    { // Si on est pas sous IE
        GetId("curseur").style.left=(e.pageX + 5)+"px";
        GetId("curseur").style.top=(e.pageY + 10)+"px";
    }
    else
    {
      if(document.documentElement.clientWidth > 0)
      {
        GetId("curseur").style.left = 5 + event.x + document.documentElement.scrollLeft + "px";
        GetId("curseur").style.top = 10 + event.y + document.documentElement.scrollTop + "px";
      }
      else
      {
        GetId("curseur").style.left = 5 + event.x + document.body.scrollLeft + "px";
        GetId("curseur").style.top = 10 + event.y + document.body.scrollTop + "px";
      }
    }
  }
}

function montre(text) {
  if(i==false)
  {
      GetId("curseur").style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securité) on le rend visible.
      GetId("curseur").style.zIndex=100000; // Ajout pour mettre au dessus de tout
      GetId("curseur").innerHTML = text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
      i=true;
      move();
  }
}
function cache()
{
    if(i==true)
    {
        GetId("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
        i=false;
    }
}
document.onmousemove=move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.

function show_hide(id_bloc)
{
    var temp = document.getElementById(id_bloc);
    if (temp.style.display == 'none')
        temp.style.display = "block";
    else
        temp.style.display = 'none';
    var temp = document.getElementById("display");
    if (temp)
    {
        if (temp.value == 'none')
            temp.value = 'block';
        else
            temp.value = 'none';
    }
}

function    change_image(id_img, lien_img1, lien_img2)
{
    var temp = document.getElementById(id_img);
    var test = new Image();
    test.src = lien_img1;
    if (temp.src != test.src)
        temp.src = test.src;
    else
    {
        test = new Image();
        test.src = lien_img2;
        temp.src = test.src;
    }
}

function return_display(id_object)
{
    var temp = document.getElementById(id_object);
    return temp.style.display;
}

/* ce script va créer une case à cocher qui vas cocher toutes les autres case avec des conditions :
    - la case a cocher doit avoir l'id "id" et dois avoir la propriété : onClick="check_tous();"
    - les cases cibles doivent avoir pour id un chiffre (0 pour la premiere puis par ordre croissant sans doublons
      ni trou dans la suite) et chacune doit avoir la propriété suivante : onClick="is_tous();"
*/
function check_tous(id)
{
    var nb = 0;
    var temp;
    var recup = document.getElementById(id);
    if (recup.checked)
        for (nb = 0; (temp = document.getElementById(nb)); nb++)
            temp.checked = true;
    else
        for (nb = 0; (temp = document.getElementById(nb)); nb++)
            temp.checked = false;
}

function is_tous(id)
{
    var nb_check = 0;
    var nb = 0;
    var tot_checkbox = 0;
    var temp;
    var tous = document.getElementById(id);
    for (nb = 0; (temp = document.getElementById(nb)); nb++)
    {
        tot_checkbox++;
        if (temp.checked)
            nb_check++;
    }
    if (nb_check == tot_checkbox)
        tous.checked = true;
    else
        tous.checked = false;
}

function ChangeUrl(formulaire)
{
    if (formulaire.client.selectedIndex != 0)
        window.open("client/modifier.php?id="+formulaire.client.options[formulaire.client.selectedIndex].value,"clients","width=780,height=600");
    else 
        alert('Veuillez choisir une destination.');
}

function ChangeUrl2(formulaire)
{
    if (formulaire.nsociete.selectedIndex != 0)
        window.open("client/modifier.php?id="+formulaire.nsociete.options[formulaire.nsociete.selectedIndex].value,"clients","width=780,height=600");
    else 
        alert('Veuillez choisir une destination.');
}

function ChangeUrl3(formulaire)
{
    if (formulaire.client2.selectedIndex != 0)
        window.open("client/modifier.php?id="+formulaire.client2.options[formulaire.client2.selectedIndex].value,"clients","width=780,height=600");
    else 
        alert('Veuillez choisir une destination.');
}

function ChangeUrl4(formulaire)
{
    if (formulaire.nsociete2.selectedIndex != 0)
        window.open("client/modifier.php?id="+formulaire.nsociete2.options[formulaire.nsociete2.selectedIndex].value,"clients","width=780,height=600");
    else 
        alert('Veuillez choisir une destination.');
}

function champsok()
{
    if (document.formulaire.societe.value.length == 0 & document.formulaire.nom.value.length == "0" & document.formulaire.client.value == 0 & document.formulaire.nsociete.value == "0")
    {
        alert("Veuillez saisir une société");
        return false;
    }
    return true;
}

function liste(id_appelant, page, id_cible, id_hidden)
{
    var test = document.getElementById(id_appelant);
    go('ajax/'+page+'.php?search='+test.value+'&appelant='+id_appelant+'&hidden='+id_hidden, id_cible, false);
}

function hide_bloc(id)
{
    var bloc = document.getElementById(id);
    bloc.style.visibility = "hidden";
}

function show_bloc(id)
{
    var bloc = document.getElementById(id);
    bloc.style.visibility = "visible";
}

function option_to_text(id_text, id_select, id_hidden)
{
    var text = document.getElementById(id_text);    
    var _select = document.getElementById(id_select);
    var index_select = _select.selectedIndex;
    var hidden = document.getElementById(id_hidden);
    var option = _select.options[index_select];
//  alert("option.value = "+option.value+"\noption[text] = "+option['text']);
    if (option.value != 0)
        text.value = option['text'];
    else
        text.value = '';
        
    hidden.value = option.value;
    text.focus();
}

champ_client = 0;
champ_societe = 0;

function search_client(id_text, id_select)
{
	if (champ_client == 0)
		return;
	champ_client = 0;
	var list = document.getElementById(id_select);
	var text = document.getElementById(id_text);
	var len_liste = list.length;
	var i;
	if (text.value.length == 0)
	{
		list.selectedIndex = 0;
		return;
	}
	for (i = 0; i < len_liste; i++)
	{
		if (list.options[i].text.toLowerCase().indexOf(text.value.toLowerCase()) != -1)
		{
			list.selectedIndex = i;
			return;
		}
	}
	list.selectedIndex = 0;
}

function search_societe(id_text, id_select)
{
	if (champ_societe == 0)
		return;
	champ_societe = 0;
	var list = document.getElementById(id_select);
	var text = document.getElementById(id_text);
	var len_liste = list.length;
	var i;
	if (text.value.length == 0)
	{
		list.selectedIndex = 0;
		return;
	}
	// on cherche a partir du début de la chaine le texte recherché
	for (i = 0; i < len_liste; i++)
	{
		if (list.options[i].text.toLowerCase().indexOf(text.value.toLowerCase()) == 0)
		{
			list.selectedIndex = i;
			return;
		}
	}
	// si la premiere boucle ne retourne rien, on cherche dans toute la chaine
	for (i = 0; i < len_liste; i++)
	{
		if (list.options[i].text.toLowerCase().indexOf(text.value.toLowerCase()) != -1)
		{
			list.selectedIndex = i;
			return;
		}
	}
	list.selectedIndex = 0;
}

