
//
// Funciones de validación y manipulación del rut
// Son genéricas, es decir al llamarlas se debe indicar
// el objeto a validar del modo p.e. onblur='verifica_rut(this)'
//
// TTGROUP
// Junio 2004
//

function verifica_rut(oRut)
   {
   	var rut_numero = new String();
   	var lacadena = new String();
   	var numr = new String();
   	lacadena = oRut.value;
   	t2=0;
   	if ( lacadena.length == 0 )
   	{
   	   return false;
   	}
   	for (i=0; i < lacadena.length; i++ )
   	{
   	   t2=1;
   		if (!(lacadena.charAt(i) == '.' || lacadena.charAt(i) == ' ' || lacadena.charAt(i) == '-'))
   		{
   			numr += lacadena.charAt(i);
   		}
   	}
   	for (i=0; i < numr.length; i++)
   	{
   		if (i < numr.length -1)
   		{
   			rut_numero += numr.charAt(i);
   		}
   		else
   		{
   			rut_dv=numr.charAt(i);
   		}
   	}	
   	if (isNaN(rut_numero))
   	{
   		alert('Ingrese el RUT nuevamente, contiene caracteres no validos');
   		oRut.focus();
   		oRut.select();
   		return false;
   	}
//   	if ((rut_numero>50000000)||(rut_numero<1000000))
   	if (rut_numero<10000)
   	{
   		alert('El RUT ingresado no es válido para personas naturales') ;
   		oRut.value = '';
   		oRut.focus();
   		oRut.select();
   		return false;
   	}
   	if (isNaN(rut_dv))
   	{
   		if (rut_dv == 'k')
   			rut_dv='K';	
   		if (rut_dv != 'K')
   		{	
   			alert('Ingrese el RUT nuevamente, el digito verificador no es un caracter valido') ;
   			oRut.focus();
   			oRut.select();
   			return false;
   		}		
   	}
   	if ( !verificarDvYR(rut_numero,rut_dv) )
   	{
   	   oRut.value = '';
   		oRut.focus();
   		oRut.select();
   		return false;
   	}
   	oRut.value = reconstruye(rut_numero,rut_dv);
   	return true
   }
function verificarDvYR(n,d)
   {
   	largo = n.length
   	j=2
   	suma=0
   	while (largo >0)
   	{
   		suma =suma + n.charAt(largo-1) * j
   		if (j<7)
   			j++
   		else
   			j=2
   		largo = largo - 1
   	}
   	resto = suma%11
   	if (resto==1)
   		dvc='K'
   	else if (resto==0)
   		dvc=0
   	else
   	{
   		dvi = 11-resto
   		dvc = dvi
   	}
   	if (d!=dvc)
   	{
   		alert('Ingrese el RUT nuevamente, es incorrecto') 
   		return false
   	}
   	return true
   }
function reconstruye(n,d)
   {
   	rut_nuevo = new String()
   	rut_nuevo += '-' + d
   	j=1
   	for (i = n.length - 1; i>=0; i--)
   	{
   		if (j==4)
   		{
   			rut_nuevo = n.charAt(i) + '.' + rut_nuevo
   			j=2
   		}
   		else
   		{
   			rut_nuevo = n.charAt(i) + rut_nuevo
   			j++
   		}
   	}
      return rut_nuevo
   }
