
// ************************* FUNCION EMAIL ********************************
// hasta aqui verifica rut
function formul()
{
		var resp=dv(avi.rut.value);
			if(resp != avi.dig.value){
				alert("rut incorrecto");
				document.avi.rut.value=document.avi.rut.value;
				document.avi.dig.value=document.avi.dig.value;
				document.avi.rut.focus();
				return false;
				}

					if ((document.avi.rut.value == "") || (document.avi.rut.value== null)) {
						alert("Debe ingresar el  rut");
						document.avi.rut.focus();
						return false;
						}
  						  else
							if ((document.avi.dig.value == "") || (document.avi.dig.value== null)) {
							alert("Debe ingresar el digito verificador");
							document.avi.dig.focus();
							return false;
							}
 							 	
function dv(T){
				var M=0,S=1;
				for(;T;T=Math.floor(T/10))
					S=(S+T%10*(9-M++%6))%11;
				return S?S-1:'k';
				}
			
 return true;
	
}
// hasta aqui verifica rut
<!-- 
function valida(){ 
		var F = document.avi; 
		if(vacio(F.nom.value,'Ingrese Nombre') == false){ 
			F.nom.focus(); 
			F.nom.select(); 
			return false; 
		} 
		if(email(F.email.value,'Ingrese un email valido') == false){ 
			F.email.focus(); 
			F.email.select(); 
			return false; 
		} 
		if(comentario(F.dir.value,' ',0,'Ingrese Dirección') == false){ 
			F.dir.focus(); 
			F.dir.select(); 
			return false; 
		} 
		if(vacio(F.pwd.value,'Ingrese Password') == false){ 
			F.pwd.focus(); 
			F.pwd.select(); 
			return false; 
		} 
		if(vacio(F.pwd1.value,'ReIngrese Password') == false){ 
			F.pwd1.focus(); 
			F.pwd1.select(); 
			return false; 
		} 
		if(F.pwd.value != F.pwd1.value){ 
			alert('Las password deben ser iguales'); 
			F.pwd1.focus(); 
			F.pwd1.select(); 
			return false; 
		} 
		if( isValidDate(F.fec.value,1) == false){ 
			F.fec.focus(); 
			F.fec.select(); 
			return false; 
		} 
		if(numerico(F.fono.value,'',0,'Ingrese Teléfono') == false){ 
			F.fono.focus(); 
			F.fono.select(); 
			return false; 
		} 
	} 
	function MsgErr(){ 
	} 
	MsgErr(); 
//--> 

// Verifica que el email sea valido y no este vacio

function email (emailStr,msg) {
msg = "Ingrese un email valido";
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var firstChars=validChars
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom="(" + firstChars + 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(msg)
   return false;
}

var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    alert(msg)
    return false
}
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) { 
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert(msg)
		return false
	    }
    }
    return true
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert(msg)
    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) {
   alert(msg)
   return false
}

if (domArr[domArr.length-1].length >= 2 && len < 2) {
   var errStr=msg;
   alert(errStr)
   return false
}
return true;
}

//**** funcion que evita que el campo solo contega caracter espacio


 function vacio(q,msg) {

	for ( i = 0; i<q.length; i++ ) {
		if ( q.charAt(i) != " " ) {
        		return true;
        	}
	}

	alert(msg);
	return false;

}


//********************************** FUNCION PARA UN COMENTARIO ********************************


// function que verifica que el campo tenga caracteres para un cuadro de comentario

function comentario(campo,caract_extra,nulo,msg){
  if (nulo == 1 && campo == ""){
    alert("No debe dejar este campo vacio");
    return false;}

  var ubicacion;
  var enter = "\n";
  var caracteres="abcdefghijklmnopqrstuvwxyzñ1234567890AQZXSWEDCVFRTGBNÑHYMJUIKLOP:=.,$@¿?\\//~+-*\"#'&¡!()[]áéíóúÁÉÍÓÚÀÈÌÒÙàèìòù"+String.fromCharCode(13)+enter+caract_extra;

  var contador = 0;    
      for (var i=0; i < campo.length; i++){
            ubicacion = campo.substring(i, i + 1);
            if (caracteres.indexOf(ubicacion) != -1){
              contador ++;}
            else{
              alert(msg);
              return false;}
      }
}

// ********************** VERIFICA EL LARGO DEL CAMPO ***********************************

// Campo es el nombre del campo a verificar y largo el numero maximo de caracteres

function largo(campo,largo){

 if (campo.length > largo){ 
     alert ("El Campo Sobrepasa el largo permitido de "+largo+" caracteres");
     return false;}
  }

// ******************** FUNCION ALFABETICO *****************************************

//  verifica que el campo tenga solo caracteres alfabeticos + caracteres especiales

function alfabeticos(campo,carac_extra,nulo,msg){
   if (nulo == 1 && campo == ""){
     alert("No debe dejar este campo vacio");
     return false;}
  
  var ubicacion;
  var alfabetico ="abcdefghijklmnopqrstuvwñxyzAQZXSWEDCVFRTGBNHYMJÑUIKLOPáéíóúÁÉÍÓÚ";
  var caracteres = alfabetico + carac_extra;
  var contador = 0;    

      for (var i=0; i < campo.length; i++){
            ubicacion = campo.substring(i, i + 1);
            if (caracteres.indexOf(ubicacion) != -1)
                   contador ++;
            else{
                alert (msg);
                return false;}

      }
}


// ******************* FUNCION ALFANUMERICO  **********************************

// function que verifica que el campo tenga solo caracteres alfanumericos pudiendo opcionalmente agregar caracteres
// permite que el campo quede vacio o no vacio = 0 permite quequede vacio vacio = 1 no puede quedar vacio

function alfanumero(campo,carac_extra,nulo,msg){
  if (nulo == 1 && campo == ""){
    alert("No debe dejar este campo vacio");
    return false;}

    var ubicacion;
    var alfanumerico ="abcdefghijklmnopqrstuvwxyzñ1234567890AQZXSWEDCVFRTGBNHYMJUIKLOPáéíóúÁÉÍÓÚ";
    var contador = 0;    
    var caracteres = alfanumerico + carac_extra;

  //  verifica que el campo tenga solo caracteres alfanumeico + caracteres extra
      for (var i=0; i < campo.length; i++){
            ubicacion = campo.substring(i, i + 1);
            if (caracteres.indexOf(ubicacion) != -1)
                   contador ++;
            else{
                alert (msg);
                return false;}
      }
 }


// ****************** FUNCION TELEFONO ****************

// function que verifica que el campo tenga solo caracteres validos para un numero de telefono
// permite que el campo quede vacio dependiendo de la opcion 1 o 0

function telefono(campo,carac_extra,nulo,msg){
   if (nulo == 1 && campo == ""){
    alert("No debe dejar este campo vacio");
    return false;}

    var ubicacion;
    var car_fono = "1234567890";
    var caracteres = car_fono + carac_extra;
    var contador = 0;    

     for (var i=0; i < campo.length; i++){
            ubicacion = campo.substring(i, i + 1);
            if (caracteres.indexOf(ubicacion) != -1){
           contador ++;
      }
}
    if (contador != campo.length) {
          alert(msg);
          return false;}
}

// *************************** FUNCION PATH ****************************

// function que verifica que el campo tenga solo caracteres validos para una ruta de archivo + caracteres opcionales

function path(StrObj,msg){
	var urlArray = StrObj.match(/(http:\/\/)+([a-zA-Z0-9._-]+\.[\/~a-zA-Z0-9._-]+)/gi);

	if (urlArray == null) {
		alert(msg);
		return false;	
    }
 
   return true;
}

//* *********************** FUNCION NUMERICO  ****************************

// El campo solo recive datos numerico y puede estar vacia
 function numerico(campo,carac_extra,nulo,msg){
   if (nulo == 1 && campo == ""){
     alert("No debe dejar este campo vacio");
     return false;}
  
  var ubicacion;
  var numeros = "1234567890";
  var caracteres = numeros + carac_extra;
  var contador = 0;    

  //  verifica que el campo tenga solo caracteres numericos

      for (var i=0; i < campo.length; i++){
            ubicacion = campo.substring(i, i + 1);
            if (caracteres.indexOf(ubicacion) != -1)
           contador ++;
      }

    if (contador != campo.length) {
          alert(msg);
          return false;}
}
      
// ************** FUNCION QUE TRANSFORMA La " " a %20 ************************
function change_char(campo){
   var posicion = new String();
   var new_string = new String();
   var space = " ";
   var contador = 0;    

      for (var i=0; i < campo.length; i++){
              new_string = new_string + posicion;
              posicion = campo.substring(i, i + 1);
        if (space.indexOf(posicion) == -1)
            contador ++; 
        else
             posicion = "%20"; 
      }
   new_string = new_string + posicion;
   return new_string;
}

function CuentaChar(caracter,campo){
  var contador = 0;

  for (var i=0; i < campo.length; i++){
		ubicacion = campo.substring(i, i + 1);
		if (caracter.indexOf(ubicacion) != -1)
		   contador ++;
  }
  return contador;
}

//******************************** FUNCION QUE VALIDA FECHA ******************************

function isValidDate(dateStr,nulo) {

var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4}|\d{4})$/;

   if (dateStr == "" && nulo == 0) {
         dateStr = "10/12/1990";
   }

var matchArray = dateStr.match(datePat); 

 if (matchArray == null) {
       alert("Ingrese una fecha valida.");
       return false;}

month = matchArray[3]; 
day = matchArray[1];
year = matchArray[4];


/*if (year < 0){
  alert("El año tiene que ser distinto a 0");
   return false;  
 }*/

if (month < 1 || month > 12) { 
	alert("El mes va entre 1 y 12.");
	return false;
}

if (day < 1 || day > 31) {
	alert("El día va entre 1 y 31.");
	return false;
}

if ((month==4 || month==6 || month==9 || month==11) && day==31) {
	alert("El Mes "+month+" no tiene 31 días.")
	return false
}

if (month == 2) { 
	var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	if (day>29 || (day==29 && !isleap)) {
		alert("Febrero de " + year + " no tiene " + day + " días.");
		return false;
	}
  }

if(year == false){
   alert("El año debe ser distinto a 0");
    return false;}

  return true;
}
