function printf(chaine)
{
nbvar = printf.arguments.length-1;
if (nbvar>=1) for (i=1;i<=nbvar;i++) chaine = chaine.replace('%'+i,printf.arguments[i]);
return chaine;
}

function trim(s) { return s.replace(/(^\s*)|(\s*$)/g, ""); }

function verif_longueur_text(champ,mini,libelle)
{
if (champ.value.length < mini)
 {
 if (champ.value.length==0)
      window.alert(printf(MSG_CHAMP_RENSEIGNE,libelle))
 else window.alert(printf(MSG_CHAMP_MINI,libelle,mini));
 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(printf(MSG_CHAMP_CARACINTERDIT,libelle));
   champ.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(printf(MSG_LIMITES_JOUR,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,MSG_MOT_JOUR+' ('+libelle+')')) return false;
  if (!verif_longueur_text(m,1,MSG_MOT_MOIS+' ('+libelle+')')) return false;
  if (!verif_longueur_text(a,4,MSG_MOT_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(MSG_DATE_INCOMPLETE); j.focus(); return false; }
  else if (j_vide && m_vide && a_vide) return true;
  }

if (!verif_autorise_text(j,'0123456789',MSG_MOT_JOUR)) return false;
if (!verif_autorise_text(m,'0123456789',MSG_MOT_MOIS)) return false;
if (!verif_autorise_text(a,'0123456789',MSG_MOT_ANNEE)) return false;
if ((m.value < 1) || (m.value > 12)) { alert(MSG_LIMITES_MOIS); 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,10); m1 = parseInt(cm1.value,10); a1 = parseInt(ca1.value,10);
j2 = parseInt(cj2.value,10); m2 = parseInt(cm2.value,10); a2 = parseInt(ca2.value,10);
if ( (a2 < a1) || ((a2 == a1) && (m2 < m1)) || 
     ((a2 == a1) && (m2 == m1) && (j2 < j1)) ) return -1; // sens nég : 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_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(MSG_EMAIL_INVALIDE); email.focus(); return false; } 	
 }	
return true; 	   
}

function verif_entier(champ, libelle)
{
if (champ.value.length>0)
 {
 x = trim(champ.value);
 if (isNaN(x) || (x.indexOf('.')!=-1))
  { alert(printf(MSG_CHAMP_ENTIER,libelle)); champ.focus(); return false; }
 champ.value = parseInt(x,10);
 }
return true;
}
function verif_entier_limites(champ,mini,maxi,libelle)
{
if (verif_entier(champ,libelle))
 {
 if (parseInt(champ.value,10)<mini || parseInt(champ.value,10)>maxi)
  { alert(printf(MSG_ENTIER_LIMITES,libelle,mini,maxi)); champ.focus(); return false; }
 }
else return false;
return true;
}

function verif_reel(champ,libelle)
{
if (champ.value.length>0)
 {
 x = trim(champ.value.replace(/,/gi,"."));
 x = x.replace(/[.]$/gi,""); 
 if (isNaN(x)) { alert(printf(MSG_CHAMP_REEL,libelle)); champ.focus(); return false; }
 champ.value = parseFloat(x);
 }
return true;
}
function verif_reel_limites(champ,mini,maxi,libelle)
{
if (verif_reel(champ,libelle))
 {
 if (parseFloat(champ.value)<mini || parseFloat(champ.value)>maxi)
  { alert(printf(MSG_ENTIER_LIMITES,libelle,mini,maxi)); champ.focus(); return false; }
 }
else return false;
return true;
}


function verif_select(champ,lib)
{
if ((champ.selectedIndex==-1) || (champ.selectedIndex==0 && champ.options[0].value==0))
  { alert(printf(MSG_SELECT_ELEM,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(printf(MSG_SELECT_MIN,mini,(mini>1?'s':''),lib)); return false;}
  if ((maxi>mini) && (nbcheck>maxi))
    { alert(printf(MSG_SELECT_MAX,maxi,(maxi>1?'s':''),lib)); return false;}
  }
return true;
}

function verif_radio(champ,lib)
{
nbcheck=0;
if (champ.length != undefined)
	{	i=0; while (i<champ.length) if (champ[i++].checked) nbcheck++; }
else if (champ.checked) nbcheck=1;
if (nbcheck==0) { alert(printf(MSG_SELECT_RADIO,lib)); return false; }
return true;
}

function confirmer(msg) { return confirm(MSG_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); }


