    function lembrar_senha() {
        var cnpj  = document.cad.cnpj.value;
        var email = document.cad.email.value;

        if(! cnpj)                                    { alert("Por favor, preencha o campo [CNPJ]"); return false; }
        if(! valida_cnpj(cnpj) && ! valida_cpf(cnpj)) { alert("O CNPJ informado é inválido"); return false; }
        if(! email)                                   { alert("Por favor, preencha o campo [E-mail]"); return false; }

    	ajax = objeto_ajax();

        if(ajax) {

            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
                    var retorno = ajax.responseText;
                    // o retorno deverá ser uma string de 32 bytes - um hash md5
                    if(retorno) {
    			        alert('O CNPJ e/ou e-mail informado estão incorretos. Devem ser informados aqui exatamente os mesmos CNPJ e E-MAIL informados no momento da compra da licença. Essa opção funciona apenas para compras de múltiplas licenças.');
                    }else{
                        alert('A senha foi enviada para seu e-mail.');
                        document.index.cnpj.value = cnpj;
                       // document.index.idlicenca.value = retorno;
                        seleciona_tab(4, 'gerenciar_licencas_login.php', '');
    			    }
    			}
	    	}

		    var params = "cnpj=" + cnpj +
		                 "&email=" + email;

            ajax.open("POST", "lembrar_senha_enviar.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }

        return;
	}

    function salva_licenca(nseq, nlic, nlics) {
        var ocnpj = document.getElementById('cnpj_' + nseq);
        var orazao_social = document.getElementById('razao_social_' + nseq);

        cnpj = ocnpj.value;
        razao_social = orazao_social.value;

        //Verifica se passou pelo menos um dos dois parametros: cnpj ou razao social.
        //Se passou pelo menos um, obrigar a passar os dois.
        //Se não passou nenhum deles, não obrigar nada, pois está querendo limpar dados da licença lançado anteriormente.
        if(cnpj || razao_social) {
            if(! cnpj) {
                alert("Por favor, preencha o campo [CNPJ]");
                return;
            }else{
                if(! valida_cnpj(cnpj) && ! valida_cpf(cnpj)) { alert("O CNPJ informado é inválido"); return; }
            }

            if(! razao_social)                            { alert("Por favor, preencha o campo [Razão Social]"); return; }
        }

        var odata = document.getElementById('data_' + nseq);

    	ajax = objeto_ajax();

        if(ajax) {

            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 1 ) {
                    odata.innerHTML = '<p class="texto_c">Salvando...</p>';

    			} else if(ajax.readyState == 4 ) {
                    var retorno = ajax.responseText;
                    // o retorno deverá ser uma string de 32 bytes - um hash md5
                    if(retorno.length > 1) {
                        odata.innerHTML = '<p class="texto_c">Erro!</td>';
                        alert('Falha ao salvar a licença: ' + retorno);
                    }else{
                        odata.innerHTML = '<p class="texto_c">Salvo!</td>';
                        return;
    			    }
    			}
	    	}

		    var params = "cnpj=" + cnpj +
		                 "&razao_social=" + razao_social +
                         "&idlicenca=" + nlic +
                         "&idlicencas=" + nlics;

            ajax.open("POST", "salva_licencas.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; text/html; iso-8859-1");
    		ajax.send(params);
        }
        return;
	}


    function load_cnpj() {
        if(! document.cad.cnpj.value) {
            document.cad.cnpj.value = document.index.cnpj.value;
        }
        return true;
    }

    function efetua_login() {
        var cnpj = document.getElementById('cnpj').value;
        var versao_danfe = document.getElementById('versao_danfe').value;

        if(! cnpj)                                    { alert("Por favor, preencha o campo [CNPJ]"); return false; }
        if(! valida_cnpj(cnpj) && ! valida_cpf(cnpj)) { alert("O CNPJ informado é inválido"); return false; }
        if(! versao_danfe)                            { alert("Por favor, preencha o campo [Senha]"); return false; }

    	ajax = objeto_ajax();

        if(ajax) {

            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
                    var retorno = ajax.responseText;
                    // o retorno deverá ser uma string de 32 bytes - um hash md5
                    if(retorno.length == 32) {
                        document.index.cnpj.value = cnpj;
                       // document.index.idlicenca.value = retorno;
                        seleciona_tab(4, 'gerenciar_licencas.php', 'i=' + retorno);
                    }else{
    			        alert('Falha na autenticação! O CNPJ e/ou a senha estão incorretos ou não possuem licença.');
    			    }
    			}
	    	}

		    var params = "cnpj=" + cnpj +
		                 "&versao_danfe=" + versao_danfe;

            ajax.open("POST", "efetua_login.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }

        return true;
	}

    function consulta_valedesc(cnpj, idversao) {
        // Limpar os valores desses campos do vale-desconto
  		document.cad.idvaledesc.value       =  '';
  		document.cad.tipo_cupom.value       =  '';
  		document.cad.tipo_desconto.value    =  '';
  		document.cad.percentual_valor.value =  '0';
  		
        calcula_totais();

    	ajax = objeto_ajax();

    	//se tiver suporte ajax
    	if(ajax) {
    		ajax.open("POST", "consulta_valedesc.php", true);
    		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    		ajax.onreadystatechange = function() {
    			if(ajax.readyState == 1) {
		    	}

    			//após ser processado - chama função processXML que vai varrer os dados
    			if(ajax.readyState == 4 ) {
    				if(ajax.responseXML) {
                        // ler os dados do xml
                        var obj = ajax.responseXML;
    	                var dataArray = obj.getElementsByTagName("valedesc");

                    	//gerar o xml
                       	if(dataArray.length > 0) {
                        	var item = dataArray[0];

                    		//contéudo dos campos no arquivo XML
                    		document.cad.idvaledesc.value       =  item.getElementsByTagName("idvaledesc")[0].firstChild.nodeValue;
                     		document.cad.tipo_cupom.value       =  item.getElementsByTagName("tipo_cupom")[0].firstChild.nodeValue;
                    		document.cad.tipo_desconto.value    =  item.getElementsByTagName("tipo_desconto")[0].firstChild.nodeValue;
                    		document.cad.percentual_valor.value =  item.getElementsByTagName("desconto")[0].firstChild.nodeValue;

                            calcula_totais();
                    	}
    				}
    			}
    		}
    		//passa o código do estado escolhido
    		var params = "cnpj="+cnpj+"&idversao="+idversao;
    		ajax.send(params);
    	}
    }

    function carrega_cnpj2() {
	    document.cad.cnpj2.value = document.cad.cnpj.value;
        document.cad.razao_social2.value = document.cad.razao_social.value;

        if(document.cad.cnpj2.value) {
           if(licenca_duplicada(document.cad.cnpj2.value,document.cad.idversao.value)) {
           		document.cad.cnpj2.value = '';
           		document.cad.razao_social2.value = '';
           }
        }

        return true;
    }

    function calcula_totais() {
        var cnpj = document.cad.cnpj.value;
        var numero_licencas = parseInt(document.cad.numero_licencas.value);
        var preco = document.cad.preco.value;
        var subtotal = arredonda(numero_licencas * preco);
        var desconto = 0;
        var total = 0;
        var str_lic = new String(numero_licencas);
   	    var div = document.getElementById('licenciamento');

        if(numero_licencas < 1 || str_lic.substring(0,1) == 'N') { alert("Por favor, preencha o campo [Quantidade de Licenças]"); return false;}

        if(numero_licencas == 1) {
        	div.style.display = 'block';  
            document.cad.cnpj2.disabled = false;
            document.cad.razao_social2.disabled = false;
            document.cad.botao_le_cnpj.disabled = false;
        } else {
            div.style.display = 'none';                             
            document.cad.cnpj2.disabled = true;
            document.cad.razao_social2.disabled = true;
            document.cad.botao_le_cnpj.disabled = true;
        }

        // checa se tem valedesconto para esse cnpj
        idvaledesc = document.cad.idvaledesc.value;

        if(idvaledesc) {  // tem. vamos calcular o desconto
            if(document.cad.tipo_desconto.value == 'Valor') {
                desconto = document.cad.desconto.value;
            }else{
                desconto = subtotal * document.cad.percentual_valor.value / 100;
            }

        } else {

            if(numero_licencas <= 10) {
                desconto = 0;
            } else if (numero_licencas > 10 && numero_licencas <= 20) {
                desconto = subtotal * 5 / 100;
            } else if (numero_licencas > 20 && numero_licencas <= 30) {
                desconto = subtotal * 10 / 100;
            } else if (numero_licencas > 30) {
                desconto = subtotal * 15 / 100;
            }
        }

        desconto = arredonda(desconto);        
        if(numero_licencas > 1 && numero_licencas < 11) {
        	desconto = desconto + ((numero_licencas - 1) * 1.00)  // R$ 1,00 para cada licença adicional 
        }        
        total = arredonda(subtotal - desconto);

        document.cad.desconto.value = desconto;

        o_subtotal = document.getElementById('subtotal'); o_subtotal.innerHTML = '<p class="texto">R$ ' + formata_valor(subtotal) + ' (=)';
        o_desconto = document.getElementById('desconto'); o_desconto.innerHTML = '<p class="texto">R$ ' + formata_valor(desconto) + ' (-)';
        o_total    = document.getElementById('total'); o_total.innerHTML = '<p class="texto"><b>R$ ' + formata_valor(total) + '</b> (=)';
        o_aviso    = document.getElementById('aviso_multi_lic');

        if(numero_licencas == 1) {
            o_aviso.innerHTML = '&nbsp;';
        } else {
            o_aviso.innerHTML = '<p class="aviso">NOTA: Após a comprovação do pagamento você receberá um e-mail com o link e a senha para gerenciar as licenças adquiridas.</p>';
            document.cad.cnpj2.value = '';
            document.cad.razao_social2.value = '';
        }

        return true;
    }

    function arredonda(valor) {
        return Math.round(valor*100)/100;
    }

    function formata_valor(valor) {
        var inteiro = parseInt(valor);
        var decimal = arredonda((valor - inteiro)* 100) + "00";
        var sinal = '';

        // verificar se o número é negativo
        if(inteiro < 0) {
            inteiro = Math.abs(inteiro);
            sinal = '-';
        }

        inteiro = new String(inteiro);

        if(inteiro.length == 4) {
            inteiro = inteiro.substring(0,1) + "." + inteiro.substring(1,4);
        } else if (inteiro.length == 5) {
            inteiro = inteiro.substring(0,2) + "." + inteiro.substring(2,5);
        } else if (inteiro.length == 6) {
            inteiro = inteiro.substring(0,3) + "." + inteiro.substring(3,6);

        } else if (inteiro.length == 7) {
            inteiro = inteiro.substring(0,1) + "." + inteiro.substring(1,4) +"."+ inteiro.substring(4,7);
        } else if (inteiro.length == 8) {
            inteiro = inteiro.substring(0,2) + "." + inteiro.substring(2,5) +"."+ inteiro.substring(5,8);
        } else if (inteiro.length == 9) {
            inteiro = inteiro.substring(0,3) + "." + inteiro.substring(3,6) +"."+ inteiro.substring(6,9);

        } else if (inteiro.length == 10) {
            inteiro = inteiro.substring(0,1) + "." + inteiro.substring(1,4) +"."+ inteiro.substring(4,7) +"."+ inteiro.substring(7,10);
        } else if (inteiro.length == 11) {
            inteiro = inteiro.substring(0,2) + "." + inteiro.substring(2,5) +"."+ inteiro.substring(5,8) +"."+ inteiro.substring(8,11);
        } else if (inteiro.length == 12) {
            inteiro = inteiro.substring(0,3) + "." + inteiro.substring(3,6) +"."+ inteiro.substring(6,9) +"."+ inteiro.substring(9,12);
        }

        decimal = decimal.substring(0,2);

        formatado = sinal + inteiro + "," + decimal;
        return formatado;
    }
    
    function filtra(texto) {
    	texto = texto.replace('&', 'e');
    	return texto;    	
    }

    function grava_licenca() {
        var cnpj = document.cad.cnpj.value;
        var ie = document.cad.ie.value;
        var cnpj2 = document.cad.cnpj2.value;
        var razao_social = filtra(document.cad.razao_social.value);
        var razao_social2 = filtra(document.cad.razao_social2.value);
        var email = document.cad.email.value;
        var email2 = document.cad.email2.value;
        var endereco = filtra(document.cad.endereco.value);
        var numero = filtra(document.cad.numero.value);
        var complemento = filtra(document.cad.complemento.value);
        var bairro = filtra(document.cad.bairro.value);
        var cep = document.cad.cep.value;
        var cidade = filtra(document.cad.cidade.value);
        var estado = document.cad.estado.value;
        var ddd = document.cad.ddd.value;
        var telefone = document.cad.telefone.value;
        var aceito = document.cad.aceito.checked;
        var idversao = document.cad.idversao.value;
        var numero_licencas = document.cad.numero_licencas.value;
        var str_lic = new String(numero_licencas);
        var preco = document.cad.preco.value;
        var desconto = document.cad.desconto.value;
        var upgrade = document.cad.upgrade.value;
        var idvaledesc = document.cad.idvaledesc.value;
        var tipo_cupom = document.cad.tipo_cupom.value;
        var tipo_desconto = document.cad.tipo_desconto.value;
        var percentual_valor = document.cad.percentual_valor.value;
        var pessoa_contato = document.cad.pessoa_contato.value;        

        if(! cnpj)                                    { alert("Por favor, preencha o campo [CNPJ ou CPF] do comprador"); return false; }
        if(! valida_cnpj(cnpj) && ! valida_cpf(cnpj)) { alert("O CNPJ informado é inválido"); return false; }        
        if(! ie)                                      { alert("Por favor, preencha o campo [IE ou RG] do comprador"); return false; }        
//      if(licenca_duplicada(cnpj,idversao))          { alert("Já existe uma licença cadastrada para esse CNPJ/CPF"); return false; }

        if(! razao_social)                            { alert("Por favor, preencha o campo [Razão Social]"); return false; }
        if(! email)                                   { alert("Por favor, preencha o campo [E-mail]"); return false; }
        if(! valida_email(email))                     { alert("O E-MAIL informado é inválido"); return false; }
        
        if(email2) {
        	if(email2 == email) {
        		alert("O SEGUNDO E-MAIL deve ser diferente do primeiro"); 
        		return false;
        	}else if(! valida_email(email2)) { 
        		alert("O SEGUNDO E-MAIL informado é inválido"); 
        		return false; 
        	}
        }

        if(! endereco)                                { alert("Por favor, preencha o campo [Endereço]"); return false; }
        if(! numero)                                  { alert("Por favor, preencha o campo [Número]"); return false; }
        if(! bairro)                                  { alert("Por favor, preencha o campo [Bairro]"); return false; }
        if(! cep)                                     { alert("Por favor, preencha o campo [Cep]"); return false; }
        if(cep.length > 9)                            { alert("Por favor, preencha o Cep no formato 99999-999"); return false; }        
        if(! cidade)                                  { alert("Por favor, preencha o campo [Cidade]"); return false; }
        if(! estado)                                  { alert("Por favor, preencha o campo [Estado]"); return false; }
        if(! ddd)                                     { alert("Por favor, preencha o campo [DDD]"); return false; }
        if(ddd.length > 2)                            { alert("Por favor, preencha o campo DDD com apenas dois dígitos"); return false; }        
        if(! telefone)                                { alert("Por favor, preencha o campo [Telefone]"); return false; }
        if(telefone.length > 9)                       { alert("Por favor, preencha o campo Telefone com apenas oito dígitos"); return false; }
        if(! pessoa_contato)                          { alert("Por favor, preencha o campo [Pessoa(s) para Contato]"); return false; }      

        if(numero_licencas < 1 || str_lic.substring(0,1) == 'N') {
            alert("Por favor, preencha o campo [Quantidade de Licenças]");
            return false;
        } else if (numero_licencas == 1) {
            if(! cnpj2)                                   { alert("Por favor, preencha o campo [CNPJ Licenciado]"); return false; }
            if(! valida_cnpj(cnpj2) && ! valida_cpf(cnpj2)) { alert("O CNPJ Licenciado informado é inválido"); return false; }
            if(licenca_duplicada(cnpj2,idversao))          { alert("Já existe uma licença cadastrada para esse CNPJ/CPF"); return false; }
            if(! razao_social2)                            { alert("Por favor, preencha o campo [Razão Social] do CNPJ licenciado"); return false; }
        } else {
            cnpj2 = '';
            razao_social2 = '';
        }

        if(! aceito)                                  { alert("Você deve ler e aceitar o contrato de licença do UniDANFe"); return false; }

        o           = document.getElementById('linha_status');
        botao       = o.innerHTML;
        o.innerHTML = '<p class="texto_c"><img src="imagens_site/aguarde.gif" border="0">&nbsp;&nbsp;Aguarde. Gravando a licença no banco de dados...</p>';

        //Gravar a licença no banco de dados
    	ajax = objeto_ajax();
        if(ajax) {

            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
    			    var retorno = ajax.responseText;
                    // o retorno deverá ser uma string de 64 bytes - dois hashes md5
                    if(retorno.length == 64) {
                        seleciona_tab(2, 'formas_pagamento.php', 'l=' + retorno.substring(0,32)+"&v="+retorno.substring(32,64));
                    }else{
                        alert('Ocorreu um erro ao gravar a licença. Erro: ' + ajax.responseText);
                        o.innerHTML = botao;
                        consulta_valedesc(cnpj);
                    }
    			}
	    	}

		    var params = "cnpj=" + cnpj +
		                 "&cnpj2=" + cnpj2 +
		                 "&ie=" + ie +
                         "&razao_social=" + razao_social +
                         "&razao_social2=" + razao_social2 +
                         "&email=" + email +
                         "&email2=" + email2 +
                         "&endereco=" + endereco +
                         "&numero=" + numero +
                         "&complemento=" + complemento +
                         "&bairro=" + bairro +
                         "&cep=" + cep +
                         "&cidade=" + cidade +
                         "&estado=" + estado +
                         "&ddd=" + ddd +
                         "&telefone=" + telefone +
                         "&pessoa_contato=" + pessoa_contato +
                         "&idversao=" + idversao +
                         "&numero_licencas=" + numero_licencas +
                         "&desconto=" + desconto +
                         "&preco=" + preco +
                         "&idvaledesc=" + idvaledesc +
                         "&tipo_cupom=" + tipo_cupom +
                         "&tipo_desconto=" + tipo_desconto +
                         "&percentual_valor=" + percentual_valor;

            ajax.open("POST", "grava_licenca.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }
		return true;
   	}
    
    function mailing() {
    	var tipo  = document.getElementById('tipo').value;
    	var email = document.getElementById('email_news').value;
    	
    	if(! tipo) { 
    		alert("Selecione uma das opções disponíveis"); 
    		return false; 
    	}
    	if(! email) { 
    		alert("Você deve informar o e-mail que deseja cadastrar/cancelar na mailing list."); 
    		return false; 
    	}
    	
    	if(! valida_email(email)) { 
    		alert("O e-mail informado é inválido"); 
    		return false; 
    	}
    	
    	ajax = objeto_ajax();
        if(ajax) {
            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
                    if(ajax.responseText) {
                    	alert(ajax.responseText);
                    }else{
                    	if(tipo == '1') {
                    		alert('E-mail ' + email + ' inscrito com sucesso.')
                    	}else{
                    		alert('E-mail ' + email + ' retirado de nossa mailing list com sucesso.')
                    	}
                    }
    			}
	    	}

		    var params = "tipo=" + tipo + "&email=" + email;

            ajax.open("POST", "mailing.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }
    	

    	return true;
    }    

    function envia_contato() {
        var email = document.getElementById('email').value;
        var nome  = document.getElementById('nome').value;
        var texto = document.getElementById('texto').value;

        if(! nome)                                    { alert("Por favor, preencha o campo [Nome]"); return false; }
        if(! email)                                   { alert("Por favor, preencha o campo [E-mail]"); return false; }
        if(! valida_email(email))                     { alert("O E-MAIL informado é inválido"); return false; }
        if(! texto)                                   { alert("Por favor, preencha o campo [Texto]"); return false; }

        o = document.getElementById('linha_status');
        o.innerHTML = '<p class="texto_c"><img src="imagens_site/aguarde.gif" border="0">&nbsp;&nbsp;Aguarde. Registrando as informações do contato...</p>';

        //Enviar o contato
    	ajax = objeto_ajax();
        if(ajax) {
            ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
    				o.innerHTML = '<p class="texto_c">' + ajax.responseText + '</p>';
                    alert(ajax.responseText);
                    seleciona_tab(1, 'inicio.php', null);
    			}
	    	}

		    var params = "nome=" + nome +
                         "&email=" + email +
                         "&texto=" + texto;

            ajax.open("POST", "contato_envia.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }
		return true;
   	}

    function valida_email(str) {
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }

		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true;
	}

    function valida_cnpj(cnpj) {
        var i = 0;
        var l = 0;
        var strNum = "";
        var strMul = "6543298765432";
        var character = "";
        var iValido = 1;
        var iSoma = 0;
        var strNum_base = "";
        var iLenNum_base = 0;
        var iLenMul = 0;
        var iSoma = 0;
        var strNum_base = 0;
        var iLenNum_base = 0;

        l = cnpj.length;
        for (i = 0; i < l; i++) {
            caracter = cnpj.substring(i,i+1)
            if ((caracter >= '0') && (caracter <= '9')) strNum = strNum + caracter;
        };

        if(strNum.length != 14) return false;

        strNum_base = strNum.substring(0,12);
        iLenNum_base = strNum_base.length - 1;
        iLenMul = strMul.length - 1;
        for(i = 0;i < 12; i++)
            iSoma = iSoma +
                    parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) *
                    parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10);

        iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11);
        if(iSoma == 11 || iSoma == 10) iSoma = 0;

        strNum_base = strNum_base + iSoma;
        iSoma = 0;
        iLenNum_base = strNum_base.length - 1
        for(i = 0; i < 13; i++)
            iSoma = iSoma +
                    parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) *
                    parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10)

        iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11);
        if(iSoma == 11 || iSoma == 10) iSoma = 0;
        strNum_base = strNum_base + iSoma;
        if(strNum != strNum_base) return false;

        return (true);
    }


    function valida_cpf (cpf)
    {
        // extrair os digitos do cpf
    	len = cpf.length;
        numcpf = "";
        for(var i=0; i<=len-1; i++) {
            y = cpf.substring(i,i+1);
            if(y >= '0' && y <= '9') numcpf = numcpf + y;
        }

    	x = 0;
    	soma = 0;
    	dig1 = 0;
    	dig2 = 0;
    	texto = "";
    	numcpf1="";
    	len = numcpf.length; x = len -1;
    	// var numcpf = "12345678909";
    	for (var i=0; i <= len - 3; i++) {
    		y = numcpf.substring(i,i+1);
    		soma = soma + ( y * x);
    		x = x - 1;
    		texto = texto + y;
    	}
    	dig1 = 11 - (soma % 11);
    	if (dig1 == 10) dig1=0 ;
    	if (dig1 == 11) dig1=0 ;
    	numcpf1 = numcpf.substring(0,len - 2) + dig1 ;
    	x = 11; soma=0;
    	for (var i=0; i <= len - 2; i++) {
    		soma = soma + (numcpf1.substring(i,i+1) * x);
    		x = x - 1;
    	}
    	dig2= 11 - (soma % 11);
    	if (dig2 == 10) dig2=0;
    	if (dig2 == 11) dig2=0;
    	//alert ("Digito Verificador : " + dig1 + "" + dig2);
    	if ((dig1 + "" + dig2) == numcpf.substring(len,len-2)) {
    		return true;
    	}
    	return false;
    }

    function formata_cnpj(checar_licenca, ocnpj) {
        if(ocnpj) {
        	cnpj = ocnpj.value;
        }else{
            cnpj = document.cad.cnpj.value;
        }

        if(! cnpj) return true;

        var len = cnpj.length;
        var i = 0;
        var formatado = "";
        var valido = true;
        for(i=0; i<=len-1; i++) {
            y = cnpj.substring(i,i+1);
            if(y >= '0' && y <= '9') formatado = formatado + y;
        }

        if(formatado.length == 11) {
        	formatado = formatado.substring(0,3) + "." + formatado.substring(3,6) +"."+ formatado.substring(6,9) +"-"+ formatado.substring(9,11);
        	if(! valida_cpf(formatado)) {
                alert("O CPF " + formatado + " é inválido");
                return false;
            }
        } else if(formatado.length == 14) {
        	formatado = formatado.substring(0,2) + "." + formatado.substring(2,5) +"."+ formatado.substring(5,8) +"/"+ formatado.substring(8,12) +"-"+ formatado.substring(12,14);
        	if(! valida_cnpj(formatado)) {
                alert("O CNPJ " + formatado + " é inválido");
                return false;
        	}
        }else{
            alert("O CNPJ/CPF " + cnpj + " é inválido");
            return false;
        }

        if(ocnpj) {
            ocnpj.value = formatado;
        }else{
            document.cad.cnpj.value = formatado;
        }

        if(valido && checar_licenca) {
           if(licenca_duplicada(formatado,document.cad.idversao.value)) {
                return false;
           }
        }
        
  		//particularidade do sergio - ajudar nos testes - preencher a ficha de compra automaticamente
  		if(formatado == '780.763.079-53') {
  	        document.cad.cnpj2.value = '85.045.367/0001-84';
  	        document.cad.razao_social.value = 'TESTE - Sérgio Castelão Pinheiro';
  	        document.cad.razao_social2.value = 'Unimake Softwares';
  	        document.cad.email.value = 'sergio@unimake.com.br';
  	        document.cad.endereco.value = 'Rua Antonio Felipe';
  	        document.cad.numero.value = '1500';
  	        document.cad.bairro.value = 'Centro';
  	        document.cad.cep.value = '87704-030';
  	        document.cad.cidade.value = 'Paranavaí';
  	        document.cad.estado.value = 'PR';
  	        document.cad.ddd.value = '44';
  	        document.cad.telefone.value = '3423-4904';  			
  		}
        

    	return true;
    }

    function formata_cep() {
        var cep = document.cad.cep.value;
        var len = cep.length;
        var i = 0;
        var formatado = "";
        for(i=0; i<=len-1; i++) {
            y = cep.substring(i,i+1);
            if(y >= '0' && y <= '9') formatado = formatado + y;
        }

        if(formatado.length == 8) {
        	formatado = formatado.substring(0,5) + "-" + formatado.substring(5,8);
        }
        document.cad.cep.value = formatado;
    	return true;
    }

    function formata_telefone() {
        var telefone = document.cad.telefone.value;
        var len = telefone.length;
        var i = 0;
        var formatado = "";
        for(i=0; i<=len-1; i++) {
            y = telefone.substring(i,i+1);
            if(y >= '0' && y <= '9') formatado = formatado + y;
        }

        if(formatado.length == 8) {
        	formatado = formatado.substring(0,4) + "-" + formatado.substring(4,8);
        }
        document.cad.telefone.value = formatado;
    	return true;
    }


    function licenca_duplicada(cnpj, idversao) {
        ajax = objeto_ajax();

    	//se tiver suporte ajax
    	if(ajax) {
    		ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
                    if(ajax.responseText) {
    				    alert("Já existe uma licença cadastrada para o cnpj/cpf " + cnpj);
                        return true;
                    }
    			}
    		}

    		var params = "idversao=" + idversao + "&cnpj=" + cnpj;
    		ajax.open("POST", "licenca_duplicada.php", true);
    		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
    	}
    	return false;
    }

    function carrega_corpo(cscript, cdados) {
        o = document.getElementById('corpo_pagina');
        o.innerHTML = '<p class="reduzido"><img src="imagens_site/aguarde.gif" border="0">&nbsp;&nbsp;Carregando...</p>';
        ajax = objeto_ajax();

        //se tiver suporte ajax
        if(ajax) {
            ajax.onreadystatechange = function() {
			    //após ser processado - chama função processXML que vai varrer os dados
    			if(ajax.readyState == 4 ) {
                    if(ajax.responseText) {
                        o.innerHTML = ajax.responseText;
                    }
    			}
	    	}

		    var params = "script=" + cscript;
            if(cdados) params = params + "&" + cdados;

            ajax.open("POST", "carrega_corpo.php", true);
            ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send(params);
        }
    }

    function objeto_ajax() {
    	var ajax;

        //verifica se o browser tem suporte a ajax
    	try {
    		ajax = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	catch(e) {
    		try {
    			ajax = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch(ex) {
    			try {
    				ajax = new XMLHttpRequest();
    			}
    			catch(exc) {
    				alert("Esse browser não tem recursos para uso do Ajax");
    				ajax = null;
    			}
    		}
    	}
        return ajax;
    }
    
    function recupera_dados_licenca() {
    	// recupera o cnpj e a senha digitada
    	cnpj = document.cad.cnpj.value;
    	senha = document.cad.senha.value;
    	
    	// verificar se os valores são validos
    	if(! cnpj || ! senha) {
    		return;
    	}

    	//buscar os dados no servidor php
    	ajax = objeto_ajax();

    	// se tiver suporte ajax
    	if(ajax) {
    		ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4 ) {
    				if(ajax.responseXML) {
    					Processa_Dados_Cadastro(ajax.responseXML);
    				}else{
    					alert('A compra anterior não foi localizada.')
    				}
    			}
    		}

    		ajax.open("POST", "recupera_dados_licenca.php", true);
    		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		ajax.send("cnpj=" + cnpj + "&senha="+senha);
    	}
    }

    function Processa_Dados_Cadastro(obj){    	
    	var data_array = obj.getElementsByTagName("consulta");
    	var item = data_array[0];
    	if(! item) { return; }

    	//Campos obrigatórios
    	document.cad.razao_social.value = item.getElementsByTagName('razao_social')[0].firstChild.nodeValue;
    	document.cad.email.value = item.getElementsByTagName('email')[0].firstChild.nodeValue;
    	document.cad.endereco.value = item.getElementsByTagName('endereco')[0].firstChild.nodeValue;
    	document.cad.numero.value = item.getElementsByTagName('numero')[0].firstChild.nodeValue;
    	document.cad.bairro.value = item.getElementsByTagName('bairro')[0].firstChild.nodeValue;
    	document.cad.cep.value = item.getElementsByTagName('cep')[0].firstChild.nodeValue;
    	document.cad.cidade.value = item.getElementsByTagName('cidade')[0].firstChild.nodeValue;
    	document.cad.estado.value = item.getElementsByTagName('estado')[0].firstChild.nodeValue;
    	document.cad.ddd.value = item.getElementsByTagName('ddd')[0].firstChild.nodeValue;
    	document.cad.telefone.value = item.getElementsByTagName('telefone')[0].firstChild.nodeValue;
    	
    	//Campos opcionais nas versoes anteriores
    	email2 = item.getElementsByTagName('email2')[0].firstChild.nodeValue;
    	complemento = item.getElementsByTagName('complemento')[0].firstChild.nodeValue;
    	pessoa_contato = item.getElementsByTagName('pessoa_contato')[0].firstChild.nodeValue;
    	ie = item.getElementsByTagName('ie')[0].firstChild.nodeValue;   	
    	
    	document.cad.email2.value = email2;
    	document.cad.complemento.value = complemento;
    	document.cad.pessoa_contato.value = pessoa_contato;
    	document.cad.ie.value = ie;   	
    	
    	return;
    }
