 function validamail(email){
    // M?nimo de 5 caracteres
    if (email.length < 5)
    return false;
    
    // Cadena de caracteres no permitidos
    var iChars = "+*|,\":<>[]{}`';()&$#% ";
    
    // Primero comprobamos que en el email no haya alg?n 
    // caracter no permitido
    var eLength = email.length;
    for (var i=0; i < eLength; i++){
    	if (iChars.indexOf(email.charAt(i)) != -1)
    	return false;
    }

    // Comprobamos que la @ tenga alg?n caracter delante y alguno detr?s
    var atIndex = email.lastIndexOf("@");
    if(atIndex < 1 || (atIndex == eLength - 1))
    return false;
    
    // Comprobamos que exista '.' a partir del cuarto car?cter, pero
    // que no acab? en '.'
    var pIndex = email.lastIndexOf(".");
    if(pIndex < 3 || (pIndex == eLength - 1))
    return false;
    
    // Por ?ltimo, comprobamos que el punto est? detr?s de la @
    if(atIndex > pIndex)
    return false;
    
    return true;
}

function isNotCorrectVocal(c){
	return ((c=="á") || (c=="à") || (c=="é") || (c=="è") || (c=="í") || (c=="ì") || (c=="ó") || (c=="ò") || (c=="ú") || (c=="ù") || (c=="ä") || (c=="ë") || (c=="ï") || (c=="ö") || (c=="ü") || (c=="â") || (c=="ê") || (c=="î") || (c=="ô") || (c=="û") || (c=="ÿ") || (c=="ã") || (c=="õ"));
}

function isEspecialChar(c){
	return ((c=="º") || (c=="ª") || (c=="!") || (c=="|") || (c=="\"") || (c=="#") || (c=="$") || (c=="~") || (c=="%") || (c=="&") || (c=="/") || (c=="\\") || (c=="(") || (c==")") || (c=="^")|| (c=="€") || (c=="?") || (c=="¿") || (c=="+") || (c=="{") || (c=="}") || (c=="<") || (c==">") || (c==" "));
}

function isCorrectWord(s){
	var word = true;
	var i=0;

	while(i<s.length && word){
		var c=s.substr(i,1);
		if(isEspecialChar(c) || isNotCorrectVocal(c)) {
			word = false;
		}
		i++;
	}
	return word;
}	

function Trim(str) {
	return TrimRight(TrimLeft(str));
}

function TrimRight( str ) {
	var resultStr = "";
	var i = 0;

	if (str+"" == "undefined" || str == null)	
		return null;

	str += "";
	if (str.length == 0) 
		resultStr = "";
	else {
  		i = str.length - 1;
  		while ((i >= 0) && (str.charAt(i) == " "))
 			i--;
			
  		resultStr = str.substring(0, i + 1);
  	}
  	return resultStr;  	
}

function TrimLeft( str ) {
	var resultStr = "";
	var i = len = 0;

	if (str+"" == "undefined" || str == null)	
		return null;

	str += "";
	if (str.length == 0) 
		resultStr = "";
	else {	
		len = str.length;
		
  		while ((i <= len) && (str.charAt(i) == " "))
			i++;
  		resultStr = str.substring(i, len);
  	}
  	return resultStr;
}

function isDigit(c){
	return ((c >= "0") && (c <= "9"))
}

function isTelefono(s){
	var n=0, i=0;
	var sError = false;

	while (i<s.length && !sError) {
		var c = Trim(s.charAt(i));
		if (c.length>0){
			if(isDigit(c)) {
				n++;
			} else {
				sError=true;
			}
		}
		i++;
	}

	if (!sError && n>8){
		return true;
	} else {
		return false;
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// VALIDACIONES DATOS OFICIALES
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function calcularLetraDNI(s){
	//Letras en funcion del modulo de 23
	var letras='TRWAGMYFPDXBNJZSQVHLCKET';

	//se obtiene la posicion de la cadena
	var numero = s % 23

	//se extrae la letra
	return letras.substring(numero, numero+1);
}

function isNif(s){
	var dni=s.toUpperCase();
	var numero=dni.substr(0,dni.length-1);
  	var letra=dni.substr(dni.length-1,1).toUpperCase();

	if (letra != calcularLetraDNI(numero)) return false;
	else return true;
}

function isNie(s){
	var dni=s.toUpperCase();
	var numero=dni.substr(0,dni.length-1);
  	var letra=dni.substr(dni.length-1,1).toUpperCase();

	if (/^[XYZ]{1}/.test(numero)) {
		var first=numero.substring(0, 1);

		if (first == 'X') {
			numero = '0' + numero.substring(1, 8);
		} else if (first == 'Y') {
			numero = '1' + numero.substring(1, 8);
		} else if (first == 'Z') {
			numero = '2' + numero.substring(1, 8);
		}
		numero = numero.substring(0, 8) % 23;

		if (letra != calcularLetraDNI(numero)) return false;
		else return true;
	} else {
		return false;
	}
}

function isNifNie(s){
	var dni=s.toUpperCase();

	if (/^[0-9]{8}[A-Z]{1}$/.test(dni)) {
		return isNif(dni);
	} else if (/^[XYZ]{1}/.test(dni)) {
		return isNie(dni);
	} else {
		return false;
	}
}

