function isDate(dateStr) {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    var month = matchArray[3];
    var day = matchArray[1];
    var year = matchArray[5];
    
    if (matchArray == null)
	    return false;
    if (month < 1 || month > 12) 
        return false;
    if (day < 1 || day > 31)
        return false;
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
        return false;
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap))
		    return false;
	}
    return true;
}

function isInteger(s) {
	for (var k = 1; k < s.length; k++) {
		var c = s.substring(k, k + 1);
		if (isDigit(c) == false)
			return false;
    }
	return (isDigit(s.substring(0,1)) || s.substring(0,1) == "+" || s.substring(0,1) == "-");
}

function isDigit(c) {
	var test = c;
	if (test >= "0" && test <= "9")
		return true;
	else
		return false;
}

function isFloat(numeriqueStr) {
	var valeur = numeriqueStr;
	var re = /,/gi;
	valeur = valeur.replace(re,'.');
	for(var i = 1; i < valeur.length; i++)
		valeur = valeur.replace(String.fromCharCode(160), '');
	if(isNaN(valeur))
		return false;
	else
		return true;
}

function isEmail(valeur) {
	var error = false;
	var regexp = new RegExp("^[-a-z0-9!#$%&'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$");
	
	if (!regexp.test(valeur))
		return(false);
	else
		error = true;
	
	if(error == true) {
		var tab = valeur.split('@');
		var address = tab[1];
		var dot = address.indexOf('.');
		if(dot == -1)
			return(false);
		else
			return(true);
	}
}

function isFrPhoneNumber(numTelephone) {
	numValide = "0123456789";
	if (numTelephone.length != 10)
		return false;
	for (var cptTelephone = 0; cptTelephone < 10; cptTelephone++) {
		if (numValide.indexOf(numTelephone.substr(cptTelephone, 1)) == -1)
			return false;
	}
	return true;
}

function isFrMobileNumber(numTelephone) {
	numValide = "0123456789";
	if (numTelephone.length != 10)
		return false;
    else {
		for (var cptTelephone = 0; cptTelephone < 10; cptTelephone++) {
		    if (numValide.indexOf(numTelephone.substr(cptTelephone, 1)) == -1)
		    	return false;
		    if(cptTelephone == 0 && numTelephone.substr(cptTelephone, 1) != "0")
				return false;
			if(cptTelephone == 1 && numTelephone.substr(cptTelephone, 1) != "6")
		    	return false;
		}
  		return true;
    }
}

function isFrZipCode(codePostal) {
	numValide = "0123456789";
	if (codePostal.length != 5)
		return false;
	for (var cptCodePostal = 0; cptCodePostal < 5; cptCodePostal++) {
		if (numValide.indexOf(codePostal.substr(cptCodePostal, 1)) == -1)
			return false;
	}
	if (codePostal.valueOf() < 1000)
		return false;
	return true;
}

function isFrDepartement(ChnDep) {
	var LngRet = 3;
	var ChnRet = "";
	var PosChn = 0;

	// Suppression des premiers caractères zéro, espace ou tabulation
	while (ChnDep.charAt(PosChn) == "0" || ChnDep.charAt(PosChn) == " " || ChnDep.charAt(PosChn) == "\t") 
		PosChn++;
	ChnDep = ChnDep.substring(PosChn, ChnDep.length);
	// Suppression des derniers caractères espace ou tabulation
	PosChn = ChnDep.length;
	while (ChnDep.charAt(PosChn-1) == " " || ChnDep.charAt(PosChn-1) == "\t") 
		PosChn--;
	ChnDep = ChnDep.substring(0, PosChn);

	// Départements de la Corse ?
	if (ChnDep == "2A" || ChnDep == "2B" || ChnDep == "2a" || ChnDep == "2b")
		ChnRet = ChnDep;
	else {
		// Recherche d'un caractère non chiffre
		PosChn = 0
		while (PosChn < ChnDep.length && ChnDep.charAt(PosChn) >= "0" && ChnDep.charAt(PosChn) <= "9") 
			PosChn++;
		// Pas de caractère non chiffre illicite
		if (ChnDep != "" && PosChn == ChnDep.length) {
			var NumDep = 0;
			// Nombre parmis ceux des numéros de départements ?
			NumDep = 1.0 * ChnDep
			if ((NumDep >= 1 && NumDep != 20 && NumDep <= 95) || (NumDep >= 971 && NumDep <= 974))
				ChnRet = "" + NumDep;
		}
	}
	if (ChnRet == "")
		return false;
	else
		return true;
}

function isNumInsee(Val) {
	var Top20 = false
	Val = "" + Val

	// Numï¿½ro INSEE de 13 caractéres
	if (Val.length != 13) 
		return false

	// Si un 2 en 6ème caractére
	if (Val.charAt (5) == "2") {
		// 7ème caractére
		var Car = Val.charAt (6)

		// Après 2, un A ou un B
		if ((Car == "A") || (Car == "a") || (Car == "B") || (Car == "b"))
			Top20 = true						
	}

	// Contrôle de la numéricité des caractéres
	for (var Pos = 0; Pos < Val.length; Pos++)
	{
		var Car = Val.charAt (Pos)
		// Soit un chiffre, soit un A ou un B en 7ème caractére après le 2 en 6ème caractére
		if (!(((Car >= "0") && (Car <= "9")) || ((Pos == 6) && Top20)))
			return false
	}
	return true
}

function VerifChaine(ch1,ch2)
{  var nbcar = ch1.length;
   var trouve = 0; var j=0;
   for (var i=0; i<nbcar ;i++)
    { if (ch2.indexOf( ch1.charAt(i))>=0)
      trouve += 1;
    }
   if (trouve>0) return false;
   else return true;
}

function isCleInsee(Val)
{  
 if (Val.length!=2) return false;
 if (!isInteger(Val)) return false;
 return true;
}

function isCodePerso(Val)
{  
 if (Val.length!=4) return false;
 else return true;
}

function isStartZero(Val)
{   
 if (Val.substr(0,1) == '0') return true;
  else return false;
}

function isDateNaiss(dateStr)
{
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    if (matchArray == null) {
	    return false;
	}		
    var month = matchArray[3];
    var day = matchArray[1];
    var year = matchArray[5];
    if (month < 0 || month > 99) { 
        return false;
    }
    if (day < 0 || day > 99) {
        return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
		    return false;
		}
	}
    return true;
}

function isAnneeNaiss(dateStr)
{
    var datePat = /(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if ((matchArray == null) && (dateStr != '') ) {	 
     return false;
	}
			
    return true;
}	

function isCodePersonnelAlphaNum(Val) {
   	var compteurVoyelle =0;
   	var compteurChiffre =0; 
	Val = "" + Val
	
	if (Val.length != 8) 
		return false
	
	for (var Pos = 0; Pos < Val.length; Pos++){
		var car = Val.charAt (Pos)
		if(!isInteger(car)){
			if( (car == 'A') || (car == 'E') || (car == 'I') || (car == 'Y') || (car == 'U') ){
				compteurVoyelle++;
			}
		}
	}
	if(compteurVoyelle != 2){
		return false;
	}
	else{
		return true;
	}
}
