function verifTel(noTel)
//Vérifie la forme et la validité d'un N° de telephone ( 10 chiffres) par groupes de deux avec ou sans séparateurs
{
	var regexp = /^([\d]{2})[\D]{0,1}([\d]{2})[\D]{0,1}([\d]{2})[\D]{0,1}([\d]{2})[\D]{0,1}([\d]{2})[\D]{0,1}$/;//expression réguliaire
	
	return (noTel.search(regexp) == -1) ? false : true;
}

function verifEmail(eMail)
//Vérifie le format d'un Email
//Début pouvant comporter : underscore(_), point(.), chiffres ou lettres minuscules
//puis @ puis chiffres, lettres minuscules ou point(.) (mais pas de point directement derriere @)
//puis . (mais pas 2) puis 2 à 4  lettres minuscules
{
	//var regexp = /^[_\.\-0-9a-z]+@([0-9a-z\-]+\.)+[a-z]{2,4}$/;//expression réguliaire
	var regexp = /^[_a-z0-9\-]+(\.[_a-z0-9\-]+)*@([0-9a-z](\-?[0-9a-z])*\.)+[a-z]{2,4}$/
	return (eMail.search(regexp) == -1) ? false : true;
}

function verifURL(URL)
//Vérifie le format d'une URL
//http(s) : // +texte (tenant compte des caractères autorisés)
{
	//var regexp = /^(https?:\/\/[\w\#~:\.\?\+=&%@!\-]+)$/;//expression réguliaire
	var regexp = /^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$/; //'
	
	return (URL.search(regexp) == -1 ) ? false : true ;
}

function verifDate(strDate)
//Verifie le format de saisie d''une date ( jj/mm/yyyy ou jj/mm/yy)
{
	var regexp = /^([\d]{2})[-\/]{0,1}([\d]{2})[-\/]{0,1}([\d]{2}([\d]{2})?)$/;//expression réguliaire
	return (strDate.search(regexp) == -1 ) ? false : true ;
}

function verifRangeDate()
//Compare des dates passées en argument 
//( date à tester,"min"ou "max", valeur date min ou max,"min"ou "max", valeur date min ou max)
{
	var i = 0;							//compteur
	var arg = compareDate.arguments;	//tableau des arguments passés dans la fonction
	//var p = new RegExp("^([\\d]{2})[_/]([\\d]{2})[_/]([\\d]{2}([\\d]{2})?)$");
	
	if (verifDate(arg[0]) == false)
		return false;
	else
		var dateTest = convertDate(arg[0]);
		//alert ( " dateTest : " + dateTest );
		for (i =1; i <arg.length; i +=2)
		{
			if ( arg[i]=="min")
			{
				var dateMin = convertDate(arg[i+1]);
				//alert ( " dateMin : " + dateMin);
				if (dateTest < dateMin)
					return false ;
			}
			else
			{
				if ( arg[i]=="max")
				{
					var dateMax = convertDate(arg[i+1]);
					//alert ( " dateMax : " + dateMax);
					if (dateTest > dateMax)
						return false ;
				}
			}
		}
		//alert ( " dateTest : " + dateTest  +  " dateMin : " + dateMin +" dateMax : " + dateMax);
		return true;
}

function GetFullYear(year)
//Convertit les années à 2 chiffres en années à 4 chiffres
{
	return (year<=50)?year+2000:year+1900;
}

function convertDate(date)
//Décompose une date (jj/mm/yy ou jj/mm/yyyy) et la convertit en  yyyy/mm/jj 
{
	var p = new RegExp("^([\\d]{2})[_/]([\\d]{2})[_/]([\\d]{2}([\\d]{2})?)$");
		
		var result = p.exec(date);
		
		if (result != null)
		{
			var jour = eval(result[1]);
			var mois = eval(result[2]-1);
			var annee = eval(result[3]);
			if (annee <100)
				annee = GetFullYear(annee);
		}
		return (new Date(annee,mois,jour));
}

function verifNombre()
//Vérifie un Nombre(float) et le compare
//avec une valeur min et/ou max (valeurs passés en arguments)
// arg[0]= nbre, arg[1]="min ou max",arg[2] = valeur min ou max ....
{	
	var i = 0;							//compteur
	var arg = verifNombre.arguments;	//tableau des arguments passés dans la fonction
	
	if (isNaN(arg[0]))
		return false;
	else
		for  (i =1; i <arg.length; i +=2)
		{
			if ((arg[i]=="min") && (arg[0]<arg[i+1])||((arg[i]=="max") && (arg[0]>arg[i+1])))
				return false;
		}
	return true;
}

function verifEntier()
//Vérifie un Entier et le compare
//avec une valeur min et/ou max (valeurs passés en arguments)
{	
	var i = 0;							//compteur
	var arg = verifEntier.arguments;	//tableau des arguments passés dans la fonction
	
	if (isNaN (arg[0]))
		return false;
	else
		if (Math.round(arg[0])!= arg[0])
			return false;
		for  (i =1; i <arg.length; i +=2)
		{
			if ((arg[i]=="min") && (arg[0]<arg[i+1])||((arg[i]=="max") && (arg[0]>arg[i+1])))
				return false;
		}
	return true;
}

function verifChaine()
//Vérifie une chaîne et la compare
//avec une longueur min et/ou max (valeurs passés en arguments)
{	
	var i = 0;							//compteur
	var arg = verifChaine.arguments;	//tableau des arguments passés dans la fonction
	
	for  (i =1; i <arg.length; i +=2)
	{
			if ((arg[i]=="min") && (arg[0].length < eval(arg[i+1]))||((arg[i]=="max") && (arg[0].length > eval(arg[i+1]))))
				return false;
	}
	return true;
}

function verifFormat(chaine_, regExp_)
// Vérifie qu'une chaîne corresponde bien 
// à l'expression reguliere passée
{	
	return (chaine_.search(regExp_) == -1) ? false : true;
}

// Vérifie qu'une chaîne corresponde bien à une date
function getTheDate(sParam){
	var p = new RegExp(/^(\d{1,2})([_\/\.\-])(\d{1,2})(\2)(\d{2}|\d{4})$/);
	var r = p.exec(sParam);
	
	var day, month, year;
	if (r != null){
		return r[1];
		day 	= parseInt(r[1]);
		month 	= parseInt(r[2]);
		year 	= parseInt(r[3]);
		if (isNaN(day) || isNaN(month) || isNaN(year)){
			if (year > 70 && year < 100) year += 1900;
			if (month < 1) month = 1;
			if (month > 12) month = 12;
			if (day < 1) day = 1;
			if (day > 31) day = 31;
			var oDate = new Date();
			oDate.setDate(day);
			oDate.setMonth(month - 1);
			oDate.setFullYear(year);
			return oDate;
		}else
			return null;
	}else{
		return null;	
	}
}

/*
compare 2 dates oDate1, oDate2 :
retourne :
	- null : si ce n'est pas une date 
	- 0    : si dates egales
	- -1   : si dates 1 est < à la date 2
	- 1    : si dates 1 est > à la date 2
*/
function compareDate(oDate1, oDate2){
	if (verifDate(oDate1) && verifDate(oDate2)){
		return (oDate1.getTime() < oDate2.getTime()) ? -1 : ((oDate1.getTime() > oDate2.getTime()) ? 1 : 0);
	}else{
		return null;
	}
}

