function supprEspaces(Str){
  return Str.replace(/(^\s*)|(\s*$)/g, "");

  }

function supprEspacesTotal(Str)
{

   while(Str.search(" ")>=0)
   {
         var Str=Str.replace(" ", "");
   }
   return Str
}



// Téléphone = digit + espaces

function isTel(str){

      var telPat = /^([\d ]+)$/;
      var tel = str.match(telPat);

      if(tel == null){
         return false;
      }
      else{
         return true;
      }
}

function ctrl_date(datedebut,datefin){

   if (datefin != "") {

       var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;
       var debut = datedebut.match(datePat);
       var fin = datefin.match(datePat);

       var daydebut = debut[1];
       var monthdebut = debut[3];
       var yeardebut = debut[5];
       var dayfin = fin[1];
       var monthfin = fin[3];
       var yearfin = fin[5];
           if (yearfin<100) { yearfin = "20"+yearfin;        }
       var dd = yeardebut+monthdebut+daydebut;
       var df = yearfin+monthfin+dayfin;

       if(df < dd){
          return false;
       } else {
                     return true; }

        } else { return true; }

}

// La date est-elle valide ?

function isDateV(dateStr) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;

    if (dateStr == "") {
        return false;
    }

    var matchArray = dateStr.match(datePat); // is the format ok?
    if(matchArray == null){
       alert("Entrez une date au format jj/mm/aaaa ou jj-mm-aaaa");
       return false;
    }

    day = matchArray[1];
    month = matchArray[3];
    year = matchArray[5];
    if (year < 100) {        year = "20"+year;        }

    if (day < 1 || day > 31) {
        alert("Le jour doit être compris entre 1 et 31");
        return false;
    }

    if (month < 1 || month > 12) {
        alert("Le mois doit être compris entre 1 et 12");
        return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        alert("Ce mois n'a pas 31 jours!")
        return false;
    }

    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            alert("Février " + year + " n'a pas " + day + " jours!");
            return false;
        }
    }

    if (year < 1910) {
        alert("Année incorecte !");
        return false;
    }
    return true; // date is valid
}

function isDate(dateStr) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;

    if (dateStr == "") {
        return true;
    }
    else{
         var matchArray = dateStr.match(datePat); // is the format ok?

         if(matchArray == null){
            alert("Entrez une date au format jj/mm/aaaa ou jj-mm-aaaa");
            return false;
         }

         day = matchArray[1];
         month = matchArray[3];
         year = matchArray[5];
        if (year < 100) {        year = "20"+year;        }

         if (day < 1 || day > 31) {
             alert("Le jour doit être compris entre 1 et 31");
             return false;
         }

         if (month < 1 || month > 12) {
             alert("Le mois doit être compris entre 1 et 12");
             return false;
         }
         if ((month==4 || month==6 || month==9 || month==11) && day==31) {
             alert("Ce mois n'a pas 31 jours!")
             return false;
         }

         if (month == 2) {
             var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
             if (day > 29 || (day==29 && !isleap)) {
                 alert("Février " + year + " n'a pas " + day + " jours!");
                 return false;
             }
         }

          if (year < 1910) {
             alert("Année incorecte !");
             return false;
          }
         return true; // date is valid
    }
}
function heure(heurestr)
 {
     var hourPat = /^(\d{1,2})(:)(\d{1,2})$/;
     var hourPat1 = /^(\d{1,2})$/;
     var matchArray = heurestr.match(hourPat);
     var matchArray1 = heurestr.match(hourPat1);

         if(matchArray == null){
             if(matchArray1 == null){
                alert("Entrez une heure au format hh:mm");
            return false;
            }
         }
         if(matchArray){
               hour = matchArray[1];
               min = matchArray[3];
         }
         else
         {
              hour = matchArray1[1];
              min = matchArray1[3];
         }
         if(min == "") min = 0;

         if (hour < 8 || hour > 23) {
             alert("L\'heure doit être comprise entre 8 et 23 ");
             return false;
         }

         if (min < 0 || min > 59) {
             alert("Les minutes doivent être comprises entre 0 et 59");
             return false;
         }
          return true; // date is valid
 }
function isHourt(heurestr)
 {
     var hourPat = /^(\d{1,2})(:)(\d{1,2})$/;
     var hourPat1 = /^(\d{1,2})$/;
     var matchArray = heurestr.match(hourPat);
     var matchArray1 = heurestr.match(hourPat1);

         if(matchArray == null){
             if(matchArray1 == null){
                alert("Entrez une heure au format hh:mm");
            return false;
            }
         }
         if(matchArray){
               hour = matchArray[1];
               min = matchArray[3];
         }
         else
         {
              hour = matchArray1[1];
              min = matchArray1[3];
         }
         if(min == "") min = 0;

         if (hour < 0 || hour > 9) {
             alert("La duree doit être comprise entre 0 et 9 ");
             return false;
         }

         if (min < 0 || min > 59) {
             alert("Les minutes doivent être comprises entre 0 et 59");
             return false;
         }
          return true; // date is valid
 }


function isHour(hourStr) {

    if (hourStr == "") {
        return true;
    }
    else{
         return heure(hourStr); // date is valid
    }
}


function isHourV(hourStr) {

    if (hourStr == "") {
        return false;
    }
    else {
         return heure(hourStr);
    }
}

// Vérifie si dans le formulaire "formulaire" il y a une checkbose de nom "checkbox_name" cochée

function verif_case (formulaire, checkbox_name)
{
    var j = 0;
    var l = checkbox_name.length;

    for (var i = 0; i < formulaire.elements.length; i++)
        if (formulaire.elements[i].name.substr( 0, l) == checkbox_name)
             if (formulaire.elements[i].checked == 1) j++;
    if (!j)
    {
        alert("Vous n'avez rien sélectionné !");
        return false;
    }
            return true;
}

// Vérifie si cases cochées et suppression
function suppression (formulaire, checkbox_name, button_name)
{
    var j = 0;
    var l = checkbox_name.length;

    for (var i = 0; i < formulaire.elements.length; i++)
        if (formulaire.elements[i].name.substr( 0, l) == checkbox_name)
             if (formulaire.elements[i].checked == 1) j++;
    if (!j)
    {
        alert("Vous n'avez rien sélectionné !");
        return false;
    }

    if (confirm("Etes-vous sûr de vouloir supprimer le(s) élément(s) sélectionné(s) ?"))
           {
                 button_name.submit;
                 return true;
           }
    else
           {
                 return false;
           }

            return true;
}

function zone_vide (formulaire)
{
    verif=formulaire.value;
    verif=supprEspaces(verif); //appel de la fonction supprimer les espaces

    if (verif=="")
    {
        alert ("La zone spécifiée par une * ne doit pas être vide !");
        formulaire.focus();
        return false;
    }
    else
    {
        return true;
    }
}

function zone_vide_liste(formulaire,liste_site,liste_formation,liste_role)
{
 verif_champ=formulaire.value;
 verif_champ=supprEspaces(verif_champ);
 verif_site=liste_site.selectedIndex;
 verif_formation=liste_formation.selectedIndex;
 verif_role=liste_role.selectedIndex;

 if (verif_site==0 && verif_formation==0 && verif_role==0 && verif_champ=="")
 {
     alert ("Vous devez remplir une des zones avec une * !")
     formulaire.focus();
     return false;
 }
 else
 {
     return true;
 }
}

// Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque
function coche(formulaire,bouton,numero,prec) {

   // Création d'un raccourci pour manipuler le champ visé
   var controle = eval("document." + formulaire + '.' + bouton);

   // Si le champ est de type 'checkbox' (par convention on place un 'X' si on est sur une case à cocher)
   if (numero == 'X') {

       // Si la case est cochée
       if (controle.status || controle.checked ) {

           // Instruction pour Netscape 6.x
           if (navigator.appName == "Netscape") {

               // On décoche la case
               controle.checked = false;
           }

           // Instruction équivalente pour Netscape 4.x et Internet Explorer
           else {
                controle.status = false;
           }
       }

       // Si la case n'est pas cochée
       else {
            if (navigator.appName == "Netscape") {
                controle.checked = true;
            }
            else {
                controle.status = true;
            }
       }
   }

   // Si on ne trouve pas de 'X', c'est un bouton radio
   else {
         var evalanc = eval("document." + formulaire + '.' + prec);

         switch (prec)
         {
          case 'titrec':
              document.categorie.typec_site.selectedIndex=0;
              document.categorie.typec_formation.selectedIndex=0;
              document.categorie.typec_role.selectedIndex=0;
              break;
          case 'typec_site':
              document.categorie.titrec.value="";
              document.categorie.typec_formation.selectedIndex=0;
              document.categorie.typec_role.selectedIndex=0;
              break;
          case 'typec_formation':
              document.categorie.titrec.value="";
              document.categorie.typec_site.selectedIndex=0;
              document.categorie.typec_role.selectedIndex=0;
              break;
          case 'typec_role':
              document.categorie.titrec.value="";
              document.categorie.typec_formation.selectedIndex=0;
              document.categorie.typec_site.selectedIndex=0;
              break;
          default:
              break;
         }

         // Instruction pour Netscape 6.x
         if (navigator.appName == "Netscape") {

             // On coche le bouton radio
             controle[numero].checked = true;
         }

         // Instruction équivalente pour Netscape 4.x et Internet Explorer
         else {
            controle[numero].status = true;
         }
   }
}

// Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque
function cochemodif(formulaire,bouton,numero,prec) {

   // Création d'un raccourci pour manipuler le champ visé
   var controle = eval("document." + formulaire + '.' + bouton);

   // Si le champ est de type 'checkbox' (par convention on place un 'X' si on est sur une case à cocher)
   if (numero == 'X') {

       // Si la case est cochée
       if (controle.status || controle.checked ) {

           // Instruction pour Netscape 6.x
           if (navigator.appName == "Netscape") {

               // On décoche la case
               controle.checked = false;
           }

           // Instruction équivalente pour Netscape 4.x et Internet Explorer
           else {
                controle.status = false;
           }
       }

       // Si la case n'est pas cochée
       else {
            if (navigator.appName == "Netscape") {
                controle.checked = true;
            }
            else {
                controle.status = true;
            }
       }
   }

   // Si on ne trouve pas de 'X', c'est un bouton radio
   else {
         var evalanc = eval("document." + formulaire + '.' + prec);

         switch (prec)
         {
          case 'titrec':
              document.modifcategorie.typec_site.selectedIndex=0;
              document.modifcategorie.typec_formation.selectedIndex=0;
              document.modifcategorie.typec_role.selectedIndex=0;
              break;
          case 'typec_site':
              document.modifcategorie.titrec.value="";
              document.modifcategorie.typec_formation.selectedIndex=0;
              document.modifcategorie.typec_role.selectedIndex=0;
              break;
          case 'typec_formation':
              document.modifcategorie.titrec.value="";
              document.modifcategorie.typec_site.selectedIndex=0;
              document.modifcategorie.typec_role.selectedIndex=0;
              break;
          case 'typec_role':
              document.modifcategorie.titrec.value="";
              document.modifcategorie.typec_formation.selectedIndex=0;
              document.modifcategorie.typec_site.selectedIndex=0;
              break;
          default:
              break;
         }

         // Instruction pour Netscape 6.x
         if (navigator.appName == "Netscape") {

             // On coche le bouton radio
             controle[numero].checked = true;
         }

         // Instruction équivalente pour Netscape 4.x et Internet Explorer
         else {
            controle[numero].status = true;
         }
   }
}

//insère un href dans un textarea
function chaine(valeur)
{
  var ch;

  ch+=valeur;

  var httpch=ch.lastIndexOf('http://www.');
  var wwwch=ch.lastIndexOf('www.');
  if (httpch!=-1 || wwwch!=-1)
  {
   ch=ch.substring(ch.lastIndexOf('www.'),ch.lastIndexOf('.')+4);
   document.sujet.message.value=ch.link(ch);
   alert(ch.valueOf());
  }
}