
function validar_input( formulario ) {

	for( v = 0; v < formulario.length; v++ ) {

		objeto = formulario.elements[v];
	
		if( objeto.obligatorio == true ) {
			
			if( objeto.value == '' ) {
				alert( "El campo '" + objeto.label + "' es obligatorio." );
				objeto.focus();
				return false;
			}
			
			if( objeto.isRut == true ) {
				if( checkRutField( objeto.value, objeto ) == false ) {
					objeto.focus();
					return false;
				}
			}
			
			if( objeto.isMail == true ) {
				if( validarEmail( objeto ) == false ) {
					objeto.focus();
					return false;
				}
			}
			
		}
		
	}
	
	return true;

}

////////////////////////////////////////////////
function KeyIsNumber(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) {
		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || (evt.which >= 48 &&  evt.which <=57)  // [0-9]
			|| (evt.which == 13) // ENTER
			) 
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( (evt.keyCode >= 48 && evt.keyCode <= 57) 
			|| evt.keyCode== 13 )
			return true;
		return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false
}

////////////////////////////////////////////////
function KeyIsRut(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)
	if (isNav) {
		if  ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 46 || /*punto*/ evt.which == 45 || evt.keyCode == 13 || 
			(evt.which >= 48 && evt.which <=  57) || /*[0-9]*/
			(evt.which == 75 || evt.which ==  107)    /*[kK]*/ )
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( evt.keyCode == 46 || evt.keyCode == 45 || /* punto y guion */
			(evt.keyCode >= 48 && evt.keyCode <=  57) || /*[0-9]*/
			(evt.keyCode == 75 || evt.keyCode ==  107)    /*[kK]*/ )
			return true;
		return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false
}

function KeyIsRutDV(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)
	if (isNav) {
		if  ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 46 || /*punto*/ evt.which == 45 || evt.keyCode == 13 || 
			(evt.which >= 48 && evt.which <=  57) || /*[0-9]*/
			(evt.which == 75 || evt.which ==  107)    /*[kK]*/ )
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( evt.keyCode == 46 || evt.keyCode == 45 || /* punto y guion */
			(evt.keyCode >= 48 && evt.keyCode <=  57) || /*[0-9]*/
			(evt.keyCode == 75 || evt.keyCode ==  107)    /*[kK]*/ )
			return true;
		return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false
}

////////////////////////////////////////////////
function KeyIsTexto(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) {
		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 32 
			|| evt.which == 44  // ,
            || evt.which == 45  // -
            || evt.which == 46  // .
            || (evt.which >= 224 && evt.which <= 252 ) // Acentos minusculas
            || (evt.which >= 192 &&  evt.which <=220) // acentos mayusculas
            || (evt.which >= 48 && evt.which <= 57 )   // [0-9]
            || (evt.which >= 65 && evt.which <= 90 )   // [a-z]
            || (evt.which >= 97 && evt.which <= 122 )  // [A-Z]
            || (evt.which >= 40 && evt.which <= 41 )  // [ ( ) ]
			|| (evt.which == 13)) // ENTER
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( evt.keyCode == 32 
			|| evt.keyCode == 44
            || evt.keyCode == 45
            || evt.keyCode == 46
            || (evt.keyCode >= 224 && evt.keyCode <= 252)
            || (evt.keyCode >= 192 &&  evt.keyCode <=220)
            || (evt.keyCode >= 48 && evt.keyCode <= 57 ) 
            || (evt.keyCode >= 65 && evt.keyCode <= 90 ) 
            || (evt.keyCode >= 97 && evt.keyCode <= 122 )
            || (evt.keyCode >= 40 && evt.keyCode <= 41 )
			|| (evt.keyCode == 13))
		return true;
	return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false;
}

////////////////////////////////////////////////
function KeyIsLetra(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) {
		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 32 // Espacio
            || (evt.which >= 224 && evt.which <= 252 ) // Acentos minusculas
            || (evt.which >= 192 &&  evt.which <=220) // acentos mayusculas
            || (evt.which >= 65 && evt.which <= 90 )   // [a-z]
            || (evt.which >= 97 && evt.which <= 122 )  // [A-Z]
			|| (evt.which == 13)) // ENTER
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( evt.keyCode == 32 
			|| evt.keyCode == 44
            || evt.keyCode == 46
            || (evt.keyCode >= 224 && evt.keyCode <= 252)
            || (evt.keyCode >= 192 &&  evt.keyCode <=220)
            || (evt.keyCode >= 65 && evt.keyCode <= 90 ) 
            || (evt.keyCode >= 97 && evt.keyCode <= 122 )
			|| (evt.keyCode == 13))
		return true;
	return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false;
}

////////////////////////////////////////////////
function KeyIsDecimal(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)
var cantP = 0;

	if (isNav) {
		for (i=0; i<evt.target.value.length; i++){
			if (evt.target.value.charAt(i) == "."){
				cantP = cantP + 1;
			}
		}
		if( evt.which == 46 && cantP > 0 ) // sólo permite un punto por cantidad
			return false;

		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 46 ||  (evt.which >= 48 &&  evt.which <=57) )
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		for (i=0; i<evt.srcElement.value.length; i++){
			if (evt.srcElement.value.charAt(i) == "."){
				cantP = cantP + 1;
			}
		}
		if( evt.keyCode == 46 && cantP > 0 ) // sólo permite un punto por cantidad
			return false;

		if ( evt.keyCode == 13 || evt.keyCode == 46 || (evt.keyCode >= 48 && evt.keyCode <= 57) )
			return true;
		return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false
}

////////////////////////////////////////////////

function KeyIsMail(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) {
		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || evt.which == 32 
            || evt.which == 45  // -
            || evt.which == 46  // .
            || evt.which == 64  // @
            || evt.which == 95  // _
            || (evt.which >= 224 && evt.which <= 252 ) // Acentos
            || (evt.which >= 48 && evt.which <= 57 )   // [0-9]
            || (evt.which >= 65 && evt.which <= 90 )   // [a-z]
            || (evt.which >= 97 && evt.which <= 122 ) ) // [A-Z]
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( evt.keyCode == 32 
            || evt.keyCode == 45
            || evt.keyCode == 46
            || evt.keyCode == 64
            || evt.keyCode == 95
            || (evt.keyCode >= 224 && evt.keyCode <= 252)
            || (evt.keyCode >= 48 && evt.keyCode <= 57 ) 
            || (evt.keyCode >= 65 && evt.keyCode <= 90 ) 
            || (evt.keyCode >= 97 && evt.keyCode <= 122 ) )
		return true;
	return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false;
}

////////////////////////////////////////////////

function KeyIsDate(evt)
{
var isNav = (navigator.appName.indexOf("Netscape") != -1)
var isIE = (navigator.appName.indexOf("Microsoft") != -1)
	if (isNav) {
		if ( ( evt.which >= 0 && evt.which <= 9 ) // Tab delete etc
            || (evt.which >= 48 &&  evt.which <=57)  // [0-9]
			|| (evt.which == 47)  // /
			|| (evt.which == 13) // ENTER
			) 
		return true;
	return false;
	}
	else if (isIE)
		{evt = window.event;
		if ( (evt.keyCode >= 48 && evt.keyCode <= 57) )
			return true;
		return false;
		}
	else {
		alert("Su browser no es soportado por esta aplicación")
	}
	return false
}

function validateFormatDate( campo ) {

	var arr_datos = campo.value.split("\/");
	
	if( arr_datos.length != 3 ) {
		alert( "Fecha mal ingresada. Formato DD/MM/AAAA" );
		campo.focus();
		return false;
	}
	
	for( var i = 0; i < arr_datos.length; i++ ) {
		if( arr_datos[0].length != 2) {
			alert( "Día mal ingresado. Formato DD/MM/AAAA" );
			campo.focus();
			return false;
		}
		if( arr_datos[1].length != 2) {
			alert( "Mes mal ingresado. Formato DD/MM/AAAA" );
			campo.focus();
			return false;
		}
		if( arr_datos[2].length != 4) {
			alert( "Año mal ingresado. Formato DD/MM/AAAA" );
			campo.focus();
			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("Debes ingresar un dígito verificador válido");
		return false;
	}
	return true;
}

//////////////////////////////////////////////////

function checkDV( crut )
{
	largo = crut.length;

	rut = crut.substring(0, largo-1 );

	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 RUT es incorrecto, podrías ingresarlo nuevamente");
		return false
	}

   return true
}

///////////////////////////////////////////////////////

function checkRutField( rut_in, rut_campo ) // RUT con digito verificar xxxx-x
{
  var texto = rut_in;
 
  var tmpstr = "";

  for ( i=0; i < texto.length ; i++ )
    if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
      tmpstr = tmpstr + texto.charAt(i);
  texto = tmpstr;
  largo = texto.length;

  if ( largo < 7 )
  {
    alert("Debes ingresar el campo RUT completo");
    return false;
  }

  for (i=0; i < largo ; 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" && texto.charAt(i) !="k" && texto.charAt(i) != "K" ) 
    {
      alert("El valor ingresado no corresponde a un RUT válido, podrías ingresarlo nuevamente");
      return false;
    }
  }

  // SKP format
  var invertido = "";
  for ( i=(largo-1),j=0; i>=0; i--,j++ )
    invertido = invertido + texto.charAt(i);
  var dtexto = "";
  dtexto = dtexto + invertido.charAt(0);
  dtexto = dtexto + '-';
  cnt = 0;
  for ( i=1,j=2; i<largo; i++,j++ )
  {
    //alert("i=[" + i + "] j=[" + j +"]" );
    if ( cnt == 3 )
    {
      dtexto = dtexto + '.';
      j++;
      dtexto = dtexto + invertido.charAt(i);
      cnt = 1;
    }
    else
    { 
      dtexto = dtexto + invertido.charAt(i);
      cnt++;
    }
  }
  invertido = "";
  for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )
    invertido = invertido + dtexto.charAt(i);
  rut_campo.value = invertido;  
  // SKP format 
 
  if ( checkDV(texto) )
   return true;
  return false;
}

function validarEmail(valor){
	validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
	strEmail = valor.value;
	
	if (strEmail.search(validRegExp) == -1) {
	    alert("La dirección de email es incorrecta o está mal escrita.");
	    valor.focus();
	    return (false);
	}else
		return (true);
}


