// Validador campos

// Por: Rodrigo Alfaro, Mayo 2009

//-> Funciones de validación de RUT

function valida() {

	rut_val = document.ingresa_usu.rec_rut.value;

	clave = document.ingresa_usu.clave_aux.value;

	if ( rut_val.length == 0 ) 

	{

		alert( "Ingrese su R.U.T.");

		document.ingresa_usu.rec_rut.focus();

		return;

	}

	if ( clave.length == 0 ) 

	{

		alert( "Ingrese su Clave.");

		document.ingresa_usu.clave_aux.focus();

		return;

	}

	if ( !checkRutField(document.ingresa_usu.rec_rut.value) )

	{	

		return;

	}

	if ( clave.length < 4 && clave.length > 8 )

	{

		alert("La clave debe poseer un largo mínimo de 4 dígitos y máximo de 8 dígitos.");

		document.ingresa_usu.clave_aux.focus();

		document.ingresa_usu.clave_aux.select();

		return;

	}

	document.ingresa_usu.clave.value = document.ingresa_usu.clave_aux.value;

	var tmpstr = "";	

	for ( i=0; i < rut_val.length ; i++ )

		if ( rut_val.charAt(i) != ' ' && rut_val.charAt(i) != '.' && rut_val.charAt(i) != '-' )

			tmpstr = tmpstr + rut_val.charAt(i);

	rut_val = tmpstr;

	rut_valor = rut_val.substring(0,rut.length);

	if ( rut_valor > 50000000)

	{

		alert( "El R.U.T. corresponde a una empresa, ingrese a través del portal empresas.");	

		document.ingresa_usu.rec_rut.value = "";

		document.ingresa_usu.clave_aux.value = "";

		document.ingresa_usu.rec_rut.focus();

		return;

	}

	document.ingresa_usu.rut.value = rut_val.substring(0,rut.length);	

	document.ingresa_usu.dig.value = rut_val.substring(rut.length,rut.length+1);

	document.ingresa_usu.rec_rut.value = "";

	document.ingresa_usu.clave_aux.value = "";

	document.ingresa_usu.submit();

}

function checkRutField(rut)

{

	var tmpstr = "";

	for ( i=0; i < rut.length ; i++ )

		if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )

			tmpstr = tmpstr + rut.charAt(i);

	rut = tmpstr;

	largo = rut.length;

// [VARM+]

	tmpstr = "";

	for ( i=0; rut.charAt(i) == '0' ; i++ );

		for (; i < rut.length ; i++ )

			tmpstr = tmpstr + rut.charAt(i);

	rut = tmpstr;

	largo = rut.length;

// [VARM-]

	if ( largo < 2 )

	{

		alert("Debe ingresar el rut completo.");

		document.ingresa_usu.rec_rut.focus();

		document.ingresa_usu.rec_rut.select();

		return false;

	}

	for (i=0; i < largo ; i++ )

	{

		if ( rut.charAt(i) != "0" && rut.charAt(i) != "1" && rut.charAt(i) !="2" && rut.charAt(i) != "3" && rut.charAt(i) != "4" && rut.charAt(i) !="5" && rut.charAt(i) != "6" && rut.charAt(i) != "7" && rut.charAt(i) !="8" && rut.charAt(i) != "9" && rut.charAt(i) !="k" && rut.charAt(i) != "K" )

		{

			alert("El valor ingresado no corresponde a un R.U.T valido.");

			document.ingresa_usu.rec_rut.focus();

			document.ingresa_usu.rec_rut.select();

			return false;

		}

	}



	if ( checkDV(rut) )

		return true;

	return false;

}

function checkDV( crut )

{

	largo = crut.length;

	if ( largo < 2 )

	{

		alert("Debe ingresar el rut completo.");

		document.ingresa_usu.rec_rut.focus();

		document.ingresa_usu.rec_rut.select();

		return false;

	}

	if ( largo > 2 )

		rut = crut.substring(0, largo - 1);

	else

		rut = crut.charAt(0);

	dv = crut.charAt(largo-1);

	checkCDV( dv );

	if ( rut == null || dv == null )

		return 0;

	var dvr = '0';

	suma = 0;

	mul = 2;

	for (i= rut.length -1 ; i >= 0; i--)

	{

		suma = suma + rut.charAt(i) * mul;

		if (mul == 7)

			mul = 2;

		else

			mul++;

	}

	res = suma % 11;

	if (res==1)

		dvr = 'k';

	else if (res==0)

		dvr = '0';

	else

	{

		dvi = 11-res;

		dvr = dvi + "";

	}

	if ( dvr != dv.toLowerCase() )

	{

		alert("EL rut es incorrecto.");

		document.ingresa_usu.rec_rut.focus();

		document.ingresa_usu.rec_rut.value = "";

		return false;

	}

	return true;

}

function checkCDV( dvr )

{

	dv = dvr + "";

	if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K')

	{

		alert("Debe ingresar un digito verificador valido.");

		document.ingresa_usu.rec_rut.focus();

		document.ingresa_usu.rec_rut.select();

		return false;

	}

	return true;

}
