


function jqger_ChecaElementosForm(p_req,p_diverro,p_debug) 
{
   p_lingua = (((arguments[3])&&(arguments[3].length>0))?arguments[3]:'pt-br');	
	  
   var vl_tabindex   = 9999999;
   var vl_erro       = false;
   var vl_req        = '';
   var vl_requeridos = '';
   var vl_campofoco  = '';
   var vl_virg       = '';

   for (var i=0; i<p_req.length; i++) 
    {  
      vl_req   = vl_req + vl_virg + p_req[i];
      vl_virg  = ','; 
    }

   if (p_debug) { alert(vl_req); }

   //
   // Percorre campos que tenham o prefixo passado por 'p_req' que indica serem requeridos 
   //
   J(vl_req).each(
      function(i) {
  	      //
  	      // Ignora checagem em campos desabilitados
  	      // 
          if (!J(this).attr('disabled')) 
          {
          	 if (p_debug) { alert('aqui ' + i + ' -> ' + J(this).attr('name') + ' TABINDEX -> ' + J(this).attr('tabindex') + ' VALE -> [' + J(this).val() + ']' + ' TAM -> [' + J(this).val().length + ']'); }
          	
             if (J(this).val().length < 1)
             {
                vl_erro = true;

                //Checa qual é o numero do tabindex do campo em questao, e guarda o campo com o tabindex menor, 
                //      para assim que apresentar o erro, ja setar o foco no primeiro campo 
                if ( J(this).attr('tabindex') ) 
                   {
                     if ( J(this).attr('tabindex') < vl_tabindex )
                        {
                          vl_tabindex  = J(this).attr('tabindex');
                          vl_campofoco = J(this).attr('name');
                        }
                   }

                //Se elemento tem o atributo "alt", guarda-o para apresentar a mensagem de
                //   advertencia, apresentando o "alt" e nao o nome do campo
                var vl_alt     = ( (J(this).attr('alt') != undefined) ? J(this).attr('alt') : J(this).attr('title') );
                
                vl_requeridos += ( (vl_alt!="") ? '\n'+vl_alt : '\n'+J(this).attr('name') );
                
                if (p_debug) { alert('campo-> [' + J(this).attr('name') + '] alt[' + J(this).attr('alt') + ']'); }

             } //nao tem conteudo  

          } //nao he disabled

      } //function

   ); //each 


   //Se há campos requeridos nao informados, entao apresenta a mensagem de erro
   //e retorna TRUE - houve erro, caso contrario retorna FALSE - nao houve erro
   if ( vl_requeridos.length>0 )
   {
       if (p_diverro) 
          { 
            if (p_lingua=='us') {
            	J('#'+p_diverro).html( '<span style="color:red;">Without success, to inform required fields.</span>' );
                alert('Required Fields\n' +
                      '------------------------------------------------------------------' + 
                      vl_requeridos + 
                      '\n------------------------------------------------------------------' +
                      '\nPlease, it informs the fields correctly above');

            } else {
                J('#'+p_diverro).html( '<span style="color:red;">Efetivação sem sucesso, informar campos requeridos.</span>' );	
                alert('Campos REQUERIDOS\n' +
                      '------------------------------------------------------------------' + 
                      vl_requeridos + 
                      '\n------------------------------------------------------------------' +
                      '\nPor favor, informe corretamente os campos acima.');
            }
          }
          
       if (vl_campofoco.length>0) { J('#'+vl_campofoco).focus(); }
           
       return true;
   }
   else
   {
       return false;
   }  

}


 
/*                                                                                                */ 
/* p_campoCheckbox => 'frm_ck_grid_produto'                                                       */
/* p_sufixo        => provavelmente '_', serve para colocar um sufixo apos o numero da linha,     */
/*                    para evitar problemas de confundir "_ln1" com _ln11" por exemplo.           */
/*                    utilizando parametro ficaria "_ln1_" com _ln11_" por exemplo.               */
/*                                                                                                */
/* ---------------------------------------------------------------------------------------------- */
function jqger_MontaPostvarFromGrid(p_pfx_form,p_campoCheckbox,p_debug) 
{
  //p_debug = ((arguments[2]!=true)?arguments[2]:false);
  p_sufixo = (((arguments[3])&&(arguments[3].length>0))?arguments[3]:'');
  		
  var vlg_ck_qtd  =  0;
  var vlg_postvar = "";
  /**
  * Percorre todos os campos que estejam marcados como alterados  
  * -- */
  J('[name^='+p_campoCheckbox+']').each(function(i) {
     if (J(this).attr('checked')) {
     	
     	 /* Obtem de 'frm_ck_grid' o ID do registro em questao e concatena com '_ln'
     	 *  para em seguida, fazer uma pesquisa por sufixo e obter todos os campos
     	 *  desta linha (registro)
     	 **/
     	 vlg_lnID   = '_ln' + J(this).attr('value');
         vlg_ck_qtd =  vlg_ck_qtd+1;
         
         /* Percorre todos os campos que tenham sufixo '_lnID' -> encontrando desta forma todos
         *  os campos do registro X
         **/  
         J('[name$=' + vlg_lnID + ']').each(
             function(i2) {
             
                vl_name     = J(this).attr('name').substr(p_pfx_form.length);
                
                /* Substitui o _lnID por um _lnX, onde o X é um numero sequencial, porque na
                *  classe se percorre de forma sequencial, até nao encontrar mais '_lnX' 
                **/
                vl_name     = vl_name.replace(vlg_lnID, '_ln'+ vlg_ck_qtd) + p_sufixo; // (i2+1));
                vlg_postvar = vlg_postvar + "&ck_" + vl_name + "=" + encodeURIComponent(J(this).attr('value'));
             }
         );
     }
  });
  vlg_postvar = vlg_postvar + "&ck_qtd=" + vlg_ck_qtd; 
  
  if (p_debug) { alert(vlg_postvar); }
  
  return vlg_postvar;

}
 
 
 
 

/*                                                                                                */ 
/* marca/desmarca todos elementos encontrados que sejam checkbox e que tenham o prefixo informado */
/*                                                                                                */
/* 
 **/
function VER_jsger_marcaGridCheckbox(idForm, on, p_name)
{

    var vl_elements = document.getElementById(idForm).elements;

    for( vl_i=1;vl_i < vl_elements.length; vl_i++ )
       {
          //alert('debug [' + vl_i + '] de [' + vl_elements.length + '][' + p_name + '][' + vl_elements[vl_i].name + ']');
          if (p_name != vl_elements[vl_i].name) { continue; }
          
          vl_elements[vl_i].checked = on;
       }   
}



/*                                                                                                              */ 
/* marca/desmarca todos elementos encontrados em um "document" que sejam checkbox capturados                    */ 
/* pela TagName("input"). Pode se passar tambem o nome dos elementos a considerar.                              */
/*                                                                                                              */
/*  ex.: jsger_marcaGridCheckbox_porTagName(parent.document,true,'frm_ck_marcado[]','frm_ck_prdref_checked_');  */
/*                                                                                                              */
/*  parametros:                                                                                                 */
/*  1o - document que podera ser o do proprio chamador ou de um parent                                          */
/*  2o - true para marcar e false para desmarcar                                                                */
/*  3o - nome dos campos checkbox (array)                                                                       */
/*  4o - prefixo de campo extra do tipo input que devera ser setado como true / false (caso seja passado)       */
/*       exemplo: se passado 'frm_ck_prdref_checked_',                                                          */
/*                os campos 'frm_ck_prdref_checked_'+1, 'frm_ck_prdref_checked_'+55, etc ...                    */
/*                cfe conteudo dos campos checados serao sinalizados, neste exemplo 1 e 55                      */
/**/
function VER_jsger_marcaGridCheckbox_porTagName(p_document, on, p_name, p_inputextra)
{

  var vl_chk = p_document.getElementsByTagName("input");
  
  for(vl_i1=0; vl_i1<vl_chk.length; vl_i1++) {
  
    if (vl_chk[vl_i1].type != "checkbox") { continue; }
    
    if (p_name!='')
       {
       	 if (vl_chk[vl_i1].name!=p_name) { continue; }
       }
    
    // alert(vl_i1 + ' -> ' +vl_chk[vl_i1].name);
    
    vl_chk[vl_i1].checked = on;

    // Se tiver campo input extra, setado conforme o checkbox esteja marcado    
    if ($(p_inputextra+vl_chk[vl_i1].value)) { $(p_inputextra+vl_chk[vl_i1].value).value = on; }
    
  }
  

}



/* ======================================================================================= */
/* Função para limpar os campos de um formulario, pelo prefixo                             */
/* ======================================================================================= */
/** 
   exemplo: jsger_limpaCampos('FPost','_f_ope_pes');
*/
function VER_jsger_limpaCampos(p_form,p_prefixo) 
{
  vl_qtdCampos = (document.getElementById(p_form).elements.length-1);
  
  for (vl_x=0;vl_x<=vl_qtdCampos;vl_x++)
  {
     if (document.getElementById(p_form).elements[vl_x].name == undefined  ) { continue; }
     
     if (document.getElementById(p_form).elements[vl_x].name.substring(0,p_prefixo.length) == p_prefixo)
       {
         document.getElementById(p_form).elements[vl_x].value="";
       }
  }
}





