function trim(strTxt)
{
		pos1 = 0;
		pos2 = strTxt.length-1;
		for (i=0; i<strTxt.length; i++)
		{
			if (strTxt.charAt(i) == ' ') pos1 = pos1 + 1;
			else break;
		}
		if (pos1 != (pos2+1))
		{
			for (i=strTxt.length-1; i>0; i--)
			{
				if (strTxt.charAt(i) == ' ') pos2 = pos2 - 1
				else break;
			}
		}
		return strTxt.substring(pos1,pos2+1);
}
	
function isDv(argvalue) {

	argvalue = argvalue.toString();

	if (argvalue.length == 0)
		return false;

	for (var n = 0; n < argvalue.length; n++)	{
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9"){		
			if ((argvalue.substring(n, n+1)=="k") || (argvalue.substring(n, n+1)=="K")){
				return true
			}
			else {
				return false;
			}
		}
	}

	return true;
}

function isNum(argvalue) {

	argvalue = argvalue.toString();

	if (argvalue.length == 0)
		return false;

	for (var n = 0; n < argvalue.length; n++)
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
			return false;

	return true;
}


function isFloat(arg){
	
	miFloat = parseFloat(arg); 
	if (isNaN(miFloat)){
		return true;
	}else{
		return false;
	}
}		 




function ReplaceAll(palabra,buscar,reemplazar){

	var palabraNueva=''
	palabra=palabra.toString()
	
	if (palabra.length == 0)
		return palabra;

	for (var n = 0; n < palabra.length; n++)
	{
		if (palabra.substring(n, n+1)==buscar){
			palabraNueva=palabraNueva+reemplazar
		}
		else {
			palabraNueva=palabraNueva+palabra.substring(n, n+1)
		}
	}
		
	return palabraNueva;

}

function validaRut(obj_rut,obj_dv)
{
  texto = obj_rut.value + obj_dv.value
	 	   
  var tmpstr = "";
  
  if ( obj_rut.value==0 && obj_dv.value==0) 
	{
		alert("Ingreso incorrecto. Reintente.");
		obj_rut.value="";
		obj_dv.value = "";
		obj_rut.focus();
		return false;
	}	  

  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("Ingreso incorrecto. Reintente.")
    obj_rut.select();
    obj_dv.value = "";
    obj_rut.focus();
    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("Ingreso incorrecto. Reintente.");
		obj_rut.select();
		obj_rut.value = "";
		obj_dv.value = "";
		obj_rut.focus();
		return false;
    }
  }

	if (obj_dv.value == "k")
	{
		obj_dv.value="K"		
	}

	if ( checkDV(obj_rut,obj_dv) )
	  return true;
		  
	return false;
}

function checkDV( obj_rut,obj_dv )

{
  texto = obj_rut.value + obj_dv.value  
  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("Ingreso incorrecto. Reintente.")
    obj_rut.focus();
    obj_rut.select();
    return false;
  }

  if ( largo > 2 )
    rut = texto.substring(0, largo - 1);
  else
    rut = texto.charAt(0);
  dv = texto.charAt(largo-1);
  if (!checkCDV(dv))
  {
	alert("Ingreso incorrecto. Reintente.");
    obj_dv.focus();
    obj_dv.select();
  }

  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("Ingreso incorrecto. Reintente.");
    obj_rut.value = "";
    obj_dv.value = "";
    obj_rut.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')
  { return false; } return true;
}


function EsAlfanumerico(valor){
	
	if (valor.length==0) 
			return false;
				
	for (i=0; i < valor.length; i++ )
		if ( !EsAlfa(valor.charAt(i))) 		
			return false;
	return true;
	
}

function EsTexto(valor)
	{
	if (valor.length==0) 
			return false;
				
	for (i=0; i < valor.length; i++ )
		if ( !EsLetra(valor.charAt(i))) 		
			return false;
	return true;
	}

function EsLetra(Char) {
     if(Char.length!=1) 
      return false;
     RefString="ABCDEFGHIJKLMNOPQRSTUVWXYZÑabcdefghijklmnopqrstuvwxyzñáéíóúÁÉÍÓÚ(). ";
     if (RefString.indexOf(Char, 0) == -1) 
      return false;
     return true;
}


function EsAlfa(Char) {
     if(Char.length!=1) 
      return false;
     RefString="ABCDEFGHIJKLMNOPQRSTUVWXYZÑabcdefghijklmnopqrstuvwxyzñáéíóúÁÉÍÓÚ0123456789(). ";
     if (RefString.indexOf(Char, 0) == -1) 
      return false;
     return true;
}


function EsFormatoFecha(valor){
	
	if (valor.length==0) 
			return false;
				
	for (i=0; i < valor.length; i++ )
		if ( !EsFecha(valor.charAt(i))) 		
			return false;
	return true;
	
}

function EsFecha(Char) {
     if(Char.length!=1) 
      return false;
     RefString="/0123456789";
     if (RefString.indexOf(Char, 0) == -1) 
      return false;
     return true;
}
  
  
  
function cerosIzq(sVal, nPos){ 
	sVal = String(parseFloat(sVal));	
	var sRes = sVal;
	for (var i = sVal.length; i < nPos; i++) 
	 sRes = "0" + sRes; 
	return sRes; 
} 

function armaFecha(nDia, nMes, nAno){ 
	var sRes = cerosIzq(String(nDia), 2); 
	sRes = sRes + "/" + cerosIzq(String(nMes), 2); 
	sRes = sRes + "/" + cerosIzq(String(nAno), 4); 
	return sRes; 
} 
  
    
    function anyoBisiesto(anyo)
    {
        /**
        * si el aqo introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
        */
        if (anyo < 100)
            var fin = anyo + 1900;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el aqo entre 4 no es cero > el aqo no es bisiesto
        * es decir, obtenemos aqo modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el aqo es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el aqo es bisiesto
            */
            else
            {
                return true;
            }
        }
    }
    
    /**
    * funcion principal de validacion de la fecha
    * argumento fecha > cadena de texto de la fecha introducida por el usuario
    */
    function validarFecha(objFecha)
    {
    
		  var a, mes, dia, anyo, febrero
    
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y aqo
       */
       a=objFecha.value;
       
       if ((a.split("/").length!=3) || (!EsFormatoFecha(a))){
		alert('El formato de la fecha no es válido.');
		objFecha.focus();
        objFecha.select();
        return false;
       }
       
       dia=a.split("/")[0];
       mes=a.split("/")[1];
       anyo=a.split("/")[2];
      
       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           alert("El mes introducido no es válido. Por favor, introduzca un mes correcto");
           objFecha.focus();
           objFecha.select();
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente 
       * al aqo introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           alert("El día introducido no es valido. Por favor, introduzca un día correcto");
           objFecha.focus();
           objFecha.select();
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           alert("El día introducido no es válido. Por favor, introduzca un día correcto");
           objFecha.focus();
           objFecha.select();
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           alert("El día introducido no es válido. Por favor, introduzca un día correcto");
           objFecha.focus();
           objFecha.select();
           return false;
       }
       /**
       * si el mes aqo introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecucion
       * NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
       */
       if ((anyo<1900) || (anyo>2010))
       {
           alert("El año introducido no es válido. Por favor, introduzca un año entre 1900 y 2010");
           objFecha.focus();
           objFecha.select();
           return false;
       } 
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       * para ello debeis descomentar la ultima sentencia
       */
       else
			return true
  }    





function SoloMayusculas(Objeto)  // Se aplica en el onChange (javascript SoloMayusculas(this);)
{
	while(''+Objeto.value.charAt(0)==' ')Objeto.value=Objeto.value.substring(1,Objeto.value.length); // Saca Espacios a La Izquierda
	while(''+Objeto.value.charAt(Objeto.value.length-1)==' ')Objeto.value=Objeto.value.substring(0,Objeto.value.length-1); // Saca Espacios a La Derecha
	Objeto.value=Objeto.value.toUpperCase(); // De Minuscula a Mayuscula
}


function soloNumeros(Objeto, Evento, strAnexoCaracteres) // Se aplica en el onKeyPress (javascript: return soloNumeros(this, event);)
{
 with(Evento){
	 
	if(navigator.appName.indexOf("Microsoft") != -1) {
		codCaracter=keyCode;
	}else {
		codCaracter=Evento.charCode;
	}

	if (strAnexoCaracteres==undefined){
		strAnexoCaracteres='';
	}

	var strCaracteresAceptados = "1234567890 " + strAnexoCaracteres;
	if (strCaracteresAceptados.indexOf(String.fromCharCode(codCaracter))==-1){
		if(codCaracter==0){
				return true;
		}else{
			return false;
		}
	}else{
		return true;
	}
 }  
}

function soloFecha(Objeto, Evento) // Se aplica en el onkeypress (javascript: return soloFecha(this, event);)
{
 with(Evento){
	 
	if(navigator.appName.indexOf("Microsoft") != -1) {
		codCaracter=keyCode;
	}else {
		codCaracter=Evento.charCode;
	}	 
	 
	var strCaracteresAceptados = "1234567890/ "+String.fromCharCode(0);
	if (strCaracteresAceptados.indexOf(String.fromCharCode(codCaracter))==-1){
		return false;
	}else{
		return true;
	}
 }  
}


function autofocus(field, next, evt, conEnter) { // onkeyup="autofocus(this, '{nombre_proximo_control}', event)">&
	
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
        ((evt.which) ? evt.which : 0));
	
    if (charCode > 31 && field.value.length == field.maxLength) {
        field.form.elements[next].focus();
    }

	if(conEnter==undefined){conEnter=false;}
    if (conEnter && charCode == 13) {
        field.form.elements[next].focus();
    }
	
}


function omiteCaracteres(strCaracteresOmitidos, Objeto, Evento) // Se aplica en el onkeypress (javascript: return omiteCaracteres(this, event);)
{
 var strCaracteresO = strCaracteresOmitidos;
 with(Evento){
	 
	if(navigator.appName.indexOf("Microsoft") != -1) {
		codCaracter=keyCode;
	}else {
		codCaracter=Evento.charCode;
	}
	 
	if (strCaracteresO.indexOf(String.fromCharCode(codCaracter))==-1){
		return true;
	}else{
		return false;
	}
 }  
}

function emailCheck(emailStr) {
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Dirección de correo inválida (comprobar @ y .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	if (user.match(userPat)==null) {
		alert("El usuario no parece ser válido.");
		return false;
	}
	
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("IP de destino incorrecta.");
				return false;
			}
		}
		return true;
	}
	
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		alert("El dominio no parece ser válido.");
		return false;
	}
	
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || 
		domArr[domArr.length-1].length>3) {
	   // the address must end in a two letter or three letter word.
	   alert("La dirección debe terminar con un dominio de 3 letras, o un nombre de país de dos letras.");
	   return false;
	}

	if (len<2) {
	   var errStr="¡A esta dirección le falta un nombre de host!";
	   alert(errStr);
	   return false;
	}	

	return true;
}

function validaCampoVacio(objObjeto, strMensajeError, conFocus){
	if(trim(objObjeto.value)==""){
		alert(strMensajeError);
		if(conFocus){
			objObjeto.focus();
		}
		return false;
	}else{
		return true;
	}
}

function getIndexRadioControl(valorCampo,objRadio){
	for (var i = 0; i < objRadio.length; i++) {
		if (objRadio[i].value==valorCampo) {
			return i;
		}
	}
}

function getTextFromCombox(strIdControl){
    var x=document.getElementById(strIdControl)
    return x.options[x.selectedIndex].text;
}

function limpia(texto){
  var r, re;
  
  re = /(')+/g;
  re2 = /(")+/g;

  
  r = texto.replace(re, "&#146;");
  r = r.replace(re2,"&quot;");
  return(r);
}



// onKeyDown="return validaLargoTexto(this, 600, event);"
function validaLargoTexto(objTexto, largo_maximo, Evento){


	with(Evento){	
		if(navigator.appName.indexOf("Microsoft") != -1) {
			codCaracter=keyCode;
		}else {
			codCaracter=Evento.charCode;
		}
	}
	
	if(codCaracter==8){
		return true;
	}else{
		if(objTexto.value.length>=largo_maximo){
			return false;
		}else{
			return true;
		}	
	}


}

