/** 
  * Biblioteca de Funções JS
  * Criado em 31/10/2008
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
  * Atualizado em XX por XX
  * Responsável: João Batista
  * 
  */

//#######################################################################################################

/** 
  * Validação de CPF e CNPJ
  * Criado em 03/11/2008
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
     Funcionamento = O script recebe como parâmetro um objeto por isso deve ser chamado da seguinte forma:
     E.: no evento onBlur de um campo texto <input name="cpf_cnpj" type="text" size="40" maxlength="18" onBlur="validar(this);">
     Ao deixar o campo o evento é disparado e chama validar() com o argumento "this" que representa o próprio objeto 
     com todas as propriedades.
     A partir daí a função validar() trata a entrada removendo tudo que não for caracter numérico e deixando apenas 
     números, portanto valores escritos só com números ou com separadores como '.' ou mesmo espaços são aceitos
     ex.: 111222333/44, 111.222.333-44, 111 222 333 44 serão tratados como 11122233344 (para CPFs)
     Após limpar o valor verificamos seu tamanho que deve ser ou 11 ou 14 Se o tamanho não for aceito a função 
     retorna false e [opcional] mostra uma mensagem de erro.
  * Atualizado em XX por XX
  * Responsável: João Batista
***/

// a função principal de validação
function validar(obj) { // recebe um objeto
var s = (obj.value).replace(/\D/g,'');
var tam=(s).length; // removendo os caracteres não numéricos
/*
if (!(tam==11 || tam==14)){ // validando o tamanho
	//alert("'"+s+"' Não é um CPF ou um CNPJ válido!" ); // tamanho inválido
	 obj.className='erroinput'; 
	 document.getElementById("icon_erroCPF").style.display='inline';
	 document.getElementById("tooltip_cpf").innerHTML='Este número de CPF ou CNPJ é Inválido!'; 
	//alert("'"+s+"' Não é um CPF válido!" ); // se quiser mostrar o erro
	 obj.select(); // se quiser selecionar o campo em questão
	return false;

}
*/

// se for CPF
if (tam==11 ){
	if (!validaCPF(s)){ // chama a função que valida o CPF
		bj.className='erroinput'; 	
		document.getElementById("icon_erroCPF").style.display='inline';
		document.getElementById("tooltip_cpf").innerHTML='Este número de CPF é Inválido!'; 
		//alert("'"+s+"' Não é um CPF válido!" ); // se quiser mostrar o erro
		obj.select(); // se quiser selecionar o campo em questão
		return false;
	}
	obj.value=cpf(s); // se validou o CPF mascaramos corretamente
	return true;
}

// se for CNPJ
if (tam==14){
if(!validaCNPJ(s)){ // chama a função que valida o CNPJ
 obj.className='erroinput'; 
 document.getElementById("icon_erroCNPJ").style.display='inline';
 document.getElementById("tooltip_cnpj").innerHTML='Este número de CNPJ é Inválido!'; 
 //alert("'"+s+"' Não é um CNPJ válido!" ); // se quiser mostrar o erro
 obj.select(); // se quiser selecionar o campo enviado
return false;
}
//obj.value=maskCNPJ(s); // se validou o CNPJ mascaramos corretamente
return true;
}
}
// fim da funcao validar()

// função que valida CPF
// O algorítimo de validação de CPF é baseado no cálculo padrão Mód.11
// para o dígito verificador (os dois últimos)
function validaCPF(s) {
var c = s.substr(0,9);
var dv = s.substr(9,2);
var d1 = 0;
for (var i=0; i<9; i++) {
d1 += c.charAt(i)*(10-i);
}
if (d1 == 0) return false;
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(0) != d1){
return false;
}
d1 *= 2;
for (var i = 0; i < 9; i++) {
d1 += c.charAt(i)*(11-i);
}
d1 = 11 - (d1 % 11);
if (d1 > 9) d1 = 0;
if (dv.charAt(1) != d1){
return false;
}
return true;
}

// Função que valida CNPJ
// O algorítimo de validação de CNPJ é baseado no cálculo padrão Mód.11
// para o dígito verificador (os dois últimos)
function validaCNPJ(CNPJ) {
var a = new Array();
var b = new Number;
var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
for (i=0; i<12; i++){
a[i] = CNPJ.charAt(i);
b += a[i] * c[i+1];
}
if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
b = 0;
for (y=0; y<13; y++) {
b += (a[y] * c[y]);
}
if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
return false;
}
return true;
}

//#######################################################################################################

/** 
  * Validação de Data e Ano Bissexto
  * Criado em 03/11/2008
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
     Valida uma data válida e se o ano é bissexto.
  * Atualizado em XX por XX
  * Responsável: João Batista
***/

//verifica se um ano é bissexto
function ano_bi(ano)
{
  if (ano % 100 == 0){
    if (ano % 400 == 0)
      return true;
  }
  else
    if ((ano % 4) == 0)
      return true;
  
  return false;
}

//Validar data
function validaData(campo)
{
  if (campo.value!="")
  {
      erro=0;
      hoje = new Date();
      anoAtual = hoje.getFullYear();
      barras = campo.value.split("/");
      if (barras.length == 3)
      {
          dia = barras[0];
          mes = barras[1];
          ano = barras[2];
          
          //Verifica Ano Bissexto
          if(mes == 2)
          {
            if(dia > 29)
            {
              campo.className='erroinput'; 
              document.getElementById("icon_erro"+campo.name).style.display='inline';
              document.getElementById("tooltip_"+campo.name).innerHTML='Fevereiro não pode ter mais de 29 dias! Verifique!'; 
              campo.focus();
              return false;
            }
            else
              if(dia == 29 && !ano_bi(ano))
              {
                campo.className='erroinput'; 
                document.getElementById("icon_erro"+campo.name).style.display='inline';
                document.getElementById("tooltip_"+campo.name).innerHTML='Este ano não é bissexto!'; 
                campo.focus();                             
                return false;
              }
          }
          
   
          if((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30)
          {
            campo.className='erroinput'; 
            document.getElementById("icon_erro"+campo.name).style.display='inline';
            document.getElementById("tooltip_"+campo.name).innerHTML='Este mês não pode ter 31 dias!'; 
            campo.focus();                         
            return false;
          }
          
          resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano >= 1900));
          if (!resultado)
          {
            campo.className='erroinput';           
            document.getElementById("icon_erro"+campo.name).style.display='inline';
            document.getElementById("tooltip_"+campo.name).innerHTML='Data Inválida1!'; 
            campo.focus();
            return false;
          }
       }
       else
       {
         campo.className='erroinput'; 
         document.getElementById("icon_erro"+campo.name).style.display='inline';
         document.getElementById("tooltip_"+campo.name).innerHTML='Data Inválida!'; 
         campo.focus();
         return false;
       }
  return true;
  }
}
//#######################################################################################################

/** 
  * Contador de caracteres para textarea
  * Criado em 02/02/2009
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
  *  Limita qtde. de caracteres num campo textarea.
  *  @param   var obj = objeto this;
              int max = qtde. máxima de caracteres;
              int ancho = tamanho da div da barra de progresso;
  * Atualizado em XX por XX
  * Responsável: Daniel Cassoli
***/

//var max=255; 
//var ancho=380; 
function conta_caracteres(obj, max, ancho) 
{ 
  var progresso = document.getElementById("progresso");  
  if (obj.value.length < max) 
  { 
    progresso.style.backgroundColor = "#C0C0C0";  
    progresso.style.backgroundImage = "url(/static/img/progress/textarea.png)";  
    progresso.style.color = "#000000"; 
    var pos = ancho-parseInt((ancho*parseInt(obj.value.length))/max); 
    progresso.style.backgroundPosition = "-"+pos+"px 0px"; 
  } 
  else
  { 
    progresso.style.backgroundColor = "#CC0000";  
    progresso.style.backgroundImage = "url()";  
    progresso.style.color = "#FFFFFF";     
  }  
  progresso.innerHTML = "("+obj.value.length+" / "+max+" caracteres máximos)";
} 

//#######################################################################################################

/** 
  * Acumula veiculos para comparação em um campo hidden
  * Criado em 25/02/2009
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
  *  Acumula veiculos para comparação em um campo hidden.
  *  @param   int id_veiculo = id do veiculo à adicionar na comparação;
              obj item = objeto do item selecionado (this);
  * Atualizado em XX por XX
  * Responsável: Daniel Cassoli
***/
function acumComparacao(id_veiculo, item)
{
  arrayObj = new Array();
  obj = document.getElementById('acumComparacaoVeic');
  
  //Se já tiver elementos no hidden...
  if(obj.value != "")
  {
    arrayObj = obj.value.split('-');
      
    for(x=0; x<arrayObj.length; x++)
    {
      //Retira do array o id do veiculo, e reescreve o array
      if(arrayObj[x] == id_veiculo)
      {
        arrayObj.splice(x,1); //Retira item do array
        itensMontados = arrayObj.join('-'); //troca ',' por '-'
        obj.value = itensMontados;
        return true;        
      }
    }
  }
   
  //Se tiver menos q 4 veiculos, adiciona 
  if(arrayObj.length < 4 )
  {
    arrayObj.unshift(id_veiculo); //Adiciona veiculo no array    
    itensMontados = arrayObj.join('-'); //troca ',' por '-'
    obj.value = itensMontados;
    return true;
  }
  else
  {
    item.checked = false; //Desmarca item
    alert('Selecione somente 4 carros para comparar');
    return false;
  }
}
//#######################################################################################################

function updateComparaSession(cod_veiculo, qtd_value_session, item)
{
	var cod_veic 			= cod_veiculo;
	var qtd_value_session 	= qtd_value_session;
	
  	$.ajax(
         {
		   type: "POST",
           url: "/common/ajax/updateComparaSession.ajax.php",       
           data: 'id_veiculo='+cod_veic,
           beforeSend: function(){},
           success: function(txt) 
           {
               if(qtd_value_session == 4)
               {
               	   item.checked = false;
                   alert('Selecione somente 4 carros para comparar');
                   return false;
               }
           },
           error: function(txt) 
           {
              alert(txt.responseText);                                                     
           }
         }
        );
}
//#######################################################################################################

/** 
  * Add veiculo à lista de desejos via ajax (jquery)
  * Criado em 13/03/2009
  * Banco Votorantim 
  * BV-Sistemas
  * @author Daniel Cassoli
  * @contributors
  * @version 1.0
  * @abstract (descrição) 
  *  Add veiculo à lista de desejos via ajax (jquery)
  *  @param  int veic_cod = id do veiculo à adicionar na comparação;
  * Atualizado em XX por XX
  * Responsável: Daniel Cassoli
***/

function addListaDesejos(veic_cod)
{  
  //if(window.confirm('Tem certeza que deseja adicionar este veículo à sua Lista de Desejos?') != false)
  //{
    $.ajax(    
           {
             type: "POST",
             url: "/common/ajax/add_veic_lista_desejos.ajax.php",       
             data: 'id_veiculo='+veic_cod,
             beforeSend: function() {                                             
             },
             success: function(txt) {             
              if(txt == 1)               
                alert("Veículo Adicionado na Lista de Desejos");
              else
                alert(txt);              
             },
             error: function(txt) {
                // em caso de erro você pode dar um alert(\'erro\');
                //$("#img_media").html(txt.responseText);
                alert(txt.responseText);                                                     
             }
           }
          );
  //}
}

function getDefaultAjaxLoader(){
	return "<img src='/static/img/ajax_loaders/ajax_loader4.gif' align='absmiddle'> <i><b>Carregando...</b></i>";
}
//#######################################################################################################


