function k(){
	var nom=document.getElementById('nombre');
	var app=document.getElementById('apellidos');
	var nie=document.getElementById('dni');
	var tel=document.getElementById('tlf');
	var mail=document.getElementById('email');
	var cp=document.getElementById('cp');
	var license=document.getElementById('license');	
	var f=document.getElementById('info')
	var nif = quitarespacios(document.info.dni.value.toUpperCase());
	var cpfiltrotelefono=new RegExp(/^[0-9]{9}$/); 
	var cpfiltro=new RegExp(/^[0-9]{5}$/); 
	var regnif = new RegExp("^[0-9]{3,8}[A-Za-z]{1}$", "i");
	var regnie = new RegExp("^[Xx][0-9]{3,7}[A-Za-z]{1}$", "i");		
	
	if ( /^[0-9]{6,8}[A-Za-z]{1}$/.test(nif) == true ) {
		var nnif = new String(nif.replace(/[A-Za-z]+/, ''));
		var lnif = nif.replace(/^[0-9]+/, '').toUpperCase();
		while(nnif.length != 8) {
			nnif = '0' + nnif;
		}
		nif = nnif + lnif;
		document.info.dni.value = nnif + lnif;
	}
	
	if ( quitarespacios(nom.value).length == 0 ) {
		alert("Por favor, cambie/escriba su nombre");
		nom.focus();
	} else if (quitarespacios(app.value).length == 0 ) {
		alert("Por favor, cambie/escriba sus apellidos");
		app.focus();
	} else if ( nif.length == 0 ) {
		alert("Por favor, cambie/escriba su NIF, NIE o pasaporte.");
		nie.focus();
	/*} else if ( !(valida_nif_cif_nie(nif) == 1 || valida_nif_cif_nie(nif) == 3) ) {
		alert("Por favor, escriba su NIF o NIE con el formato correcto. Ejemplo NIF 55444333K / Ejemplo NIE X5544433G");
		nie.focus(); 
	} else if ( regnif.test(nif) && !correctaletra(nif, 0) ) {
		alert("Por favor, escriba un NIF correcto");
		nie.focus();
	} else if ( regnie.test(nif) && !correctaletra(nif, 1) ) {
		alert("Por favor, escriba un NIE correcto");
		nie.focus();*/
	} else if ( !cpfiltrotelefono.test(tel.value) ) {
		alert("Por favor, cambie/escriba un número de teléfono de contacto. Sólo se permiten números.");
		tel.focus();
	} else if ( !isEmailAddress(mail.value) ) {
		alert("Por favor, cambie/escriba un email de contacto válido");
		mail.focus();
	} else if (quitarespacios(cp.value) >0 && !cpfiltro.test(cp.value) ) {
		alert("Por favor, cambie/escriba un número de Código Postal. Sólo se permiten números.");
		cp.focus();
	} else if ( !license.checked ) {
		alert("Por favor, debe aceptar la Cláusula de Protección de Datos");
		license.focus();
	} else {
		f.submit();
	}
	return true;
}

function correctaletra(nif, tipo) {
		var numero = 0;
		var letra = nif.substr(nif.length-1, 1).toUpperCase();
		if ( tipo ) { // NIE
			numero = nif.substr(1, nif.length-2);
		} else { //NIF
			numero = nif.substr(0, nif.length-1);
		}
		var cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
		var posicion = numero % 23;
		var letrareal = cadena.substring(posicion,posicion+1);
		if ( letrareal == letra ) return true;
		else return false;
}

function valida_nif_cif_nie(cif) {
	//Copyright ©2005-2008 David Vidal Serra. Bajo licencia GNU GPL.
	//Este software viene SIN NINGUN TIPO DE GARANTIA; para saber mas detalles
	//puede consultar la licencia en http://www.gnu.org/licenses/gpl.txt
	//Esto es software libre, y puede ser usado y redistribuirdo de acuerdo
	//con la condicion de que el autor jamas sera responsable de su uso.
	//Returns: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF bad, -2 = CIF bad, -3 = NIE bad, 0 = ??? bad
   cif = cif.toUpperCase();
   var num=cif;
   var cad1="TRWAGMYFPDXBNJZSQVHLCKE";

   //si no tiene un formato valido devuelve error
   if ( /^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(cif)==false && /^[T]{1}[A-Z0-9]{8}$/.test(cif)==false && /^[0-9]{8}[A-Z]{1}$/.test(cif)==false){
      return 0;
    } 
   //comprobacion de NIFs estandar
   if (/^[0-9]{8}[A-Z]{1}$/.test(cif)) {
   		var numero = cif.substr(0, 8).replace(/^0+/, "");
      if (num.charAt(8) == cad1.substr(parseInt(numero) % 23, 1))
         return 1;
      else
         return -1;
   }
   //algoritmo para comprobacion de codigos tipo CIF
   var suma = parseInt(num.charAt(2)) + parseInt(num.charAt(4)) + parseInt(num.charAt(6));
   for (i = 1; i < 8; i += 2){
      val=2 * num.charAt(i);
      if (val<10) 
      	val="0"+val; //creamos 2 dígitos
      else
      	val+=""; //convertimos a cadena
      suma += parseInt(val.charAt(0)) + parseInt(val.charAt(1));
   }   
	 //comprobacion de NIFs especiales (se calculan como CIFs)
	 suma+=""; //convertimos en cadena suma
	 n = 10 - parseInt(suma.substr(suma.length - 1, 1));
   if (/^[KLM]{1}/.test(cif))
      if (num.charAt(8) == String.fromCharCode(64 + n))
         return 1;
      else
         return -1;
	//comprobacion de CIFs
	 n+="";//convertimos n en cadena
   if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(cif))
      if (num.charAt(8) == String.fromCharCode(64 + parseInt(n)) || num.charAt(8) == n.substr(n.length - 1, 1))
         return 2;
      else
         return -2;
   //comprobacion de NIEs
   //T
   if (/^[T]{1}/.test(cif))
      if (num.charAt(8) == /^[T]{1}[A-Z0-9]{8}$/.test(cif))
         return 3;
      else
         return -3;
   //XYZ
   if (/^[XYZ]{1}/.test(cif)) {
   		cif = cif.replace('X','0');
   		cif = cif.replace('Y','1');
   		cif = cif.replace('Z','2');
		var numero = cif.substr(0, 8).replace(/^0+/, "");
      if (num.charAt(8) == cad1.substr(parseInt(numero) % 23, 1))
         return 3;
      else
         return -3;
   }
	//si todavia no se ha verificado devuelve error
   return 0;
}


function isEmailAddress(s){
	var f=/^[A-Za-z][A-Za-z0-9_\.\-]*@[A-Za-z0-9_-]+\.[A-Za-z0-9_\.\-]+[A-za-z]$/;
	return (s.length == 0 )?  false : (f.test(s))?  true : false;
}

function quitarespacios(string) {
	var tmp = "";
	string = '' + string;
	splits = string.split(" ");
	for(i = 0; i < splits.length; i++)
		tmp += splits[i];
	return tmp;
}
