// Déclaration de la fonction de Callback
// + ----------------------------------------------------------------------------------
// + afficherResultats
// + Affiche ou non le conteneur en fonction du résultat de la recherche
// + ----------------------------------------------------------------------------------
function afficherResultats(obj) {
     // Construction des noeuds
     var tabResult = obj.responseXML.getElementsByTagName('resultat');
     document.getElementById('zoneResultats').innerHTML = '';
     if (tabResult.length > 0) {
          // On définit la hauteur de la liste en fonction du nombre de rsultats et de la hauteur de ligne
          if(tabResult.length < 10)
             var hauteur = tabResult.length * 22 + 22;
          else
            var hauteur = 220; 
          with(document.getElementById('zoneResultats').style) {
               visibility = 'visible';
               height = hauteur + 'px';
          };
          for (var i = 0; i < tabResult.length; i++) {
               resultat = tabResult.item(i); 
               var egt = document.createElement('li');
               var lnk = document.createElement('a');
               var texte = document.createTextNode(resultat.getAttribute('titre'));
               lnk.appendChild(texte);
               lnk.setAttribute('href', resultat.getAttribute('url'));
               lnk.setAttribute('title', resultat.getAttribute('titre'));
               egt.appendChild(lnk);
               document.getElementById('zoneResultats').appendChild(egt);
          }
     }
     else {
          document.getElementById('zoneResultats').style.visibility = 'hidden';
     }
}
// Déclaration de la fonction qui lance la recherche
function loadData() {
      document.getElementById('zoneResultats').innerHTML = '<br><table width="100%"><tr><td align="center"><img src="images/spin.gif">&nbsp;<b>Recherche en cours</b></td></tr></table>';   
      with(document.getElementById('zoneResultats').style) {
           visibility = 'visible';
           height = '50px';
      };
     // Création de l'objet
     var XHR = new XHRConnection();
     XHR.appendData("foo", document.getElementById('foo').value);
     // On soumet la requête
     // Signification des paramètres:               
     //      + On indique à l'objet qu'il faut appeler le fichier search.php
     //      + On utilise la méthode POST, adaptée l'envoi d'information
     //      + On indique quelle fonction appeler lorsque l'opération a été effectuée
     XHR.sendAndLoad( 'livesearch_suggest.php', "POST", afficherResultats);
}

// + --------------------------------------------------------------------------------------
// + XHRConnection
// + V1.2
// + Thanh Nguyen, http://www.sutekidane.net
// + 14.06.2005
// + http://creativecommons.org/licenses/by-nc-sa/2.0/fr/deed.fr
// + --------------------------------------------------------------------------------------
function XHRConnection(pdebug) {
    
    // + ----------------------------------------------------------------------------------
    var conn = false;
    var debug = (pdebug == true || pdebug == false) ? pdebug : false;
    var datas = new String();
    var areaId = new String();
    // Objet XML
    var xmlObj;
    // Type de comportement au chargement du XML
    var xmlLoad;
    
    // + ----------------------------------------------------------------------------------
    try {
        conn = new XMLHttpRequest();        
    }
    catch (error) {
        if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew XMLHttpRequest()\n\n' + error); }
        try {
            conn = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (error) {
            if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Microsoft.XMLHTTP")\n\n' + error); }
            try {
                conn = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (error) {
                if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Msxml2.XMLHTTP")\n\n' + error); }
                conn = false;
            }
        }
    }

    // + ----------------------------------------------------------------------------------
    // + setDebugOff
    // + Désactive l'affichage des exceptions
    // + ----------------------------------------------------------------------------------
    this.setDebugOff = function() {
        debug = false;
    };

    // + ----------------------------------------------------------------------------------
    // + setDebugOn
    // + Active l'affichage des exceptions
    // + ----------------------------------------------------------------------------------
    this.setDebugOn = function() {
        debug = true;
    };
    
    // + ----------------------------------------------------------------------------------
    // + resetData
    // + Permet de vider la pile des données
    // + ----------------------------------------------------------------------------------
    this.resetData = function() {
        datas = new String();
        datas = '';
    };
    
    // + ----------------------------------------------------------------------------------
    // + appendData
    // + Permet d'empiler des données afin de les envoyer
    // + ----------------------------------------------------------------------------------
    this.appendData = function(pfield, pvalue) {
        datas += (datas.length == 0) ? pfield+ "=" + escape(pvalue) : "&" + pfield + "=" + escape(pvalue);
    };
    
    // + ----------------------------------------------------------------------------------
    // + setRefreshArea
    // + Indique quel elment identifié par id est valoris lorsque l'objet XHR reoit une réponse
    // + ----------------------------------------------------------------------------------
    this.setRefreshArea = function(id) {
        areaId = id;
    };
    
    // + ----------------------------------------------------------------------------------
    // + createXMLObject
    // + Méthode permettant de créer un objet DOM, retourne la réfrence
    // + Inspiré de: http://www.quirksmode.org/dom/importxml.html
    // + ----------------------------------------------------------------------------------
    this.createXMLObject = function() {
        try {
                 xmlDoc = document.implementation.createDocument("", "", null);
                xmlLoad = 'onload';
        }
        catch (error) {
            try {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlLoad = 'onreadystatechange ';
            }
            catch (error) {
                if (debug) { alert('Erreur lors de la tentative de création de l\'objet XML\n\n'); }
                return false;
            }
        }
        return xmlDoc;
    }
    
    // + ----------------------------------------------------------------------------------
    // + Permet de définir l'objet XML qui doit être valorisé lorsque l'objet XHR reoit une réponse
    // + ----------------------------------------------------------------------------------
    this.setXMLObject = function(obj) {
        if (obj == undefined) {
                if (debug) { alert('Paramètre manquant lors de l\'appel de la méthode setXMLObject'); }
                return false;
        }
        try {
            //xmlObj = this.createXMLObject();
            xmlObj = obj;
        }
        catch (error) {
                if (debug) { alert('Erreur lors de l\'affectation de l\'objet XML dans la méthode setXMLObject'); }
        }
    }
    
    // + ----------------------------------------------------------------------------------
    // + loadXML
    // + Charge un fichier XML
    // + Entrées
    // +     xml                String        Le fichier XML à charger
    // +     callBack        Objet        Le nom de la fonction de callback
    // + ----------------------------------------------------------------------------------
    this.loadXML = function(xml, callBack) {
        if (!conn) return false;
        // Chargement pour alimenter un objet DOM
        if (xmlObj && xml) {
            if (typeof callBack == "function") {
                if (xmlLoad == 'onload') {
                    xmlObj.onload = callBack;
                }
                else {
                    xmlObj.onreadystatechange = function() {
                        if (xmlObj.readyState == 4) callBack()
                    }
                }
            }
            xmlObj.load(xml);
            return;
        }        
    }

    // + ----------------------------------------------------------------------------------
    // + sendAndLoad
    // + Connexion à la page désirée avec envoie des données, puis mise en attente de la réponse
    // + Entrées
    // +     Url                String        L'url de la page à laquelle l'objet doit se connecter
    // +     httpMode        String        La méthode de communication HTTP : GET, HEAD ou POST
    // +     callBack        Objet        Le nom de la fonction de callback
    // + ----------------------------------------------------------------------------------
    this.sendAndLoad = function(Url, httpMode, callBack) {
        httpMode = httpMode.toUpperCase();
        conn.onreadystatechange = function() {
            if (conn.readyState == 4 && conn.status == 200) {
                // Si une fonction de callBack a été définie
                if (typeof callBack == "function") {
                    callBack(conn);
                    return;
                }
                // Si une zone destinée à récupérer le résultat a été définie
                else if (areaId.length > 0){
                    try {
                        document.getElementById(areaId).innerHTML = conn.responseText;
                    }
                    catch(error) {
                        if (debug) { alert('Echec, ' + areaId + ' n\'est pas un objet valide'); }
                    }
                    return;
                }
            }
        };
        switch(httpMode) {
            case "GET":
                try {
                    Url = (datas.length > 0) ? Url + "?" + datas : Url;
                    conn.open("GET", Url);
                    conn.send(null);
                }
                catch(error) {
                    if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la méthode GET'); }
                    return false;
                }
            break;
            case "POST":
                try {
                    conn.open("POST", Url); 
                    conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    conn.send(datas);
                }
                catch(error) {
                    if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la mthode POST'); }
                    return false;
                }
            break;
            default :
                return false;
            break;
        }
        return true;
    };
    return this;
}



function popupWindowC(url,params) {
    if (params != null)
        window.open(url,'popupWindow',params)
    else
        window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=780,height=405,screenX=150,screenY=150,top=150,left=150')
}


function unavailableForOrder(){
    alert("Cet article ne peut pas être commandé pour le moment.");
    
    
}
