// JavaScript Document
var cuenta = 0;
//
function borra_datos(form) // Comfirmar limpieza de los campos del formulario
{
	borrar = window.confirm('Se borrarán los datos del formulario');
	if (borrar)
	{
		form.reset();
		cuenta = 0;
	}
	else return(false);
}
//
function validaForm(form) // Validacion formulario ya enviado
{ 
	//alert("en funcion validaForm");
	if (cuenta == 0)
	{
		cuenta++;
		sigue = validaNombre(form);
		if (sigue)
		{
			sigue = validaApellidos(form);
			if (sigue)
			{
				sigue = validaNumero(form);
				if (sigue)
				{
					sigue = validaMail(form);
					if (sigue)
					{
						sigue = validaConsulta(form);
						if (sigue)
						{
							sigue = window.confirm('Se enviarán los datos del formulario');
							if (sigue) return(true);
							else 
							{
								cuenta = 0;
								return(false);
							}
						}
						else return(false);
					}
					else return(false);
				}
				else return(false);
			}
			else return(false);
		}
		else return(false);
	}
	else 
	{
		alert("El formulario ya está siendo enviado, por favor aguarde un instante.");
		return(false);
	}
}
//
function validaNumero(form) // Validación telefono de contacto numerico
{
	//alert("En funcion validaNumero");
	// telefono informado
    if(vacio(form.telefono.value) == false )
	{
        alert("El telefono de contacto es obligatorio");
		form.telefono.select();
		cuenta = 0;
        return(false);
    }
	else
	{
		// telefono numerico y de 9 dígitos
		var numero = /(^([0-9]{9,9})|^)$/	// 9 numeros o cadena vacia
		if(!/(^([0-9]{9,9})|^)$/.test(form.telefono.value))
		{ 
			alert('El telefono de contacto introducido no es válido');
			form.telefono.select();
			cuenta = 0;
			return(false);
		}  
		else return(true);
	}
}
//
function validaMail(form) // Validacion direccion de correo electronico correcta
{ 
	//alert("En funcion validaMail");
	// correo electronico informado
    if(vacio(form.correo.value) == false )
	{
        alert("La dirección de correo electrónico es obligatoria");
		form.correo.select();
		cuenta = 0;
        return(false);
    }
	else
	{
		// formato correcto del correo electronico usuario@dominio.dominio
		var correo = form.correo.value;
		var mailres = true;             
	    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-"; 
    	var arroba = correo.indexOf("@",0); 
	    if ((correo.lastIndexOf("@")) != arroba) arroba = -1; 
	    var punto = correo.lastIndexOf("."); 
	    
		for (var contador = 0 ; contador < correo.length ; contador++)
		{ 
	        if (cadena.indexOf(correo.substr(contador, 1),0) == -1)
			{ 
	            mailres = false; 
	            break; 
	     	} 
	    } 
	    
		if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (correo.length)) &&
			(mailres == true) && (correo.indexOf("..",0) == -1)) 
    		return(true); 
	    else 
		{
			alert("La direccion de correo electronico introducida no es valida");
			form.correo.select();
			cuenta = 0;
			return(false);
		}
	}
} 
//
function validaNombre(form) // Validacion de texto en el campo nombre
{
	//alert("en funcion validaNombre");
	// nombre informado
    if( vacio(form.nombre.value) == false )
	{
        alert("El campo nombre es obligatorio");
		form.nombre.select();
		cuenta = 0;
        return(false);
    }
	else
	{
		// nombre alfabetico
		var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" + "abcdefghijklmnñopqrstuvwxyzáéíóú ";
		var checkStr = form.nombre.value;
		var allValid = true;
		
		for (i = 0; i < checkStr.length; i++)
		{
			ch = checkStr.charAt(i);
			for (j = 0; j < checkOK.length; j++)
				if (ch == checkOK.charAt(j))
					break;
				if (j == checkOK.length)
				{
					allValid = false;
					break;
				}
		}
		
		if (!allValid)
		{
			alert("El formato de texto del nombre no es válido. No se permite el caracter '" + ch + "'");
			form.nombre.select();
			cuenta = 0;
			return(false);
		}
		else return(true);
	}
}
//
function validaApellidos(form) // Validacion de texto en el campo apellido
{
	//alert("en funcion validaApellidos");
	// apellidos informado
    if( vacio(form.apellidos.value) == false )
	{
        alert("El campo apellidos es obligatorio");
		form.apellidos.select();
		cuenta = 0;
        return(false);
    }
	else
	{
		// apellidos alfabetico
		var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" + "abcdefghijklmnñopqrstuvwxyzáéíóú ";
		var checkStr = form.apellidos.value;
		var allValid = true;
		
		for (i = 0; i < checkStr.length; i++)
		{
			ch = checkStr.charAt(i);
			for (j = 0; j < checkOK.length; j++)
				if (ch == checkOK.charAt(j))
					break;
				if (j == checkOK.length)
				{
					allValid = false;
					break;
				}
		}
		
		if (!allValid)
		{
			alert("El formato de texto de los apellidos no es válido. No se permite el caracter '" + ch + "'");
			form.apellidos.select();
			cuenta = 0;
			return(false);
		}
		else return(true);
	}
}
//
function validaConsulta(form) // Validacion de texto en el campo consulta
{
	//alert("en funcion validaConsulta");
	// consulta informada
    if( vacio(form.consulta.value) == false )
	{
        alert("El campo comentarios es obligatorio");
		form.consulta.select();
		cuenta = 0;
        return(false);
    }
	else
	{
		// consulta alfabetico
		var enter = "\n";
		var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" +
					  "abcdefghijklmnñopqrstuvwxyzáéíóú " +
					  "¿?,.;:" + "1234567890" +
					   String.fromCharCode(13) + enter ;
		var checkStr = form.consulta.value;
		var allValid = true;
		
		for (i = 0; i < checkStr.length; i++)
		{
			ch = checkStr.charAt(i);
			for (j = 0; j < checkOK.length; j++)
				if (ch == checkOK.charAt(j))
					break;
				if (j == checkOK.length)
				{
					//alert("ERROR: No se acepta el caracter '" + ch + "'.");
					allValid = false;
					break;
				}
		}
		
		if (!allValid)
		{
			alert("El formato de texto del campo comentarios no es válido. No se permite el caracter '" + ch + "'");
			form.consulta.focus();
			cuenta = 0;
			return(false);
		}
		else return(true);
	}
}
//
function vacio(cadena) // busca caracteres que no sean espacio en blanco en una cadena
{ 
	for ( i = 0; i < cadena.length; i++ )
	{
    	if ( cadena.charAt(i) != " " )
		{
        	return true;
        }
    }
    return false;
}
