var premierePasse = true;
var TabClass = new Array();
function okradio(champ) {
      for(l=0;l<champ.length;l++)
       {
         if(champ[l].checked) return true
        // alert(mess_alert)
       }
      return false
}

function validate(form,LONGUEUR_MOTPASSE)
{
changeSubmit(form,true);
 // enleve les espaces
 trim_all(form);
 
 var nbError = 0;
 var msg = "";
 var classError = form.className+'_err_input';
 var firstError = null;
 for (var i=0;i<form.elements.length;i++)
 {
  curError = false;

  champ = form.elements[i];
  nom   = champ.name;
  // traitement des attributs
  var requis  = false;
  var subtype = '';
  var constraint = new Array();
  var comment    = '';
  var maxlength  = '';
  for (var j=0;j<champ.attributes.length;j++)
  {
   date = false;
   attName = champ.attributes[j].name.toLowerCase();
   attVal  = champ.attributes[j].value;
   switch ( attName )
   {
    case 'required':
     if ( attVal.toLowerCase() == 'required' ) requis = true;
     break;
    case 'subtype':
     subtype = attVal.toLowerCase();
     break;
    case 'constraint':
     constraint = attVal.toLowerCase().split(',');
     break;
    case 'comment':
     comment = champ.attributes[j].value;
     break;
    case 'maxlength':
     maxlength = parseInt(attVal);
     break;
   }
  }

  if ( requis && champ.value == "" && subtype != 'check_date' && subtype != 'check_timestamp' )
  {
   msg = msg + "\n * Veuillez saisir une valeur pour le champ '"+comment+"' !";
   curError = true;
  }

  if ( requis && champ.type == "radio" && (!okradio(form.elements)) )
  {
   msg = msg + "\n * Veuillez cocher une option pour le champ '"+nom+"' !";
   curError = true;
  }

  // si requis ou non-requis et champ non vide
  if ( (subtype != '' || constraint.length > 0) && (requis || (! requis && champ.value != '' )) )
  {
   switch ( subtype )
   {
   	case 'check_security':
   		if (curError == false)
   		{
	   		CtlCaptcha(champ.value,form);
	   		if (form.elements['ctl'].value == 0)
	   		{
	   			msg = msg + "\n Le controle de sécurité saisi n\'est pas correct. Veuillez le resaisir!'";
	   			curError = true;
	   		}
   		}
   		break;
    case 'check_varchar':
     if ( maxlength != '' )
     {
      if ( ! ( champ.value.length <= maxlength ) )
      {
       msg = msg + "\n * 'Le texte saisi pour le champ '"+comment+"' est trop long !'";
       curError = true;
      }
     }
     break;
    case 'check_text':
     break;
    case 'check_integer':
     RE = /^\-?[0-9]+$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     {
      msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_numeric':
     RE = /^\-?[0-9]*\.?[0-9]*$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_date':
    case 'check_timestamp':
     eval('var year  = form.'+nom+'_aa');
     eval('var month = form.'+nom+'_mm');
     eval('var day   = form.'+nom+'_jj');
     if ( year.value != '-' && month.value != '-' && day.value != '-' && ! isDate(year.value,month.value,day.value) )
     {
      msg = msg + "\n * 'La date saisie n'est pas valide pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( year.value == '-' || month.value == '-' || day.value == '-' )
     {
      msg = msg + "\n * 'La date saisie est incomplète pour le champ '"+comment+"' !'";
      curError = true;
     }
     date = true;
     break;
   }
   if ( constraint.length > 0  && ! curError )
   {
    for (var k=0;k<constraint.length;k++)
    {
     switch ( constraint[k] )
     {
      case 'check_integer':
     	RE = /^\-?[0-9]+$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     	{
      		msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;
      case 'check_numeric':
     	RE = /^\-?[0-9]*\.?[0-9]*$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;     	
      case 'check_positif':
       if ( ! ( champ.value > 0 ) )
       {
        msg = msg + "\n * 'Veuillez saisir un nombre positif pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_email':
       RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][a-zA-Z]{2,6}$/;
       if ( ! RE.test(champ.value) )
       {
        msg = msg +  "\n * 'Le champ '"+comment+"' n\'est pas une adresse email correcte !'";
        curError = true;
       }
       break;
      case 'check_nonvide':
       if ( ! ( champ.value != "" ) )
       {
        msg = msg + "\n * 'Veuillez saisir une valeur pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_url':
       if ( champ.value != "" )
       {
        RE = /^[A-Za-z]+[:\/\/]+[A-Za-z0-9]+[A-Za-z0-9\.\-_%\?&\/=~]+$/;
        if ( ! RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n\'est pas une adresse URL correcte !'";
         curError = true;
        }
       }
       break;
      case 'check_password':
       RE = /^[a-zA-Z0-9]*$/;
       if ( ! ( RE.test(champ.value) ) )
       {
        msg = msg + "\n * 'Le mot de passe ne doit contenir que des lettres ou des chiffres !'";
        curError = true;
       }
       if ( ! ( champ.value.length >= LONGUEUR_MOTPASSE ) )
       {
        msg = msg + "\n * 'Le mot de passe doit faire au moins "+LONGUEUR_MOTPASSE+" caractères !'";
        curError = true;
       }
       break;
      case 'check_file':
       if ( form.mode && form.mode.value != 'insert' )
       {
        RE = /(\|)|(:)|(\*)|(<)|(>)|(\\\\)|(\/)|(\?)|(")/;
        if ( RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n'est pas un nom de fichier correct !'";
         curError = true;
        }
       }
       break;
	  case 'check_norepeat':
	   longueur = champ.value.length;
	   var norepeat = false;
	   for (var l=0;l<(longueur-1);l++)
	   {
	    if ( champ.value.substr(l,1) != champ.value.substr(l+1,1) )
        {
		 norepeat = true;
		 break;
		}
	   }
	   if ( ! norepeat )
	   {
         msg = msg + "\n * 'Le champ '"+comment+"' est une répétition !'";
         curError = true;
	   }
	   break;
     }
    }
   }
  }
  
  /*form.security_code.value = trim(form.security_code.value);
   if ( ! (form.security_code.value !="") )
    {
     alert("Veuillez saisir une valeur pour le paramètre 'Code de vérification' !");
     form.security_code.focus();
     return false;
    }*/

  if ( premierePasse )
  {
   if ( date )
   {
    TabClass[nom] = year.className;
   }
   else
   {
    TabClass[nom] = champ.className;
   }
  }

  if ( curError )
  {
   if ( date )
   {
    year.className  += ' '+ classError;
    month.className += ' '+ classError;
    day.className   += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = year;
    }
   }
   else
   {
    champ.className += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = champ;
    }
   }
   nbError = nbError + 1;
  }
  else
  {
   if ( date )
   {
    year.className  = TabClass[nom];
    month.className = TabClass[nom];
    day.className   = TabClass[nom];
   }
   else
   {
    champ.className = TabClass[nom];
   }
  }
 } // boucle sur les champs

 if ( premierePasse ) premierePasse = false;

 if ( msg != "" )
 {
  msg = 'Données saisies non valides.'+msg;
  if ( nbError > 1 )
  {
   msg = msg + "\nVeuillez corriger ces erreurs.";
  }
  else
  {
   msg = msg + "\nVeuillez corriger cette erreur.";
  }
  alert(msg);
  if ( firstError )
  {
   firstError.focus();
  }
  changeSubmit(form,false);
  return false;
 }

 return true;
}

function changeSubmit(form,disabled)
{
 for (var i=0;i<form.elements.length;i++)
 {
  if ( (form.elements[i].type == 'submit' || form.elements[i].type == 'reset') && form.elements[i].tagName.toLowerCase() == 'input' )
  {
   form.elements[i].disabled = disabled;
  }
 }
}

function focusFirst(name)
{
 var form = document.forms[name];
 for (var i=0;i<form.elements.length;i++)
 {
  var tag = form.elements[i].tagName.toLowerCase();
  if ( form.elements[i].type != 'hidden' && ! form.elements[i].disabled && (tag == 'input' || tag == 'select' || tag == 'textarea') )
  {
   form.elements[i].focus();
   return;
  }
 }
}

function isDate(year,month,day)
{
 month = month - 1;
 var tempDate = new Date(year,month,day);
 if ( tempDate.getFullYear() == year && month == tempDate.getMonth() && day == tempDate.getDate() )
 {
  return true;
 }
 else
 {
  return false;
 }
}
var FormulaireModifie = false;
function FormChange()
{
 FormulaireModifie = true;
}
function FormulaireChange(url)
{
 if ( FormulaireModifie )
 {
  if ( confirm('Le formulaire a été modifié : voulez-vous vraiment quitter cette page sans sauvegarde ?') )
  {
   redirection(url);
  }
 }
 else
 {
   redirection(url);
 }
}


function Ctlprinc(form)
{
  leForm = form;
  var id=document.getElementById("id"); 
  var prod=document.getElementById("produit"); 
  if (id!='')
   {	
   new Ajax.Request('controle_princ.php',{method: 'get', parameters:
    'prod='+prod+"&id="+id, onSuccess: getResponseprinc, onFailure:reportError});
   } 
}
function getResponseprinc(rep)
{
 var txt = rep.responseText;

  if ( txt != '0')
  {
   alert('Il y a déjà un article principal pour ce produit .');
   leForm.produitprincipal.focus();
   leForm.produitprincipal.value='N';
   return false;
  }
}

function validate2(form,LONGUEUR_MOTPASSE)
{
changeSubmit(form,true);

 // enleve les espaces
 trim_all(form);

 var nbError = 0;
 var msg = "";
 var classError = form.className+'_err_input';
 var firstError = null;
 for (var i=0;i<form.elements.length;i++)
 {
  curError = false;

  champ = form.elements[i];
  nom   = champ.name;
  
  // traitement des attributs
  var requis  = false;
  var subtype = '';
  var constraint = new Array();
  var comment    = '';
  var maxlength  = '';
  for (var j=0;j<champ.attributes.length;j++)
  {
   date = false;
   attName = champ.attributes[j].name.toLowerCase();
   
   attVal  = champ.attributes[j].value;
   switch ( attName )
   {
    case 'required':
     if ( attVal.toLowerCase() == 'required' ) requis = true;
     break;
    case 'subtype':
     subtype = attVal.toLowerCase();
     break;
    case 'constraint':
     constraint = attVal.toLowerCase().split(',');
     break;
    case 'comment':
     comment = champ.attributes[j].value;
     break;
    case 'maxlength':
     maxlength = parseInt(attVal);
     break;
   }
  }

  if ( requis && champ.value == "" && subtype != 'check_date' && subtype != 'check_timestamp' )
  {
   msg = msg + "\n * Veuillez saisir une valeur pour le champ '"+comment+"' !";
   curError = true;
  }

  if ( requis && champ.type == "radio" && (!okradio(form.elements)) )
  {
   msg = msg + "\n * Veuillez cocher une option pour le champ '"+nom+"' !";
   curError = true;
  }

  // si requis ou non-requis et champ non vide
  if ( (subtype != '' || constraint.length > 0) && (requis || (! requis && champ.value != '' )) )
  {
   switch ( subtype )
   {
    case 'check_varchar':
     if ( maxlength != '' )
     {
      if ( ! ( champ.value.length <= maxlength ) )
      {
       msg = msg + "\n * 'Le texte saisi pour le champ '"+comment+"' est trop long !'";
       curError = true;
      }
     }
     break;
    case 'check_text':
     break;
    case 'check_integer':
     RE = /^\-?[0-9]+$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     {
      msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_numeric':
     RE = /^\-?[0-9]*\.?[0-9]*$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_date':
    case 'check_timestamp':
     eval('var year  = form.'+nom+'_aa');
     eval('var month = form.'+nom+'_mm');
     eval('var day   = form.'+nom+'_jj');
     if ( year.value != '-' && month.value != '-' && day.value != '-' && ! isDate(year.value,month.value,day.value) )
     {
      msg = msg + "\n * 'La date saisie n'est pas valide pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( year.value == '-' || month.value == '-' || day.value == '-' )
     {
      msg = msg + "\n * 'La date saisie est incomplète pour le champ '"+comment+"' !'";
      curError = true;
     }
     date = true;
     break;
   }
   if ( constraint.length > 0  && ! curError )
   {
    for (var k=0;k<constraint.length;k++)
    {
     switch ( constraint[k] )
     {
      case 'check_integer':
     	RE = /^\-?[0-9]+$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     	{
      		msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;
      case 'check_numeric':
     	RE = /^\-?[0-9]*\.?[0-9]*$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;     	
      case 'check_positif':
       if ( ! ( champ.value > 0 ) )
       {
        msg = msg + "\n * 'Veuillez saisir un nombre positif pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_email':
       RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][a-zA-Z]{2,6}$/;
       if ( ! RE.test(champ.value) )
       {
        msg = msg +  "\n * 'Le champ '"+comment+"' n\'est pas une adresse email correcte !'";
        curError = true;
       }
       break;
      case 'check_nonvide':
       if ( ! ( champ.value != "" ) )
       {
        msg = msg + "\n * 'Veuillez saisir une valeur pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_url':
       if ( champ.value != "" )
       {
        RE = /^[A-Za-z]+[:\/\/]+[A-Za-z0-9]+[A-Za-z0-9\.\-_%\?&\/=~]+$/;
        if ( ! RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n\'est pas une adresse URL correcte !'";
         curError = true;
        }
       }
       break;
      case 'check_password':
       RE = /^[a-zA-Z0-9]*$/;
       if ( ! ( RE.test(champ.value) ) )
       {
        msg = msg + "\n * 'Le mot de passe ne doit contenir que des lettres ou des chiffres !'";
        curError = true;
       }
       if ( ! ( champ.value.length >= LONGUEUR_MOTPASSE ) )
       {
        msg = msg + "\n * 'Le mot de passe doit faire au moins "+LONGUEUR_MOTPASSE+" caractères !'";
        curError = true;
       }
       break;
      case 'check_file':
       if ( form.mode && form.mode.value != 'insert' )
       {
        RE = /(\|)|(:)|(\*)|(<)|(>)|(\\\\)|(\/)|(\?)|(")/;
        if ( RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n'est pas un nom de fichier correct !'";
         curError = true;
        }
       }
       break;
	  case 'check_norepeat':
	   longueur = champ.value.length;
	   var norepeat = false;
	   for (var l=0;l<(longueur-1);l++)
	   {
	    if ( champ.value.substr(l,1) != champ.value.substr(l+1,1) )
        {
		 norepeat = true;
		 break;
		}
	   }
	   if ( ! norepeat )
	   {
         msg = msg + "\n * 'Le champ '"+comment+"' est une répétition !'";
         curError = true;
	   }
	   break;
     }
    }
   }
  }
  
  /*form.security_code.value = trim(form.security_code.value);
   if ( ! (form.security_code.value !="") )
    {
     alert("Veuillez saisir une valeur pour le paramètre 'Code de vérification' !");
     form.security_code.focus();
     return false;
    }*/

  if ( premierePasse )
  {
   if ( date )
   {
    TabClass[nom] = year.className;
   }
   else
   {
    TabClass[nom] = champ.className;
   }
  }

  if ( curError )
  {
   if ( date )
   {
    year.className  += ' '+ classError;
    month.className += ' '+ classError;
    day.className   += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = year;
    }
   }
   else
   {
    champ.className += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = champ;
    }
   }
   nbError = nbError + 1;
  }
  else
  {
   if ( date )
   {
    year.className  = TabClass[nom];
    month.className = TabClass[nom];
    day.className   = TabClass[nom];
   }
   else
   {
    champ.className = TabClass[nom];
   }
  }
 } // boucle sur les champs
 
 if ( premierePasse ) premierePasse = false;

 if ( msg != "" )
 {
  msg = 'Données saisies non valides.'+msg;
  if ( nbError > 1 )
  {
   msg = msg + "\nVeuillez corriger ces erreurs.";
  }
  else
  {
   msg = msg + "\nVeuillez corriger cette erreur.";
  }
  alert(msg);
  if ( firstError )
  {
   firstError.focus();
  }
  changeSubmit(form,false);
  return false;
 }
 
 var p1 = form.password.value;
 var p2 = form.pwd.value;
 if ( p1 != p2 )
 {
  msg = 'Les mots de passe saisis ne sont pas identiques !'+msg;
  if ( nbError > 1 )
  {
   msg = msg + "\nVeuillez corriger ces erreurs.";
  }
  else
  {
   msg = msg + "\nVeuillez corriger cette erreur.";
  }
  alert(msg);
  if ( firstError )
  {
   firstError.focus();
  }
  changeSubmit(form,false);
  return false;
 }
 return true;
}

function validate3(form,LONGUEUR_MOTPASSE)
{
changeSubmit(form,true);

 // enleve les espaces
 trim_all(form);

 var nbError = 0;
 var msg = "";
 var classError = form.className+'_err_input';
 var firstError = null;
 var casecoche = "NON";
 for (var i=0;i<form.elements.length;i++)
 {
  curError = false;

  champ = form.elements[i];
  nom   = champ.name;
  
  // traitement des attributs
  var requis  = false;
  var subtype = '';
  var constraint = new Array();
  var comment    = '';
  var maxlength  = '';
  for (var j=0;j<champ.attributes.length;j++)
  {
   date = false;
   attName = champ.attributes[j].name.toLowerCase();
   
   attVal  = champ.attributes[j].value;
   switch ( attName )
   {
    case 'required':
     if ( attVal.toLowerCase() == 'required' ) requis = true;
     break;
    case 'subtype':
     subtype = attVal.toLowerCase();
     break;
    case 'constraint':
     constraint = attVal.toLowerCase().split(',');
     break;
    case 'comment':
     comment = champ.attributes[j].value;
     break;
    case 'maxlength':
     maxlength = parseInt(attVal);
     break;
   }
  }
  if ( nom == "adrfac" && form.elements[i].checked )
  {
   casecoche = "OUI";
  }
  if ( requis && champ.value == "" && subtype != 'check_date' && subtype != 'check_timestamp' )
  {
   msg = msg + "\n * Veuillez saisir une valeur pour le champ '"+comment+"' !";
   curError = true;
  }

  if ( requis && champ.type == "radio" && (!okradio(form.elements)) )
  {
   msg = msg + "\n * Veuillez cocher une option pour le champ '"+nom+"' !";
   curError = true;
  }

  // si requis ou non-requis et champ non vide
  if ( (subtype != '' || constraint.length > 0) && (requis || (! requis && champ.value != '' )) )
  {
   switch ( subtype )
   {
    case 'check_varchar':
     if ( maxlength != '' )
     {
      if ( ! ( champ.value.length <= maxlength ) )
      {
       msg = msg + "\n * 'Le texte saisi pour le champ '"+comment+"' est trop long !'";
       curError = true;
      }
     }
     break;
    case 'check_text':
     break;
    case 'check_integer':
     RE = /^\-?[0-9]+$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     {
      msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_numeric':
     RE = /^\-?[0-9]*\.?[0-9]*$/;
     if ( ! RE.test(champ.value) )
     {
      msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      curError = true;
     }
     break;
    case 'check_date':
    case 'check_timestamp':
     eval('var year  = form.'+nom+'_aa');
     eval('var month = form.'+nom+'_mm');
     eval('var day   = form.'+nom+'_jj');
     if ( year.value != '-' && month.value != '-' && day.value != '-' && ! isDate(year.value,month.value,day.value) )
     {
      msg = msg + "\n * 'La date saisie n'est pas valide pour le champ '"+comment+"' !'";
      curError = true;
     }
     if ( year.value == '-' || month.value == '-' || day.value == '-' )
     {
      msg = msg + "\n * 'La date saisie est incomplète pour le champ '"+comment+"' !'";
      curError = true;
     }
     date = true;
     break;
   }
   if ( constraint.length > 0  && ! curError )
   {
    for (var k=0;k<constraint.length;k++)
    {
     switch ( constraint[k] )
     {
      case 'check_integer':
     	RE = /^\-?[0-9]+$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un entier pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	if ( ! ( champ.value.length < (Math.pow(2,4*8) / 2 - 1) ) )
     	{
      		msg = msg + "\n * 'La valeur saisie est trop grande pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;
      case 'check_numeric':
     	RE = /^\-?[0-9]*\.?[0-9]*$/;
     	if ( ! RE.test(champ.value) )
     	{
      		msg = msg + "\n * 'Veuillez saisir un nombre réel pour le champ '"+comment+"' !'";
      		curError = true;
     	}
     	break;     	
      case 'check_positif':
       if ( ! ( champ.value > 0 ) )
       {
        msg = msg + "\n * 'Veuillez saisir un nombre positif pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_email':
       RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][a-zA-Z]{2,6}$/;
       if ( ! RE.test(champ.value) )
       {
        msg = msg +  "\n * 'Le champ '"+comment+"' n\'est pas une adresse email correcte !'";
        curError = true;
       }
       break;
      case 'check_nonvide':
       if ( ! ( champ.value != "" ) )
       {
        msg = msg + "\n * 'Veuillez saisir une valeur pour le champ '"+comment+"' !'";
        curError = true;
       }
       break;
      case 'check_url':
       if ( champ.value != "" )
       {
        RE = /^[A-Za-z]+[:\/\/]+[A-Za-z0-9]+[A-Za-z0-9\.\-_%\?&\/=~]+$/;
        if ( ! RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n\'est pas une adresse URL correcte !'";
         curError = true;
        }
       }
       break;
      case 'check_password':
       RE = /^[a-zA-Z0-9]*$/;
       if ( ! ( RE.test(champ.value) ) )
       {
        msg = msg + "\n * 'Le mot de passe ne doit contenir que des lettres ou des chiffres !'";
        curError = true;
       }
       if ( ! ( champ.value.length >= LONGUEUR_MOTPASSE ) )
       {
        msg = msg + "\n * 'Le mot de passe doit faire au moins "+LONGUEUR_MOTPASSE+" caractères !'";
        curError = true;
       }
       break;
      case 'check_file':
       if ( form.mode && form.mode.value != 'insert' )
       {
        RE = /(\|)|(:)|(\*)|(<)|(>)|(\\\\)|(\/)|(\?)|(")/;
        if ( RE.test(champ.value) )
        {
         msg = msg + "\n * 'Le champ '"+comment+"' n'est pas un nom de fichier correct !'";
         curError = true;
        }
       }
       break;
	  case 'check_norepeat':
	   longueur = champ.value.length;
	   var norepeat = false;
	   for (var l=0;l<(longueur-1);l++)
	   {
	    if ( champ.value.substr(l,1) != champ.value.substr(l+1,1) )
        {
		 norepeat = true;
		 break;
		}
	   }
	   if ( ! norepeat )
	   {
         msg = msg + "\n * 'Le champ '"+comment+"' est une répétition !'";
         curError = true;
	   }
	   break;
     }
    }
   }
  }
  
  /*form.security_code.value = trim(form.security_code.value);
   if ( ! (form.security_code.value !="") )
    {
     alert("Veuillez saisir une valeur pour le paramètre 'Code de vérification' !");
     form.security_code.focus();
     return false;
    }*/

  if ( premierePasse )
  {
   if ( date )
   {
    TabClass[nom] = year.className;
   }
   else
   {
    TabClass[nom] = champ.className;
   }
  }

  if ( curError )
  {
   if ( date )
   {
    year.className  += ' '+ classError;
    month.className += ' '+ classError;
    day.className   += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = year;
    }
   }
   else
   {
    champ.className += ' '+ classError;
    if ( nbError == 0 )
    {
     firstError = champ;
    }
   }
   nbError = nbError + 1;
  }
  else
  {
   if ( date )
   {
    year.className  = TabClass[nom];
    month.className = TabClass[nom];
    day.className   = TabClass[nom];
   }
   else
   {
    champ.className = TabClass[nom];
   }
  }
 } // boucle sur les champs

 if ( premierePasse ) premierePasse = false;

 if ( msg != "" )
 {
  msg = 'Données saisies non valides.'+msg;
  if ( nbError > 1 )
  {
   msg = msg + "\nVeuillez corriger ces erreurs.";
  }
  else
  {
   msg = msg + "\nVeuillez corriger cette erreur.";
  }
  alert(msg);
  if ( firstError )
  {
   firstError.focus();
  }
  changeSubmit(form,false);
  return false;
 }

 var p1 = form.nomf.value;
 var p2 = form.prenomf.value;
 var p3 = form.adrruef.value;
 var p4 = form.codepostalf.value;
 var p5 = form.villef.value;
 var p6 = form.telf.value;
 if ( casecoche == "NON" && ( p1 == "" || p2 == "" || p3 == "" || p4 == "" || p5 == "" || p6 == "") )
 {
  msg = "Vous devez cocher que l'adresse de facturation est identique à l'adresse de livraison ou bien saisir tous les éléments de l'adresse de facturation !"+msg;
  if ( nbError > 1 )
  {
   msg = msg + "\nVeuillez corriger ces erreurs.";
  }
  else
  {
   msg = msg + "\nVeuillez corriger cette erreur.";
  }
  alert(msg);
  if ( firstError )
  {
   firstError.focus();
  }
  changeSubmit(form,false);
  return false;
 }
 return true;
}



