﻿//////////
// AJAX //
//////////
//On utilise la vérif que pour les bornes sup et inf pour l'instant //
//Liste de tous les textbox numériques à vérifier
var lstVerifTxtBoxGen = new Array();

function RemplirFonctionsVerifierTxtBoxGen(idtextBox, pageValidation, libError, idtextHidden, validationFromVisibleDiv, lblChamp) {
	lstVerifTxtBoxGen[lstVerifTxtBoxGen.length] = new stParamVerifTxtBoxGen(idtextBox, pageValidation, libError, idtextHidden, validationFromVisibleDiv, true, lblChamp);
}

//Structure contenant les caractéristiques d'un objet dont le contenu doit être vérifie
function stParamVerifTxtBoxGen(_idtextBox, _PageValidation, _identLibelError, _idtextHidden, _validationFromVisibleDiv, _doValidate, _lblChamp) {
   	this.idTextBox = _idtextBox;
	this.pageValidation = _PageValidation;
	this.identLibelError = _identLibelError;
	this.idTextHidden = _idtextHidden;
	this.validationFromVisibleDiv = _validationFromVisibleDiv;
	this.doValidate = _doValidate;
	//Libellé de l'objet qui est affiché en entête de page en cas d'erreur
	if (_lblChamp != null)
	    this.lblChamp = _lblChamp.replace(/&rsquo;/,"'");
	else
	    this.lblChamp = null;
}

//Vérifie l'ensemble des champs de saisie de la page
function VerifierTxtBoxGens() {
    return VerifierMyTxtBoxGens(lstVerifTxtBoxGen);
}

//Vérifie l'ensemble des champs de saisies fournis en paramètre
function VerifierMyTxtBoxGens(pe_lstVerifMyTxtBoxGen){
    //On va signaler tous les champs erronnés
	var isOK = true;
	for(var iFct = 0; iFct < pe_lstVerifMyTxtBoxGen.length; iFct++) {
		//Structure de vérification
		var obParamVerif  = pe_lstVerifMyTxtBoxGen[iFct];
		
		//CAS SPECIFIQUE
		//--------------
		//Attention : idtextBox peut contenir une concaténation de champs (cas très spécifique exemple : DATE+HEURE)
        var idSplit = obParamVerif.idTextBox.split("+");
        //Date (mode normal)
        var idTextBoxSplit = idSplit[0];
        //Heure
        var idTextHeure = "";
        if (idSplit.length > 1)
           idTextHeure = idSplit[1];
        //---------------   
        
		//Si le contrôle n'est pas visible, on passe
		if (document.getElementById(idTextBoxSplit) != null) {
		
    	    //Si la validation du contrôle a déjà été négative, pas besoins de continuer
    	    if (window.SearchControleInLstControlesEnErreur) {
    	        if (window.SearchControleInLstControlesEnErreur(obParamVerif.idTextBox))
    	            return isOK;
    	    }
    		
		    var resultatTest = VerifierUnTextBoxGen(obParamVerif.idTextBox, obParamVerif.idTextHidden, obParamVerif.pageValidation, obParamVerif.doValidate);
		    var libel = document.getElementById(obParamVerif.identLibelError);
		    if (resultatTest.bResultat == false) {
			    if (libel != null) {
                    SetInnerText(obParamVerif.identLibelError, resultatTest.sMess);		
				    libel.style.display = 'block';
       				if (window.AddToLstMessagesErreurs)
	        		    window.AddToLstMessagesErreurs(obParamVerif.lblChamp + " : " + GetObjectInnerText(libel));
			    }
			    //On rajoute le contrôle à la liste des contrôles en erreur
			    if (window.AddToLstControlesEnErreur) {
			        window.AddToLstControlesEnErreur(obParamVerif.idTextBox);
			    }
			    isOK = false;	
		    }
		    else {
			    if (libel != null) {
				    libel.style.display = 'none';
			    }
			    
			    var valeur = document.getElementById(idTextBoxSplit).value;
		    	if (idTextHeure != "" && document.getElementById(idTextHeure) != null) valeur += " " + document.getElementById(idTextHeure).value;
			    document.getElementById(obParamVerif.idTextHidden).value = valeur;
		    }
		}
	}
	return isOK;

}

function ResultRequestSynchroneTxtBoxGen(_bResultat, _sMess) {
    this.bResultat = _bResultat;
    this.sMess = _sMess;
}

//Fonction de vérification des paramètres d'une textBox 
function VerifierUnTextBoxGen(idtextBox, idtextHidden, pageValidation, doValidation) {

    //CAS SPECIFIQUE
    //---------------
    //Attention : idtextBox peut contenir une concaténation de champs (cas très spécifique exemple : DATE+HEURE)
    var idSplit = idtextBox.split("+");
    //Date (mode normal)
    idtextBox = idSplit[0];
    //Heure
    var idTextHeure = "";
    if (idSplit.length > 1)
       idTextHeure = idSplit[1];
    //---------------   

	//Si le textbox est caché, ou disablé, on ne le teste pas...
	if (document.getElementById(idtextBox) == null) return new ResultRequestSynchroneTxtBoxGen(true,"");
    if (document.getElementById(idtextBox).disabled) return new ResultRequestSynchroneTxtBoxGen(true,"");
	if (!doValidation) return new ResultRequestSynchroneTxtBoxGen(true,"");
	
	var strSupp = "";
	if (window.strAjaxVerifier)
	    strSupp = strAjaxVerifier;

	var valeur = encodeURIComponent(document.getElementById(idtextBox).value);
	//CAS SPECIFIQUE
	//--------------
	if (idTextHeure != "" && document.getElementById(idTextHeure) != null) valeur += " " + document.getElementById(idTextHeure).value;
	//--------------
	
	var oldvaleur = encodeURIComponent(document.getElementById(idtextHidden).value);
	var validation = MakeRequestSynchrone(debuturl + pageValidation + "&verifUser=false" + "&rnd=" + Math.random() + "&valeur=" + valeur + "&old=" + oldvaleur + strSupp, TraiterResultatTxtBoxGen);
	return validation;
}

function TraiterResultatTxtBoxGen(pe_http_request)
{
	var xmldoc = pe_http_request.responseXML;
	//Le résultat de la validation
	var directoryNode = xmldoc.getElementsByTagName('isValid').item(0);
	var bResultat = false;
	if(directoryNode.firstChild.nodeValue.toLowerCase() == "true")
	{
		bResultat = true;
	}
	//Le message d'erreur
	var firstChildMess = xmldoc.getElementsByTagName('messError').item(0).firstChild;
	var mess = "";
	if (firstChildMess != null)
	    mess = firstChildMess.nodeValue;
	
	return(new ResultRequestSynchroneTxtBoxGen(bResultat,mess));
}
