/**
 *
 * Función que valida los formularios de la aplicación
 * 
 * @return		bool		Confirma que el formulario se ha rellenado completa
 *							y correctamente antes de su envío
 * 
 */
var form = "";
var submitted = false;
var error = false;
var error_message = "";

function check_form(form_name) 
{
	error = false;
	form = form_name;
	error_message = "Hay errores en su formulario!\nPor favor, haga las siguientes correciones:\n\n";
	message= " No pueden existir campos vacíos en este formulario.\n\n Por favor, rellene todos los campos antes de guardar los datos.\n\n";
	
		for (var i=0; i < form.elements.length; i++) 
		{
			if (form.elements[i] && (form.elements[i].type != "hidden")) 
			{
			    var field_value = form.elements[i].value;
			    var field_nombre = form.elements[i].name;
			    var field_longitud = form.elements[i].value.length;
		
			    switch (field_nombre)
			    {
					//Listado de valores a omitir
				    	case 'password_actual':
				    	case 'password_nueva':
				    	case 'repita_password_nueva':
				    	case 'fax':
			    					break;
			    			
				    	default:
					    			if (field_value == '') 
					    			{
							      		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + "\n";
							    	}	
							    	break;
			    }
		  	}
		}
	
		
		
	  if (submitted == true) 
	  {
	    alert("Ya ha enviado el formulario. Pulse Aceptar y espere a que termine el proceso.");
	    return false;
	  }

	  if (error == true) 
	  {
	  	error_message = error_message + " * " + message + "\n";
	    alert(error_message);
	    return false;
	  } 
	  else 
	  {
	    submitted = true;
	    return true;
	  }
}

/**
 *
 * Función que valida los formularios de la aplicación
 * 
 * @return		bool		Confirma que el formulario se ha rellenado completa
 *							y correctamente antes de su envío
 * 
 */
var form = "";
var submitted = false;
var error = false;
var error_message = "";

function check_form_registro(form_name) 
{
	error = false;
	form = form_name;
	error_message = "Hay errores en su formulario!\nPor favor, haga las siguientes correciones:\n\n";
	message= " No pueden existir campos vacíos en este formulario.\n\n Por favor, rellene todos los campos antes de guardar los datos.\n\n";
	
		for (var i=0; i < form.elements.length; i++) 
		{
			if (form.elements[i] && (form.elements[i].type != "hidden")) 
			{
			    var field_value = form.elements[i].value;
			    var field_nombre = form.elements[i].name;
			    var field_longitud = form.elements[i].value.length;
		
			    switch (field_nombre)
			    {
			    	
	//validación del nif

					case 'dni':
								var field_letra = form.dni_letra.value;
								if((field_value!="") && (field_letra!=""))
								{
									var let = 'TRWAGMYFPDXBNJZSQVHLCKE';
									
									var letra_asoc = let.charAt(field_value % 23);
									
									var field_letra = form.dni_letra.value;
									
									if((field_longitud != 8) || (field_value != parseFloat(field_value)) || (letra_asoc != field_letra))
									{
											error = true;	
											message = message + "El campo que posee errores es: " + field_nombre + ". \n\nEl DNI y la LETRA introducidos no son correctos.\n\nInserte únicamente números (8 dígitos) en el campo DNI.\n Inserte 1 carácter en el campo LETRA.\n\n Ej: 12345678 P \n\n";
									}
								}
								break;
	
	//validación de teléfonos
		
			    	case 'telefono':
			    	case 'movil':
			    	case 'fax':
			    				if(field_value!="")
								{
							    	if((field_longitud != 9) || (field_value!= parseFloat(field_value)))
							    	{
							    		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + ". \n\nInserte únicamente números (9 dígitos).\n\n Ej: 921520036 \n\n";
							    	}
								}
							    break;
							    	
	//validación de código postal
							    
					case 'codigo':
								if(field_value!="")
								{
									if((field_longitud != 5) || (field_value!= parseFloat(field_value)))
							    	{
							    		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + ".\n\t\t\t\t Inserte únicamente números (5 dígitos) para el Código Postal.\n";
							    	}		    	
								}
						    	break;
							    	
	//validación de parseFloat							    	
		    	
					case 'p':
									if((field_value!= parseFloat(field_value)))
							    	{
							    		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + ". Inserte únicamente números.\n";
							    	}		    	
							    	
							    	break;
							    	

	//validación de parseInt
		    	
					case 'numero':
								if(field_value!="")
								{
									if((field_value!= parseInt(field_value)))
							    	{
							    		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + ". Inserte únicamente números.\n";
							    	}		    	
								}
							    	break;							    	

							    	
	//validación de FECHAS
		    	
					case 'f':
									if(!comprobarFecha(field_value))
			  						{
			  							message = message + "El campo que posee errores es: " + field_nombre + ". \n\n Su fecha debe tener este formato: DD/MM/AA (p.ej. 21/05/05).\n\n";
										error = true;
							  		}				
							  		break;	    	
										    		
	//Listado de valores a omitir
			    	case 'password_actual':
			    	case 'password_nueva':
			    	case 'repita_password_nueva':
			    	case 'via':
			    	case 'calle':
			    	case 'localidad':
			    	case 'provincia':
			    	case 'pais':
			    	case 'dni_letra':
			    					break;
			    			
			    	default:
					    			if (field_value == '') 
					    			{
							      		error = true;
							      		message = message + "El campo que posee errores es: " + field_nombre + "\n";
							    	}	
							    	break;
			    }
		  	}
		}
	
		
		
	  if (submitted == true) 
	  {
	    alert("Ya ha enviado el formulario. Pulse Aceptar y espere a que termine el proceso.");
	    return false;
	  }

	  if (error == true) 
	  {
	  	error_message = error_message + " * " + message + "\n";
	    alert(error_message);
	    return false;
	  } 
	  else 
	  {
	    submitted = true;
	    return true;
	  }
}




/**
 *
 *  Función JavaScript para validar el email
 * 
 * 
 * @param		string 		email
 * 
 * @return		bool		Confirmación del email
 * 
 */

function echeck(str) 
{
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("El email introducido no parece correcto, por favor, revise sus datos.")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("El email introducido no parece correcto, por favor, revise sus datos.")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("El email introducido no parece correcto, por favor, revise sus datos.")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("El email introducido no parece correcto, por favor, revise sus datos.")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("El email introducido no parece correcto, por favor, revise sus datos.")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("El email introducido no parece correcto, por favor, revise sus datos.")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("El email introducido no parece correcto, por favor, revise sus datos.")
		    return false
		 }

 		 return true;				
}



/**
 *
 *  Función JavaScript para validar email
 * 
 * @param		string		form que contiene el mail a validar
 * @param		string		nombre del campo email
 * 
 * @return		bool		Confirmación del email
 * 
 */
function validaEmail(form, field_email)
{
	var email = eval("document." + form + "." + field_email);
	
	if (echeck(email.value)==false)
	{
		email.value="";
		email.focus();
		return false;
	}
	return true;
}


/**
 *
 * Función que valida las fechas de los formularios
 * 
 * @param		string		Cadena con la fecha 		
 *
 * @return		bool		Confirma que la fecha introducida en el form
 *							es correcta
 * 
 */
function comprobarFecha(fecha)
{
    if(fecha.length!=8)
        return false;
        
    if( (fecha.substring(3, 5)<1) || (fecha.substring(3, 5)>12) )    
    	return false;
    	
    switch(fecha.substring(3, 5))
    {
        case "04":
        case "06":
        case "09":
        case "11":
                {
                    if( (fecha.substring(0, 2)<1) || (fecha.substring(0, 2)>30) )
                        return false;
                }
                break;
                
        case "02":
                {
                    if(fecha.substring(6, 8)%4 == 0) // Anyo bisiesto
                    {
                        if( (fecha.substring(0, 2)<1) || (fecha.substring(0,2)>29) )
                            return false;
                    }
                    else // Anyo normal
                        if( (fecha.substring(0, 2)<1) || (fecha.substring(0,2)>28) )
                            return false;
                }
                break;
        default:
        {
            if( (fecha.substring(0, 2)<1) || (fecha.substring(0,2)>31) )
                return false;
            else
                return true;
        }
    }

    return true;
}