/**
 * Fonction supprimant les espaces en début et en fin de chaine
 */
function trim(chaine) 
{ 
  var pattern = new RegExp("/^\s*(.*[^\s])\s*$/","ig"); 
  return chaine.replace(pattern, "$1"); 
}

/**
 * Expression régulière vérifiant la validité d'une date au format jj/mm/aaaa ou jj.mm.aaaa du 01/01/1999 au 31/12/2099
 */
var expressionReguliereDate = "(((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))/((0[1-9]{1})|(1[0-2]{1}))/((20[0-9]{2})|(199[0-9]{1})))|(((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))\\.((0[1-9]{1})|(1[0-2]{1}))\\.((20[0-9]{2})|(199[0-9]{1})))";

/**
 * Vérifie la validité d'une date au format jj/mm/aaaa ou jj.mm.aaaa
 */
function verifierValiditeDate(fdate) 
{ 
  fdate = trim(fdate);
  var datevalide = true; 
  var reg = new RegExp(expressionReguliereDate,"i"); 
  if(reg.test(fdate) == false) 
    datevalide = false;
  else 
  { 
    var jour = parseInt(fdate.charAt(0) + fdate.charAt(1)); 
    var mois = parseInt(fdate.charAt(3) + fdate.charAt(4)); 
    var annee = parseInt(fdate.charAt(6) + fdate.charAt(7) + fdate.charAt(8) + fdate.charAt(9)); 
    if(mois == 2 && (jour > 29 || (!(annee%4 == 0 && annee%100 != 0) || annee%400 == 0) && jour > 28)) 
      datevalide = false; 
    else if(jour > 31 && (mois == 1 || mois == 3 || mois == 5 || mois == 7 || mois == 8 || mois == 10 || mois == 12)) 
      datevalide = false; 
    else if(jour > 30 && (mois == 4 || mois == 6 || mois == 9 || mois == 11)) 
      datevalide = false; 
  } 
  return datevalide; 
}
