function Numerico(cad){ var cadval="1234567890";
      if (cad.length==0){return true;}
      for (var i=0;i<cad.length;i++){var letra=cad.substring(i,i+1); if(cadval.indexOf(letra)<0){ return false;}}
      return true;
}

function trim(cadena){ var cadenaE="";
       for (i=0;i<cadena.length;i++){letra=cadena.substring(i,i+1);if (letra!=' '){ cadenaE=cadenaE + letra; } } 
       return(cadenaE);
}

function ExisteElemento(cadena,elemento){   var strcadena = new String("");strcadena=cadena;
	for (var i = 0; i < strcadena.length; i++){alert(strcadena[i]);if (strcadena[i] == elemento){ return i;}}
    return -1;
}

function fn_ValEmail(campo,dato, mensaje){ var contarr=0;var contpun=0;	var cadextr="áéíóú´ñ!¡?¿ç{}[]û*/+#$%&()=;:' \t";
	var cad = dato.value.toLowerCase();
	if (cad.length== 0){return true;}
	for (var i=0; i < cad.length;i++){
		var letra=cad.substring(i,i+1);
		if (cadextr.indexOf(letra) > 0 ||  letra=='"'){alert("el campo " + campo + " no debe contener el caracter " + letra);dato.focus();return false;}
		if (letra == "@"){contarr++;}
		if (letra == "."){contpun++;}
	}
	if (contarr > 1){alert("el campo " + campo + " no debe contener más de un caracter @");dato.focus();return false;}
	if (contarr == 0){alert("el campo " + campo + " debe contener por lo menos un caracter @");dato.focus();return false;}
	if (contpun < 1){alert("el campo " + campo + " debe contener por lo menos un punto .");dato.focus();return false;}
    if (!fnc_ValEmailAlter(dato,mensaje)){dato.focus();return false;}
	return true;
}

//function verifica_mail(cad,campo){var contarr=0;var contpun=0;var cadextr="áéíóú´ñ!¡?¿ç{}[]û*/+#$%&()=;:' \t";
/*	cad = cad.toLowerCase();
	if (cad.length== 0){return true;};
	for (var i=0; i < cad.length;i++){
		var letra=cad.substring(i,i+1);
		if (cadextr.indexOf(letra) > 0 ||  letra=='"'){alert("el campo " + campo + " no debe contener el caracter " + letra);return false;}
		if (letra == "@"){contarr++;}
		if (letra == "."){contpun++;}
	}
	if (contarr > 1){alert("el campo " + campo + " no debe contener más de un caracter @");return false;}
	if (contarr == 0){alert("el campo " + campo + " debe contener por lo menos un caracter @");return false;}
	if (contpun < 1){alert("el campo " + campo + " debe contener por lo menos un punto .");return false;}
	return true;
}
*/

/**** version mejorada de la anterior, con mas control de condiciones ****/
function verifica_mail(cad,campo){var contarr=0;var contpun=0;var cadextr="áéíóú´ñ,!¡?¿ç{}[]û*/+#$%&()=;:' \t";
	cad = cad.toLowerCase();
	if (cad.length== 0){return true;};
	ultimoEsLetra = false;
	pasoArroba = false;
	letraAntesDeArroba = false;
	letraDespuesDeArroba = false;
	pasoLetraDespuesDeArroba = false;
	puntoDespuesDeArroba = false;
	for (var i=0; i < cad.length;i++){
		var letra=cad.substring(i,i+1);
		if(pasoArroba){
			if (!puntoDespuesDeArroba && !pasoLetraDespuesDeArroba && !(cadextr.indexOf(letra) > 0 ||  letra=='"' ||  letra=='.')){letraDespuesDeArroba=true;pasoLetraDespuesDeArroba=true;}
			if (!(cadextr.indexOf(letra) > 0 ||  letra=='"')){ultimoEsLetra=true;}
			if (letra == "."){ultimoEsLetra=false; puntoDespuesDeArroba=true;}
		}
		if (!(cadextr.indexOf(letra) > 0 ||  letra=='"' || letra=='.' || letra=="@") && !pasoArroba){letraAntesDeArroba=true;}
		if (cadextr.indexOf(letra) > 0 ||  letra=='"'){alert("el campo " + campo + " no debe contener el caracter " + letra);return false;}
		if (letra == "@"){contarr++; pasoArroba = true;}
		if (letra == "."){contpun++;}
	}
	if (contarr > 1){alert("el campo " + campo + " no debe contener más de un caracter @");return false;}
	if (contarr == 0){alert("el campo " + campo + " debe contener por lo menos un caracter @");return false;}
	if (contpun < 1){alert("el campo " + campo + " debe contener por lo menos un punto.");return false;}
	if (!ultimoEsLetra){alert("el campo " + campo + " debe tener una letra como ultimo caracter.");return false;}
	if (!letraAntesDeArroba){alert("el campo " + campo + " debe tener un nombre de usuario.");return false;}
	if (!letraDespuesDeArroba){alert("el campo " + campo + " debe tener un dominio.");return false;}
	return true;
}

function EsNumero(cad){var cadval="1234567890";
    if (cad.length==0){return true;}
    for (var i=0;i<cad.length;i++){
      var letra=cad.substring(i,i+1);
      if(cadval.indexOf(letra)<0){return false;}
    }
    return true;
}
  
function isDigit(c){return ((c >= "0") && (c <= "9"));}

function isAlphanumeric(s){   
    for (var i = 0; i < s.length; i++){var c = s.charAt(i);if (! (isLetter(c) || isDigit(c) ) ){return false;}}
    return true;
}  
  
function darformato_RUT(chrcadena){
	if (chrcadena.length <10){ii=10-chrcadena.length;for (i= 1;i<=ii;i++){chrcadena="0"+chrcadena;}}
	return (chrcadena);
}
  
function modulo11(chrcadena){ 
   var  digitoverificador=""; 
   var digitos= new Array(12);
   var acum=0;
   var modulo=0;
   var valido=-1;
   chrcadena=darformato_RUT(chrcadena);
   if (chrcadena.substring(9,9+1) =="k" || chrcadena.substring(9,9+1) =="K"){digitoverificador="K";}
   else{ digitoverificador=chrcadena.substring(9,9+1);}
   for (acum=0;acum<10;acum++){digitos[acum]=chrcadena.substring(acum,acum+1);}
   acum=0; digi=0;
   acum=digitos[0]*4+digitos[1]*3+digitos[2]*2+digitos[3]*7+digitos[4]*6+digitos[5]*5+digitos[6]*4+digitos[7]*3+digitos[8]*2;
   modulo = 11 - (acum % 11);
   if (modulo==10){digi="K";}else{if(modulo==11){digi="0";}else{digi=modulo;}}
   if (digi==digitoverificador){valido=0;}
   return(valido);
}

function campoObligatorio(cad,campo){if (cad.length==0){alert("El campo " + campo + " es un campo obligatorio");return false;} return true;}

function verifica_pin(cad,campo){var cadval="1234567890";
    if (!(cad.length==4)){alert("Debe ingresar 4 dígitos en el campo " + campo);return false;}
    for (var i=0;i<cad.length;i++){var letra=cad.substring(i,i+1);if(cadval.indexOf(letra)<0){alert("Debe ingresar sólo números en el campo " + campo);return false;}}
    return true;
}

function verificaMail(obj,campo){var cad = obj.value;var contarr=0;var contpun=0;var cadextr="áéíóú´ñ!¡?¿ç{}[]û*/+#$%&()=;: \t";
	cad = cad.toLowerCase();
	if (cad.length== 0){ return true;}
	for (var i=0; i < cad.length;i++){
		var letra=cad.substring(i,i+1);
		if (cadextr.indexOf(letra) > 0){alert("El campo " + campo + " no debe contener el caracter " + letra);return false;}
		if (letra == "@"){ contarr++;}if (letra == "."){contpun++;}
	}
	if (contarr > 1){alert("El campo " + campo + " no debe contener más de un caracter @");return false;}
	if (contarr == 0){alert("El campo " + campo + " debe contener por lo menos un caracter @");return false;}
	if (contpun < 1) {alert("El campo " + campo + " debe contener por lo menos un punto .");return false;}
	return true;
}

function verifica_numeros(cad,campo){var cadval="1234567890";
    	if (cad.length==0){ return true;}
    	for (var i=0;i<cad.length;i++){
			var letra=cad.substring(i,i+1);
	      	if(cadval.indexOf(letra)<0) {alert("Debe ingresar sólo números en el campo " + campo);return false;}
	    }
    	return true;
}

function isEmpty(s) {return ((s == null) || (s.length == 0))}

function isWhitespace(s){var i;var whitespace = " \t\n\r";
		if (isEmpty(s)) return true;
		for (i = 0; i < s.length; i++){var c = s.charAt(i);if (whitespace.indexOf(c) == -1){ return false;}}
        return true;
}

function EsEmail(s){return true;
    if (isWhitespace(s)){ return false;}
    var i = 1; var sLength = s.length;
    while ((i < sLength) && (s.charAt(i) != "@")){ i++;}
	if ((i >= sLength) || (s.charAt(i) != "@")){return false;}else{ i += 2};
    while ((i < sLength) && (s.charAt(i) != ".")){ i++;}
    if ((i >= sLength - 1) || (s.charAt(i) != ".")){ return false;}else{ return true;}
}

function verifica_email(cad){if (!EsEmail(cad)){alert("La dirección de correo no es válida ");return(false);}return(true);}

function quitaEspacios(obj) {
		while('' + obj.value.charAt(0)==' ') obj.value = obj.value.substring(1,obj.value.length);
		while('' + obj.value.charAt(obj.value.length-1)==' ')  obj.value = obj.value.substring(0,obj.value.length-1);
}

function estaSeleccionado(obj){if (obj.options[obj.selectedIndex].value != "ini"){ return true;}return false;}

function seleccionaCombo(obj,valor){for(var i = 0; i < obj.length ; i++){if (obj.options[i].value == valor){obj.options[i].selected = true;	return; }}}

function valida_fecha (nummes,numdia,numanno,cad){
	  if (numdia == "31" &&  (nummes=="04" || nummes=="06" || nummes=="09" || nummes=="11") ){alert("Día inválido para el mes de la " + cad + ". Verífique.");return false;}
	  if (nummes=="02" && (numdia == "31" || numdia == "30") ){alert("Día inválido para el mes de la " + cad + ". Verífique.");return false;}
	  if ((numanno % 4 == 0) &&  (numanno % 100 != 0) ||  (numanno % 1000 == 0)){bisiesto="SI";}else{bisiesto="NO";}
	  if (nummes=="02" && bisiesto == "NO" && numdia == "29" ){alert("Día inválido para el mes de la " + cad + ". Verífique.");return false;}
	  return true;
}
//*****************************OTRAS FUNCIONES
var mj_valEmail="Formato invalido en el ";
var mj_valCaja="Debe llenar el campo: ";
var mj_valRadSel="Debe seleccionar una opci"+String.fromCharCode(243)+"n de: ";
var mj_valEntero="Solo puede ingresar valores enteros en: ";
var mj_campoInvalidoCmr1_a="El número de ingresado para el campo ";
var mj_campoInvalidoCmr1_b=" no es válido";

function fnc_ValCaja(dato,mensaje){
     if (dato.value==""){alert(mj_valCaja+mensaje);dato.focus();return false;} return true; }
	 
function fnc_ValSelec(dato,mensaje){
      if (dato.selectedIndex==0) {alert(mj_valRadSel+mensaje);dato.focus();return false;} return true;}

function fnc_ValEntero(dato,mensaje){
     dato.value=trim(dato.value);
     if (!(fnc_ValCaja(dato,mensaje))){return false;}
     if (!EsNumero(dato.value)){ alert("Error, solo puede ingresar números en el campo "+mensaje); dato.focus();}     
}

function fnc_ValCajaEntero(dato,mensaje){
     if (!(fnc_ValCaja(dato,mensaje))){ return false;}
     if (isNaN(dato.value)){alert(mj_valEntero+mensaje);dato.focus(); return false;}
     for (i=0;i<dato.value.length;i++){
     	switch (dato.value.charAt(i)){
			case " ":break;
			default:if (isNaN(dato.value.charAt(i))){ alert(mj_valEntero+mensaje);dato.focus(); return false;}}
     }  return true;  }

function fnc_ValCajaEmail(dato,mensaje){
       if (dato.value==""){alert(mj_valCaja+mensaje);dato.focus();return false;}
      if (!(fnc_RevisarEmail(dato.value))){alert(mj_valEmail+mensaje); dato.focus(); return false;} return true;}

function fnc_ValEmailAlter(dato,mensaje){
      if (dato.value=="") return true;
      if (!(fnc_RevisarEmail(dato.value))){alert(mj_valEmail+mensaje); dato.focus(); return false;} return true;}

function fnc_RevisarEmail(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) {return false;}
    var user=matchArray[1];
    var domain=matchArray[2]
    if (user.match(userPat)==null) { return false;}
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) { for (var i=1;i<=4;i++) { if (IPArray[i]>255) {return false;}}return true;}
    var domainArray=domain.match(domainPat);
    if (domainArray==null) { 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) { return false;}
	if (len<2) { return false;}return true;}



