// Verification des contenus des champs du formulaire

// Positionne l'attribut obligatoire a true pour tous les champs specifies
function requiredFields(frm)
{
        for (var i=1; i<requiredFields.arguments.length; i+=2)
        {
                frm[requiredFields.arguments[i]].required = true;
                frm[requiredFields.arguments[i]].fieldName = requiredFields.arguments[i+1];
               	
        }
}

// Positionne l'attribut numerique a true pour tous les champs specifies
function numericalFields(frm)
{
        for (var i=1; i<numericalFields.arguments.length; i+=2)
        {
                frm[numericalFields.arguments[i]].numerical = true;
                frm[numericalFields.arguments[i]].fieldName = numericalFields.arguments[i+1];
        }
}

// Verifie tous les champs de la form (moteurs)
function checkAll(frm)
{
        for (var i=0; i<frm.elements.length; i++)
        {
                var fld = frm.elements[i];
                if (fld.required && !checkRequired(fld))
                {       
                        return fldError(fld, "Le champ " + fld.fieldName + " est obligatoire.")
                }
                if (fld.numerical && !checkNumerical(fld))
                {       
                        return fldError(fld, "Le champ " + fld.fieldName + " est numérique.")
                }
                 
        }
      return true
}

// Regarde si le champ est vide
function checkRequired(fld)
{
	if (fld.type.indexOf("select") == 0)
	{	
		//alert(fld.fieldName)
		return( (fld.selectedIndex != 0))
	}
	else
	{
		return (fld.value.length != 0)
	}
}

// Regarde si le champ est un nombre
function checkNumerical(fld)
{
        var val = fld.value;

        // Retire le signe s'il est present
        if (val.charAt(0) == "-" || val.charAt(0) == "+")
        {
                val = val.slice(1)
        }
        
        // Retire le point (on pourrait utiliser un autre separateur)
        val = val.replace(/\./, "");
		 val = val.replace(/\,/, "");

        // Verifie chaque caractere
        for (var i=0; i<val.length; i++)
        {
                if (!isDigit(val.charAt(i)))
                return false
        }
        return true
}

// Affiche l'erreur et selectionne le champ
function fldError (fld, msg)
{
        alert(msg);
        fld.focus();
}

// Retourne true si le caratere est un chiffre
function isDigit(digit)
{
        // Tous les carateres acceptes
        var charOk = "0123456789";
        return !(charOk.indexOf(digit) == -1)
}

//Vérification du format de date sous la forme jj/mm/aa
function checkDate(fld){

 var bday= new String(fld.value);
 var bError = false;
 var aChar = null;
 var holder = null;
 var Short =0;
 var FebCheck = null;
 var NovCheck = 0;
 var MonthCheck = null;
 var Reference = bday
 
 for(i=0;i<2;i++){
 aChar = bday.charAt(i);
 if ( !isDigit(aChar)) bError = true;
 }
 
 if  (bday.charAt(2) != '/')  bError = true;

 for(i=3;i<5;i++){
 aChar = bday.charAt(i);
 if ( !isDigit(aChar)) bError = true;
 }

 for(i=6;i<8;i++){
 aChar = bday.charAt(i);
 if ( !isDigit(aChar)) bError = true;
 }

  for (i = 3; i < 8; i++)
  {
  aChar = bday.charAt(i)
  
   if (i == 3 && aChar > "1") bError = true;
   if (i == 3 && aChar < "0") bError = true;
   if (i == 3 && aChar == "1") MonthCheck =1;
   if (i == 3 && aChar =="1") NovCheck=1;
   if (i == 4 && aChar < "0" || aChar > "9") bError = true;
   if (i == 4 && aChar == "2") FebCheck=1;
   if (i == 4 && MonthCheck == 1 && aChar >"2") bError = true;
   if (i == 4 && (aChar == "4" || aChar =="6" || aChar =="9"))Short=1;
   if (i == 4 && NovCheck == 1 && aChar == "1") Short=1;
   if (i == 5  && aChar != '/')  bError = true;
  //if (i == 6 && aChar != "1" && aChar != "2") bError = true;
  // if (i == 7 && aChar !="9" && aChar !="0") bError = true;
  // if (i == 8 && aChar < "0" || aChar > "9") bError = true;
  // if (i == 9 && aChar < "0" || aChar > "9") bError = true;
   if (i == 6 && aChar < "0" || aChar > "9") bError = true;
   if (i == 7 && aChar < "0" || aChar > "9") bError = true;
  }

  for (i = 0; i < 3; i++)
  {
  aChar = bday.charAt(i)


  if (FebCheck == 1 && NovCheck != 1)
    {
    if (i==0 && aChar > "2") bError = true;
    }

  if (i == 0 && aChar > "3") bError = true;
  if (i == 0 && aChar =="3") holder=1;
  if (i == 1 && aChar >"0" && Short==1 && holder==1) bError = true;
  if (i == 1 && aChar >"1" && holder==1) bError = true;
  if (i == 1 && aChar < "0" || aChar > "9") bError = true;

  }

 if ((Reference.substring(0,5) =="29/02" ) && Reference.substring(6,8)%4 !=0)
 {
 alert('Année non bissextile!');
 fld.focus();
 return false;
 }

 if (bError){
 alert ('Mauvaise date ou mauvais format de date (jj/mm/aa)  ');
 fld.focus();
 return false;
 }
return true;
}


function isTelOK(digit)
{
        // Tous les carateres acceptes
        var charOk = "+0123456789./ ()";
        return !(charOk.indexOf(digit) == -1)
}


function checkTel(fld)
{	
        var val = fld.value;
        // Verifie chaque caractere
        for (var i=0; i<val.length; i++)
        {
                if (!isTelOK(val.charAt(i))){
				alert("Numéro non valide.");
				fld.focus;
                return false;
				}
        }
        return true;
}


function verifmail(fld){
var val =fld.value;
if (val =='')
return true;
if ((val.indexOf('@')<0)){
	alert('Adresse E-mail non valide.');
	fld.focus();
	return false;
}
else{
	 var pos = val.indexOf('@');
	 if (val.indexOf('.',pos)< 0){
	 	alert('Adresse E-mail non valide.');
	 	fld.focus();
		 return false;
	 }
	 return true;
}
return true;
}
