/*  ===============================================================================================  *\
        Mémorisation référence à l'objet XMLHttpRequest
\*  ===============================================================================================  */
var xmlHttp = createXmlHttpRequestObject();
var id = 1;
var CurrIdJeu = 0;
var EnCours = 0;

// Variable utilisée pour l'éditeur
var CurrArea = new Object();

// Création de l'objet XMLHttpRequest
function createXmlHttpRequestObject()
{
  var xmlHttp;

  try
    {xmlHttp = new XMLHttpRequest();}
  catch (e)
    {
    try
      {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}
    catch (e)
      {xmlHttp = false;}
    }

  if (!xmlHttp)
    alert("Error de création XMLHttpRequest.");
  else
    return xmlHttp;
}

/*  ===============================================================================================
        Charge les images déroulantes sur la liste des jeux, manif, presse
            (pas réellement utile en Ajax, mais pour tester)
\*  ===============================================================================================  */
function chargeimage()
{
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) // seulement si xmlHttp n'et pas busy
  {
    // retrieve the name typed by the user on the form
    //name = encodeURIComponent(document.getElementById("myName").value);
    // execute the quickstart.php page from the server
    //xmlHttp.open("GET", "quickstart.php?name=" + name, true);
    // define the method to handle server responses
    //xmlHttp.onreadystatechange = handleServerResponse;
    // make the server request
    //xmlHttp.send(null);
    //alert (id);
    xmlHttp.open("GET", "DonneImage.php?id=" + id.toString(), true);
    xmlHttp.onreadystatechange = handleServerResponse;
    xmlHttp.send(null);
    id = id + 1;
    if (id == 6)
      {id = 1};
  }
  else
  {
    //alert ("On relance");
    setTimeout('ChargeImage()', 1000);  // si busy, nouvel essai après 1 seconde
  }
}

// Evénement du xmlHttp.
function handleServerResponse()
{
  if (xmlHttp.readyState == 4)    // move forward only if the transaction has completed
  {
    //alert ("handleServerResponse 4");
    //alert (xmlHttp.status);
    if (xmlHttp.status == 200)  // status of 200 indicates the transaction completed successfully
    {
      //alert (xmlHttp.responseXML);
      //alert (xmlHttp.responseText);
      xmlResponse = xmlHttp.responseXML;  // extract the XML retrieved from the server
      //alert (xmlResponse.documentElement);
      xmlDocumentElement = xmlResponse.documentElement;   // obtain the document element (the root element) of the XML structure
      //helloMessage = xmlDocumentElement.firstChild.data;      // get the text message, which is in the first child of the document element
      CurrImage = xmlHttp.responseText;
      //alert (helloMessage);
      document.getElementById("divImage").innerHTML = CurrImage;        // update the client display using the data received from the server
      //alert("Image Chargée");
      setTimeout('chargeimage()', 2000);   // restart sequence
      //alert(CurrImage);
    }
    else  // a HTTP status different than 200 signals an error
    {
      alert("There was a problem accessing the server: " + xmlHttp.statusText + ', ' + xmlHttp.status);
    }
  }
}

/*  ===============================================================================================
        CHAT. 
\*  ===============================================================================================  */
function chargeChat(parametres)
{
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) // seulement si xmlHttp n'et pas busy
  {
    //xmlHttp.open("GET", "MiniChatServer.php", true);
    xmlHttp.open("POST", "MiniChatServer.php", true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //xmlHttp.setRequestHeader("Content-Type", "charset=ISO-8859-1");
    
    xmlHttp.onreadystatechange = function() { handleServerMiniChat(parametres); };
    //alert ("Parametres avant send : <" + parametres + ">");
    xmlHttp.send(parametres);
  }
  else
  {
    setTimeout('ChargeChat("")', 1000);  // si busy, nouvel essai après 1 seconde
  }
}

// Evénement du xmlHttp.
function handleServerMiniChat(paramPost)
{
  if (xmlHttp.readyState == 4)
  {
    if (xmlHttp.status == 200)
    {
      //alert(paramPost); 
      
      xmlResponse = xmlHttp.responseXML;
      xmlDocumentElement = xmlResponse.documentElement;

      var allItems = xmlDocumentElement.getElementsByTagName("message");
      var allmess = "";
      var ColorTexte = "#E94B28";
      for (var i=0;i<allItems.length;i++)
        {
           if (ColorTexte == "#E94B28")
                {ColorTexte = "#754CE9"}
           else
                {ColorTexte = "#E94B28"}
           var itemElm = allItems[i];
           var dateElm = itemElm.getElementsByTagName("datemess").item(0);
           var dateTxt = dateElm.firstChild.nodeValue;
           var pseuElm = itemElm.getElementsByTagName("pseudo").item(0);
           var pseuTxt = pseuElm.firstChild.nodeValue;
           var messElm = itemElm.getElementsByTagName("chatmess").item(0);
           var messTxt = messElm.firstChild.nodeValue;
           var unmess = "<strong><span style=\"color: #E93475\">" + dateTxt + ", </span>";
           unmess += "<span style=\"color: " + ColorTexte + "\">" +  pseuTxt + " :  </strong>";
           unmess += messTxt + "</span><br>";

           // Cette partie remplace les caractères spéciaux. Peut être mieux à faire ?
           unmess = unmess.replace(/&amp;lt;/g, "<");
           unmess = unmess.replace(/&lt;/g, "<");
           unmess = unmess.replace(/&amp;gt;/g, ">");
           unmess = unmess.replace(/&gt;/g, ">");
           unmess = unmess.replace(/&amp;quot;/g, "\"");
           unmess = unmess.replace(/&quot;/g, "\"");
           allmess += unmess;
        }
      document.getElementById("resultchat").innerHTML = allmess; 

      var maintenant = new Date();
      document.getElementById("infoDate").innerHTML = '<i>Liste des messages au ' 
            + maintenant.toLocaleString() + '</u>'; 

      if (paramPost == "")
        {setTimeout('chargeChat("")', 60000);};
    }
    else
    {
      alert("Problème pour accéder au server: " + xmlHttp.statusText + ', ' + xmlHttp.status);
    }
  }
}

/* function called when the Send button is pressed */
function sendMessage()
{
  // save the message to a local variable and clear the text box
  var oCurrentMessage = document.getElementById("idMessage");
  var currentUser = document.getElementById("idPseudo").value;
  var currentCateg = document.getElementById("idCateg").value;
  var currentElem  = document.getElementById("idElem").value;
  
  if (trim(oCurrentMessage.value) != "" && trim(currentUser) != "")
  {
    // if we need to send and retrieve messages
    params =  "pseudo=" + encodeURIComponent(currentUser) + 
              "&message=" + encodeURIComponent(oCurrentMessage.value) + 
              "&categ=" + encodeURIComponent(currentCateg) +
              "&elem=" + encodeURIComponent(currentElem);  
    //params =  "pseudo=" + currentUser + "&message=" + oCurrentMessage.value;  
    //alert("Parametres dans sendMessage : <" + params + ">");
    chargeChat(params);
    oCurrentMessage.value = "";   
  }
}
//Un autre anniversaire, un autre 50 ans : celui de la NASA !!!
/* removes leading and trailing spaces from the string */
function trim(s)
{
    return s.replace(/(^\s+)|(\s+$)/g, "")
}

/*  ===============================================================================================
        Récupération du jeu sélectionné dans "détente"
\*  ===============================================================================================  */
function RecupImage(IdImage)
{
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) // seulement si xmlHttp n'et pas busy
  {
    CurrIdJeu = IdImage;
    xmlHttp.open("GET", "RecupImage.php?id=" + IdImage.toString(), true);
    xmlHttp.onreadystatechange = handleServerRecupImage;
    xmlHttp.send();
  }
  else
  {
    setTimeout('RecupImage(' + IdImage.toString() + ')', 1000);  // si busy, nouvel essai après 1 seconde
  }
}

function GotoPage(NomPage, IdPage)
{
  location.href=NomPage + IdPage;
}

function handleServerRecupImage(parametres)
{
  if (xmlHttp.readyState == 4)
  {
    if (xmlHttp.status == 200)
    {
      xmlResponse = xmlHttp.responseXML;
      xmlDocumentElement = xmlResponse.documentElement;
      CurrImage = xmlHttp.responseText;
      //alert(CurrImage);
      TextImage = '<a href="FicheJeu.php?jeu=' + CurrIdJeu + '"><IMG SRC="images/jeux/' + CurrImage + '" height="150"></a>';
      //alert(TextImage);
      document.getElementById("selectjeu").innerHTML = TextImage;
    }
    else 
    {
      alert("There was a problem accessing the server: " + xmlHttp.statusText + ', ' + xmlHttp.status);
    }
  }
}


/*  ===============================================================================================
        Les jeux retournés. 
\*  ===============================================================================================  */
function RecupGrilleJeu(parametre)
{
  //alert(EnCours);
  if (parametre == 0)
    {EnCours = 0;}

  if (EnCours == 0)   // On ne lance pas la fonction si une instance de celle-ci est en cours
  {
      if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) // seulement si xmlHttp n'et pas busy
      {
        EnCours = 1;  // La fonction est lancée
        xmlHttp.open("POST", "JeuServer.php", true);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        
        xmlHttp.onreadystatechange = function() { handleServerRecupGrilleJeu(parametre); };
        xmlHttp.send("case=" + parametre.toString());
      }
      else
      {
        setTimeout('RecupGrilleJeu(' + parametre.toString() + ')', 1000);  // si busy, nouvel essai après 1 seconde
      }
  }
}


// Evénement du xmlHttp.
function handleServerRecupGrilleJeu(parametres)
{
  if (xmlHttp.readyState == 4)
  {
    if (xmlHttp.status == 200)
    {
      xmlResponse = xmlHttp.responseXML;
      //alert(xmlHttp.responseText);    // Intéressant, permet de voir s'il existe des erreurs coté serveur
      xmlDocumentElement = xmlResponse.documentElement;
      //alert(xmlDocumentElement);
      for (var i=1;i<21;i++)
        {
          var AllElm = xmlDocumentElement.getElementsByTagName("cellule" + i.toString());
          var itemElm = AllElm[0];
          var valeurElm = itemElm.getElementsByTagName("valeur").item(0);
          var valeurTxt = valeurElm.firstChild.nodeValue;
          document.getElementById("td" + i.toString()).innerHTML = valeurTxt; 
        }
        var AllElm = xmlDocumentElement.getElementsByTagName("controle");
        var itemElm = AllElm[0];

        // Gestion des cartes retournées
        //alert('Hello');
        var valeurElm = itemElm.getElementsByTagName("nbcartes").item(0);
        var nbcartes = valeurElm.firstChild.nodeValue;
        //alert(nbcartes);
        var valeurElm = itemElm.getElementsByTagName("carte1").item(0);
        var carte1 = valeurElm.firstChild.nodeValue;

        var valeurElm = itemElm.getElementsByTagName("carte2").item(0);
        var carte2 = valeurElm.firstChild.nodeValue;
        
        var valeurElm = itemElm.getElementsByTagName("nbok").item(0);
        var nbok = valeurElm.firstChild.nodeValue;
        var msg = '<p><b><i><u>Nb Trouvé :</u></i></b> ' + nbok.toString() + '</p>';
        
        var valeurElm = itemElm.getElementsByTagName("nbtest").item(0);
        var nbtest = valeurElm.firstChild.nodeValue;
        var msg = msg + '<p><b><i><u>Nb Test :</u></i></b> ' + nbtest.toString() + '</p>';
        
        document.getElementById("nbok").innerHTML = msg;
        
        var valeurElm = itemElm.getElementsByTagName("jeuselect").item(0);
        var jeuselect = valeurElm.firstChild.nodeValue;
        if (jeuselect != '.')
            {document.getElementById("jeuselect").innerHTML = '<b><i>' + jeuselect + '</i></b>';}
        else
            {document.getElementById("jeuselect").innerHTML = '';}

        var valeurElm = itemElm.getElementsByTagName("resultat").item(0);
        var resultat = valeurElm.firstChild.nodeValue;
        document.getElementById("resultat").innerHTML = resultat;
        
            EnCours = 0;    // La fonction est terminée
        if (nbcartes == 2)          // Si on a 2 cartes, il faut relancer la fonction pour les réinitialiser
        {
            if (carte1 == carte2)
                {coderetour = -2}
            else
                {coderetour = -1}
            setTimeout('RecupGrilleJeu(' + coderetour.toString() + ')', 2000);  
        }
    }
    else
    {
      alert("Problème pour accéder au server: " + xmlHttp.statusText + ', ' + xmlHttp.status);
    }
  }
}

function montreMenu(divId, menuId, sousMenuId) 
{
	if (document.getElementById) 
	{
		//alert('document.getElementById');
		//alert(document.getElementById(menuId).offsetTop);
		//alert(document.getElementById(menuId).scrollTop);
		//alert(document.getElementById(sousMenuId).offsetLeft);
		document.getElementById(sousMenuId).style.left = document.getElementById(menuId).offsetLeft;
		document.getElementById(sousMenuId).style.top = document.getElementById(divId).offsetTop + 30;
		document.getElementById(sousMenuId).style.display="block";
	} 
	else if (document.all) 
	{
		//alert('document.all');
		document.all[sousMenuId].style.left = document.all[MenuId].offsetLeft;
		document.all[sousMenuId].style.top = document.all[divId].offsetTop + 30;
		document.all[sousMenuId].style.display="block";
	} 
	else if (document.layers) 
	{
		//alert('document.layers');
		document.layers[sousMenuId].left = document.layers[MenuId].offsetLeft;
		document.layers[sousMenuId].top = document.layers[divId].offsetTop + 30;
		document.layers[sousMenuId].display="block";
	}
	setTimeout("cacheMenuTO('" + sousMenuId + "')", 3500);
}

function cacheMenuTO(id) 
{
	if (document.getElementById) 
	{
		document.getElementById(id).style.display="none";
	} 
	else if (document.all) 
	{
		document.all[id].style.display="none";
	} 
	else if (document.layers) 
	{
		document.layers[id].display="none";
	}
}

function cacheMenu(id) 
{
	/*
	if (document.getElementById) 
	{
		document.getElementById(id).style.display="none";
	} 
	else if (document.all) 
	{
		document.all[id].style.display="none";
	} 
	else if (document.layers) 
	{
		document.layers[id].display="none";
	}
	*/
}

// Fonctions pour l'éditeur
function addText(instextD, instextF)
{
   //var mess = document.coolsus.message;
   var mess = CurrArea;
   //IE support
   if (document.selection) {
      mess.focus();
      sel = document.selection.createRange();
      sel.text = instextD + sel.text + instextF;
      document.coolsus.focus();
   }
   //MOZILLA/NETSCAPE support
   else if (mess.selectionStart || mess.selectionStart == "0") {
      var startPos = mess.selectionStart;
      var endPos = mess.selectionEnd;
      var chaine = mess.value;
      mess.value = chaine.substring(0, startPos) + instextD + chaine.substring(startPos, endPos) + instextF  + chaine.substring(endPos, chaine.length);
      mess.focus();
   } else {
      mess.value += instext;
      mess.focus();
   }
}

function storeCaret(text) {
   if (text.createTextRange) text.caretPos = document.selection.createRange().duplicate();
}

function storeForm(textEl) {
   document.currentForm = textEl;
   //alert(textEl.name);
   CurrArea = textEl;
   //alert("CurrArea défini : " + CurrArea.name);
}

function Affiche() {
   alert("Salut");
}
