var separatorPoint = ".";
var separatorVirgule = ",";

/*Vérifie la saisie dans un champ numérique*/
/*	Return false si l'utilisateur saisie autre chose qu'un numérique
	ou les signes point, virgule, et espace */
//obj = Objet sur lequel la fonction se déclenche
//idObjHidden = id de l'objet objet caché contenant l'ancienn valeur correcte saisie
//partieEntiere = Nombre de chiffres maximal de la partie entière 
//partieDecimale = Nombre de chiffres maximal de la partie décimale
//Attention :	les keycodes sont différents si l'on utilise un onkeyup et un onkeypress
//				Exemple le '0' = 48 en keypress et 96 en keyup
function VerifChampNumerique(obj, idObjHidden, partieEntiere, partieDecimale) {
	//Valeur courante : si un . est saisi il est remplacé par une virgule
	if (obj.value.indexOf(separatorPoint) > -1)
		obj.value = obj.value.replace(/[.]/,separatorVirgule);

	//Valeur courante
	var valeur = obj.value;
	var objHidden = document.getElementById(idObjHidden);

	var reg = new RegExp("(^\\-{0,1}\\d{0,"+partieEntiere +"}\\,{1,1}\\d{0,"+ partieDecimale +"}$)","")

	var t = valeur.match(reg);

	if (t == null || t[0] == null) {
		//Il n'y a pas de . on vérifie qu'on a le bon nombre de chiffres
		reg = new RegExp("(^\\-{0,1}\\d{0,"+partieEntiere +"}$)","")
		t = valeur.match(reg);
	}

	if (t == null || t[0] == null) {
		//On donne la valeur du champ cache
		obj.value = objHidden.value;
		return false;
	}
	objHidden.value = obj.value;
	return true;
}

//////////
// 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 lstVerifTxtBoxNum = new Array();

function RemplirFonctionsVerifier(idtextBox, minValue, maxValue, identLibelError, validationFromVisibleDiv, lblChamp) {
	lstVerifTxtBoxNum[lstVerifTxtBoxNum.length] = new stParamVerifTxtBoxNum(idtextBox, minValue, maxValue, identLibelError, validationFromVisibleDiv, true, lblChamp);
}

//Structure contenant les caractéristiques d'un objet dont le contenu doit être vérifie
function stParamVerifTxtBoxNum(_idtextBox, _minValue, _maxValue, _identLibelError, _validationFromVisibleDiv, _doValidate, _lblChamp) {
	this.idTextBox = _idtextBox;
	this.minValue = _minValue;
	this.maxValue = _maxValue;
	this.identLibelError = _identLibelError;
	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 numérique de la page
function VerifierTxtBoxNums(){
    return VerifierMyTxtBoxNums(lstVerifTxtBoxNum);
}
//Vérifie l'ensemble des champs de saisies numériques fournis en paramètre
function VerifierMyTxtBoxNums(pe_lstVerifMyTxtBoxNum){
    //On va signaler tous les champs erronnés
	var isOK = true;
	for(var iFct = 0; iFct < pe_lstVerifMyTxtBoxNum.length; iFct++) {
		//Structure de vérification
		var obParamVerif  = pe_lstVerifMyTxtBoxNum[iFct];
		
		//Si le contrôle n'est pas visible, on passe
		if (document.getElementById(obParamVerif.idTextBox) != 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 bResultatTest = VerifierUnTextBox(obParamVerif.idTextBox, obParamVerif.minValue, obParamVerif.maxValue, obParamVerif.doValidate);
		    var libel = document.getElementById(obParamVerif.identLibelError);
		    if (bResultatTest == false) {
			    if (libel != null) {
				    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';
			    }
		    }
		}
	}
	return isOK;

}

//Fonction de vérification des paramètres d'une textBox numérique
function VerifierUnTextBox(idtextBox, minValue, maxValue, doValidation)
{

	//Si le textbox est caché ou disablé, on ne le teste pas...
    if (document.getElementById(idtextBox) == null) return true;
	if (document.getElementById(idtextBox).disabled) return true;
	if (!doValidation) return true;
	
	var strSupp = "";
	if (window.strAjaxVerifier)
	    strSupp = strAjaxVerifier;

	var valeur = document.getElementById(idtextBox).value;
	//EV 02/06/2008 : la valeur ne peut être une chaîne vide
	if (valeur == "") return false;
	
	return MakeRequestSynchrone(debuturl + "/APPLICATION/Outils/AjaxVerifierTextBox.aspx?valeur=" + encodeURIComponent(valeur) + "&verifUser=false" + "&rnd=" + Math.random() + "&max=" + encodeURIComponent(maxValue) + "&min=" + encodeURIComponent(minValue) + strSupp, TraiterResultat);
}

function TraiterResultat(pe_http_request)
{
	var xmldoc = pe_http_request.responseXML;
	var directoryNode = xmldoc.getElementsByTagName('isValid').item(0);
	var bResultat = false;
	if(directoryNode.firstChild.nodeValue.toLowerCase() == "true")
	{
		bResultat = true;
	}
	return(bResultat);
}

