//-----------------------------------
//  Valida os campos do formulário
//-----------------------------------   

function formSubmit() {
  if( validaEnvio(document.forms[0], campos, rotulos))
    document.forms[0].submit();
}

////////////////////////////////////////////////////////////////////////
// METODO QUE GERA UM ARRAY CONTENDO O ROTULO DOS CAMPOS OBRIGATÓRIOS //
////////////////////////////////////////////////////////////////////////
function getRotulos(campos){
    var codArray = 'var rotulos = new Array (';
    for(i=0; i<campos.length; i++){
       if ( i > 0 ) {
          codArray = codArray + ', ';
       }
       eval('codArray = codArray + \'div_'+campos[i]+'.innerHTML\';');
    }
    codArray = codArray + ');';
    eval(codArray);
    return rotulos;
}

function getAsMaiusculo(form){
   for (var i=0; i<form.elements.length; i++) {
      if (form.elements[i].type == "text") {
         if (trimALL(form.elements[i].value) != '') {
            form.elements[i].value = retiraAcentos(trimALL(form.elements[i].value.toUpperCase()));
         }
      }
   }
      
}

function validaEnvio(form, nomes ) {
   var campos = getRotulos(nomes);
   var obrigSelects;
   var nomeCampos;
   var headerCampos;
   var selecOutros;

   if (converteMaiusculaSemAcento){
      getAsMaiusculo(form);
   }
   nomeCampos = copiaArray(nomes);
   headerCampos = copiaArray(campos);

   return checkCamposObrig(form, nomeCampos, headerCampos, obrigSelects, selecOutros);
}

function checkCamposObrig(form, nomeCampos, headerCampos, obrigSelects, selecOutros)
{
   var CheckCampo = true;
   var CamposVazios = " \nVocê deve preencher/selecionar o(s) seguinte(s) campo(s): \n\n"
   var numVazios= 0, indVazio;
   var valor, componente, haSelects;
   var primeiroVazio = -1;
   if( checkCamposObrig.arguments.length < 3)
   {
      alert("Numeros de argumentos invalido.\nUso: checkCamposObrig(form, nomeCampos, headerCampos, [posicaoSelects])");
      return false;
   }
   if( checkCamposObrig.arguments.length >= 4)
      haSelects= true;
   else
      haSelects= false;
   
   for(var num=0; num < nomeCampos.length; num++)
   {
      // OBTENDO O COMPONENTE DA VEZ
      componente= form.elements[nomeCampos[num]];
	  	  
      // Verificando os componentes do tipo RADIO	  
	  if (componente.type === undefined) {
		valor = '';  
	  	for(var i=0; i<form.elements[nomeCampos[num]].length; i++) {
			if (form.elements[nomeCampos[num]][i].checked){
				valor = form.elements[nomeCampos[num]][i].value;
			}
		}		
	  } else if( haSelects && (isSelect(nomeCampos[num],obrigSelects)) ) {
         valor= componente.options[componente.selectedIndex].value;
      } else {
         valor= componente.value;
      }


	
      // VERIFICANDO SE O COMPONENTE ESTA VAZIO
      if (isNull( valor) == true)
      {
         if ( primeiroVazio == -1 )
            primeiroVazio = num;
			
         if (form.elements[nomeCampos[primeiroVazio]].type === undefined) {
			 form.elements[nomeCampos[primeiroVazio]][0].focus();
		 } else {
			 form.elements[nomeCampos[primeiroVazio]].focus();
		 }
            

         CamposVazios += "- " + headerCampos[num] + "\n";
         CheckCampo = false;
         numVazios++;
         if( numVazios == 1)
            indVazio= nomeCampos[num];
      }
   }
   if( !CheckCampo)
      alert(CamposVazios);
   return CheckCampo;
}