
/////////////////////////////////
//
// Valida el CampoRut para determinar si es un RUT correctamente ingresado.
// Validaciones:
//    Que el string no sea nulo
//    Que tenga un largo superior a uno, 
//    Que esté compuesto de dígitos [0-9].
//    Que el dígito verificador sea un dígito o una 'K'
//Parámetros:
// CampoRut:
//    Campo del Rut a validar obtenido del DOM de la página html.
//          por ejemplo, document.formulario.campoRUT
// CampoValorRut:
//    Campo, generalmente oculto, para establecer el valor limpio del RUT
//           sin digito verificador y sin puntos separadores.
//
//////////////////////
function validaCampoRut(CampoRut, CampoValorRut)
{

  var tmpstr = "";
  var txt = CampoRut.value;
  for ( i=0; i < txt.length ; i++ )
    if ( txt.charAt(i) != ' ' && txt.charAt(i) != '.' && txt.charAt(i) != '-' )
      tmpstr = tmpstr + txt.charAt(i);
  var texto = tmpstr;
  largo = texto.length;
  
  if ( largo < 2 )
  {
    alert("Debe ingresar el rut completo.");
    CampoRut.focus();
    CampoRut.select();
    return false;
  }

  for (i=0; i < (largo - 1)  ; i++ )
  { 
    if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9") 
    {
      alert("El valor ingresado no corresponde a un R.U.T valido.");
      CampoRut.focus();
      CampoRut.select();
      return false;
    }
  }

  if ( checkDV(texto) ){
	formateaRUT(texto);
	CampoValorRut.value = texto.substring(0, texto.length - 1);
	CampoRut.value = formateaRUT(texto);
        return true;
  }
  
  CampoValorRut.value = "";
  CampoRut.focus();
  CampoRut.select();  
  return false;
}



//////////////////////////////////////////////////
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.");
    return false;
  }
  return true;
}
//////////////////////////////////////////////////
function checkDV( crut )

{

  largo = crut.length;
  if ( largo > 2 )
    rut = crut.substring(0, largo - 1);
  else
    rut = crut.charAt(0);
  dv = crut.charAt(largo-1);
  
  if (! checkCDV(dv)) {
  	 return false;
	}

  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 R.U.T. es incorrecto.");
    return false;
  }
  return true;
}

//////////////////////////////////
//Formatea el string asumiento que es un RUT, donde el último caracter es
//el dígito verficador.
//El formato es con puntos separadores de miles y un guión separador 
//para el DV.
//
/////////
function formateaRUT(textoRUT)
{
 var largo = textoRUT.length - 1;

 var RUTformateado = textoRUT.substring(largo-3,largo)+ "-" +textoRUT.charAt(largo);
 var txtRUT = textoRUT.substr(0,largo-3);
 for(largo -= 3; largo>=0 ; largo -= 3){
 	RUTformateado = txtRUT.substr((largo>3)?largo-3:0, 3) + "." + RUTformateado;
	txtRUT = txtRUT.substr(0,largo-3);
 }
 return RUTformateado;
}


////////////////////////////////
//funcion que valida que el password no sea nulo
///////////////////////////////

function validaPassword(CampoPassword)
{
    if ( (CampoPassword.value.length == 0)  || (CampoPassword.value == null) ) 
    {	 
	alert("Debe ingresar la clave.");
    	CampoPassword.focus();
    	CampoPassword.select();
    	return false;
    }
    return true;		
}