function VerifFormElement(id,type,verif,vars){	
	_this = this;
	_this.success = true;
	_this.el = document.getElementById(id);
	_this.classInput = "";
	_this.classError = "";
	
	if(typeof(vars) == 'object'){
		_this.vars = vars;
	}	else{
		_this.vars = jQuery.parseJSON(vars);
	}
	
	//on boucle sur les parametres facultatifs -> $vars
	//Valeurs possibles : min_date,max_date
	
	for(var a in _this.vars){	
		switch(a){
		default:
		_this[a] = _this.vars[a];	
		break;		 
		}
	}
	
	switch(type){	
		case 'radio':

		gr = $("input[name='"+id+"']");	
		
		var checked = 0;
		
		for(j=0;j<gr.length;j++){
			if(gr[j].checked === true){
				checked = 1;
				break;
			}
		}
		if(checked == 0){
			_this.success = false;
			if(_this.classError == ""){
				_this.classInput ="JsLabelError";
			}	else{
				_this.classInput = _this.classError;
			}
		}
		
		var bool_form_php = $(gr[0]).parents('.formRadioGroup').length;		
		if(bool_form_php>0){		
			//si formulaire généré par Dom/Form.class.php, le bouton radio se situe avant le label, pour une meilleure lecture
			$(gr[0]).parent().parent().children('div').each(  function(){  $(this).children('label').attr('class',_this.classInput); } );
		}	else{
			//sinon ,formulaire standard <input><label><input><label>
			$(gr[0]).parent().children('label').attr('class',_this.classInput);
		}
		break;
	
		case 'checkbox':
		case 'checkBox':
		//var parent =  _this.el.parentNode.parentNode;
		gr = $("input[name='"+id+"[]']");
		var checked = 0;
		for(j=0;j<gr.length;j++){
			if(gr[j].checked === true){
				checked = 1;
				break;
			}
		}
		if(checked == 0){
			_this.success = false;
			if(_this.classError == ""){
				_this.classInput ="JsLabelError";
			}	else{
				_this.classInput = _this.classError;
			}
		}

		var bool_form_php = $(gr[0]).parents('.formRadioGroup').length;		
		if(bool_form_php>0){		
			//si formulaire généré par Dom/Form.class.php, le bouton radio se situe avant le label, pour une meilleure lecture
			$(gr[0]).parent().parent().children('div').each(  function(){  $(this).children('label').attr('class',_this.classInput); } );
		}	else{
			//sinon ,formulaire standard <input><label><input><label>
			$(gr[0]).parent().children('label').attr('class',_this.classInput);
		}
		break;
		
		case "input":
		case "password":
		case "date":
		
		switch(verif){
			case 'email':
			var v = _this.el.value;
			if(_this.classError == ""){
				_this.classError ="JsInputError";
			}	
			var parent = _this.el.parentNode;
			var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
			if (!regex.test(v)){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			_this.el.className = _this.classInput;
			break;
			
			case 'int':
			var v = _this.el.value;
			var regex = /^(-?[0-9])+([\.|,])?([0-9])*$/;
			
			if(_this.classError == ""){
				_this.classError ="JsInputError";
			}	
			
			if (!regex.test(v)){
				_this.success = false;
				_this.classInput = _this.classError;
			}

			if(_this.min != '' && parseFloat(v) < _this.min){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			if(_this.max != '' && parseFloat(v) > _this.max){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			
			 _this.el.className = _this.classInput;
			break;
			
			case 'date':
			if(_this.classError == ""){
				_this.classError ="JsInputError";
			}	
			
			var v = _this.el.value;
			var parent = _this.el.parentNode;
			var regex = /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2,4}$/;
			if (!regex.test(v)){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			_this.el.className = _this.classInput;
			break;
			
			default:
			if(_this.classError == ""){
				_this.classError ="JsInputError";
			}
			var v = _this.el.value;
			if(v.min != '' && v.length < _this.min){
				_this.success = false;
				_this.classInput = _this.classError;
			}	else{
				if(v.length == 0){
					_this.success = false;
					_this.classInput = _this.classError;
				}
			}
		
			if(_this.max != '' && v.length > _this.max && verif != 'date'){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			
			if(v.length<1){
				_this.success = false;
				_this.classInput = _this.classError;
			}
			
			_this.el.className = _this.classInput;
			 
			break;
		}
		break;
		
		case 'select':
		
		if(_this.classError == ""){
				_this.classError ="JsInputError";
			}
			
		verif = _this.el[_this.el.selectedIndex].value;

		if(verif == ""){
			_this.success = false;
			_this.classInput = _this.classError;
			
			if($('#'+id+'_msdd').length>0){
				$('#'+id+'_msdd').css('border',"1px solid #ff0000");
			}	
		}	else{
			if($('#'+id+'_msdd').length>0){
				$('#'+id+'_msdd').css('border',"none");
			}
		}
		 _this.el.className = _this.classInput;
		 
		break;
				
		
	}

	return _this.success;
}


