//***********************************************************************************
//***********************************************************************************
// Valida caracteres especiales para la modificación de Password

function CaracteresEspeciales(InString,tipo)
{
	
	for (Cont=0; Cont < InString.length; Cont++) 
	{
		Char = InString.charAt(Cont);
		if (tipo == 'P') {
    			if(!TipoPassword(Char))
    				return false;
    		}
    }
    return true;
}
function TipoPassword(Char)
{
	if(Char.length != 1) 
    	return false;
    Char=Char.toLowerCase();
    RefString=' 0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÇüéâäàåçêëèïîìÄÅÉæÆôöòûù4ÿÖÜ£¥áíóúñÑçãõ_';
    if (RefString.indexOf(Char,0) == -1) 
    	return false;
    return true;
}

//*************************************************************************************
//*************************************************************************************
// VALIDA  NUMERO
function numerico(string)
    {
       control=true
       for(f=0;f<string.length;f++)
       {
		if((string.charAt(f)!='1')&& (string.charAt(f)!='2')&& (string.charAt(f)!='3')&& (string.charAt(f)!='4')&& (string.charAt(f)!='5')&& (string.charAt(f)!='6')&& (string.charAt(f)!='7')&& (string.charAt(f)!='8')&& (string.charAt(f)!='9')&& (string.charAt(f)!='0'))
			control=false
       }
       return control;
    }
//*************************************************************************************
//*************************************************************************************
// PARA VALIDAR RUT
function vld_dts(obj) {
   rut = obj.value;
	if ( rut.length == 0 ) {
	    alert( "Complete los datos de RUT, por favor.");
	    obj.focus();
		obj.select();
	    return false;
	} else {
		return checkFields( rut, obj);
	}
}
function checkFields( rut,obj)
{
  var tmpstr = "";
  var SoloRut="";
  var RutNum;
  for ( i=0; i < rut.length ; i++ )
    if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
      tmpstr = tmpstr + rut.charAt(i);
  rut = tmpstr;

  if ( !checkRutField(rut,obj) )
    return false;

  if ( !checkDV( rut,obj ) )
    return false;

  //window.document.Form1.RUT.value = rut;

  SoloRut=rut.substring(0,rut.length-1);
  RutNum=SoloRut
  if (RutNum < 50000000) {
        //document.passw.submit();
  } else {
	if (RutNum > 99999999){
		alert ("Rut Incorrecto")
		return false
		}

  }

  return true;
}
function checkCDV( dvr,obj )
{
  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.");
    obj.focus();
    obj.select();
    return false;
  }
  return true;
}
function checkDV( crut,obj )
{
  largo = crut.length;
  if ( largo < 2 )
  {
    alert("Debe ingresar el rut completo.");
    obj.focus();
    obj.select();
    return false;
  }
  if ( largo > 2 )
    rut = crut.substring(0, largo - 1);
  else
    rut = crut.charAt(0);
  dv = crut.charAt(largo-1);
  checkCDV( dv, obj );
  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.");
    //obj.focus();
    //obj.value = "";
    return false;
  }

      return true;
}

function checkRutField(texto,obj)
{
  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 < 2 )
  {
    //alert("Debe ingresar el rut completo.");
    //obj.focus();
    //obj.select();
    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 R.U.T valido.");
      //obj.focus();
      //obj.select();
      return false;
    }
  }

  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++ )
  {
    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);

  obj.value = invertido;

  if ( checkDV(texto, obj) )
    return true;
  return false;
}
//FIN:PARA VALIDAR RUT
//*************************************************************************************
//*************************************************************************************
// DEJA EN BLANCO UN OBJETO
function limpiar(obj)
{
	obj.value = "";
}
//*************************************************************************************
//*************************************************************************************
// NADA
function nada()
{}
//*************************************************************************************
//*************************************************************************************
// fUNCION CERRAR
function cerrar()
{
	window.close();
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}
//*************************************************************************************
//*************************************************************************************
// VERIFICA UN EMAIL
	function caracteres_validos(str){
		aux=str;
		while (aux!=""){
			car=aux.charAt(0);
			if (
			((car.charCodeAt(0)>=65) && (car.charCodeAt(0)<=90))
			|| ((car.charCodeAt(0)>=97) && (car.charCodeAt(0)<=122))
			|| ((car.charCodeAt(0)>=48) && (car.charCodeAt(0)<=57))
			|| (car.charCodeAt(0)==45)
			|| (car.charCodeAt(0)==46)
			|| (car.charCodeAt(0)==64)
			|| (car.charCodeAt(0)==95))
			{
				aux= aux.substr(1);
			}
			else {
				return false;
			}

		}
		return true;
	}
	function Check_Mail(regexmail, msg1, msg, obj) {


	    if (regexmail) {
	        if (!regexmail.test(obj.value)) {
	            alert(msg1 + ' ' + msg);
	            obj.focus();
	            obj.select();
	            return false;
	        } else {
	            return true;
	        }
	    }


	s=obj.value;
	if ((obj.value.length<6)
		|| (s.lastIndexOf("@")==-1)
		|| (s.indexOf("@")== 0)
		|| (s.indexOf(".")== 0)
		|| (s.indexOf("@.")> 0)
		|| (s.indexOf(".@")> 0)
		|| (s.indexOf("..")> 0)
		|| (s.indexOf("@")!= s.lastIndexOf("@"))
		|| (!caracteres_validos(s))
		|| (s.lastIndexOf(".")==-1)
		|| (s.substr(s.lastIndexOf("@")).length<4)
		|| (s.substr(s.lastIndexOf(".")).length<3)
		|| (s.substr(s.lastIndexOf(".")).length-1>7) ) {
		//|| (s.substr(s.lastIndexOf(".")).length-1>4) ) { Modificación para aceptar dominios con largo mayor a 3
		//Por: Juan Manuel López O.
		//Fecha: 07/03/2008
		alert(msg1+' '+msg);
		obj.focus();
		obj.select();
		return false;
	}
	i=obj.value.indexOf(" ")
	while (i>0){
		st1=obj.value.substr(0,i);
		st2=obj.value.substr(i+1);
		obj.value= st1+st2;
		i=obj.value.indexOf(" ")
	}
	return true;
	}

	function Check_Mail1(regexmail, msg, obj) {

	    if (regexmail) {
	        if (!regexmail.test(obj.value)) {	            
	            return false;
	        } else {
	            return true;
	        }
	    }

	s=obj.value;
	if ((obj.value.length<6)
		|| (s.lastIndexOf("@")==-1)
		|| (s.indexOf("@")== 0)
		|| (s.indexOf(".")== 0)
		|| (s.indexOf("@.")> 0)
		|| (s.indexOf(".@")> 0)
		|| (s.indexOf("..")> 0)
		|| (s.indexOf("@")!= s.lastIndexOf("@"))
		|| (!caracteres_validos(s))
		|| (s.lastIndexOf(".")==-1)
		|| (s.substr(s.lastIndexOf("@")).length<4)
		|| (s.substr(s.lastIndexOf(".")).length<3)
		|| (s.substr(s.lastIndexOf(".")).length-1>7) ) {
		//|| (s.substr(s.lastIndexOf(".")).length-1>4) ) { Modificación para aceptar dominios con largo mayor a 3
		//Por: Juan Manuel López O.
		//Fecha: 07/03/2008
		//alert('Formato no válido para '+msg);
		//obj.focus();
		//obj.select();
		return false;
	}
	i=obj.value.indexOf(" ")
	while (i>0){
		st1=obj.value.substr(0,i);
		st2=obj.value.substr(i+1);
		obj.value= st1+st2;
		i=obj.value.indexOf(" ")
	}
	return true;
	}
	function Check_Mail2(regexmail, obj) {

	    if (regexmail) {
	        if (!regexmail.test(obj)) {
	            return false;
	        } else {
	            return true;
	        }
	    }

	s=obj;
	if ((obj.length<6)
		|| (s.lastIndexOf("@")==-1)
		|| (s.indexOf("@")== 0)
		|| (s.indexOf(".")== 0)
		|| (s.indexOf("@.")> 0)
		|| (s.indexOf(".@")> 0)
		|| (s.indexOf("..")> 0)
		|| (s.indexOf("@")!= s.lastIndexOf("@"))
		|| (!caracteres_validos(s))
		|| (s.lastIndexOf(".")==-1)
		|| (s.substr(s.lastIndexOf("@")).length<4)
		|| (s.substr(s.lastIndexOf(".")).length<3)
		|| (s.substr(s.lastIndexOf(".")).length-1>7) ) {
		//|| (s.substr(s.lastIndexOf(".")).length-1>4) ) { Modificación para aceptar dominios con largo mayor a 3
		//Por: Juan Manuel López O.
		//Fecha: 07/03/2008
		//alert('Formato no válido para '+msg);
		//obj.focus();
		//obj.select();
		return false;
	}
	i=obj.indexOf(" ")
	while (i>0){
		st1=obj.substr(0,i);
		st2=obj.substr(i+1);
		obj= st1+st2;
		i=obj.indexOf(" ")
	}
	return true;
	}
//*********************************************************************************
//*************************************************************************************
//VERIFICA SI ESTA CHECKEADO LOS OBJETOS RADIO
 function obj_ckecked(Obj) {
	var numero=-1
	for (var i=0; i < Obj.length; i++) {
		if (Obj[i].checked)
			numero = i
	}
	if(numero>=0)
		return true;
	else
		return false;
}
//*********************************************************************************
//*************************************************************************************
//Funcion que valida una fecha con un determinado formato
//Obj				:Objeto que contiene la fecha a evaluar
//Observaciones		:Esta funcion llama a la función mascara para 
//					validar un cierto formato de entrada (esta mascara 
//					puede ser cambiada) por ej: 99-99-9999 
//Retorna			: Un Booleano
function VerFecha(Obj){
		if(!Mascara(Obj.value,'99/99/9999')){
			//alert('Formato de fecha es dd/mm/aaaa');
			//Obj.value='';
			//Obj.focus();
			return false;
		}
		else if (!EsFecha(Obj.value,'dma')){
			//alert('Fecha Invalida');
			//Obj.value='';
			//Obj.focus();
			return false;
		}
		return true;
}
//*********************************************************************************
//*************************************************************************************
//FUNCION QUE VERFICA SI ES FECHA SEGUN FORMATO
//InString	: String a evaluar
//Formato	:	dma (dia mes ano)
//				mda (mes dia ano)
//				amd (ano mes dia)
//Observación: es utilizada por la funcion Ver_Fecha(Obj)
//Retorna : Un Booleano
function EsFecha(InString,formato) {
		if (formato == "dma"){
			dia=InString.substring(0,2);
			mes=InString.substring(3,5);
			anyo=InString.substring(6,10);
		}
		if (formato == "mda"){
			mes=InString.substring(0,2);
			dia=InString.substring(3,5);
			anyo=InString.substring(6,10);
		}
		if (formato == "amd"){
			anyo=InString.substring(0,4);
			mes=InString.substring(5,7);
			dia=InString.substring(8,10);
		}
		if (dia == '08') dia = '8';	// parseInt("08") == 10		base octogonal
		if (dia == '09') dia = '9';	// parseInt("09") == 11		base octogonal
		if (mes == '08') mes = '8';	// parseInt("08") == 10		base octogonal
		if (mes == '09') mes = '9'; // parseInt("09") == 11		base octogonal
		dia=parseInt(dia);
		mes=parseInt(mes);
		anyo=parseInt(anyo);
		//if (anyo < 1900) return false;    // Anyo mayor a 1900 (por la Base de Datos)
		//mes = mes - 1;  // El mes se representa del 0 al 11 (solo para la validación)
		//esfecha = new Date(anyo,mes,dia);
		//if (dia == esfecha.getDate()){
			//if(mes == esfecha.getMonth()){
			//	if(anyo == esfecha.getFullYear()){
			//		return true;
			//	}
			//}
		//}
		if ((dia<=31) && (dia>=1))
		{
			if((mes<=12)&& (mes>=1))
			{
				if((anyo<=3000)&&(anyo>=1900))
				{
					return true;
				}
			}
		}
		return false;
}

//*************************************************************************************
//*************************************************************************************
//Funcion que solo permite el ingreso de datos en un determinado formato
//InString	:	String a evaluar.
//Mask		:	Formato que debe poseer el String a evaluar
//				Ej: '99/99/9999' marcara para una fecha
//				'9' - Numero
//				'A' - Alfabetico
//				'X' - AlfaNumerico
//Retorna : Un Booleano

function Mascara(InString, Mask) {
    	LenStr = InString.length;
    	LenMsk = Mask.length;
    	if ((LenStr==0) || (LenMsk==0))
    		return false;
    	if (LenStr != LenMsk)
    		return false;
    	TempString=""
    	for (Cont=0; Cont < InString.length; Cont++) {
    		StrChar = InString.charAt(Cont);
    		MskChar = Mask.charAt(Cont);
    		if (MskChar == '9') {
    			if(!esNumerico(StrChar))
    				return false;
    		}
    		else if (MskChar == 'A') {
    			if(!esAlfabetico(StrChar))
    				return false;
    		}
    		else if (MskChar == 'X') {
    			if(!esAlfaNumerico(StrChar))
    				return false;
    		}
    		else {
    			if (MskChar != StrChar) // compara otros caracteres
    				return false;		// ej: los / de la fecha
    		}
    	}
    	return true;
}
function esNumerico(Char) {
    	if(Char.length!=1) 
    		return false;
    	RefString="1234567890";
    	if (RefString.indexOf(Char, 0) == -1) 
    		return false;
    	return true;
}

function esAlfabetico(Char) {
    	if(Char.length!=1) 
    		return false;
    	Char=Char.toLowerCase();
    	RefString='abcdefghijklmnñopqrstuvwxyz áéíóúü';
    	if (RefString.indexOf (Char.toLowerCase(), 0) == -1) 
    		return false;
    	return true;
}

function esAlfaNumerico(Char) {
    	if(Char.length != 1) 
    		return false;
    	Char=Char.toLowerCase();
    	RefString='234567890abcdefghijklmnñopqrstuvwxyz áéíóúü';
    	if (RefString.indexOf(Char,0) == -1) 
    		return false;
    	return true;
}

function numerico(string)
    {
       control=true
       for(f=0;f<string.length;f++)
       {
		if((string.charAt(f)!='1')&& (string.charAt(f)!='2')&& (string.charAt(f)!='3')&& (string.charAt(f)!='4')&& (string.charAt(f)!='5')&& (string.charAt(f)!='6')&& (string.charAt(f)!='7')&& (string.charAt(f)!='8')&& (string.charAt(f)!='9')&& (string.charAt(f)!='0'))
			control=false
       }
       return control;
    }

function cuantos(string)
    {
       i=0
       for(f=0;f<string.length;f++)
       {
		i=i+1
	   }
       return i;
    }

function Check_Obligatorio(msg,obj){
	if (obj == null ) {
		alert('Error objeto ' + msg + ' no existe');
		return false;
	}
	if ((obj.value==null) || (obj.value.length == 0 )) {
		alert('Falta ingresar ' + msg);
		obj.focus();
		obj.select();
		return false;
	}
	return true;
	}
