function verif_longueur_text(champ,mini,libelle)
{
if (champ.value.length < mini)
 {
 if (champ.value.length==0)
  window.alert("Le champ " + libelle + " doit \352tre renseign\351 !")
 else window.alert("Le champ " + libelle + " doit avoir une longueur\nd'au moins " + mini + " caract\350res.");
 champ.focus(); return false;
 } 
return true;
}


function verif_autorise_text(champ,autorise,libelle)
{
for (i=0; i<champ.value.length ;i++)
 {
 carac = champ.value.charAt(i);
 if (autorise.indexOf(carac)==-1)
   {alert('le champ '+libelle+' contient des caract\350res non autoris\351s !');
   champ.focus(); return false;}
 }
return true;
}

function verif_email(email)
{
if (email.value.length>0)
 {
 var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
 if (!filter.test(email.value)) { alert("L'adresse E-MAIL n'est pas valide"); email.focus(); return false; } 	
 }	
return true; 	   
}


function verif_jourdumois(j,m,a)
{
if (m.value == 2)
  {
  if (a.value%4) jourmax = 28
  else
    {
    if (!(a.value%100) && (a.value%400)) jourmax = 28
    else jourmax = 29;
    }
  }
else 
  {
  if (m.value==4 || m.value==6 || m.value==9 || m.value==11) jourmax = 30
  else jourmax = 31;
  }
if ((j.value<1) || (j.value>jourmax))
  {alert("Le JOUR doit \352tre compris entre 1 et "+jourmax);
  j.focus(); j.select(); return false;}
return true;  
}


function verif_date(j,m,a,obligatoire,libelle)
{
if (obligatoire)
  {
  if (!verif_longueur_text(j,1,'JOUR ('+libelle+')')) return false;
  if (!verif_longueur_text(m,1,'MOIS ('+libelle+')')) return false;
  if (!verif_longueur_text(a,4,'ANNEE ('+libelle+')')) return false;
  }
else
  {
  j_vide = (j.value.length == 0);
  m_vide = (m.value.length == 0);
  a_vide = (a.value.length < 4);
  if (!(j_vide && m_vide && a_vide) && (j_vide || m_vide || a_vide))
    {alert('La date est incompl\350te, compl\351tez ou effacez-la');
    j.focus(); return false;}
  else if (j_vide && m_vide && a_vide) return true;
  }

if (!verif_autorise_text(j,'0123456789','JOUR')) return false;
if (!verif_autorise_text(m,'0123456789','MOIS')) return false;
if (!verif_autorise_text(a,'0123456789','ANNEE')) return false;
if ((m.value < 1) || (m.value > 12)) 
  {alert('Le chiffre du MOIS doit \352tre compris entre 1 et 12 !');
  m.focus(); m.select(); return false;}
if (!verif_jourdumois(j,m,a)) return false;
return true;
}

function compare_date(cj1,cm1,ca1,cj2,cm2,ca2)
{
j1 = parseInt(cj1.value); m1 = parseInt(cm1.value); a1 = parseInt(ca1.value);
j2 = parseInt(cj2.value); m2 = parseInt(cm2.value); a2 = parseInt(ca2.value);
if ( (a2 < a1) || ((a2 == a1) && (m2 < m1)) || 
     ((a2 == a1) && (m2 == m1) && (j2 < j1)) ) return -1; // sens ng : d1 > d2
if ( (a2 > a1) || ((a2 == a1) && (m2 > m1)) || 
     ((a2 == a1) && (m2 == m1) && (j2 > j1)) ) return 1; // sens pos : d1 < d2
return 0;  // dates gales
}


function verif_entier(champ,libelle)
{
if (champ.value.length)
 if (isNaN(champ.value) || (champ.value.indexOf('.')!=-1))
  {alert('Le champ '+libelle+' doit \352tre un nombre entier !');
   champ.focus(); return false;}
return true;
}

function verif_entier_limites(champ,mini,maxi,libelle)
{
if (verif_entier(champ,libelle))
 {
 if ((champ.value<mini) || (champ.value>maxi))
  {alert('Le champ '+libelle+' doit \352tre compris entre '+mini+' et '+maxi+'.');
   champ.focus(); return false;}
 }
else return false;
return true;
}

function verif_reel(champ,libelle)
{
if (champ.value.length)
 if (isNaN(champ.value))
  {alert('Le champ '+libelle+' doit \352tre un nombre (si d\351cimal, utilisez le POINT comme s\351parateur');
   champ.focus(); return false;}
return true;
}

function verif_select(champ,lib)
{
if ((champ.selectedIndex==0) && (champ.length>1)) 
  { alert('Vous devez s\351lectionner un \351l\351ment de la liste '+lib); champ.focus(); return false; }
return true;
}

function verif_check(champ,mini,maxi,lib)
{
nbcheck=0; i=0;
if (champ.length>0)
  {
  while (i<champ.length) if (champ[i++].checked) nbcheck++;
  if (nbcheck<mini) 
    { alert('Vous devez s\351lectionner au moins '+mini+' \351l\351ment'+(mini>1?'s':'')+' de '+lib); return false;}
  if ((maxi>mini) && (nbcheck>maxi))
    { alert('Vous devez s\351lectionner au maximum '+maxi+' \351l\351ment'+(maxi>1?'s':'')+' de '+lib); return false;}
  }
return true;
}

function confirmer(msg) { return confirm("Veuillez confirmer " + msg); }

function majusc(champ) { champ.value = champ.value.toUpperCase(); }
function minusc(champ) { champ.value = champ.value.toLowerCase(); }
function majuscprem(champ) 
{ tmp=champ.value; champ.value = tmp.charAt(0).toUpperCase()+tmp.substring(1,champ.value.length); }

