// JavaScript Document// Revisa Rut
// revisaRut(document.forms[0].rut.value,document.forms[0].dv.value)

function esDigito (c)
{   return ((c >= "0") && (c <= "9")) }

function esDigitoVerificadorválido(c)
{
        var test= "" + c;
        if (test == "0" || test == "1" || test == "2" || test == "3" || test == "4" || test == "5" || test == "6" || test == "7" || test == "8" || test == "9" || test == "k" || test == "K")
        {
                return true;
        }
       // alert ("RUT inválido ");
        return false;
}

function esRutválido(s)
{
        var test = "" + s;
        for (var k=0;k < test.length; k++)
        {
                var c=test.substring(k,k+1);
                if (esDigito(c)==false)
                {
                        //alert ("RUT inválido");
                        return false;
                }
        }
        return true;
}

function calculaDigitoVerificador(rut)
{
        var test = "" + rut;
        var total=0;
        var i=2;
        for (var k=test.length;k > 0; k--)
        {
                var c=test.substring(k-1,k);
                //alert (c);
                if (i==8)
                {
                        i=2;
                }
                total+=parseInt(c)*i
                i++;
        }
        if ((11-(total-(Math.floor(total/11)*11)))==11){
                return 0;
        }
        else{
                return (11-(total-(Math.floor(total/11)*11)));
        }
}

//function revisaRut(rut_org)
function revisaRut(rut_org,rut_solo,dv_solo)
{
  var dv;
  var rut ="";
//cambio en >=11 <=6 era <8
  if ( rut_org.length <= 6 || rut_org.length >= 11)
  {
       // alert ("RUT inválido ");
 	return false;
  }
  for ( i=0; i < rut_org.length-1  && rut_org.charAt(i) != '-'; i++ )
    if ( rut_org.charAt(i) != ' ' && rut_org.charAt(i) != '.' && rut_org.charAt(i) != '-' )
      rut = rut + rut_org.charAt(i);

//  dv = rut_org.charAt(rut_org.length-1);
  for ( i=rut_org.length-1; i > 0 && rut_org.charAt(i) != '-' ; i-- )
    if ( rut_org.charAt(i) != ' ' && rut_org.charAt(i) != '.' && rut_org.charAt(i) != '-' )
      dv = rut_org.charAt(i);

 // alert("digito verificador ='"+dv+"'");


        if (esDigitoVerificadorválido(dv)==false)
        {
                return false;
        }
        if (calculaDigitoVerificador(rut)==10)
        {
                var test=""+dv;
                if ((test != "K")&&(test != "k"))
                {
                  //      alert ("RUT inválido");
                        return false;

                }
        }
        else if (calculaDigitoVerificador(rut)!=dv)
        {
  // alert(calculaDigitoVerificador(rut));
  // alert("rut='"+rut+"'");
  // alert("digito verificador ='"+dv+"'");
               // alert ("RUT inválido");
                return false;
        }
        if (revisaRut.arguments.length==3)
        {
          rut_solo.value=rut;
          if (dv=="k")
          {
            dv_solo.value="K";
          }
          else
          {
            dv_solo.value=dv;
          }
        }
	return true;
}

function valida_rut(rut)
{
  	 rut.style.borderColor="";
	 
 var retorna=revisaRut(rut.value);
  if (!retorna)
  { 
  	  rut.style.borderColor="red";
    jError("Rut Inválido", 'Error', function(r) {});

  //  rut.focus();
  }
  return(retorna);
}

