/*************************************************************************************************/
//GESTION DES ENTREES FORMULAIRES
/*************************************************************************************************/
function limit_txtarea(zone,maxlen,nbligne){
	var pos=0;
	var nb=0;
	if(zone.value.length>=maxlen) zone.value=zone.value.substring(0,maxlen);
	for(i=0;i<nbligne;i++){
		if(zone.value.indexOf("\n",pos)>-1){
			nb++;
			pos=zone.value.indexOf("\n",pos);
			if(nb>=nbligne) zone.value=zone.value.substring(0,pos);
			pos++;
		}
	}
}

function test_isvalidlog(totest){
	var expression = /^[0-9a-z_\*\-]+$/;    //expression reguliere: autre chose qu'un alphanum ou _
    res = expression.exec(totest);
    res2 = totest.search(expression);    
    if(res != totest || res2 == -1) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}

function test_isvalidtext(totest){
	//expression reguliere: autre chose qu'un alphanum ou _
	var expression = /^[a-zA-Z0-9_\n\réèêëàäâùüûïîöôç' \-]+$/; //alnumm, _, -, espaces divers ou accentués français
    res = expression.exec(totest);
    res2 = totest.search(expression);    
    if(res != totest || res2 == -1) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}

function isDateValidFR(chaineDate) {

//Je regarde tout d'abord si la chaîne n'est pas vide, sinon pas la peine d'aller plus loin
   if (chaineDate == "") return false;

//J'utilise split pour créer un tableau dans lequel je récupère les jour mois année
//J'attends bien sûr une date formatée en JJ/MM/AAAA
   var ladate = (chaineDate).split("/");

//Si je n'ai pas récupéré trois éléments ou bien s'il ne s'agit pas d'entiers, pas la peine non plus d'aller plus loin
   if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false;

//Sinon, c'est maintenant que je crée la date correspondante. Attention, les mois sont étalonnés de 0 à 11
   var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]));

//Bug de l'an 2000 oblige, lorsque je récupère l'année, je n'ai pas toujours 4 chiffres selon les navigateurs, je rectifie donc ici le tir.
   var annee = unedate.getYear();
   if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
  
//Il ne reste plus qu'à vérifier si le jour, le mois et l'année obtenus sont les mêmes que ceux saisis par l'utilisateur.
   return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])));
}

function test_isvaliddate_fr(totest, separateur, totalsize){
	//taille date separateurs compris
	if(totest.length != totalsize)
		return false;
		
	//expression reguliere: un entier
	var expression = /\d/;
	//test de chaque element de totest
	for(var j=1; j<=totest.length; j++){
			recup=totest.charAt(j-1);
			
			if(j!=3 && j!=6){
				//si pas chiffre, on sort en retournant false
				if(recup.search(expression)==-1)
					return false;
			}
			else{
				//si pas separateur, on sort en retournant false
				if(recup != separateur)
						return false;
			}
	}
	//on sort avec true si totest est bien une date fr
	
	//MVE complément: on vérifie la validité "réelle" de cette date
	return isDateValidFR(totest);
}


function test_isvalidmail(totest){
    var expression = /^([a-z0-9\._\-]+)@([a-z0-9\._\-]+)\.([a-z]{2,4})$/;
    /*res = expression.exec(totest);*/
    res2 = totest.search(expression);   
    //alert(res2);
    //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur    
    if(res2 == -1) 
        return false;
    else
	    return true;
	
}

function test_isvalidalphas(totest){    
    var expression = /^[a-zA-Z_éèêëàäâùüûïîöôç'\-]+$/;
    res = expression.exec(totest);
    res2 = totest.search(expression);    
    if(res != totest || res2 == -1) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}

function test_isvalidtel(totest){
    var expression1 = /^[0-9]{10}$/; //tel : suite de chiffres, pouvant etre précédés de +
    var expression2 = /^\+[0-9]{11}$/; //tel : suite de chiffres, pouvant etre précédés de +
	res = expression1.exec(totest);
    res2 = totest.search(expression1); 
    res_2 = expression2.exec(totest);
    res2_2 = totest.search(expression2);  
    //alert(res+'\n'+res2+'\n'+res_2+'\n'+res2_2);    
    if((res != totest || res2 == -1) && (res_2 != totest || res2_2 == -1)) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}

function test_isvalidcode(totest){
	var expression = /^[0-9]{5,6}$/; //code français : un entier positif de 6 chiffres
    res = expression.exec(totest);
    res2 = totest.search(expression);    
    if(res != totest || res2 == -1) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}

function test_isvalidint_pos(totest){
    var expression = /^[0-9]+$/;    //entier positif
    res = expression.exec(totest);
    res2 = totest.search(expression);    
    if(res != totest || res2 == -1) //si on n'a pas trouvé l'expresison ou si le resultat n'est pas egal a l'echantillon a tester, erreur
        return false;
    else
	    return true;
}
/*************************************************************************************************/
//FIN GESTION DES ENTREES FORMULAIRES
/*************************************************************************************************/