// aqui é a declaração da função ela vai receber como parâmetro um array contendo 
// todos os objetos do formulário
function validaForm (formulario){

// aqui já é a estrutura de repetição responsável pela varredura de todos os objetos
// contidos no formulário, é bom ressaltar 2 pontos importantes aqui, primeiro que
// a varredura passa por todos os objetos do formulário não importando qual seu
// tipo como, por exemplo, “submits”, password, textarea e etc. e o outro ponto 
// importante de ressaltar é que o “formulario.length-1” é usado porque o array 
// começa do 0 sendo o i a variável de controle do índice.
 for(i=0;i<=formulario.length-1;i++){

// Como já foi dito antes o “for” acima passa por todos os objetos do
// formulário, então para economizar processamento e também para
// evitar possíveis erros é necessário esse “if” verificando o tipo do objeto, 
// note que acessamos os objetos com a variável passada por parâmetro
// usando como um array desse jeito: formulario[i] isso é a mesma coisa 
// de chamar o objeto pelo nome, então nós temos acesso a todas as
// propriedades desse objeto uso então a propriedade type que retorma
// o tipo do objeto em uso.

   if ((formulario[i].type=="textarea") ||(formulario[i].type=="file") ||(formulario[i].type=="hidden")|| (formulario[i].type=="text")|| (formulario[i].type=="list")|| (formulario[i].type=="menu")|| (formulario[i].type=="checkbox")||  (formulario[i].type=="password")){

// Agora começa a interação com o formulário, mais a frente você vai entender
// melhor esse “if”, ele serve para ver se a propriedade “wmsg” é diferente
// de vazio porque se for é porque você disse que esse campo é obrigatório, 
// sendo que é nessa propriedade aonde é guardado a mensagem que vai 
// aparecer caso o campo esteja vazio.

if ((formulario[i].wmsg!="")&&(formulario[i].wmsg!=undefined)){

// Outra propriedade que você vai usar é a “email” nela você fala se no objeto
// além de ser obrigatório ainda tem que ter uma validação para um campo do
// tipo email essa validação é uma validação básica procurando” @" e ” .” no
// email. E o “try catch” serve para não aparecer mensagem de erro pois não
// é possível dar um” focus” no campo do tipo “hidden”
// o return false diz q ocorreu um erro e os dados não devem ser enviados ainda
 
if (formulario[i].email=="sim"){
 if((formulario[i].value=="")||(formulario[i].value.indexOf('@')==-1)   
  ||(formulario[i].value.indexOf('.')==-1)){ 
 alert(formulario[i].wmsg);
  try{
    formulario[i].focus();
      }catch(e){}                                  
  return false
 }         
}
// aqui já é caso não seja um campo do tipo email ai não precisa ter o @ e nem o .
else{
 if(formulario[i].value==""){
  alert(formulario[i].wmsg);
   try{
    formulario[i].focus();
     }catch(e){          }
return false
}}}}}}

