function validarinformacion() {
		var nombre = quitarespacios(document.form.nombre.value);
		var apellido1 = quitarespacios(document.form.apellido1.value);
		var email = document.form.email.value;
		var direccionempresa = quitarespacios(document.form.direccion.value);
		var numbloque = quitarespacios(document.form.numbloque.value);
		var cpfiltro=/^[0-9]{5}$/; //Expresión regular para el CP
		var localidad = quitarespacios(document.form.localidad.value);
		var provincia = quitarespacios(document.form.provincia.value);
		var email = document.form.email.value;
		var datos = document.form.datos.value;
		var datoe = document.form.datoe.value;
		var telefono = quitarespacios(document.form.telefono.value);
		var cpfiltrotelefono=/^[0-9]{9,15}$/; //Expresión regular para el CP
		var nif = quitarespacios(document.form.nif.value);
		var regnif = new RegExp("^[0-9]{3,8}[A-Z]{1}$", "i");
		var regnie = new RegExp("^X[0-9]{3,7}[A-Z]{1}$", "i");
		var cif = quitarespacios(document.form.cif.value);
		var regcif = new RegExp("^[A-Z]{1}[0-9]{8}$", "i");
		var codigopostal = quitarespacios(document.form.cp.value);
		var tipovia = document.form.tipovia.value;
		document.form.nif.value = nif.toUpperCase();
		document.form.cif.value = cif.toUpperCase();
		var viainfo = document.form.viainfo.value;
		
		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.form.nif.value = nnif + lnif;
		}
	
			
		if (document.form.tipo2.checked){
			var empresa=quitarespacios(document.form.empresa.value);
		}
		if ( nombre.length == 0 ) {
			alert("Por favor, cambie/escriba su nombre");
			document.form.nombre.focus();
		} else if (apellido1.length == 0 ) {
			alert("Por favor, cambie/escriba su primer apellido");
			document.form.apellido1.focus();
		} else if ( document.form.tipo1.checked && !(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");
			document.form.nif.focus();
		} else if ( !isEmailAddress(email) ) {
			alert("Por favor, cambie/escriba un email de contacto válido");
			document.form.email.focus();
		} else if ( !cpfiltrotelefono.test(telefono) ) {
			alert("Por favor, cambie/escriba un número de teléfono de contacto. Sólo se permiten números.");
			document.form.telefono.focus();
		} else if ( document.form.tipo2.checked && empresa.length==0) {
			alert("Por favor, cambie/escriba el nombre de la empresa");
			document.form.empresa.focus();
		} else if ( document.form.tipo2.checked && cif.length == 0 ) {
			alert("Por favor, cambie/escriba el CIF de la empresa");
			document.form.cif.focus();
		} else if ( document.form.tipo2.checked && !regcif.test(cif) ) {
			alert("Por favor, escriba el CIF con el formato correcto, letra y 8 dígitos");
			document.form.cif.focus();
		} else if ( document.form.tipo2.checked && !validarcif(cif) ) {
			alert("Por favor, escriba un CIF correcto");
			document.form.cif.focus();
		} else if ( tipovia == "0" ) {
			alert("Por favor, seleccione un tipo de vía");
			document.form.tipovia.focus();
		} else if ( direccionempresa.length == 0 ) {
			alert("Por favor, cambie/escriba la dirección postal completa");
			document.form.direccion.focus();
		} else if ( numbloque.length == 0 ) {
			alert("Por favor, cambie/escriba el número, piso y bloque");
			document.form.numbloque.focus();
		} else if ( provincia == "0" ) {
			alert("Por favor, seleccione una provincia");
			document.form.provincia.focus();
		} else if ( localidad.length == 0 ) {
			alert("Por favor, cambie/escriba la localidad");
			document.form.localidad.focus();
		} else if ( !cpfiltro.test(document.form.cp.value) ) {
			alert("Por favor, cambie/escriba el código postal");
			document.form.cp.focus();
		} else if ( codigopostal.substr(0,2) !=  provincia ) {
			alert("Por favor, cambie/escriba el código postal");
			document.form.cp.focus();
		} else if ( viainfo == "0" ) {
			alert("Por favor, seleccione como desea recibir la información");
			document.form.viainfo.focus();
		} else if ( document.form.tipo1.checked && datos==0 ) {
			alert("Por favor, seleccione una opción");
			document.form.datos.focus();
		} else if ( document.form.tipo2.checked && datoe==0 ) {
			alert("Por favor, seleccione una opción");
			document.form.datoe.focus();
		} else if ( !document.form.acepto.checked ) {
			alert("Por favor, debe aceptar las condiciones legales");
		} else {
			document.form.submit();
		}
}

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 validarcif(texto) {
        var pares = 0;
        var impares = 0;
        var suma;
        var ultima;
        var unumero;
        var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
        var xxx;
        
        texto = texto.toUpperCase();
        
        var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
         if (!regular.exec(texto)) return false;
             
         ultima = texto.substr(8,1);

         for (var cont = 1 ; cont < 7 ; cont ++){
             xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
             impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
             pares += parseInt(texto.substr(cont,1));
         }
         xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
         impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
         
         suma = (pares + impares).toString();
         unumero = parseInt(suma.substr(suma.length - 1, 1));
         unumero = (10 - unumero).toString();
         if(unumero == 10) unumero = 0;
         
         if ((ultima == unumero) || (ultima == uletra[unumero]))
             return true;
         else
             return false; 
}

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

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

function checkVisible(mode){
	var oculto = document.getElementById("oculto");
	var particular = document.getElementById("pparticular");
	var empresa = document.getElementById("pempresa");
	var nif = document.getElementById("divNif");
	if(mode == "0") {
		oculto.style.display = "none";
		particular.style.display = "block";
		empresa.style.display = "none";
		nif.style.display = "block";
	} else {
		oculto.style.display = "block";
		particular.style.display = "none";
		empresa.style.display = "block";
		nif.style.display = "none";
	}
	
}