/* VALIDACION DE FORMULARIO IMPLEMENTADA POR NAMASTECH */

/** Frases de los alerts **/

var msn_email_esp = "Escriba un email con formato correcto: aaaa@bbb.ccc";
var msn_email_cat = "";
var msn_email_eng = "Text field E-mail hasn't correct form: aaa@bbb.ccc";

var msn_telf_esp = "Escriba el teléfono con 9 números seguidos: 987654321";
var msn_telf_cat = "";
var msn_telf_eng = "Text field Telephone hasn't correct form: 987654321";


/**
* funcion verifica_campo_form
* parametros:
* elemento -> campo del formulario a verificar
* tipo -> tipo de campo
*         0 = campo texto solo letras y espacios. Ej.: nombre
*         1 = campo telefono
*         2 = campo email
*         3 = campo alfanumerico
*         4 = campo option. En el caso de no haber marcado opcion, el valor es 's'
* nombre -> nombre del campo. En el caso de no verificarse es el nombre que saldrá en el alert.
* nulo -> 0 si el campo puede ser vacio y 1 si el campo tiene que ser obligatorio de rellenar.
* idioma -> 0 castellano, 1 english, 2 català
**/


function verifica_campo_form (elemento, tipo, nombre, nulo, idioma)
{   
	if( (nulo == 0) && vacio(elemento.value) ) return true;
	else if( (nulo == 1) && vacio(elemento.value) ) return msn_vacio(elemento, nombre, idioma);
	
	//si el campo no está vacio...
	
	switch (tipo)
	{
		case 0:
			return verifica_texto(elemento, nombre, idioma);
			break;
		case 1:
			return verifica_telefono(elemento, nombre, idioma);
			break;
		case 2:
			return verifica_email(elemento, nombre, idioma);
			break;
		case 4:
			return verifica_option(elemento, nombre, idioma);
			break;
		case 3:
			//campo alfanumerico. No hace falta verificación ya que si llega aquí es por no estar vacio.

		default:
			return true;
	}
}

// funcion que notifica que el campo está vacio y debe ser rellenado
function msn_vacio(elemento, nombre, idioma) {
	var mensaje_vacio = "";
	switch (idioma)
	{
		case 0: //castellano
			mensaje_vacio = "Es obligatorio rellenar el campo " + nombre + ".";
			break;
		case 1: //english
			mensaje_vacio =  nombre + " can't be empty.";
			break;
		case 2: //català
			mensaje_vacio = "És obligatori omplir el camp " + nombre + ".";
			break;
		default:		
	}
	elemento.focus();
    alert(mensaje_vacio);
    return false;
}

var espacios = " \t\n\r";

// funcion que determina si el valor 's' es vacio o solo tiene caracteres de espacio
function vacio(s){
	var i;
    if ((s == null) || (s.length == 0)) return true;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        // si el caracter en donde estamos situados no aparece en la cadena espacios
        if (espacios.indexOf(c) == -1) return false;
    }
    return true;
}

//funcion para verificar si el valor del campo elemento está formado únicamente por letras
function verifica_texto (elemento, nombre, idioma)
{
	var texto = elemento.value;
	var filtro = /^[A-Za-zñÑçÇ ]*$/;

	if(filtro.test(texto))
		return true;
	else
	{
		elemento.focus();
		switch (idioma)
		{
			case 0:
				alert("En el campo " + nombre + " solo se aceptan letras.");
				break;
			case 1:
				alert("");
				break;
			case 2:
				alert("");
				break;
		}
		return false;
	}
	
}

//funcion para validar un teléfono: 987654321
function verifica_telefono (elemento, nombre, idioma)
{
	var texto = elemento.value;
	var filtro = /^[0-9]*$/;

	if(filtro.test(texto) && texto.length == 9)
		return true;	
	else
	{
		elemento.focus();
		switch (idioma)
		{
			case 0:
				alert(msn_telf_esp);
				break;
			case 1:
				alert(msn_telf_eng);
				break;
			case 2:
				alert(msn_telf_cat);
				break;
		}
		return false;
	}
}

//funcion para validar un email
function verifica_email (elemento, nombre, idioma)
{
	var texto = elemento.value;
	var filtro=/^[A-Za-z][A-Za-z0-9_.]*@[A-Za-z0-9_]+[.]+[A-Za-z0-9_.]+[A-za-z]$/;

	if(filtro.test(texto))
		return true;	
	else
	{
		elemento.focus();
		switch (idioma)
		{
			case 0:
				alert(msn_email_esp);
				break;
			case 1:
				alert(msn_email_eng);
				break;
			case 2:
				alert(msn_email_cat);
				break;
		}
		return false;
	}
}

