/*****************************************************************************
Funciones para la Validación de Formularios
Version 1.0

Copyright (c) 2003     James Mauricio Martinez
                       jmmartif@tribunetworks.com
                        jmmartif@hotmail.com
		                  http://www.tribunetworks.com

Cualquier uso de este script debe ser autorizado por el autor.
******************************************************************************/

function validacionFrm(frm) {

	var objeto;
	var men_error=frm.men_error;
	var men_error_form=frm.men_error;
	var men_validacion = frm.men_validacion;
	var error_ok = '';
	var temp;
	var Nmin=0, Nmax=0;
	var i=0;
	var N_espacios=0;
	
	var objetos_frm = frm.elements;
	
	if (!men_error) men_error='';
	
	while(objeto = objetos_frm[i]){
		
		N_espacios=0;		
		if (objeto.validacion){
		
		N_espacios = num_espacios(objeto.value);
		
		//Si el número de espacios es diferente de 0 se puede seguir con las otras comprobaciones
		
		if (N_espacios != 0){
			
			//Validación del correo electrónico
				if (objeto.validacion.indexOf('Em') != -1){
					temp = objeto.value.indexOf('@');
					if (temp < 1 || temp == (objeto.value.length-1)){
						if (objeto.men_validacion) men_error += '\n  - ' + objeto.men_validacion;
						error_ok = 1;
					}
				}
				
				else if (objeto.validacion != 'R') {
				
				//Validación para campos numéricos
					if (isNaN(objeto.value)){
						if (objeto.men_validacion) men_error += '\n  - ' + objeto.men_validacion;
						error_ok = 1;
					}
					
				//Validación para campos numéricos entre un rango determinado
					else if (objeto.validacion.indexOf('Ra') != -1) {
						Nmin=parseFloat(objeto.val_min, 10);
						Nmax=parseFloat(objeto.val_max);
						temp = parseFloat(objeto.value);

						if (temp < Nmin || Nmax < temp){
							if (objeto.men_validacion) men_error += '\n  - ' + objeto.men_validacion;
							error_ok = 1;
						}
					}
				}
			}
			
		//Validación para campos Requeridos
			else if (objeto.validacion.charAt(0) == 'R'){
				if (objeto.men_validacion) men_error += '\n  - ' + objeto.men_validacion;
				error_ok = 1;
			}
			
		} // 

		i++;
		
	} // while
	
	
	//Estableciendo si el formulario contiene los datos correctos y cual es el mensaje de
	//confirmación si existe
		document.resultadoValidacion = false;
	
	if (error_ok && men_error){
		if (men_error_form) alert(men_error_form + '\n' + men_error);
		else alert('Se han detectado errores en el Formulario.' + '\n' + men_error);
	} // if
	else if (error_ok) alert('Se han detectado errores en el Formulario.');
	else{
		if (men_validacion){
			if (confirm(men_validacion)) document.resultadoValidacion = true;
			else document.resultadoValidacion = false;
		}
		else document.resultadoValidacion = true;
	}
	
	return document.resultadoValidacion;
	
} // fin función validacionFrm

function num_espacios(cadena) {
	//Esta función determina si la variable cadena está vacía o solo está compuesta por espacios
	
	
	//count contiene el número de " " que están en la cadena
	
	var count = 0;
	var pos = cadena.indexOf(" ");
	
	while ( pos != -1 ){
		count++;
		pos = cadena.indexOf(" ",pos+1);
	}
	
	if (count == cadena.length || cadena.length == 0) return 0; // Si el String solo contiene espacios retorna 0
	else return 1;
	
} // fin función num_espacios

/****************************************************************************/

	function mensaje_barra(mensaje){
		
		if (mensaje) window.status = mensaje;
		else window.status = '';
		
		return true;
		
	} // fin función mensaje_barra
