// 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="";

	this.af = function(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;
	}

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

	this.run = function(nm){
		var cr = "toto = " + this.id + "." + nm+ "()"; // prototype déclaré dans script dynamique frm.nm = js_run
		var toto = 0;
//		var cr = this[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 $button_field->js_run)
			if (!this.err){  // execute le submit
				return toto;
//				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>"  ;
				olb(msg,"Erreur !", "err",prm );//message titre, suffix css, parametres
				return false; 
			}
		// fin du bloc
		}
	}

   this.check = function() {
	  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){ // vérifie que le bouton actif demande bien de vérifier la validité des zones
	    for (var i = 0; i < len; i++){
	      var fld = this.flds[i];
	      var rl_fld = document.forms[this.id].elements[fld.nm];
	      var val = rl_fld.value;
	// vérifie la regepx
	      try {
	        var result = val.match(fld.re);
	      }
	      catch (e) {  
	      }
	      if ((result == null) || (result.length == 0)){ 
	        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;
	}
   
}


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;

	this.rst=function(){
	    var id = 0;
	  switch (this.ft){
	    case 'area' : 
	    case 'select' :
	    case 'input' : 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;
	  }
	}
	
}
