/*
	function ejemplo() {
	
		err = 0;
		var serr = "ERROR. Por favor revise los siguientes campos:\n\n";

		//EJEMPLO VALIDACION NIF
		if(document.getElementById("nif").value=="") {err++; serr+=" · No ha introducido el NIF / CIF\n";}
		else {
			var texte = validarNIF(document.getElementById("nif").value);
			if(!texte=="") {err++; serr+= texte;}
		}

		//EJEMPLO VALIDACION NUMBER
		if(document.getElementById("cp").value=="") {err++; serr+=" · No ha introducido el código postal\n";}
		else if(!isNumber(document.getElementById("cp").value)) { err++; serr+=" · El código postal debe ser númerico\n"; }

		//EJEMPLO VALIDACION EMAIL
		if(document.getElementById("email").value=="") {err++; serr+=" · No ha introducido el email\n";}
		else if (!valcorreo(document.getElementById("email").value)) {err++; serr+=" · El formato del email es incorrecto\n";}

		if (err == 0) return true;
		else {
			alert(serr);
			return false;
		}
	}
*/

function isNumber(numero) {
	if(isNaN(numero))
		return false;
	else
		return true;
}

function valcorreo(valor) {
	if (/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/.test(valor)){
		return (true)
	} else {
		return (false);
	}
}

function validarNIF(nif) {
	//per comprobar el nif
    letra=["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","F"]; 
    nif=nif.toUpperCase(); 
    caracteres=nif.length; 
    letrapuesta=nif.charAt(caracteres-1); 
    numero=nif.substring(0,caracteres-1); 
    texte="";
    cif=true;
    
    //per comprobar el CIF
    par = 0;
    non = 0;
    letras="ABCDEFGHKLMNPQS";
    let = nif.charAt(0);
    
    for (zz=2;zz<8;zz+=2) {
      par = par+parseInt(nif.charAt(zz));
    }

    for (zz=1;zz<9;zz+=2){
      nn = 2*parseInt(nif.charAt(zz));
      if (nn > 9) nn = 1+(nn-10);
      non = non+nn;
    }

    parcial = par + non;
    
    control = (10 - ( parcial % 10)); 
    
    if (!isNaN(let)) { //si es un nif
        cif = false;
     if(caracteres<7){
         texte = texte + " . NIF demasiado corto.\n";
     }if(letrapuesta==letrapuesta.toLowerCase()){
      texte = texte + " . Falta la letra del NIF.\n";
     }if (isNaN(numero)){
      texte = texte + " . Número del NIF inválido.\n";
     }if(letrapuesta.toUpperCase()!=letra[numero%23]){
      texte = texte + " . NIF Inválido\n";
     }
    }
	//Validación NIE
    else {
    	var str = numero.substring(1,numero.length);
    	if(let=='X'){
    		 cif = false;
    		 numero = "0" + str;
      }else if(let=='Y'){
    		 cif = false;
    		 numero = '1' + str;
      }else if(let=='Z'){
    		 cif = false;
    		 numero = '2' + str;
      }else{
      	 cif=true;
      }
      if(cif==false){
       if(caracteres<7){
           texte = texte + " . NIE demasiado corto.\n";
       }if(letrapuesta==letrapuesta.toLowerCase()){
        texte = texte + " . Falta la letra del NIE.\n";
       }if (isNaN(numero)){
        texte = texte + " . Número del NIE inválido.\n";
       }if(letrapuesta.toUpperCase()!=letra[numero%23]){
        texte = texte + " . NIE Inválido\n";
       }
      }                    
    }
	//Fin Validación NIE        
    if(cif) {
      if (nif.length!=9){
         texte = texte + " . El Cif debe tener 9 dígitos\n";
     } if (letras.indexOf(let.toUpperCase())==-1){
         texte = texte + " . El comienzo del Cif no es válido\n";
     } if (control != nif.charAt(8)){
         texte = texte + " . El Cif no es válido\n";
     } 
   } 
   return texte;
}

function validarNIF_cat(nif) {
	//per comprobar el nif
    letra=["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E","F"]; 
    nif=nif.toUpperCase(); 
    caracteres=nif.length; 
    letrapuesta=nif.charAt(caracteres-1); 
    numero=nif.substring(0,caracteres-1); 
    texte="";
    cif=true;
    
    //per comprobar el CIF
    par = 0;
    non = 0;
    letras="ABCDEFGHKLMNPQS";
    let = nif.charAt(0);
    
    for (zz=2;zz<8;zz+=2) {
      par = par+parseInt(nif.charAt(zz));
    }

    for (zz=1;zz<9;zz+=2){
      nn = 2*parseInt(nif.charAt(zz));
      if (nn > 9) nn = 1+(nn-10);
      non = non+nn;
    }

    parcial = par + non;
    
    control = (10 - ( parcial % 10)); 
    
    if (!isNaN(let)) { //si es un nif
        cif = false;
     if(caracteres<7){
         texte = texte + " . NIF massa curt.\n";
     }if(letrapuesta==letrapuesta.toLowerCase()){
      texte = texte + " . Falta la lletra del NIF.\n";
     }if (isNaN(numero)){
      texte = texte + " . Número de NIF invàlid.\n";
     }if(letrapuesta.toUpperCase()!=letra[numero%23]){
      texte = texte + " . NIF invàlid\n";
     }
    }
	//Validación NIE
    else {
    	var str = numero.substring(1,numero.length);
    	if(let=='X'){
    		 cif = false;
    		 numero = "0" + str;
      }else if(let=='Y'){
    		 cif = false;
    		 numero = '1' + str;
      }else if(let=='Z'){
    		 cif = false;
    		 numero = '2' + str;
      }else{
      	 cif=true;
      }
      if(cif==false){ 
       if(caracteres<7){
           texte = texte + " . NIE massa curt.\n";
       }if(letrapuesta==letrapuesta.toLowerCase()){
        texte = texte + " . Falta la lletra del NIE.\n";
       }if (isNaN(numero)){
        texte = texte + " . Número de NIE invàlid.\n";
       }if(letrapuesta.toUpperCase()!=letra[numero%23]){
        texte = texte + " . NIE invàlid\n";  
       }
      }                    
    }
	//Fin Validación NIE        
    if(cif) {
      if (nif.length!=9){
         texte = texte + " . El Cif ha de tenir 9 dígits\n";
     } if (letras.indexOf(let.toUpperCase())==-1){
         texte = texte + " . L'inici del Cif no és vàlid\n";
     } if (control != nif.charAt(8)){
         texte = texte + " . El Cif no es vàlid\n";    
     } 
   } 
   return texte;
}
