//**** validar el form ********//

function validar_form2(){

        theForm = document.form1;

	txtRut = theForm.rut.value + "-" + theForm.dv.value

        if(rut(txtRut,"Error : Rut invalido") == false ){
                theForm.rut.focus();
                return false;
        }

        if (email(theForm.email.value,"Error: Debe ingresar un mail valido") == false){
                theForm.email.focus();
                return false;
        }

}




//**** validar el form ********//

function validar_form(){

	theForm = document.form1;
	
	txtRut = theForm.rut.value + "-" + theForm.dv.value
	if(rut(txtRut,"Error : Rut invalido") == false ){
		theForm.rut.focus();
		return false;
	}
	if (vacio(theForm.password.value,"Error: Debe ingresar una password valida") == false){
		theForm.password.focus();
		return false;
	}

	if (alfanumero(theForm.password.value,"",1,"Error : debe ingresar datos alfanumericos") == false){
                theForm.password.focus();
                return false;
	}


}


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


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

	alert(msg);
	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(msg);
     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 + ", " + ubicacion);
              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(msg);
    return false;}

    var ubicacion;
    var alfanumerico ="abcdefghijklmnopqrstuvwxyzñ1234567890AQZXSWEDCVFRTGBNÑHYMJUIKLOPáéíóúÁÉÍÓÚ";
    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 + ", " + ubicacion);
              return false;}
	  }

}

// ******************* FUNCION VALIDA RUT ************************************

//Valida rut con un cuadro de texto

function rut(campo,msg){
var suma = 0;
var contador = 0;    
var caracteres = "1234567890-kK";
var rut = campo.substring(0,8);
var drut = campo.substring(9,10);
var dvr = '0';
var mul = 2;


if ( campo.length == 0 ){
   alert(msg);
    return false;
}

if ( campo.length == 9 ){
    rut = campo.substring(0,7);
	drut = campo.substring(8,9);
}

//  verifica que el campo tenga solo caracteres numericos - k

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

    if (contador != 10 && contador != 9){
       alert(msg);
       return false;}


   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 != drut.toLowerCase() )
    { alert(msg);
		return false; }
  else
    { return true; }
}


// ************************* FUNCION EMAIL ********************************
 
// Verifica que el email sea valido y no este vacio

function email (emailStr,msg) {

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;
}
