// JavaScript Document

var btn_submit = "";
var ac_frm = "";

function frm(id,err_msg){
  this.id = id;
  this.err_msg = err_msg;
  this.dft_submit ="";
  this.flds = new Array();
  this.flds_id = new Array();
  this.err = 0;
  this.msg="";
}

function ad_fld(nm,ft,re,msg,dft,chk){
  var len = this.flds.length;
  this.flds[len] = new fld(nm,ft,re,msg,dft,chk);
  this.flds_id[nm] = len;
}
frm.prototype.af = ad_fld;

function clr_form(){
  len = this.flds.length;
  for (var i = 0; i < len; i++){
    this.flds[i].rst();
  }
  return false;
}

frm.prototype.clear = clr_form;

function run_fld(nm){
    var cr = this.id + "." + nm+ "()"; // prototype déclaré dans script dynamique frm.nm = js_run
    try { return eval(cr);}
    catch (e) {
// bloc a copier dans routine js personalisée de traitement du bouton (nom de routine a déclarer dans le champ $field->js_run)
      if (!this.err){  // execute le submit
        return true; 
      } else {  // affiche les erreurs : n'execute pas le submit
          prm = "SHADOW, SHADOWCOLOR, '#555', OFFSETX,-200, OFFSETY, -150,TIMEOUT,15000";    
          msg = "<span class='error'>" + this.msg + "</span>" + this.err_msg ;
          olb(msg,"Erreur !", "err",prm );//message titre, suffix css, parametres
      return false; 
      }
// fin du bloc
  }

}
frm.prototype.run = run_fld;


function ck_frm() {
  this.err=0;
  ac_frm = this.id;
  var len = this.flds.length;
  if (btn_submit=="") btn_submit=this.dft_submit;
  var chk = this.flds[this.flds_id[btn_submit]].chk;
  if (chk !=0){
    for (var i = 0; i < len; i++){
      var fld = this.flds[i];
      var val = document.forms[this.id].elements[fld.nm].value;
      try {
        var result = val.match(fld.re);
      }
      catch (e) {  
      }
      if ((result == null) || (result = "")){ 
        this.err = 1;
        this.msg += fld.msg +"<br />"; 
      } 
    }
  }
  var to_submit = this.run(btn_submit);
  btn_submit = this.dft_submit;
  this.msg = "";
  return to_submit;
}
frm.prototype.check = ck_frm;

function fld(nm,ft,re,msg,dft,chk){
  this.nm = nm;
  this.ft = ft;
  this.re =  re ;
  this.msg = msg;
  this.dft = dft;
  this.chk = chk;
}

function reset_fld(){
    var id = 0;
  switch (this.ft){
    case 'textarea' : 
    case 'select' :
    case 'text' : document.forms[ac_frm].elements[this.nm].value = this.dft;
                  break;
    case 'radio': if (this.dft == 0) id = this.nm ; else id = this.nm + this.dft;
                  document.getElementById(id).checked = true;
                  break;
    default : break;
  }
}

fld.prototype.rst = reset_fld;
