
// Bibliothèque de validation de champs Javascript
function valid_email(FormName,ElemName,msg)
{
  var EmailOk  = true
  var Temp     = field_name2obj(FormName,ElemName);
  var AtSym    = Temp.value.indexOf('@')
  var Period   = Temp.value.lastIndexOf('.')
  var Space    = Temp.value.indexOf(' ')
  var Length   = Temp.value.length - 1   // Array is from 0 to length-1

  if ((AtSym < 1) ||                     // '@' cannot be in first position
      (Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
      (Period == Length ) ||             // Must be atleast one valid char after '.'
      (Space  != -1))                    // No empty spaces permitted
     {
        EmailOk = false
        alert(msg)
        Temp.focus()
     }
  return EmailOk
}

// function peremettant de valider si un champs texte est vide
// frm:objet de la form contant l'objet
// field_name: nom du champs
function valid_text(inForm,field_name,err_msg)
{
  var ret=true;
  var obj_text=field_name2obj(inForm,field_name);
  var value=obj_text.value;

  if(value=="")
  {
   alert(err_msg);
   obj_text.focus();
   if(obj_text.type=="text") obj_text.select();
   ret=false;
  }
  return ret;
}

// function peremettant de valider la valeur d'un champs de type select est corecte
// frm:objet de la form contant l'objet
// field_name: nom du champs
function valid_select(inForm,field_name,err_msg)
{
  var ret=true;
  var obj_text=field_name2obj(inForm,field_name);
  var value=obj_text.options[obj_text.selectedIndex].value;

  if(value=="" || value==null)
  {
   alert(err_msg);
   obj_text.focus();
   if(obj_text.type=="text") obj_text.select();
   ret=false;
  }
  return ret;
}

// function peremettant de valider si un champs check_box est checké
// frm:objet de la form contant l'objet
// field_name: nom du champs
function valid_checkbox(inForm,field_name,err_msg)
{
  var ret=true;
  var obj_text=field_name2obj(inForm,field_name);
  var value=obj_text.checked;
  if(value==false)
  {
   alert(err_msg);
   obj_text.focus();
   obj_text.select();
   ret=false;
  }
  return ret;
}

// function peremettant de valider si un ensemble de champs radio est checké
// frm:objet de la form contant l'objet
// field_name: nom du champs
// err_msg message d'erreur afficher
function valid_radio(inForm,field_name,err_msg)
{
  var find=false;
  var ret = false;

  for(i=0;i<inForm.length;i++)
  {
    if(inForm[i].name==field_name)
    {
      find=true;
      if(inForm[i].checked) { ret=true; break;}
      else ret=false;
    }
  }
  if (!ret) alert(err_msg);
  if (!find) alert("Erreur dans valid_radio: Champs "+field_name+" introuvable dans la form:"+inForm.name);

  return ret;
}

// function permettant de connaître l'index coché d'un ensemble de boutons radio
function radio_checked_index(inForm, field_name)
{
  idx = -1;

  for(i=0;i<inForm.length;i++)
  {
    if(inForm[i].name==field_name)
    {
      idx++;
      if(inForm[i].checked) { break; }
    }
  }
  return idx;
}

// function permettant de convertir trois champs Jour Mois et Année en un objet Date JS
// frm:objet de la form contant l'objet
// field_name_j: nom du champs jour
// field_name_m: nom du champs mois
// field_name_a: nom du champs année
function jma2date(inForm,field_name_j,field_name_m,field_name_a)
{

  var obj_field_j=field_name2obj(inForm,field_name_j);
  var val_j=parseInt(obj_field_j.value,10);

  var obj_field_m=field_name2obj(inForm,field_name_m);
  var val_m=parseInt(obj_field_m.value,10);

  var obj_field_a=field_name2obj(inForm,field_name_a);
  var val_a=parseInt(obj_field_a.value,10);

  objdate= new Date(val_a,val_m-1,val_j);

  return objdate;
}


// function permettant de valider si une date est plausible
// frm:objet de la form contant l'objet
// field_name_j: nom du champs jour
// field_name_m: nom du champs mois
// field_name_a: nom du champs année
function valid_date(inForm,field_name_j,field_name_m,field_name_a,err_msg)
{
  var ret=true;
  var obj_field_j=field_name2obj(inForm,field_name_j);
  var val_j=parseInt(obj_field_j.value,10);

  var obj_field_m=field_name2obj(inForm,field_name_m);
  var val_m=parseInt(obj_field_m.value,10);

  var obj_field_a=field_name2obj(inForm,field_name_a);
  var val_a=parseInt(obj_field_a.value,10);

  // validation de la date
  tmpdate= new Date(val_a,val_m-1,val_j);
  tmpdate2 = new Date();
  tmpdate2.setTime(tmpdate.getTime());

  if(val_a!=tmpdate2.getFullYear() || val_m-1!=tmpdate2.getMonth() ||  val_j!=tmpdate2.getDate())
  {
   alert(err_msg);
   obj_field_j.focus();
   obj_field_j.select();
   ret=false;
  }
  return ret;
}

// Fonction pour valider l'existance d'une date au format français
function valid_date_string(valeur, msg)
{
	ret = true;

	a = valeur.substring(6);
	m = valeur.substring(3, 5);
	j = valeur.substring(0, 2);

	tDate = new Date(a,(m-1),j);

	if (tDate.getFullYear() != a || tDate.getMonth() != (m-1) || tDate.getDate() != j)
	{
		ret = false;
		alert(msg);
	}

	return ret;
}

// validation d'un champs par une condition passé en paramètre dans laquelle la valeur du champs
// est symbolisé par la variable value.
// ex: valid_field(document.form[0],"toto","value>5 && value<10","toto est faux")
function valid_field(inForm,field_name,condition,err_msg)
{
  var ret=true;
  var obj_field=field_name2obj(inForm,field_name);
  var value=obj_field.value;

  if(!eval(condition))
  {
   alert(err_msg);
   obj_field.focus();
   if (obj_field.type=="text" || obj_field.type=="textarea")  obj_field.select();
   ret=false;
  }
  return ret;
}


// function peremettant de retourner l'objet associé à un champs d'une form
// frm:objet de la form contant l'objet
// field_name: nom du champs
function field_name2obj(frm,field_name)
{
  var i,obj_field;

  for (i=0;i<frm.length;i++)
  {
    if(frm.elements[i].name == field_name)
    {
      obj_field = frm.elements[i]; // on sauvegarde dans une variable globale l'objet de saisi de texte en cour d'édition
      break;
    }
  }
 if (obj_field) return obj_field;
 else alert("Erreur dans field_name2obj: champs:"+field_name+" introuvable");
}

// fonction retournant la valeur d'un champs
// frm:objet de la form contant l'objet
// field_name: nom du champs
function val_field_name(frm,field_name)
{
  obj_field=field_name2obj(frm,field_name);
  return (obj_field.value);
}

// fonction permettant de changer la valeur d'un champs d'une forme
// frm:objet de la form contant l'objet
// field_name: nom du champs
// value: valeur à affecter au champs
function set_field_value(frm,field_name,value)
{
  obj_field=field_name2obj(frm,field_name,value);
  obj_field.value=value;
}

