//script para validacion de campos requeridos  
window.onload=initForms;

//funcion que manda a llamar a la funcion validForm() para validar los formularios 
function initForms(){
     for (var i=0;i<document.forms.length;i++){
          document.forms[i].onsubmit=function(){return validForm();}
     }
}

function validForm(){
     var mensaje="";
     var allGood=true;
     var contador=0;
     //se manda a llamar a todas las Tags de los formularios y se verifican si estan bien     
     var allTags=document.getElementsByTagName("*");
     for (var i=0;i<allTags.length;i++){
          if (!validTag(allTags[i])){
               allGood=false;
          }

     } 
     return allGood;


     //funcion que verifica los campos segun su clase
     function validTag(thisTag){
          var outClass="";
          var nombre="";

          /*aqui se recogen los datos de las clases por si esta tiene mas de dos clases    
            y se crea un arreglo con el nombre allClasses que contiene todas las clases*/ 
          var allClasses=thisTag.className.split(" ");
          for (var j=0;j<allClasses.length;j++){
               outClass+=validateClass(allClasses[j])+" ";
          }
          thisTag.className=outClass;
          
          if(outClass.indexOf("invalid")>-1){
               if (contador==1){
                    thisTag.focus();
                    if (thisTag.nodeName=="INPUT"){
                         thisTag.select();
                    }  
               }
               document.getElementById("div_"+thisTag.name).style.display="block";
               document.getElementById("div_"+thisTag.name).innerHTML=mensaje;
               return false; 
          }
          
          if(!(outClass.indexOf("invalid")>-1) && (outClass.indexOf("required")>-1)){
               document.getElementById("div_"+thisTag.name).style.display="none";
          }
          return true;
          

          //esta es la funcion que decide si un campo esta bien dependiendo el nombre de su clase         
          function validateClass(thisClass){
               var classBack="";
               switch (thisClass){
               case "":
               case "invalid":
                    break;
               case "required":
                    if (thisTag.value==""){
                         classBack="invalid ";
                         mensaje="Debe llenar el campo solicitado";
                         contador++;
                    }
                    classBack+=thisClass;
                    break;
               case "email":
                    if (thisTag.value!="" && !validEmail(thisTag.value)){
                         classBack="invalid ";
                         mensaje="Direccion de correo invalida, porfavor ingresela de nuevo";
                         contador++;
                    }
                    classBack+=thisClass;
                    break;
               default:
                    classBack+=thisClass;
               }
               return classBack;
                
          }


          //funcion que contiene la expresion regular para validar un correo
          function validEmail(email) {                                    
               var validacion = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;                                                          return validacion.test(email);                                  
          } 
     }
}

