//FUNÇÃO QUE CHAMA O AJAX
//*************random para ser usado no final da url para evitar cache do navegador****************
function FN_Random(){
  today = new Date();
  num = Math.abs(Math.sin(today.getTime()));
  return num;
}
//*************verifica se o navegador tem suporte ao AJAX****************
function FN_VerificaAjax(){
  if(typeof(XMLHttpRequest)!='undefined'){
    return new XMLHttpRequest();
  }
  var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];
  for(var i=0;i<axO.length;i++){
    try{
      return new ActiveXObject(axO[i]);
    }
    catch(e){}
  }
  return null;
}
//FIM DA FUNÇÃO QUE CHAMA O AJAX

//FUNÇÃO QUE RODA O AJAX DA BUSCA DE CEP
function FN_CEP(url,Endereco,Bairro,Cidade,Estado,Retorno){
  var ajax = FN_VerificaAjax();
  if(ajax){
    var Rnd = FN_Random();
    if(url.indexOf("?")>=0){
      // já tem parametros vindos na url
      url = url + "&" + Rnd;
    }else{
      url = url + "?" + Rnd;
    }
    ajax.onreadystatechange = FN_StatusAjax
    ajax.open("GET", url ,true);
    ajax.setRequestHeader("Cache-Control", "no-cache");
    ajax.setRequestHeader("Pragma", "no-cache");
    ajax.send(null);
    return true;
  }else{
    alert("Este navegador não tem suporte ao AJAX!");
    return false;
  }

  function FN_StatusAjax(){
    if(ajax.readyState==1){
      document.getElementById(Endereco).disabled = true;
      document.getElementById(Endereco).value = 'Carregando...';
      document.getElementById(Bairro).disabled = true;
      document.getElementById(Bairro).value = 'Carregando...';
      document.getElementById(Cidade).disabled = true;
      document.getElementById(Cidade).value = 'Carregando...';
      document.getElementById(Estado).disabled = true;
    }else if(ajax.readyState==4){
      document.getElementById(Endereco).disabled = false;
      document.getElementById(Bairro).disabled = false;
      document.getElementById(Cidade).disabled = false;
      document.getElementById(Estado).disabled = false;
      if(ajax.status == 200){
        var vRetorno = ajax.responseText;
        var vDados = vRetorno.split('###');
        var vCEPEndereco = vDados[0];
        var vCEPBairro = vDados[1];
        var vCEPCidade = vDados[2];
        var vCEPEstado = vDados[3];
        var vCEPErro = vDados[4];

        //alert(vRetorno);
        if (vCEPErro != '') {
          if(Retorno != ''){
            document.getElementById(Retorno).innerHTML = vCEPErro + '. Favor digitar as informações do endereço.';
          }
          document.getElementById(Endereco).value = '';
          document.getElementById(Bairro).value = '';
          document.getElementById(Cidade).value = '';
        }else{
          if(Retorno != ''){
            document.getElementById(Retorno).innerHTML = '<font style="color:#66CC66;">CEP encontrado. Favor confirme o endereço e preencha o restante.<br />Caso o endereço não esteja correto, verifique seu CEP correto.</font>';
          }
          document.getElementById(Endereco).value = vCEPEndereco;
          document.getElementById(Bairro).value = vCEPBairro;
          document.getElementById(Cidade).value = vCEPCidade;
          document.getElementById(Estado).value = vCEPEstado;
        }
      }else{
        alert("Carregamento falhou!");
      }
      ajax = null;
    }
  }
}
//FIM DA FUNÇÃO QUE RODA O AJAX DA BUSCA DE CEP

function FN_ComboPesquisa(campo, campo2, campo3){
  var ValorCampo = document.getElementById(campo).value;
  var vCampoValor = ValorCampo.split('|||');
  var vID = vCampoValor[0];
  var vTemComplemento = vCampoValor[1];
  var vTextoComplemento = vCampoValor[2];

  if (vTemComplemento == 1) {
    document.getElementById(campo2).style.display = 'block';
    document.getElementById(campo3).innerHTML = vTextoComplemento;
  } else {
    document.getElementById(campo2).style.display = 'none';
  }
}

//FUNÇÃO PARA CRIAR MÁSCARA DE ENTRADA EM CAMPOS TEXTO
function FN_Mascara(_RefObjeto,_Modelo){
  var valorAtual = _RefObjeto.value;
  var valorNumerico = '';
  var nIndexModelo = 0;
  var nIndexString = 0;
  var valorFinal = '';
  var adicionarValor = true;

  // limpa a string valor atual para verificar
  // se todos os caracteres são números
  for (i = 0 ; i < _Modelo.length ; i++ ){
    if(_Modelo.substr(i,1) != '#'){
      valorAtual = valorAtual.replace(_Modelo.substr(i,1),'');
    }
  }

  // verifica se todos os caracteres são números
  for (i=0;i<valorAtual.length;i++){
    if (!isNaN(parseFloat(valorAtual.substr(i,1)))){
      valorNumerico = valorNumerico + valorAtual.substr(i,1);
    }
  }

  // aplica a máscara ao campo informado usando
  // o modelo de máscara informado no script
  for (i=0;i<_Modelo.length;i++){
    if (_Modelo.substr(i,1) == '#'){
      if (valorNumerico.substr(nIndexModelo,1) != ''){
        valorFinal = valorFinal + valorNumerico.substr(nIndexModelo,1);
        nIndexModelo++;nIndexString++;
      } else {
        adicionarValor = false;
      }
    } else {
      if (adicionarValor && valorNumerico.substr(nIndexModelo,1) != ''){
        valorFinal = valorFinal + _Modelo.substr(nIndexString,1)
        nIndexString++;
      }
    }
  }
  _RefObjeto.value = valorFinal
}
// modelo input: onkeypress="FN_Mascara(this,'#####-###');" onkeydown="FN_Mascara(this,'#####-###');" onkeyup="FN_Mascara(this,'#####-###');" onchange="FN_Mascara(this,'#####-###');" onblur="FN_Mascara(this,'#####-###');" onfocus="FN_Mascara(this,'#####-###');"
//FIM DA FUNÇÃO PARA CRIAR MÁSCARA DE ENTRADA EM CAMPOS TEXTO


//FUNÇÃO PARA VALIDAR EMAIL
function isEmail (s){
   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function isEmpty(s){
   return ((s == null) || (s.length == 0))
}

var whitespace = " \t\n\r";
function isWhitespace (s){
   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++){   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}
//FIM DA FUNÇÃO PARA VALIDAR EMAIL

//FUNÇÃO PARA VALIDAR CAMPO DATA
function FN_ValidaData(campo_obj_data,onblur){
  var erro = 0;
  var Data = campo_obj_data.value;
  var ArrayData = Data.split("/");
  if(Data != ''){
    vDiaOriginal = ArrayData[0]
    vMesOriginal = ArrayData[1]
    vAnoOriginal = ArrayData[2]
    if(vDiaOriginal>31){
      erro = erro + 1;
    }
    if(vMesOriginal>12){
      erro = erro + 1;
    }
    if(vAnoOriginal<1900 || vAnoOriginal>2050){
      erro = erro + 1;
    }
    if(Data.length!=10){ //Valida o len do campo
      erro = erro + 1;
    }
    if(ArrayData.length!=3){ //Valida o tamanho do array de barras (/) DD/MM/YYYY
      erro = erro + 1;
    }
    if(erro>0){
      if(onblur==1){
        alert('Data inválida!');
        campo_obj_data.focus();
      }
      return false;
    }else{
      FN_BisextoSH(Data,campo_obj_data);
      return true;
    }
  }
}

function FN_BisextoSH(data_valor,nome_campo){
  var sData = data_valor.split("/");
  sDia = sData[0];
  sMes = sData[1];
  sAno=(sData[2]%4);
  sAnoOriginal=sData[2];

  if((sData[1] == 2) && (sData[0] > 27)){
    if(sAno==0){//ano bisexto, fev tem 29 dias
      if(sDia>29){
        alert('O mês de Fevereiro ocorre variação em ano bisexto.\nVocê escolheu uma data de ano bisexto.\nEstamos corrigindo a data.');
        nome_campo.value = '29/02/'+sData[2];
      }
    }else{//nao eh ano bisexto, fev tem 28 dias
      if(sDia>28){
        alert('O mês de Fevereiro ocorre variação em ano bisexto.\nA data escolhida não é válida.\nEstamos corrigindo a data.');
        nome_campo.value = '28/02/'+sData[2];
      }
    }
  }
}
//FIM DA FUNÇÃO PARA VALIDAR CAMPO DATA

//FUNÇÃO PARA VALIDAR CPF
function FN_ValidarCPF(vCPF){
  var cpf = vCPF;
  var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
  if(!filtro.test(cpf)){
    return false;
  }

  cpf = FN_Remove(cpf, ".");
  cpf = FN_Remove(cpf, "-");

  if(
    cpf.length != 11 ||
    cpf == "00000000000" ||
    cpf == "11111111111" ||
    cpf == "22222222222" ||
    cpf == "33333333333" ||
    cpf == "44444444444" ||
    cpf == "55555555555" ||
    cpf == "66666666666" ||
    cpf == "77777777777" ||
    cpf == "88888888888" ||
    cpf == "99999999999"
  ){
    return false;
  }

  soma = 0;
  for(i=0;i<9;i++){
    soma += parseInt(cpf.charAt(i)) * (10 - i);
    resto = 11 - (soma % 11);
  }
  if(resto == 10 || resto == 11){
    resto = 0;
  }
  if(resto != parseInt(cpf.charAt(9))){
    return false;
  }

  soma = 0;
  for(i=0;i<10;i++){
    soma += parseInt(cpf.charAt(i)) * (11 - i);
    resto = 11 - (soma % 11);
  }
  if(resto == 10 || resto == 11){
    resto = 0;
  }
  if(resto != parseInt(cpf.charAt(10))){
    return false;
  }
  
  return true;
}
//FIM DA FUNÇÃO PARA VALIDAR CPF

function FN_Remove(str, sub){
  i = str.indexOf(sub);
  r = "";
  if (i == -1) return str;
  r += str.substring(0,i) + FN_Remove(str.substring(i + sub.length), sub);
  return r;
}

//FUNÇÃO PARA VALIDAR CNPJ
function FN_ValidarCNPJ(vCNPJ){
  var cnpj = vCNPJ;
  var filtro = /^\d{2}.\d{3}.\d{3}\/\d{4}-\d{2}$/i;
  if(!filtro.test(cnpj)){
    return false;
  }

  cnpj = FN_Remove(cnpj, ".");
  cnpj = FN_Remove(cnpj, "/");
  cnpj = FN_Remove(cnpj, "-");

  if(
    cnpj.length != 14 ||
    cnpj == "00000000000000" ||
    cnpj == "11111111111111" ||
    cnpj == "22222222222222" ||
    cnpj == "33333333333333" ||
    cnpj == "44444444444444" ||
    cnpj == "55555555555555" ||
    cnpj == "66666666666666" ||
    cnpj == "77777777777777" ||
    cnpj == "88888888888888" ||
    cnpj == "99999999999999"
  ){
    return false;
  }

  soma = 0;
  for(i=0;i<12;i++){
    if(i<4){
      divisor = 5 - i;
    }else{
      divisor = 10 - (i-3);
    }
    soma += parseInt(cnpj.charAt(i)) * divisor;
    resto = 11 - (soma % 11);
  }
  if(resto == 10 || resto == 11){
    resto = 0;
  }
  if(resto != parseInt(cnpj.charAt(12))){
    return false;
  }

  soma = 0;
  for(i=0;i<13;i++){
    if(i<5){
      divisor = 6 - i;
    }else{
      divisor = 10 - (i-4);
    }
    soma += parseInt(cnpj.charAt(i)) * divisor;
    resto = 11 - (soma % 11);
  }
  if(resto == 10 || resto == 11){
    resto = 0;
  }
  if(resto != parseInt(cnpj.charAt(13))){
    return false;
  }
  return true;
}
//FIM DA FUNÇÃO PARA VALIDAR CNPJ

//FUNÇÃO QUE CALCULA O VALOR TOTAL
function FN_Quantidade(){
  var DataLimite = new Date();
  //alert(DataLimite.getFullYear()+'\n'+DataLimite.getMonth()+'\n'+DataLimite.getDate());
  if((DataLimite.getFullYear() == 2009) && ((DataLimite.getMonth() < 11) || (DataLimite.getMonth() == 11 && DataLimite.getDate() <= 31))){
    var Valor1 = 224.10;
    var Valor2 = 211.65;
    var Valor3 = 199.20;
  }else{
    var Valor1 = 249.00;
    var Valor2 = 249.00;
    var Valor3 = 249.00;
  }
  var Quantidade = document.getElementById("Quantidade").value;
  if(Quantidade > 0 && Quantidade <= 5){
    var VlFim = Valor1;
  }else if(Quantidade > 5 && Quantidade <= 10){
    var VlFim = Valor2;
  }else if(Quantidade > 10){
    var VlFim = Valor3;
  }
  document.getElementById("VlUnit").value = VlFim.toFixed(2).toString().replace(".",",");
  document.getElementById("VlTotal").value = (Math.round((Quantidade * VlFim)*100)/100).toFixed(2).toString().replace(".",",");
  FN_Condicao();
  FN_Frete();
}
//FIM DA FUNÇÃO QUE CALCULA O VALOR TOTAL

//FUNÇÃO QUE CALCULA O VALOR COM CONDIÇÃO DE PAGTO
function FN_Condicao(){
  var Estado = document.getElementById("Estado").value;

  //if(Estado == '' || Estado == 0){
    //document.getElementById("VlCond1").value = 'Selecione o seu estado primeiro!';
    //document.getElementsByName("CondPagto")[0].checked = false;
    //document.getElementsByName("CondPagto")[1].checked = false;
    //document.getElementsByName("CondPagto")[2].checked = false;
  //}else{
    document.getElementById("VlCond1").value = '';
    document.getElementById("VlCond2").value = '';
    var CondPagto = document.getElementsByName("CondPagto");
    for(i=0;i<CondPagto.length;i++){
      if(CondPagto[i].checked){
        var vCondPagto = CondPagto[i].value;
        break;
      }
    }
    if(vCondPagto != undefined){
      var vCondPagtoSplit = vCondPagto.split("|");
      var vCondPagtoParcs = vCondPagtoSplit[0];
      var vCondPagtoPorcs = vCondPagtoSplit[1];
    }
    var VlTotal = parseFloat(document.getElementById("VlTotal").value.replace(",","."));
    var VlEnt = parseFloat(document.getElementById("VlEnt").value.replace(",","."));
    var VlFinal = VlTotal + VlEnt;

    if(vCondPagtoParcs > 0){
      var VlCond = (Math.round((VlFinal+((VlTotal/100)*vCondPagtoPorcs))*100)/100);
      var VlCondPrint1 = 'R$ ' + VlTotal.toFixed(2).toString().replace(".",",");
      if(vCondPagtoPorcs > 0){
        VlCondPrint1 = VlCondPrint1 + ' + '+vCondPagtoPorcs+'%(R$ ' + ((VlTotal/100)*vCondPagtoPorcs).toFixed(2).toString().replace(".",",") + ')';
      }
      VlCondPrint1 = VlCondPrint1 + ' + Entrega(R$ ' + VlEnt.toFixed(2).toString().replace(".",",") + ') =';
      if(vCondPagtoParcs > 1){
        VlCondPrint1 = VlCondPrint1 + ' R$ ' + VlCond.toFixed(2).toString().replace(".",",") + ' / '+vCondPagtoParcs+' =';
      }
      var VlCondPrint2 = '';
      if(vCondPagtoParcs > 1){
        VlCondPrint2 = VlCondPrint2 + vCondPagtoParcs + ' x ';
      }
      VlCondPrint2 = VlCondPrint2 + 'R$ ' + (VlCond/vCondPagtoParcs).toFixed(2).toString().replace(".",",");

      document.getElementById("VlCond1").value = VlCondPrint1;
      document.getElementById("VlCond2").value = VlCondPrint2;
    }
  //}
}
//FIM DA FUNÇÃO QUE CALCULA O VALOR COM CONDIÇÃO DE PAGTO

//FUNÇÃO QUE CALCULA O FRETE
function FN_Frete(){
  var Quantidade = document.getElementById("Quantidade").value;
  //var Estado = document.getElementById("Estado").value;

  //if(Estado == '' || Estado == 0){
  //  document.getElementById("VlEnt").style.color = '#000000';
  //  var VlEnt = 'Selecione o seu estado primeiro!';
  //}else if(Estado == "SP"){
  //  document.getElementById("VlEnt").style.color = '#FF0000';
  //  var VlEnt = (((Quantidade * 3) * 1.6) + 6.4).toFixed(2).toString().replace(".",",");
  //}else{
  //  document.getElementById("VlEnt").style.color = '#FF0000';
  //  var VlEnt = (((Quantidade * 3) * 1.9) + 7.1).toFixed(2).toString().replace(".",",");
  //}

  document.getElementById("VlEnt").style.color = '#FF0000';
  if (Quantidade == 1) {
    var VlEnt = (Quantidade * 18).toFixed(2).toString().replace(".", ",");
  }else if (Quantidade > 1 && Quantidade <= 5){
    var VlEnt = (Quantidade * 15).toFixed(2).toString().replace(".", ",");
  }else if (Quantidade > 5){
    var VlEnt = (Quantidade * 13).toFixed(2).toString().replace(".", ",");
  }
  document.getElementById("VlEnt").value = VlEnt;
  FN_Condicao();
}
//FIM DA FUNÇÃO QUE CALCULA O FRETE