// Function that checks date format
function isDate(DateObject,
				bDisplayMessage) {
  d=DateObject.value;
  
  if (d == "")
    result=false; // si la variable est vide on retourne faux
  else  
  {
    // Deux formats de date possibles

    // 1- Avec des slashs
    e1 = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{1,2}|[0-9]{4})$");
    // 2- Sans les slashs (dans ce cas la date doit être sur 6 ou 8 chiffres)
    e2 = new RegExp("^([0-9]{6}|[0-9]{8})$");

    // On teste l'expression régulière pour valider la forme de la date
    // Si pas bon, retourne faux

    result=true;
    if (!e1.test(d)) {
    	if (!e2.test(d))
        result=false;
 	    else {
      		// Si le format e2 est bon alors on rajoute les '/'
      		// Comme ca on fait un suel traitement quel que soit le format de date saisi
      		dtemp=d.substr(0,2);
      		dresult=dtemp+'/';
      		dtemp=d.substr(2,2);
      		dresult=dresult+dtemp+'/'+d.substr(4,4);
      		d=dresult;
    	}
    }
  
    if (!result) {
  	   if(bDisplayMessage) alert('Format de Date incorrect');
  	   DateObject.select();
       return false;
    }
    else {
      // On teste la date elle même	

      // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier

      j = parseInt(d.split("/")[0],10); // jour
      m = parseInt(d.split("/")[1],10); // mois
      a = parseInt(d.split("/")[2],10); // année

      // on rajoute les 0 si nécessaire pour avoir les jours et mois sur 2 chiffres
      if (j<10) j='0'+j;	
      if (m<10) m='0'+m;	

      // Si l'année n'est composée que de 1 ou 2 chiffres on complète automatiquement
      if (a < 1000) {
      	var datecourante=new Date()
    	anneecourante=datecourante.getFullYear();
        if ((a+2000)-(anneecourante)<2)  a=a+2000; // on rajoute 2000 seulement si l'année < année en cours +1
        else a=a+1900;
      }

      // Définition du dernier jour de février
      // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
      if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
      else fev = 28;

      // Nombre de jours pour chaque mois
      nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

      // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
      if ( (m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] )==false ) result=false;

      if (result==true){
        DateObject.value=j+'/'+m+'/'+a;
        return true;
      }
      else {
      	DateObject.select();
      	if(bDisplayMessage) alert('Format de Date incorrect');
      	return false;
      }
    } // Si test RegExp Ok
  } // Si non vide
}// isDate

// Function that trims a string
function Trim(StringToTrim)
{
	var tmpString;
	var bStopTrim;
	
	if(StringToTrim==null) return null;
	
	if(typeof(StringToTrim)!='string') return null;
	
	tmpString=StringToTrim;
	
	// Trim blancks before
	bStopTrim=(tmpString=='');
	if(!bStopTrim) bStopTrim=(tmpString.charAt(0)!=' ');
	while(!bStopTrim)
	{
		if(tmpString.length==1) tmpString='';
		else tmpString=tmpString.slice(1);
		bStopTrim=(tmpString=='');
		if(!bStopTrim) bStopTrim=(tmpString.charAt(0)!=' ');
	}
	
	// Trim blancks after
	bStopTrim=(tmpString=='');
	if(!bStopTrim) bStopTrim=(tmpString.charAt(tmpString.length-1)!=' ');
	while(!bStopTrim)
	{
		if(tmpString.length==1) tmpString='';
		else tmpString=tmpString.slice(0,-1);
		bStopTrim=(tmpString=='');
		if(!bStopTrim) bStopTrim=(tmpString.charAt(tmpString.length-1)!=' ');
	}
	return tmpString;
}// Trim

