/** * @author Márcio d'Ávila * @version 1.01, 2004 * * PROTÓTIPOS: * método String.lpad(int pSize, char pCharPad) * método String.trim() * * String unformatNumber(String pNum) * String formatCpfCnpj(String pCpfCnpj, boolean pUseSepar, boolean pIsCnpj) * String dvCpfCnpj(String pEfetivo, boolean pIsCnpj) * boolean isCpf(String pCpf) * boolean isCnpj(String pCnpj) * boolean isCpfCnpj(String pCpfCnpj) */ NUM_DIGITOS_CPF = 11; NUM_DIGITOS_CNPJ = 14; NUM_DGT_CNPJ_BASE = 8; /** * Adiciona método lpad() à classe String. * Preenche a String à esquerda com o caractere fornecido, * até que ela atinja o tamanho especificado. */ String.prototype.lpad = function(pSize, pCharPad) { var str = this; var dif = pSize - str.length; var ch = String(pCharPad).charAt(0); for (; dif>0; dif--) str = ch + str; return (str); } //String.lpad /** * Adiciona método trim() à classe String. * Elimina brancos no início e fim da String. */ String.prototype.trim = function() { return this.replace(/^\s*/, "").replace(/\s*$/, ""); } //String.trim /** * Elimina caracteres de formatação e zeros à esquerda da string * de número fornecida. * @param String pNum * String de número fornecida para ser desformatada. * @return String de número desformatada. */ function unformatNumber(pNum) { return String(pNum).replace(/\D/g, "").replace(/^0+/, ""); } //unformatNumber /** * Formata a string fornecida como CNPJ ou CPF, adicionando zeros * à esquerda se necessário e caracteres separadores, conforme solicitado. * @param String pCpfCnpj * String fornecida para ser formatada. * @param boolean pUseSepar * Indica se devem ser usados caracteres separadores (. - /). * @param boolean pIsCnpj * Indica se a string fornecida é um CNPJ. * Caso contrário, é CPF. Default = false (CPF). * @return String de CPF ou CNPJ devidamente formatada. */ function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj) { if (pIsCnpj==null) pIsCnpj = false; if (pUseSepar==null) pUseSepar = true; var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF; var numero = unformatNumber(pCpfCnpj); numero = numero.lpad(maxDigitos, '0'); if (!pUseSepar) return numero; if (pIsCnpj) { reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/; numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5"); } else { reCpf = /(\d{3})(\d{3})(\d{3})(\d{2})$/; numero = numero.replace(reCpf, "$1.$2.$3-$4"); } return numero; } //formatCpfCnpj /** * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e * informa se o número-efetivo fornecido é CNPJ (default = false). * @param String pEfetivo * String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF. * @param boolean pIsCnpj * Indica se a string fornecida é de um CNPJ. * Caso contrário, é CPF. Default = false (CPF). * @return String com os dois dígitos verificadores. */ function dvCpfCnpj(pEfetivo, pIsCnpj) { if (pIsCnpj==null) pIsCnpj = false; var i, j, k, soma, dv; var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF; var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF; var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj); calculado = calculado.substring(2, maxDigitos); var result = ""; for (j = 1; j <= 2; j++) { k = 2; soma = 0; for (i = calculado.length-1; i >= 0; i--) { soma += (calculado.charAt(i) - '0') * k; k = (k-1) % cicloPeso + 2; } dv = 11 - soma % 11; if (dv > 9) dv = 0; calculado += dv; result += dv } return result; } //dvCpfCnpj /** * Testa se a String pCpf fornecida é um CPF válido. * Qualquer formatação que não seja algarismos é desconsiderada. * @param String pCpf * String fornecida para ser testada. * @return true se a String fornecida for um CPF válido. */ function isCpf(pCpf) { var numero = formatCpfCnpj(pCpf, false, false); var base = numero.substring(0, numero.length - 2); var digitos = dvCpfCnpj(base, false); var algUnico, i; // Valida dígitos verificadores if (numero != base + digitos) return false; /* Não serão considerados válidos os seguintes CPF: * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44, * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99. */ algUnico = true; for (i=1; itrue se a String fornecida for um CNPJ válido. */ function isCnpj(pCnpj) { var numero = formatCpfCnpj(pCnpj, false, true); var base = numero.substring(0, NUM_DGT_CNPJ_BASE); var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12); var digitos = dvCpfCnpj(base + ordem, true); var algUnico; // Valida dígitos verificadores if (numero != base + ordem + digitos) return false; /* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS: * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555, * 66.666.666, 77.777.777, 88.888.888, 99.999.999. */ algUnico = numero.charAt(0) != '0'; for (i=1; itrue se a String fornecida for um CPF ou CNPJ válido. */ function isCpfCnpj(pCpfCnpj) { var numero = pCpfCnpj.replace(/\D/g, ""); if (numero.length > NUM_DIGITOS_CPF) return isCnpj(pCpfCnpj) else return isCpf(pCpfCnpj); } //isCpfCnpj /* Função LIMP: Remove da string caracteres de auxilío, tipo ".", "/" entre outros, que auxiliam a visualização e digitação dos dados pelos humanos. Acho deprimente, quando entro num site e recebo uma respota do tipo "valor inválido", porque coloquei um "-" no número do CEP, por exemplo. Função isNUMB: Verificar se contem apenas numeros O CNPJ é testado em blocos, por isso, para um melhor aproveitamento e redução do código principal, subdividi o teste em duas partes: VerifyCNPJ: Verifica o CNPJ, repassando os blocos para a outra função RealTestaCNPJ. Se algum dos blocos for inválido, a função retorna como valor inválido. RealTestaCNPJ: Verifica os blocos de números do CNPJ. */ function testaCPF_CNPJ() { cpf_cnpj = document.form.CPF_CNPJ.value; if (cpf_cnpj.length == 11) //cpf { if (!isCpf(cpf_cnpj)) { return false; } } else if (cpf_cnpj.length == 15) //cnpj { if (!validarCNPJ(cpf_cnpj)) { return false; } } else { return false; } return true; } function validarCNPJ(CNPJ) { CNPJ = LIMP(CNPJ); if(isNUMB(CNPJ) != 1) { return false; } else { if(CNPJ == 0) { return false; } else { g=CNPJ.length-2; if(RealTestaCNPJ(CNPJ,g) == 1) { g=CNPJ.length-1; if(RealTestaCNPJ(CNPJ,g) == 1) { return true; } else { return false; } } else { return false; } } } } /*Checa o email*/ function isMail(string) { var reg = new RegExp('^([\.a-zA-Z0-9_-]+)@([\.a-zA-Z0-9_-]){1,}[\.]{1,1}[a-zA-Z]{2,3}$'); if (!reg.test(string)) return false; return true; } /*Fim Checa o email*/ /*Tira os espaços em branco*/ function trim(sString) { while (sString.substring(0,1) == ' ') { sString = sString.substring(1, sString.length); } while (sString.substring(sString.length-1, sString.length) == ' ') { sString = sString.substring(0,sString.length-1); } return sString; } /*Fim Tira os espaços em branco*/ /* Pesquisa do neoCast */ function neoCast_Search(){ var section = document.getElementById('section').value; ajax('esColuna1','neocast/list.php?castSearchInput='+document.getElementById('castSearchInput').value+'§ion='+section,null); } /* Fim Pesquisa do neoCast */ /*Pesquisa do neoCast Berçario Virtual*/ function neoCast_SearchByKeyCodeMessages(KeyCode){ var section = document.getElementById('section').value; if (KeyCode == 13 && section > 0) { //event.keyCode = null; ajax('esColuna1','../neocast/bercario.php?pagina=h_galeria&castSearchInput='+document.getElementById('castSearchInput').value+'§ion='+section,null); } } /*Fim Pesquisa do neoCast Berçario Virtual*/ /*Combo de paginação do neoCast*/ function neoCast_ChPage(comboSelect){ var section = document.getElementById('section').value; var search = document.getElementById('castSearchInput').value; var newPage = comboSelect[comboSelect.selectedIndex].value; ajax('esColuna1','../neocast/list.php?section='+section+'&page='+newPage+'&castSearchInput='+search,null); } /*Fim Combo de paginação do neoCast*/ /*Combo de paginação do neoCast*/ function neoCastBercario_ChPage(comboSelect){ var section = document.getElementById('section').value; var search = document.getElementById('castSearchInput').value; var newPage = comboSelect[comboSelect.selectedIndex].value; ajax('esColuna1','../neocast/bercario.php?section='+section+'&page='+newPage+'&castSearchInput='+search,null); } /*Fim Combo de paginação do neoCast*/ /*Validação do formulário de contato*/ function checkFormContato(){ form = document.frFale; if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } if (document.getElementById("ESCOLHA").value == 3) { form.action = 'trabalharConosco.php'; } else { form.action = 'neoMailer/action.php'; } form.submit(); return true; } /*Fim Validação do formulário de contato*/ /*Cadastra-se newsLetter*/ function openSubscriberWindow() { var obj = document.getElementById('newsletter'); var regex = new RegExp('^([\.a-zA-Z0-9_-]+)@([\.a-zA-Z0-9_-]){1,}[\.]{1,1}[a-zA-Z]{2,3}$'); if(!regex.test(obj.value)) { alert('Endereço de email inválido!'); return false; } window.open('/neocast/subscriber.php?view=$view&subscriberMail='+obj.value, '', 'width=500, height=400, scrollbars=yes, resizable:no, scroll:no, location:no'); obj.value = ''; } /*Fim Cadastra-se newsLetter*/ /*Abre popUp*/ function popUp (x, y) { var t = window.open ('' , 'window', 'width=' + x + ',height=' + y + ',scrollbars=yes'); t.focus(); } /*Fim Abre popUp*/ /* Função de controle do Menu */ function controlaMenu(nomeDiv) { menuPrincipal = document.getElementById(nomeDiv); menuPrincipal.className = menuPrincipal.className == 'esconde' ? 'mostra' : 'esconde'; } /* Fim da Função de controle do Menu */ function irPara(comboSelect) { var newPage = comboSelect[comboSelect.selectedIndex].value; ajaxSendRequest('esColuna1','guiaMedico/showGuiaMedico.php?page=' + newPage,document.getElementById('frGuia')); } function irParaFarmacia(comboSelect) { var newPage = comboSelect[comboSelect.selectedIndex].value; ajaxSendRequest('esColuna1','/guiaMedico/showFarmacia.php?page=' + newPage,document.getElementById('frPrecos')); } function setSelectGuia(opcao) { //console.debug('estou aqui'); comboSelect = document.getElementById('frGuia'); comboSelect.selectedIndex = opcao; //console.debug(comboSelect.selectedIndex); } /*Validação do formulário de mensagens*/ function checkFormMessages(){ form = document.frmsg; if(trim(form.pessoa.value) == '') { alert('Informe o nome'); form.pessoa.focus(); return false; } /* if(!isMail(trim(form.email.value))) { alert('Informe o email'); form.email.focus(); return false; } */ if(trim(form.texto.value) == '') { alert('Informe a mensagem'); form.texto.focus(); return false; } return true; } function abre_janela(txtURL) { window.open(txtURL, 'nomes', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,width=500, height=350'); } /*Pesquisa Nome Bercario*/ function searchNameBerc(){ var texto = document.getElementById('nome').value; ajax('esColuna1','../neocast/bercario_nomes.php?busca='+texto,null); if (texto != ''){ var titulo = "Sugestões e significados de nomes - [" + texto + "]"; Modalbox.show(titulo,'../neocast/readName.php?letra='+texto,{width: 650, height:550}); } else { alert('O campo de busca está vazio.') } } /*Fim Pesquisa Nome Bercario*/ /*Fim Validação do formulário de mensagens*/ /* Funcoes de autenticação de usuarios */ function JanelaMsg(pURL,pLargura,pAltura) { var pos = pURL.indexOf("."); var janela = open(pURL,pURL.substring(0,pos),"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=640,height=480"); //janela.moveTo ( 220, 100 ); janela.moveTo ( 0, 0 ); /* self.open(pURL,pURL.substring(0,pos),"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=640,height=480"); */ } /* Fim das Funcoes de autenticação de usuarios */ /* Função que esconde o banner na capa */ function esconderBanner() { if (document.getElementById('bannerD')) document.getElementById('bannerD').className = 'esconde'; if (document.getElementById('bannerR')) document.getElementById('bannerR').className = 'esconde'; } /* Fim da Função que esconde o banner na capa */ /* Função que esconde o banner na capa */ function esconderPromocao() { if (document.getElementById('cxPromo')) document.getElementById('cxPromo').className = 'esconde'; } /* Fim da Função que esconde o banner na capa */ /* Função que grava log de vizualização do neoBanner */ function logView(imgId,area,logPage){ document.getElementById('neoBannerHiddenFrame_'+area).src = logPage + '?logView=TRUE&bannerId='+imgId+'&area='+area; } /* Fim da Função que grava log de vizualização do neoBanner */ /* Função que lista os arquivos para uma determinada categoria escolhida */ function neoDownload_ChPage(){ url = "neodownload/listaArquivos.php?category=" + document.getElementById('category').value; ajaxSendRequest('neoDownload_listaArquivos', url, null); } /* Fim da Função que lista os arquivos para uma determinada categoria escolhida */ /*Validação do formulário de contato*/ function checkFormFaleConosco(){ form = document.getElementById('frContato'); if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } form.submit(); return true; } /*Fim Validação do formulário de contato*/ /*Validação do formulário de curriculo*/ function checkFormCur(){ form = document.getElementById('frCurriculo'); if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } if(trim(form.arquivo.value) == '') { alert('Informe o arquivo'); form.curriculo.focus(); return false; } form.submit(); return true; } /*Fim Validação do formulário de curriculo*/ /*Validação do formulário de IR*/ function checkFormIR(){ form = document.getElementById('frIR'); if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if(trim(form.CARTAO.value) == '') { alert('Informe o cartao'); form.CARTAO.focus(); return false; } if(trim(form.CPF.value) == '') { alert('Informe o CPF'); form.CPF.focus(); return false; } if (!isCpf(form.CPF.value)) { alert('CPF inválido'); form.CPF.focus(); return false; } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } form.submit(); return true; } /*Fim Validação do formulário de IR*/ /*Validação do formulário 2a via cartao*/ function checkFormIICartao(){ form = document.getElementById('fr2vCartao'); if(trim(form.CARTAO.value) == '') { alert('Informe o cartao'); form.CARTAO.focus(); return false; } if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if (form.PESSOA[0].checked == true) { if (trim(form.CPF.value) == '') { alert('Informe o CPF'); form.CPF.focus(); return false; } if (!isCpf(form.CPF.value)) { alert('CPF inválido'); form.CPF.focus(); return false; } } if (form.PESSOA[1].checked) { if (trim(form.CNPJ.value) == '') { alert('Informe o CNPJ'); form.CNPJ.focus(); return false; } if (!isCnpj(form.CNPJ.value)) { alert('CNPJ inválido'); form.CNPJ.focus(); return false; } } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } form.submit(); return true; } /*Fim Validação do formulário 2a via cartao*/ /*Validação do formulário de Cadastro*/ function checkFormCadastro(){ form = document.getElementById('frACadastro'); if(trim(form.NOME.value) == '') { alert('Informe o nome'); form.NOME.focus(); return false; } if(trim(form.CARTAO.value) == '') { alert('Informe o cartao'); form.CARTAO.focus(); return false; } if(trim(form.CPF.value) == '') { alert('Informe o CPF'); form.CPF.focus(); return false; } if (!isCpf(form.CPF.value)) { alert('CPF inválido'); form.CPF.focus(); return false; } if(!isMail(trim(form.EMAIL.value))) { alert('Informe o email'); form.EMAIL.focus(); return false; } if(trim(form.ENDERECO.value)== '') { alert('Informe o endereco'); form.ENDERECO.focus(); return false; } if(trim(form.BAIRRO.value)== '') { alert('Informe o bairro'); form.BAIRRO.focus(); return false; } if(trim(form.CIDADE.value)== '') { alert('Informe o cidade'); form.CIDADE.focus(); return false; } if(trim(form.ESTADO.value)== '') { alert('Informe o estado'); form.ESTADO.focus(); return false; } if(trim(form.CEP.value)== '') { alert('Informe o cep'); form.CEP.focus(); return false; } form.submit(); return true; } /*Fim Validação do formulário de Cadastro*/ function OpenPrint(){ var indice = document.frGuia.especialidade.selectedIndex; var especialidade2 = document.frGuia.especialidade.options[indice].text; var opcao = document.getElementById('opcao').value; var filtro = document.getElementById('filtro').value; var especialidade = document.getElementById('especialidade').value; var cidade = document.getElementById('cidade').value; window.open("guiaMedico/showGuiaMedicoPrint.php?opcao="+opcao+"&especialidade="+especialidade+"&page=1&cidade="+cidade+"&filtro="+filtro+"&especialidade2="+especialidade2,"Imprimir"); } function neophotoChPg(obj,cat){ // Link para a nova página var newPage = '../neophoto/list_images.php?'+'category='+cat+'&page='+(obj[obj.selectedIndex].value); ajax('esColuna1', newPage, null); } function guiaMedicoEsp(){ var idDiv = document.getElementById("opcao"); var escolha = idDiv.options[idDiv.selectedIndex].value; if (escolha == 1) ajaxSendRequest('divEsp','guiaMedico/ajaxEspecialidade.php'); else ajaxSendRequest('divEsp','guiaMedico/ajaxServicos.php'); }