//Fonctions pouvant être utilisées depuis toutes les pages de l'application


//Liste de tous les controles en erreur
var lstControlesEnErreur = new Array();

//Liste de tous les messages d'erreurs
var lstMessagesErreurs = new Array();

//Chaine supplémentaire à rajouter à la validation en Ajax
var strAjaxVerifier = "";

//Fonction vérifiant le contenu de tous les contrôles (numériques, dates)
//retourne true si le contenu des contrôles est ok, false sinon
function VerifContenuControles() {

    ReInitLstMessagesErreurs();
    ReInitLstControlesEnErreur();
    
	var isOK = true;
	//Vérifie l'ensemble des contrôles de date
	if (window.VerifierCtrlDates)
		isOK = VerifierCtrlDates();
	
	//Vérifie l'ensemble des textBoxNum
	if (window.VerifierTxtBoxNums)
		isOK = VerifierTxtBoxNums() && isOK;
		
	//Vérifie les textBoxGenerics
	if (window.VerifierTxtBoxGens)
		isOK = VerifierTxtBoxGens() && isOK;

    //Verification des autres contrôles
    if (window.VerifierAutresControles)
        isOK = VerifierAutresControles() && isOK;

    //On réinit
    strAjaxVerifier = "";
    
    AfficheMessagesErreur();
    
	return isOK;
}

//Ajoute l'identifiant du contrôle à la liste des contrôles en erreur
function AddToLstControlesEnErreur(pe_sControle) {
    lstControlesEnErreur.push(pe_sControle);
}

//Réinitialise la liste des contrôles en erreur
function ReInitLstControlesEnErreur() {
    lstControlesEnErreur = new Array();
}

//Recherche si un contrôle est contenu dans la liste des contrôles en erreur
function SearchControleInLstControlesEnErreur(pe_sControle) {
    
    if (lstControlesEnErreur.length <= 0) return false;
    
    for (var i=0; i < lstControlesEnErreur.length; ++i) {
        if (lstControlesEnErreur[i] == pe_sControle)
            return true;
    }
    
    return false;
}


//Ajoute un message d'erreur à la liste des messages en erreur
function AddToLstMessagesErreurs(pe_sMessage) {
    lstMessagesErreurs.push(pe_sMessage);
}

//Réinitialise la liste des contrôles en erreur
function ReInitLstMessagesErreurs() {
    lstMessagesErreurs = new Array();
}

//Id du panel contenant les erreurs détectées
var idDivErreur = "PanErreurs";

//Affichage de la liste des erreurs dans le div PanErreurs
function AfficheMessagesErreur() {
    var divErreurs = document.getElementById(idDivErreur);
    if (divErreurs == null)
        return;

    divErreurs.innerHTML = "";
    if (lstMessagesErreurs.length == 0) {
        //Le panel des erreurs est caché...
        divErreurs.style.display = "none";
        return;
    }
    //Le panel des erreurs est affiché...
    divErreurs.style.display = "block";
    if (lstMessagesErreurs.length == 1)
        divErreurs.innerHTML += "<span id='TitreDivErreur'>L'erreur suivante a &#233;t&#233; d&#233;tect&#233;e dans la page</span><br>";
    else
        divErreurs.innerHTML += "<span id='TitreDivErreur'>Les erreurs suivantes ont &#233;t&#233; d&#233;tect&#233;es dans la page</span><br>";
    for (var i=0;i<lstMessagesErreurs.length;i++) {
        var ligneErreur = "<span class='StyleTexteErreur'>" + lstMessagesErreurs[i] + "</span><BR>";
        divErreurs.innerHTML += ligneErreur;
    }
}


//Remplit un champ 'libellé' en fonction du navigateur
//pe_sIdentObjet = identifiant de l'objet
//pe_sText = Texte à inscrire dans l'objet
function SetInnerText(pe_sIdentObjet, pe_sText) {

    var newObject = document.getElementById(pe_sIdentObjet);
    
    SetObjectInnerText(newObject,pe_sText);

}

//Remplit un champ 'libellé' en fonction du navigateur
//pe_Object = Objet qui va contenir le texte
//pe_sText = Texte à inscrire dans l'objet
function SetObjectInnerText(pe_Object, pe_sText) {

    if ( pe_Object == null) return;
    
    if (pe_Object.innerText == null) {
        //Mozilla Firefox
        pe_Object.textContent = pe_sText;
    }
    else {
        //IE
        pe_Object.innerText = pe_sText;
    }

}

//Retourne le texte d'un champ 'libellé'
//pe_sIdentObjet = Identifiant de l'objet
function GetInnerText(pe_sIdentObjet) {

    var NewObject = document.getElementById(pe_sIdentObjet);
    
    return GetObjectInnerText(NewObject);

}


//Retourne le texte d'un champ 'libellé'
//pe_Object = Objet
function GetObjectInnerText(pe_Object) {

    if (pe_Object == null) return "";
    
    if (pe_Object.innerText == null) {
        //Mozilla Firefox
        return pe_Object.textContent;
    }
    else {
        //IE
        return pe_Object.innerText;
    }

}

//Retourne le texte d'un champ différent d'un libellé avec l'id du champ en paramètre
function GetTextById(id_Object) {
    return GetObjectText(document.getElementById(id_Object));
}

//Retourne le texte d'un champ différent d'un libellé (Noeud Xml par exemple)
function GetObjectText(pe_Object) {

    if (pe_Object == null) return "";
    
    if (pe_Object.text == null) {
        //Mozilla Firefox
        return pe_Object.textContent;
    }
    else {
        //IE
        return pe_Object.text;
    }

}

//Remplir le texte d'un champ différent d'un libellé (Noeud Xml par exemple)
function SetObjectText(pe_Object, pe_sText) {

    if (pe_Object == null) return ;
    
    if (pe_Object.text == null) {
        //Mozilla Firefox
        pe_Object.textContent = pe_sText;
    }
    else {
        //IE
        pe_Object.text = pe_sText;
    }

}

//Trim sur un string
function trim(s) {
    return s.replace(/^\s+/, '').replace(/\s+$/, '');
}

//LeftTrim sur un string
function ltrim(s) {
    return s.replace(/^\s+/, '');
}

//RightTrim sur un string
function rtrim(s) {
    return s.replace(/\s+$/, '');
}

//Montre un élément à partir de son ID
//pe_sIdent : id de l'élément
function ShowElementById(pe_sIdent) {
    var elem = document.getElementById(pe_sIdent);
    ShowHideElement(elem, true);
}

//Cache un élément à partir de son ID
//pe_sIdent : id de l'élément
function HideElementById(pe_sIdent) {
    var elem = document.getElementById(pe_sIdent);
    ShowHideElement(elem, false);
}

//Montrer ou cacher un élément
//pe_sIdent : id de l'élément
//pe_bIsShow : true : affiche l'objet sinon le cache
function ShowHideElementById(pe_sIdent, pe_isShow) {
    var elem = document.getElementById(pe_sIdent);
    ShowHideElement(elem, pe_isShow);
}

//Montrer ou cacher un élément
//pe_Elem : élément à montrer ou cacher (object)
//pe_bIsShow : true : affiche l'objet sinon le cache
function ShowHideElement(pe_Elem, pe_isShow) {
    if (pe_Elem == null) return;
    
    if (pe_isShow)
        pe_Elem.style.display = "block";
    else
        pe_Elem.style.display = "none";
}
