
//Selección de Browser
var isIE = document.all?true:false;
var isMoz = document.implementation && document.implementation.createDocument?true:false;
var nav4 = window.Event ? true : false;

//GetKeyCode(evt): Obtiene código de tecla pulsada
//       Uso: var KeyPressed=GetKeyCode(event)
function GetKeyCode(evt)
{
	if(!evt || evt==undefined)evt=window.event;
	var key = nav4 ? evt.which : evt.keyCode;	
	return key;
}
//-----Fin Funciones Auxiliares-----------//@


//GetFieldGldLengthRut(rut): Valida largo de rut ingresado
//              Parametros: rut[object], el campo del rut
//              Uso:<input type="text" id="rut" onblur="GetFieldGldLengthRut(this)"/>
function GetFieldGldLengthRut(rut)
{
    if(rut.value=="") rut.value=0 ;
	if (rut.value=="0")return true;
	if(rut.value.length <= 3)
	{
		alert("Rut no valido")	
		//rut.focus()
		return false
	}
	
	
	return true
}
//GetFieldGldRut(rut,digito,evt): Devuelve digito verificador de rut
//              Parametros: rut[object], el campo que contiene rut
//                          digito[object], el campo contenedor del digito
//                          evt[event], controlador de vento tecla
//              Uso: <input type="text" id="rut" onkeydown="GetFieldGldRut(this,document.form1.digito,event)"/>
//                    <input type=text" id="digito"/>
function GetFieldGldRut(rut,digito,evt)
{
	var ln_ret
	var ln_key
	var ls_cadena
	if(rut.value=='') {digito.value='';return;}
	if(!evt || evt==undefined)evt=window.event;
	ln_key = GetKeyCode(evt)
    if((ln_key > 47 && ln_key < 58)  || (ln_key > 95 && ln_key < 106))
	{
	    if(ln_key > 95 && ln_key < 106)
		{
		    ln_key = ln_key - 48
		}
		ln_ret = ln_key
	}
	else
	{
	    ln_ret = 0
	}
	if(rut.value.length >= 12 && ln_ret > 0)
	{
		ln_ret = 0
		ln_key = 0
	}
	if(ln_key == 46 || ln_key == 8)
	{
		ln_ret=ln_key
		ln_key=0
	    if (rut.value == "" || rut.length == 1)
		{
		    digito.value = ""
		}
		else
		{
			ls_cadena = rut.value
			//alert(ls_cadena+"--"+ls_cadena.length+"--"+ls_cadena.substr(0, ls_cadena.length -1))
			digito.value = GetDgvRut(ls_cadena.substr(0, ls_cadena.length -1))
		}
	}
	if(ln_key == 13 || ln_key == 9 || ln_key == 37 || ln_key == 39)
	{
		ln_key=0
		if (rut.value == "")
		{
			alert("Debe ingresar un Rut de Cliente")
			digito.value = ""
			ln_ret = 0
			rut.focus()
		}
		else
		{
			digito.value = GetDgvRut(rut.value)
			ln_ret =-1
		}
	}
	//alert(ln_key + "--" +ln_ret + "--"+(rut.value + String.fromCharCode(ln_ret)) )
    if(ln_key > 0 && ln_ret > 0 && (rut.value + String.fromCharCode(ln_ret)) != "")
	{
		digito.value = GetDgvRut(rut.value+ String.fromCharCode(ln_ret))
	}
	if(ln_ret == 0)
	{
		return false
	}
	else
	{
		return true
	}
	//return ln_ret
				
}	
//GetFieldGldRut_Nom(rut,digito,evt): Devuelve digito verificador de rut
//              Parametros: rut[string], id del campo que contiene rut
//                          digito[string], id del campo contenedor del digito
//                          evt[event], controlador de vento tecla
//              Uso: <input type="text" id="rut" onkeydown="GetFieldGldRut('rut','digito',event)"/>
//                    <input type=text" id="digito"/>

function GetFieldGldRut_Nom(rut,digito,evt)
{
	var ln_ret
	var ln_key
	var ls_cadena
	if(!evt || evt==undefined)evt=window.event;
	ln_key = GetKeyCode(evt)

    if((ln_key > 47 && ln_key < 58)  || (ln_key > 95 && ln_key < 106))
	{
		if(ln_key > 95 && ln_key < 106)
		{
			ln_key = ln_key - 48
		}
		ln_ret = ln_key
	}
	else
	{
	    ln_ret = 0
	}
	if(document.getElementById(rut).value.length >= 12 && ln_ret > 0)
	{
		ln_ret = 0
		ln_key = 0
	}
	if(ln_key == 46 || ln_key == 8)
	{
		ln_ret=ln_key
		ln_key=0
	    if (document.getElementById(rut).value == "" || document.getElementById(rut).length == 1)
		{
			document.getElementById(digito).value = ""
		}
		else
		{
			ls_cadena = document.getElementById(rut).value
			//alert(ls_cadena+"--"+ls_cadena.length+"--"+ls_cadena.substr(0, ls_cadena.length -1))
			document.getElementById(digito).value = GetDgvRut(ls_cadena.substr(0, ls_cadena.length -1))
		}
					
	}
	if(ln_key == 13 || ln_key == 9 || ln_key == 37 || ln_key == 39)
	{
		ln_key=0
		if (document.getElementById(rut).value == "")
		{
			alert("Debe ingresar un Rut de Cliente")
			document.getElementById(digito).value = ""
			ln_ret = 0
			document.getElementById(rut).focus()
		}
		else
		{
			document.getElementById(digito).value = GetDgvRut(document.getElementById(rut).value)
			ln_ret =-1
		}
	}
	//alert(ln_key + "--" +ln_ret + "--"+(document.getElementById(rut).value + String.fromCharCode(ln_ret)) )
    if(ln_key > 0 && ln_ret > 0 && (document.getElementById(rut).value + String.fromCharCode(ln_ret)) != "")
	{
		document.getElementById(digito).value = GetDgvRut(document.getElementById(rut).value+ String.fromCharCode(ln_ret))
	}
	if(ln_ret == 0)
	{
		return false
	}
	else
	{
		return true
	}
	//return ln_ret
}
//GetDgvRut(crut): Devuelve digito verificador de rut
//          Parametros: crut[string], el rut
//          Uso : var dv=GetDgvRut('1')
//          Devuelve: dv=9;
function GetDgvRut(crut)
{
  var dvr = '0';
  suma = 0;
  mul  = 2;
  if(crut.length==0)
  {
	dvr="";
	return dvr;
  }		
  if(crut=='0')
  {
	dvr="";
	return dvr;
  }		
  for (i= crut.length-1 ; i >= 0; i--)
  {
    suma = suma + crut.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 + "";
  }

   return dvr;
}
//NumeroDVRUT(evt): Permite solo el ingreso de caracteres validos para digito
//                  verificador de rut
//          Uso: <input type="text" id="dv" onkeypress="NumeroDVRUT(event)"/>
function NumeroDVRUT(evt)
{
			// 75	=	K
			// 107	=	k
	if(!evt || evt==undefined)evt=window.event;		
	var key = nav4 ? evt.which : evt.keyCode;	
	return (key <= 13 || (key >= 48 && key <= 57)|| key==75 || key==107);		
	
}
//ValRut(rutid,digid): Validacion y calculo de digito verificador de rut
//										verifica que contenga numeros y el largo determinado por la
//										funcion GetFieldGldLengthRut
//					Param: rutid[string]:id del campo de numero del rut
//								 digid[string]:id de campo del digito verifcador
//					Retorno: true y setea el digito si el rut es valido, false de lo contrario
//					Uso: <input type="text" id="rut" onchange="ValRut('rut',digito')"/>
function ValRut(rutid,digid){
	var lo_rut = document.getElementById(rutid);
	if(!lo_rut){
		alert('No se encuentra el campo rut');
		return false;
	}
	var lo_dig = document.getElementById(digid);
	if(!lo_dig){
		alert('No se encuentra el campo digito');
		return false;
	}
	var ln_rutval = lo_rut.value;

	if(isNaN(ln_rutval)){
		alert('Rut ingresado no válido');
    lo_rut.value='';lo_dig.value='';
    lo_rut.focus();
    return false;
	}
	if(!GetFieldGldLengthRut( lo_rut )){
		lo_rut.value='';lo_dig.value='';
    lo_rut.focus();
    return false;
	}
  lo_dig.value=GetDgvRut(lo_rut.value);
  return true;
}