﻿function checkNSS(nss) {
     nss = tratarNIFCIF(nss);
     if (checkCIF(nss)) return true;
     else if (nss.length > 10){
        var answer = confirm ("La longitud de su NIF o CIF son incorrectos, desea continuar?")
                        if (answer)
                            return true;
                        else
                            return false;	
     }else if (/^[X]/.test(nss)){ //Es un NIE
                var temp1=nss.substr(1,8);
                var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
                posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
                letra = cadenadni.substring(posicion,posicion+1);
                if (!/^[A-Za-z0-9]{9}$/.test(nss)){ //Es menos de 9 dígitos, añadimos la letra
                    var answer = confirm ("El NIE es incorrecto, desea continuar?")
                        if (answer)
                            return true;
                        else
                            return false;	
	            }else{ //Tiene los 9 dígitos, comprobamos si la letra esta bien
	                var temp1=nss.substr(1,7);
		            posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
		            letra = cadenadni.charAt(posicion);
		            var letranie=nss.charAt(8);
		            if (letra != letranie){
                        var answer = confirm ("El NIE es incorrecto, desea continuar?")
                        if (answer)
                            return true;
                        else
                            return false;		
		            }
                }
        }else{ 
            var answer = confirm ("El NIF o CIF es incorrecto, desea continuar?")
                        if (answer)
                            return true;
                        else
                            return false;		
       }			
 }

function tratarNIFCIF(nifCIF)
	{
	    //Esta función emula la limpieza que se realizará a posteriori en 
	    //el servidor.
        var temp = nifCIF.toUpperCase();
        temp = temp.replace(" ", "");
        temp = temp.replace("/", "");
        temp = temp.replace("-", "");
        temp = temp.replace(".", "");
        return temp;
	}
	
function checkCIF(cf)
	{
	var i = temp = 0;
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	cf = cf.toUpperCase();
	
	if (checkNIF(cf)) return true;
	else if (!/^[A-Za-z0-9]{9}$/.test(cf))return false;
    else if (!/^[ABCDEFGHKLMNPQS]/.test(cf)) return false;
	else
		{
        for(i=2; i<=6; i+=2)
			{
			temp += v1[parseInt(cf.substr(i-1, 1))];
			temp += parseInt(cf.substr(i, 1));
			}
		temp = temp + v1[parseInt(cf.substr(7,1))];
		temp = (10 - ( temp % 10));
		if(temp == 10 && (cf.charAt(cf.length-1) == 'J' || cf.charAt(cf.length-1) == 0)) return true;
		else if (cf.charAt(cf.length-1) == temp || cf.charAt(cf.length-1) == String.fromCharCode(64 + temp)) return true;
		else return false;
		}
	}

function checkNIF(nif) {
	if (!nif) return false;
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	if (nif.length != 9) return false;
	else {
		letra = nif.substr(8, 1); letra = letra.toUpperCase();
		dni = nif.substr(0, 8);
		dni = dni.toUpperCase(); dni = dni.replace('X','0');
		dni -= parseInt(dni/23) * 23;
		//alert (letras.charAt(dni) + " - " + letra);
		if (letras.charAt(dni) != letra){
		 //alert ("La letra correcta es:" + letra);
		 return false; 
		 }
		else return true;
		}
	}

//function checkNSS(nss) {
    
//    if (checkCIF(nss)) return true;
	//else if (nss.length != 11 && nss.length != 12){
    //alert("DNI Incorrecto");
	 //return false;
//	}else if (nss.substr(2, 1) == 0) nss = "" + nss.substr(0, 2) + nss.substr(3, nss.length-1);
//	else if (mod(nss.substr(0, nss.length-2), 97) == nss.substr(nss.length-2, 2))return true;
//	else{
//	alert("DNI Incorrecto");	 
//	 return false;
//	}
//}



