// JavaScript Document

function valida_frm_usuario(passant){
	var flag=true;
    
	//valido DNI (1) - Pasaporte (0)
	var TipoNIF = document.frmNuevoUsuario.EsNIF.value;
	if (TipoNIF == 1){
		// NIF --> DNI + Letra [length 8 + 1]
		// validamos el campo DNI
		var dni = document.getElementById("DNI");
		var mdni = document.getElementById("mDNI");
		if (dni.value.length == 0){
			// si no hay nada escrito
			mdni.className = "mensajeError";
			mdni.innerHTML = "Introduzca DNI";
			mdni.style.display = "block";
			dni.style.backgroundColor = "#FFCC00";
			dni.focus(); 
			flag = false;
		}else{
			// lo escrito debe ser un número
			if (isNum(dni.value) == false){
				mdni.className = "mensajeError";
				mdni.innerHTML = "El formato del DNI debe ser un número";
				mdni.style.display = "block";
				dni.style.backgroundColor = "#FFCC00";
				dni.focus();
				flag = false;
			}else{
				dni.style.backgroundColor = "transparent";
				mdni.style.display = "none";
			}
		} // fin validación DNI (Parte numérica)
		
		//valido Letra
		var letra = document.getElementById("Letra");
		var mletra = document.getElementById("mLetra");
		if (letra.value == ""){
			mletra.className = "mensajeError";
			mletra.innerHTML = "Debe introducir una Letra";
			mletra.style.display = "block";
			letra.style.backgroundColor = "#FFCC00";
			letra.focus();
			flag = false;
		}else{
			if (letra.value != Letra_NIF(dni.value) ){
				mletra.className = "mensajeError";
				mletra.innerHTML = "La letra del DNI debe de ser correcta";
				mletra.style.display = "block";
				letra.style.backgroundColor = "#FFCC00";
				letra.focus();
				flag = false;
			}else{
				letra.style.backgroundColor = "transparent";
				mletra.style.display = "none";
			}
		} // fin validación letra
	}else if (TipoNIF == 0) {
		// Otros documentos --> Pasaporte [length 12]
		var pasaporte = document.getElementById("Pasaporte");
		var mpasaporte = document.getElementById("mPasaporte");
		// Limpiamos el campo del pasaporte de espacios, y demás --> sólo aceptamos letras y números
		pasaporte.value = LimpiarPasaporte(pasaporte.value);
		if (pasaporte.value.length == 0){
			mpasaporte.className = "mensajeError";
			mpasaporte.innerHTML = "Debe introducir su Pasaporte";
			mpasaporte.style.display = "block";
			pasaporte.style.backgroundColor = "#FFCC00";
			pasaporte.focus();
			flag = false;
		}else{
			if (pasaporte.value.length < 12){
				mpasaporte.className = "mensajeError";
				mpasaporte.innerHTML = "Su pasaporte debe tener 12 caracteres";
				mpasaporte.style.display = "block";
				pasaporte.style.backgroundColor = "#FFCC00";
				pasaporte.focus();
				flag = false;
			}else{
				pasaporte.style.backgroundColor = "transparent";
				mpasaporte.style.display = "none";
			}
		} // fin validacion pasaporte
	} // fin validacion NIF/Pasaporte
	
	//valido el nombre 
    if (document.frmNuevoUsuario.nombre.value.length<3){
		document.getElementById("mnombre").className = "mensajeError";
		document.getElementById("nombre").style.backgroundColor = "#FFCC00";
		document.getElementById("mnombre").innerHTML = "Debe introducir su Nombre";
		document.getElementById("mnombre").style.display = "block";
		document.frmNuevoUsuario.nombre.focus(); 
		flag=false;
    }else{
		document.getElementById("nombre").style.backgroundColor = "transparent";
		document.getElementById("mnombre").style.display = "none";
	}

	//valido Apellido
    if (document.frmNuevoUsuario.Apellido.value.length<3){
		document.getElementById("mApellido").className = "mensajeError";
		document.getElementById("Apellido").style.backgroundColor = "#FFCC00";
		document.getElementById("mApellido").innerHTML = "Debe introducir su Apellido";
		document.getElementById("mApellido").style.display = "block";
		document.frmNuevoUsuario.Apellido.focus(); 
		flag=false;
    }else{
		document.getElementById("Apellido").style.backgroundColor = "transparent";
		document.getElementById("mApellido").style.display = "none";
	}

	// valido EMail
    if (document.frmNuevoUsuario.Email.value.length==0){
		document.getElementById("mEmail").className = "mensajeError";
		document.getElementById("Email").style.backgroundColor = "#FFCC00";
		document.getElementById("mEmail").innerHTML = "Debe introducir su E-Mail";
		document.getElementById("mEmail").style.display = "block";
		document.frmNuevoUsuario.Email.focus(); 
		flag=false;
    }else{
		if(! isValidEmail(document.frmNuevoUsuario.Email.value)){
			document.getElementById("mEmail").className = "mensajeError";
			document.getElementById("Email").style.backgroundColor = "#FFCC00";
			document.getElementById("mEmail").innerHTML = "Debe introducir un E-Mail valido";
			document.getElementById("mEmail").style.display = "block";
			document.frmNuevoUsuario.Email.focus(); 
			flag=false;
		}else{
			document.getElementById("Email").style.backgroundColor = "transparent";
			document.getElementById("mEmail").style.display = "none";
		}
	}

	//valido Nick
	if (document.frmNuevoUsuario.HayNickValido.value == "si"){
		if (document.frmNuevoUsuario.Nick.value.length==0){
			document.getElementById("mNick").className = "mensajeError";
			document.getElementById("Nick").style.backgroundColor = "#FFCC00";
			document.getElementById("mNick").innerHTML = "Debe introducir un Nombre de Usuario";
			document.getElementById("mNick").style.display = "block";
			document.frmNuevoUsuario.Nick.focus(); 
			flag=false;
		}else{
			if (document.frmNuevoUsuario.Nick.value.length>15){
				document.getElementById("mNick").className = "mensajeError";
				document.getElementById("Nick").style.backgroundColor = "#FFCC00";
				document.getElementById("mNick").innerHTML = "Su nick debe tener 15 caracteres como maximo";
				document.getElementById("mNick").style.display = "block";
				document.frmNuevoUsuario.Nick.focus(); 
				flag=false;
			}else{
				a=1
				for (i = 0; i < document.frmNuevoUsuario.Nick.value.length; i++) {
					if(!((document.frmNuevoUsuario.Nick.value.charAt(i) >= "0") && (document.frmNuevoUsuario.Nick.value.charAt(i) <= "9"))){
						if(!((document.frmNuevoUsuario.Nick.value.charAt(i) == "."))){
							if(!((document.frmNuevoUsuario.Nick.value.charAt(i) >= "A") && (document.frmNuevoUsuario.Nick.value.charAt(i) <= "Z"))){
								if(!((document.frmNuevoUsuario.Nick.value.charAt(i) >= "a") && (document.frmNuevoUsuario.Nick.value.charAt(i) <= "z"))){
									a=0	
								}	
							}	
						}	
					}
					
					
				}
				if(a==0){
					document.getElementById("mNick").className = "mensajeError";
					document.getElementById("Nick").style.backgroundColor = "#FFCC00";
					document.getElementById("mNick").innerHTML = "El nombre de usuario debe tener caracteres correctos";
					document.getElementById("mNick").style.display = "block";
					document.frmNuevoUsuario.Nick.focus(); 
					flag=false;
				}else{
					document.getElementById("Nick").style.backgroundColor = "transparent";
					document.getElementById("mNick").style.display = "none";
				}
			}
		}
	}else{
			document.getElementById("mNick").className = "mensajeError";
			document.getElementById("Nick").style.backgroundColor = "#ffcc00";
			var textoAux = "";
			textoAux = "Debe introducir un Nombre de Usuario <strong>disponible</strong>. ";
			textoAux += "Seleccione Nombre de Usuario y pulse <strong>Comprobar disponibilidad</strong>";
			document.getElementById("mNick").innerHTML = textoAux;
			document.getElementById("mNick").style.display = "block";
			document.frmNuevoUsuario.Nick.focus(); 
			flag=false;
	}

	//valido Contraseña
	if (document.frmNuevoUsuario.Pass.value.length==0){
		document.getElementById("mPass").className = "mensajeError";
		document.getElementById("Pass").style.backgroundColor = "#FFCC00";
		document.getElementById("mPass").innerHTML = "Debe introducir una Contraseña";
		document.getElementById("mPass").style.display = "block";
		document.frmNuevoUsuario.Pass.focus(); 
		flag=false;
    }else{
		if(document.frmNuevoUsuario.Pass.value.length<6 || document.frmNuevoUsuario.Pass.value.length>15 ){
			document.getElementById("mPass").className = "mensajeError";
			document.getElementById("Pass").style.backgroundColor = "#FFCC00";
			document.getElementById("mPass").innerHTML = "La contraseña debe tener entre 6 y 15 caracteres";
			document.getElementById("mPass").style.display = "block";
			document.frmNuevoUsuario.Pass.focus(); 
			flag=false;
		}else{
			a=1
			for (i = 0; i < document.frmNuevoUsuario.Pass.value.length; i++) {
				if(!((document.frmNuevoUsuario.Pass.value.charAt(i) >= "!") && (document.frmNuevoUsuario.Pass.value.charAt(i) <= "}"))){
				a=0	
				}
			}
			if(a==0){
				document.getElementById("mPass").className = "mensajeError";
				document.getElementById("Pass").style.backgroundColor = "#FFCC00";
				document.getElementById("mPass").innerHTML = "La contraseña seleccionada tiene caracteres <strong>no permitidos</strong>";
				document.getElementById("mPass").style.display = "block";
				document.frmNuevoUsuario.Pass.focus(); 
				flag=false;
			}else{
				document.getElementById("Pass").style.backgroundColor = "transparent";
				document.getElementById("mPass").style.display = "none";
			}
		}
	}

	//valido Contraseña
	if (document.frmNuevoUsuario.Pass2.value.length==0){
		document.getElementById("mPass2").className = "mensajeError";
		document.getElementById("Pass2").style.backgroundColor = "#FFCC00";
		document.getElementById("mPass2").innerHTML = "Debe Repetir la contraseña";
		document.getElementById("mPass2").style.display = "block";
		document.frmNuevoUsuario.Pass2.focus(); 
		flag=false;
    }else{
		if (document.frmNuevoUsuario.Pass2.value!=document.frmNuevoUsuario.Pass.value){
			document.getElementById("mPass2").className = "mensajeError";
			document.getElementById("Pass2").style.backgroundColor = "#FFCC00";
			document.getElementById("mPass2").innerHTML = "Las contraseñas deben coincidir";
			document.getElementById("mPass2").style.display = "block";
			document.frmNuevoUsuario.Pass2.focus(); 
			flag=false;
		}else{
			document.getElementById("Pass2").style.backgroundColor = "transparent";
			document.getElementById("mPass2").style.display = "none";
		}
	}
	
	

	//el formulario se envia 
	//return flag;
	if (flag){
		//document.frmNuevoUsuario.submit(); 
		confirmar_alta_nuevo_usuario();
	}
}

function isNum( numstr ) {
	// Return immediately if an invalid value was passed in
	if (numstr+"" == "undefined" || numstr+"" == "null" || numstr+"" == "")	
		return false;

	var isValid = true;
	var decCount = 0;		// number of decimal points in the string

	// convert to a string for performing string comparisons.
	numstr += "";	

	// Loop through string and test each character. If any
	// character is not a number, return a false result.
 	// Include special cases for negative numbers (first char == '-')
	// and a single decimal point (any one char in string == '.').   
	for (i = 0; i < numstr.length; i++) {
		// track number of decimal points
		if (numstr.charAt(i) == ".")
			decCount++;

    	if (!((numstr.charAt(i) >= "0") && (numstr.charAt(i) <= "9") || 
				(numstr.charAt(i) == "-") || (numstr.charAt(i) == "."))) {
       	isValid = false;
       	break;
		} else if ((numstr.charAt(i) == "-" && i != 0) ||
				(numstr.charAt(i) == "." && numstr.length == 1) ||
			  (numstr.charAt(i) == "." && decCount > 1)) {
       	isValid = false;
       	break;
      }         	         	       
//if (!((numstr.charAt(i) >= "0") && (numstr.charAt(i) <= "9")) || 
   } // END for   
   
   	return isValid;
}  // end IsNum

//funcion que devuelve la letra de un DNI que se le pasa
function Letra_NIF(DNI){
    var Letras = "TRWAGMYFPDXBNJZSQVHLCKE";
   	a = Letras.substr((DNI%23), 1);
	return a;
}

function LimpiarPasaporte(cadena){
	var NewCadena = "";
	patron =/\w/; // números y letras...
	for(i=0; i < cadena.length; i++){
    	if (patron.test(cadena.charAt(i))){
			// recorremos la cadena carácter a carácter y añadimos los caracteres permitidos por el patron...
        	NewCadena += cadena.charAt(i).toUpperCase();
		}
	} // fin for
	if (NewCadena.length > 6){
		NewCadena = "00000000" + NewCadena;
		NewCadena =  NewCadena.substring(NewCadena.length - 12, NewCadena.length);
	}
    return NewCadena;
}// fin function ComprobarCadenaPasaporte()