/*******************************************************************************
*
* Titre : Wuiki System
* Version : 1.00
* Auteur : Wuiki.com/Kyloo.com ~> Fanin David.
* Copyright : Wuiki.com/Kyloo.com ~> Tous les droits réservés.
* Licence : Voir notre espace spécialisé, http://licence.wuiki.com/contrat.htm
*
********************************************************************************
* Page : /wuiki-include/fonctions/commun.js
* Etat : OK.
*******************************************************************************/

/* Class **********************************************************************/

/* Wuiki Class Javascript - XMLHttpRequest *************************************
conteneur : id du conteneur qui accueil le résultat.
*******************************************************************************/
function wcjXMLHttpRequest(conteneur){
    this.conteneur = conteneur;
}
// Méthode "Obtenir".
wcjXMLHttpRequest.prototype.obteniR = function(){
    var xhr = null;
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else if(window.ActiveXObject){
        try{
            xhr = new ActiveXObject('Msxml2.XMLHTTP');
        }catch(e){
            try{
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            }catch(e){
                xhr = null;
            }
        }
    }
    if(xhr == null){
        alert('Votre navigateur ne prend pas en charge l\'objet XMLHTTPRequest. Téléchargez et installez en deux minutes FireFox ! http://www.mozilla-europe.org/fr');
        return false;
    }else{
        conteneur = this.conteneur;
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 3){
    			window.defaultStatus ='Patientez. Demande en cours au serveur.';
    		}else if(xhr.readyState == 4){
                if(xhr.status != 200){
        			window.defaultStatus ='Erreur';
                }else{
                    window.defaultStatus ='Terminé';
                    document.getElementById(conteneur).style.display ='block';
        			document.getElementById(conteneur).innerHTML = xhr.responseText;
                }
            }
    	}
        return xhr;
    }
}
// Méthode "Demander".
// methode : méthode d'envoi de la requète. POST ou GET.
// adresse : adresse cible de la requète.
// donnees : id du conteneur qui contient donnes de la requète.
wcjXMLHttpRequest.prototype.demandeR = function(methode,adresse,donnees){
    var xhr = this.obteniR();
    if(!xhr)return false;
    if(methode =='POST'){
        xhr.open('POST',adresse,true);
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.send(this.definiR(donnees));
    }else{
        if(donnees == null)xhr.open('GET',adresse,true);
        else xhr.open('GET',adresse+'?'+this.definiR(donnees),true);
        xhr.send(null);
    }
}
// Méthode "Définir".
// donnees : id du conteneur donnees à définir.
wcjXMLHttpRequest.prototype.definiR = function(donnees){
    donnees = document.getElementById(donnees);
    var donneesRep ='';
    var regexEsp = /%20/g;
    var donneesTab = new Array();
    var i2 = 0;
    function recur(donnees){
        for(var i = 0;i < donnees.childNodes.length;i++){
            if((donnees.childNodes[i].tagName =='INPUT'
                && (donnees.childNodes[i].type !='submit'
                    || ((donnees.childNodes[i].type =='checkbox' || donnees.childNodes[i].type =='radio') && donnees.childNodes[i].checked)))
            || donnees.childNodes[i].tagName =='TEXTAREA'){
                donneesTab[i2] = new Array();
                donneesTab[i2][0] = donnees.childNodes[i].name;
                donneesTab[i2][1] = donnees.childNodes[i].value;
                i2++;
            }else if(donnees.childNodes[i].tagName =='SELECT'){
                var sel = donnees.childNodes[i];
                donneesTab[i2] = new Array();
                donneesTab[i2][0] = sel.name;
                donneesTab[i2][1] = sel.options[sel.selectedIndex].value;
                i2++;
            }else{
                recur(donnees.childNodes[i]);
            }
        }
    }
    recur(donnees);
    var i2 = donneesTab.length;
    for(var i = 0;i < i2;i++){
        donneesRep += donneesTab[i][0]+'='+encodeURIComponent(donneesTab[i][1]).replace(regexEsp,'+');
        if(i < (i2 - 1))donneesRep +='&';
    }
    return donneesRep;
}
// Méthode "Fermer".
wcjXMLHttpRequest.prototype.fermeR = function(){
    document.getElementById(this.conteneur).style.display ='none';
    document.getElementById(this.conteneur).innerHTML ='';
}
/* Wuiki Class Javascript - Cookie *********************************************
nom : valeur de l'attribut name du cookie.
// CLASS NON UTILISé dans version 1.00.
*******************************************************************************/
function wcjCookie(nom){
    this.$nom = nom;
    var cookies = document.cookie;
    if(cookies =='')return;
    var cookiesTab = cookies.split(';');
    var cookie = null;
    for(var i = 0;i < cookiesTab.length;i++){
        if(cookiesTab[i].substring(0,nom.length+1) == (nom+'=')){
            cookie = cookiesTab[i];
            break;
        }
    }
    if(cookie == null)return;
    var cookieVal = cookie.substring(nom.length+1);
    var cookiePaireTab = cookieVal.split('&');
    for(var i = 0;i < cookiePaireTab.length;i++){
        cookiePaireTab[i] = cookiePaireTab[i].split(':');
        this[cookiePaireTab[i][0]] = decodeURIComponent(cookiePaireTab[i][1]);
    }
}
// Méthode "Ajouter".
// dureeDeVie : durée de vie du cookie (en jours). "0" pour effacement - "null" pour durée session.
// chemin : valeur de l'attribut path du cookie.
// domaine : valeur de l'attribut domain du cookie.
// securise : valeur de l'attribut secure du cookie.
wcjCookie.prototype.ajo = function(dureeDeVie,chemin,domaine,securise){
    var cookieVal ='';
    for(var propriete in this){
        if((propriete.charAt(0) =='$') || ((typeof this[propriete]) =='function'))continue;
        if(cookieVal !='')cookieVal +='&';
        cookieVal += propriete+':'+encodeURIComponent(this[propriete]);
    }
    var cookie = this.$nom+'='+cookieVal;
    if(dureeDeVie || dureeDeVie == 0)cookie +='; max-age='+(dureeDeVie*24*60*60);
    if(chemin)cookie +='; path='+chemin;
    if(domaine)cookie +='; domain='+domaine;
    if(securise)cookie +='; secure';
    document.cookie = cookie;
}
// Méthode "Effacer".
// chemin : valeur de l'attribut path du cookie.
// domaine : valeur de l'attribut domain du cookie.
// securise : valeur de l'attribut secure du cookie.
wcjCookie.prototype.eff = function(chemin,domaine,securise){
    for(var propriete in this){
        if((propriete.charAt(0) !='$') && (typeof this[propriete] !='function'))delete this[propriete];
    }
    this.ajo(0,chemin,domaine,securise);
}

/* Fonctions ******************************************************************/

/* Wuiki Fonction - Gestion Checkbox - Eric Marcus - Aout 2006 *****************
conteneur : id du conteneur
action : choix de l'action - 0 pour décocher, 1 pour cocher, 2 pour inverser.
*******************************************************************************/
function wf_gestion_checkbox(conteneur, action) {
var blnEtat=null;
var Chckbox = document.getElementById(conteneur).firstChild;
	while (Chckbox!=null) {
		if(Chckbox.nodeName=="INPUT"){
			if (Chckbox.getAttribute("type")=="checkbox") {
				blnEtat = (action=='0') ? false : (action=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true;
				document.getElementById(Chckbox.getAttribute("id")).checked=false;
				document.getElementById(Chckbox.getAttribute("id")).disabled=!blnEtat;
			}
		}else if(Chckbox.nodeName=="DIV"){
    		var id = Chckbox.getAttribute("id");
            var Reg = new RegExp('^droits','gi') ;
            if(id.match(Reg)){
                id = id.replace(Reg,'');
                wf_gestion_droits(id);
            }
        }
		Chckbox = Chckbox.nextSibling;
	}
}
/* Wuiki Fonction - Gestion Droits *********************************************

*******************************************************************************/
var azerty = new Array();
function wf_gestion_droits(a){
    if(azerty['droits'+a] == null
    || azerty['droits'+a] =='0'){
        azerty['droits'+a] ='1';
        wf_gestion_checkbox('droits'+a,'0');
    }else{
        azerty['droits'+a] ='0';
        wf_gestion_checkbox('droits'+a,'1');
    }
}

/* Début **********************************************************************/

// Wuiki Class Javascript - Ouverture d'un canal XMLHttpRequest - HTTP.
var http = new wcjXMLHttpRequest('fenetre');