var Validator = new Object();
Validator.mensajes = '';
Validator.validar = function(f, nombres_campos){
					     var campos = f.elements;
					     return this.validar_campos(campos, nombres_campos);
                    }
Validator.validar_campos = function(campos, nombres_campos){
	                          var ok = true;
	                          var todos_validos = true;
	                          this.mensajes = '';
	                          for(var i in campos){
	                          	var e = campos[i];
	                          	if(e)
	                          	   var clase = e.className;
	                          	   if(e && clase){
	                          	   	   for(var nombre_clase in this.funciones_validadoras){
	                          	   	   	   var cad_pos = (' ' + clase + ' ').indexOf(nombre_clase);
	                          	   	   	   if(cad_pos != -1 && this.funciones_validadoras[nombre_clase]){
	                          	   	   	   	   var nombre_campo = e.name;
	                          	   	   	   	   if(nombres_campos[nombre_campo]){
	                          	   	   	   	   	   nombre_campo = nombres_campos[nombre_campo];
	                          	   	   	   	   }
	                          	   	   	   	   ok  = this.funciones_validadoras[nombre_clase](e.value, nombre_campo, e);
	                          	   	   	   	   if(! ok)
	                          	   	   	   	       todos_validos = false;
	                          	   	   	   }
	                          	   	   }
	                          	   }
	                          }
	                          return todos_validos;
                          }

Validator.imprimir_mensajes = function(){
	alert(this.mensajes);
};
Validator.agregar_mensaje = function(msg){
	this.mensajes += msg + '\n';
}

//funciones de validacion "nativas"
Validator.funciones_validadoras = new Array();
Validator.funciones_validadoras['requerido'] = 
   function(valor, nombre_campo){
	var ok = true;
	if(valor == '') {
		Validator.agregar_mensaje('Debe llenar el campo:  <<' + nombre_campo + '>>');
		ok = false;
	}
	return ok;
   } ;

Validator.funciones_validadoras['entero'] = 
    function(valor, nombre_campo){
     	var ok = true;
	    valor= valor.replace(/,/g,'.');
	    if(valor == '') ok = false;
	    if(valor.indexOf('.') != -1) ok = false;
	    if(isNaN(valor)) ok = false;
	    if(! ok){
		    Validator.agregar_mensaje('El valor del campo <<' + nombre_campo + '>> Debe ser un numero entero');
	     }
	    return ok;
};
Validator.funciones_validadoras['seleccionado'] = 
    function(valor, nombre_campo){
    		var ok = true;
			if(valor == 0){
				Validator.agregar_mensaje('Debe seleccionar:  <<' + nombre_campo + '>>');
				ok = false;
			}
			return ok;
    };   
   
   
Validator.funciones_validadoras['decimal'] = 
     function(valor, nombre_campo,campo){
     	var ok = true;
     	valor= valor.replace(/,/g,'.');
     	campo.value = valor;
     	if(isNaN(valor) || valor == '' )
     	      ok = false;
     	if(! ok){
     		Validator.agregar_mensaje('El valor del campo << ' + nombre_campo + ' >> Debe ser un valor numerico decimal')
     	}
     	return ok;
     }
     
Validator.funciones_validadoras['mail'] =
	function(valor, nombre_campo){
		var ok = true;
		if(valor != ''){
			var filter=/^[A-Za-z][A-Za-z0-9_.-]*@[A-Za-z0-9_.-]+\.[A-Za-z0-9]+[A-za-z]$/;
			if (! filter.test(valor)){
				ok = false;
				Validator.agregar_mensaje('Ingrese una direccion de << e-mail >> valida');
			}
		}
		return ok;
	}
         
Validator.agregar_funcion =
     function(nombre_clase, funcion){
	       this.funciones_validadoras[nombre_clase] = funcion;
     };   
