hola a todos me gustaria hacer un escript que valide el numero de afiliacion a la seguridad social en españa el algoritmo es el siguiente:
 
El número de afiliación a la Seguridad Social en españa, lleva asociados un par de dígitos de control que sirven para evitar errores de transcripción.
El número de afiliación a la seguridad social consta de tres partes:
 
aa/bbbbbbbb/cc
 
Los primeros dígitos (a) son un indicativo de la provincia. Los dígitos centrales (b) son el nº del asegurado dentro de cada provincia. Los dígitos finales son dígitos de control.
 
A menudo, el número de la seguridad social se escribe sin barras, siendo la parte a los dos primeros dígitos, la parte c los dos últimos y la parte b los dígitos centrales que queden:
 
aabbbbbbbbcc
 
Los dígitos de control (c) se obtienen a partir de las otras dos partes (a) y (b) de la siguiente forma:
 
si (b<10000000)
entonces d=b+a*10000000
si no d=valor de ( a concatenado con b ) //con b sin ceros a la izquierda
c=d mod 97 //resto de la división entera
 
 
yo tengo este script:
 
function comprobar_nass(nass_java)
{	var d=0,a1;	
	var resto=0; var rest =0;
	var nass=document.getElementById('nass_java').value
	var a = nass.substring(0,2); //a coge el valor de los 2 primeros digitos ok!!!
	var b = nass.substring(2,10);	//b tiene el valor de -> aa/bbbbbbbb/cc
	var c = nass.substring(10,12);	//c vale los dos ultimos digitos.
	var e = nass.substring(2,10);
	var incr = 2;
	var digito = nass.substr(incr,incr-1); //se le asigna a digito el valor del numero que se escuentra en 3 posicio(el primer digito de b)
	alert("a=" +a);//muestro en pantalla  la partes a/b/c
	alert("b=" +b);
	alert("c=" +c);
	alert("Digito= " +digito);
		if( b < 10000000 ) //si es menor de 8 digitos b
			{ 
			//a1= a*10000000; //a1 le asigno el valor de a x 10000000
			d = b+ a*10000000; // d coge el valor de a1(a x 10000000)
			resto =  d % 97 ;
				if(resto==c) // el resto si es igual que la parte c(2 ultimas cifras) del nass es correcto
				    {alert("El nass es correcto  " +resto);}
				else
					{alert("El nass no es correcto " +resto);}	// sino no.
			}
		 else
		 {	// si b no es menor de 8 digitos...
		 	while (digito == 0) //compruebo que digito sea igual q 0 si es asi....
		 	{
			digito = nass.substr(incr+1,1);//cogemos el digito siguiente y lo comprobamos que sea igual a cero.
			e = nass.substring(incr+1,nass.length-incr-3);//asignamos a e la cadena sin el digito anteriormente comprobado
			incr++; //incrementamos la variable para para comprobar el siguente digito
			alert(digito)
			}
			d = a+ e;//asignamos a e el valor de a concatenado con b sin cero 
			rest = d % 97;
				if(rest==c)
					{alert("El nas es correcto");}
					else{alert("el nass no es correcto " +rest);}
 
		 }
}
 
si alguien sabe como validarlo corectamente haber si entre los dos podemos porque ya llevo tiempo con ello.
saludos y gracias. 
  
 
