//
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 2000 Le Phare, Nantes, France                          |
// +----------------------------------------------------------------------+
// | valide_form.js : Bibli JavaScript de gestion de validation de saisie |
// |                                                                      |
// +----------------------------------------------------------------------+
// | Author: Vincent CAILLAUD                                             |
// +----------------------------------------------------------------------+
//
// +---------------------------------------------------------------+------+
// | Journal des modifications                                     | Par  |
// +-----------+---------------------------------------------------+------+
// | 01/09/00  |Création V1.0                                      | V.C  |
// +-----------+---------------------------------------------------+------+
// | 30/05/03  | Modif proc valid_text() et valid_field correction | V.C  |
// |           | bug si champs non affichable (hidden)             |      |                                          |      |
// | 30/10/03  | modif valid_select() bug dans nom d'objet         | V.C  | 
// +-----------+---------------------------------------------------+------+
//
// Bibliothèque de validation de champs Javascript
function valid_email(FormName,ElemName) 
{
  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("Merci de vérifier l'adresse email")
        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);
   if (obj_text.type=="text" || obj_text.type=="textarea") 
   {
     obj_text.focus();
     obj_text.select();
   }
   ret=false;
  }
  return ret;
}

// function peremettant de valider si un champs texte représente une valeur numérique
// frm:objet de la form contant l'objet
// field_name: nom du champs
function valid_num(inForm,field_name,err_msg) 
{
  var ret=true; 
  
  if (ret=valid_text(inForm, field_name, err_msg))
  {
    var obj_text=field_name2obj(inForm,field_name);
    var value=obj_text.value;
  
    if(isNaN(value))
    {
     alert(err_msg);
     if (obj_text.type=="text" || obj_text.type=="textarea") 
     {
       obj_text.focus();
       obj_text.select();
     }
     ret=false;
    }
  }
  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);
   if (obj_field.type=="text" || obj_field.type=="textarea")
   {
     obj_field.focus(); 
     obj_field.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_select=field_name2obj(inForm,field_name);
  var value=obj_select.options[obj_select.selectedIndex].value;

  if(value=="" || value==null)
  {
   alert(err_msg);
   obj_select.focus();
   ret=false;
  }
  return ret;
}

// function peremettant de valider la valeur d'un champs de type select est corecte
// la validation se fit via une expression passé en paramètre contrairement à valid_select()
// Dans l'expression, la valeur du select est symbolisé par la variable "value".
// frm:objet de la form contenant l'objet
// field_name: nom du champs
function valid_select2(inForm,field_name,condition,err_msg) 
{
  var ret=true; 
  var obj_select=field_name2obj(inForm,field_name);
  var value=obj_select.options[obj_select.selectedIndex].value;

  if(!eval(condition))
  {
   alert(err_msg);
   obj_select.focus();
   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+" introuvabe dans la form:"+inForm.name);
  
  return ret;
}

// 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;
}

// 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;
}

