<?php 

// Pegar o ID da query string
$id = isset($_GET['jstrack']) ? $_GET['jstrack'] : null;

// Definir URL de envio de dados (alterar para o seu servidor de coleta)
$endpoint = getFullUrl();

// Verificar se $parametros_response e select_db existem antes de usá-los
if (isset($parametros_response['select_db'])) {
   
    $select_db = $parametros_response['select_db'];
    $select_db->ExeRead("*", 'pd_script', "WHERE script_id = :e", "e={$id}");

    if ($select_db->getResult()) {
        
    $script_type = $select_db->getResult()[0]['script_type'];
    $data = json_decode($select_db->getResult()[0]['script_parametro'], true);

    //Acessando os valores
    $insert = isset($data['insert']) ? $data['insert'] : null;

    header("Access-Control-Allow-Origin: *");

    //Cabeçalho para indicar que o conteúdo é JavaScript
    header('Content-Type: application/javascript; charset=utf-8');

    // Permitir requisições CORS
    header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization");    
        
// Definir os campos para IDs, usando um valor padrão se o campo estiver vazio
$nome_id     = !empty($data['id']['nome']) ? htmlspecialchars($data['id']['nome'], ENT_QUOTES, 'UTF-8') : 'track_nome';
$email_id    = !empty($data['id']['email']) ? htmlspecialchars($data['id']['email'], ENT_QUOTES, 'UTF-8') : 'track_email';
$crm_id      = !empty($data['id']['crm']) ? htmlspecialchars($data['id']['crm'], ENT_QUOTES, 'UTF-8') : 'track_crm';
$uf_id       = !empty($data['id']['uf']) ? htmlspecialchars($data['id']['uf'], ENT_QUOTES, 'UTF-8') : 'track_uf';

// Definir os campos para classes, usando um valor padrão se o campo estiver vazio
$nome_class     = !empty($data['class']['nome']) ?  htmlspecialchars($data['class']['nome'], ENT_QUOTES, 'UTF-8') : 'track_nome';
$email_class    = !empty($data['class']['email']) ? htmlspecialchars($data['class']['email'], ENT_QUOTES, 'UTF-8') : 'track_email';
$crm_class      = !empty($data['class']['crm']) ? htmlspecialchars($data['class']['crm'], ENT_QUOTES, 'UTF-8') : 'track_crm';
$uf_class       = !empty($data['class']['uf']) ?  htmlspecialchars($data['class']['uf'], ENT_QUOTES, 'UTF-8') : 'track_uf';

// Definir botão, usando valor padrão se o campo estiver vazio
$bt_id       = !empty($data['buttom']['id']) ? htmlspecialchars($data['buttom']['id'], ENT_QUOTES, 'UTF-8') : 'adtrack';
$bt_class    = !empty($data['buttom']['class']) ? htmlspecialchars($data['buttom']['class'], ENT_QUOTES, 'UTF-8') : 'adtrack';

// Definir botão, usando valor padrão se o campo estiver vazio
$form_id       = !empty($data['form']['id']) ? htmlspecialchars($data['form']['id'], ENT_QUOTES, 'UTF-8') : 'adtrack_form';
$form_class    = !empty($data['form']['class']) ? htmlspecialchars($data['form']['class'], ENT_QUOTES, 'UTF-8') : 'adtrack_form';

if($script_type == 1){
    
$checkin                = !empty($data['checkin']['active']) ? htmlspecialchars($data['checkin']['active'], ENT_QUOTES, 'UTF-8') : 'false';

$celular_id             = !empty($data['id']['celular']) ? htmlspecialchars($data['id']['celular'], ENT_QUOTES, 'UTF-8') : 'event_celular';
$especialidade_id       = !empty($data['id']['especialidade']) ? htmlspecialchars($data['id']['especialidade'], ENT_QUOTES, 'UTF-8') : 'event_especialidade';
$optin_id               = !empty($data['id']['optin']) ? htmlspecialchars($data['id']['optin'], ENT_QUOTES, 'UTF-8') : 'event_optin';
$evento_id              = !empty($data['evento']['id']) ? htmlspecialchars($data['evento']['id'], ENT_QUOTES, 'UTF-8') : 'event_name';

$celular_class          = !empty($data['class']['celular']) ? htmlspecialchars($data['class']['celular'], ENT_QUOTES, 'UTF-8') : 'event_celular';
$especialidade_class    = !empty($data['class']['especialidade']) ? htmlspecialchars($data['class']['especialidade'], ENT_QUOTES, 'UTF-8') : 'event_especialidade';
$optin_class            = !empty($data['class']['optin']) ? htmlspecialchars($data['class']['optin'], ENT_QUOTES, 'UTF-8') : 'event_optin';
$evento_class           = !empty($data['evento']['class']) ? htmlspecialchars($data['evento']['class'], ENT_QUOTES, 'UTF-8') : 'event_name';

}else{
    
$checkin = '';
$celular_id       = '';
$celular_class    = '';
$especialidade_id      = '';
$especialidade_class   = '';
$optin_id       =  '';
$optin_class    =  '';

}
        
    } else {
        echo "console.error('Nenhum resultado encontrado.');";
        exit;
    }
    
} else {
    echo "console.error('Parâmetro inválido ou banco de dados não definido.');";
    exit;
}

if($checkin == 'true'){
    $checkin = 1;   
}else{
  $checkin = 0;
}

?>

function fullload() {

    function initTracking() {
    
        let startTime       = new Date().getTime();

        const url = window.location.href;

        // Remove a parte após o primeiro "?" usando split
        let currentPage = url.split('?')[0];
        
        email         = localStorage.getItem('user_email') || '';
        email_temp    = localStorage.getItem('temp_id') || 'temp_' + new Date().getTime();
        crm           = localStorage.getItem('user_crm') || '';
        uf            = localStorage.getItem('user_uf') || '';
        nome          = localStorage.getItem('user_nome') || '';
        celular       = localStorage.getItem('user_celular') || '';
        especialidade = localStorage.getItem('user_especialidade') || '';
        optin         = localStorage.getItem('user_optin') || '';
        eventname     = localStorage.getItem('user_eventname') || '';
        tempo_last    = localStorage.getItem('tempo_last') || '';
        last_page     = localStorage.getItem('last_page') || '';

        localStorage.setItem('temp_id', email_temp);
        
        console.log('Cache: ', { email, eventname, email_temp, crm, uf, nome, celular, especialidade, optin, eventname, tempo_last, last_page });
          
        // Captura de tempo ao carregar nova página
        window.addEventListener('beforeunload', function () {
            captureTimeSpentUpdate();
        });

        // Função de envio de dados
        function captureTimeSpentInsert() {
           sendTrackingDataInsert(email, currentPage, email_temp, crm, uf, nome, eventname, optin, celular, especialidade, tempo_last, last_page);
        }

        // Atualizar o tempo de navegação
        function captureTimeSpentUpdate() {
            const timeSpent = Math.floor((new Date().getTime() - startTime) / 1000);
            console.log('Update Last Page: ', { timeSpent });
            localStorage.setItem('tempo_last', timeSpent);
            localStorage.setItem('last_page', currentPage);
        }

    // Função de envio de dados (insert)
    function sendTrackingDataInsert(email, url, email_temp, crm, uf, nome, eventname, optin, celular, especialidade, tempo_last, last_page) {
          
    //Remove a parte após o primeiro "?" usando split
    const cleanUrl = url.split('?')[0];

    fetch('<?php echo dominio; ?>', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams({
        inserttrack: 'true',
        email: email,
        emailtemp: email_temp,
        crm: crm,
        tempo_last: tempo_last,
        last_page: last_page, 
        uf: uf,
        nome: nome,
        evento: eventname,
        optin: optin,
        celular: celular,
        especialidade: especialidade,
        url: cleanUrl,
        checkin: 0,
        formtype: 0,
        checkinC: 0
     })
   }); 

}

  //Inserir ao carregar a página
  captureTimeSpentInsert();
        
}

document.querySelectorAll('#<?php echo $bt_id; ?>, .<?php echo $bt_class; ?>').forEach(button => {
        
button.addEventListener('click', function () {

const email_temp   = localStorage.getItem('temp_id') || '';

<?php if($script_type == 0){ // Track Pages  ?>

        celular       = localStorage.getItem('user_celular') || '';
        especialidade = localStorage.getItem('user_especialidade') || '';
        optin         = localStorage.getItem('user_optin') || '';
        evento        = localStorage.getItem('user_eventname') || '';
        tempo_last    = localStorage.getItem('tempo_last') || '';
        last_page     = localStorage.getItem('last_page') || '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const emailElement = document.getElementById('<?php echo $email_id; ?>') || document.querySelector('.<?php echo $email_class; ?>');
const email = emailElement ? emailElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const nomeElement = document.getElementById('<?php echo $nome_id; ?>') || document.querySelector('.<?php echo $nome_class; ?>');
const nome = nomeElement ? nomeElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const ufElement = document.getElementById('<?php echo $uf_id; ?>') || document.querySelector('.<?php echo $uf_class; ?>');
const uf = ufElement ? ufElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const crmElement = document.getElementById('<?php echo $crm_id; ?>') || document.querySelector('.<?php echo $crm_class; ?>');
const crm = crmElement ? crmElement.value.trim() : '';

 window.localStorage.setItem('user_email', email); 
 window.localStorage.setItem('user_crm', crm); 
 window.localStorage.setItem('user_uf', uf); 
 window.localStorage.setItem('user_nome', nome);
 
const url = window.location.href;

// Remove a parte após o primeiro "?" usando split
const cleanUrl = url.split('?')[0];

fetch('<?php echo dominio; ?>', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams({
        inserttrack: 'true',
        email: email,
        emailtemp: email_temp,
        crm: crm,
        tempo_last: tempo_last,
        last_page: last_page, 
        uf: uf,
        nome: nome,
        optin: optin,
        evento: evento,
        celular: celular,
        especialidade: especialidade,
        url: cleanUrl,
        checkin: 0,
        formtype: 0,
        checkinC: 0
    })
});

<?php } ?>
    

<?php if($script_type == 1 && $checkin == 1){ // Track Cadastro checkin  ?>
   
        celular       = localStorage.getItem('user_celular') || '';
        especialidade = localStorage.getItem('user_especialidade') || '';
        tempo_last    = localStorage.getItem('tempo_last') || '';
        last_page     = localStorage.getItem('last_page') || ''; 
        nome          = localStorage.getItem('user_nome') || ''; 

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const emailElement = document.getElementById('<?php echo $email_id; ?>') || document.querySelector('.<?php echo $email_class; ?>');
const email = emailElement ? emailElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const ufElement = document.getElementById('<?php echo $uf_id; ?>') || document.querySelector('.<?php echo $uf_class; ?>');
const uf = ufElement ? ufElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const eventnameElement = document.getElementById('<?php echo $evento_id; ?>') || document.querySelector('.<?php echo $evento_class; ?>');
const evento = eventnameElement ? eventnameElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const optinElement = document.getElementById('<?php echo $optin_id; ?>') || document.querySelector('.<?php echo $optin_class; ?>');
const optin = optinElement ? optinElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const crmElement = document.getElementById('<?php echo $crm_id; ?>') || document.querySelector('.<?php echo $crm_class; ?>');
const crm = crmElement ? crmElement.value.trim() : '';
  
const url = window.location.href;

// Remove a parte após o primeiro "?" usando split
const cleanUrl = url.split('?')[0];
  
 window.localStorage.setItem('user_email', email); 
 window.localStorage.setItem('user_crm', crm); 
 window.localStorage.setItem('user_uf', uf); 
 window.localStorage.setItem('user_optin', optin); 
 window.localStorage.setItem('user_eventname', evento); 

fetch('<?php echo dominio; ?>', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams({
        inserttrack: 'true',
        email: email,
        emailtemp: email_temp,
        crm: crm,
        tempo_last: tempo_last,
        last_page: last_page, 
        uf: uf,
        nome: nome,
        evento: evento,
        optin: optin,
        celular: celular,
        especialidade: especialidade,
        url: cleanUrl,
        checkin: 1,
        formtype: 1,
        checkinC: 0
    })
});


//alert('Enviando Checkin Email: ' + email + ' CRM: ' + crm + ' Optin: ' + ' Evento: ' + evento + ' UF: '  + uf + ' Email Temp: ' + email_temp + ' D: <?php echo dominio; ?>');  
                
<?php } ?>
   
<?php if($script_type == 1 && $checkin == 0){ // Track Cadastro checkin  ?>

        tempo_last    = localStorage.getItem('tempo_last') || '';
        last_page     = localStorage.getItem('last_page') || '';
        
//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const emailElement = document.getElementById('<?php echo $email_id; ?>') || document.querySelector('.<?php echo $email_class; ?>');
const email = emailElement ? emailElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const nomeElement = document.getElementById('<?php echo $nome_id; ?>') || document.querySelector('.<?php echo $nome_class; ?>');
const nome = nomeElement ? nomeElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const ufElement = document.getElementById('<?php echo $uf_id; ?>') || document.querySelector('.<?php echo $uf_class; ?>');
const uf = ufElement ? ufElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const eventnameElement = document.getElementById('<?php echo $evento_id; ?>') || document.querySelector('.<?php echo $evento_class; ?>');
const evento = eventnameElement ? eventnameElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const optinElement = document.getElementById('<?php echo $optin_id; ?>') || document.querySelector('.<?php echo $optin_class; ?>');
const optin = optinElement ? optinElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const crmElement = document.getElementById('<?php echo $crm_id; ?>') || document.querySelector('.<?php echo $crm_class; ?>');
const crm = crmElement ? crmElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const celularElement = document.getElementById('<?php echo $crm_id; ?>') || document.querySelector('.<?php echo $crm_class; ?>');
const celular = celularElement ? celularElement.value.trim() : '';

//Verifica se o elemento existe e captura o valor, caso contrário, define como vazio
const especialidadeElement = document.getElementById('<?php echo $crm_id; ?>') || document.querySelector('.<?php echo $crm_class; ?>');
const especialidade = especialidadeElement ? especialidadeElement.value.trim() : '';

const url = window.location.href;

// Remove a parte após o primeiro "?" usando split
const cleanUrl = url.split('?')[0];
  
 window.localStorage.setItem('user_email', email); 
 window.localStorage.setItem('user_crm', crm); 
 window.localStorage.setItem('user_uf', uf); 
 window.localStorage.setItem('user_optin', optin); 
 window.localStorage.setItem('user_eventname', evento); 
 window.localStorage.setItem('user_nome', nome); 
 window.localStorage.setItem('user_celular', celular); 
 window.localStorage.setItem('user_especialidade', especialidade);   
            
fetch('<?php echo dominio; ?>', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams({
        inserttrack: 'true',
        email: email,
        emailtemp: email_temp,
        crm: crm,
        tempo_last: tempo_last,
        last_page: last_page, 
        uf: uf,
        nome: nome,
        evento: evento,
        optin: optin,
        celular: celular,
        especialidade: especialidade,
        url: cleanUrl,
        checkin: 0,
        checkinC: 1,
        formtype: 1
    })
});

alert('Enviando Track: Email: ' + email + ' CRM: ' + crm + ' Optin: ' + ' Evento: ' + evento + ' UF: '  + uf + ' Email Temp: ' + email_temp + ' D: <?php echo dominio; ?>');  

<?php } ?>
            
        });
    });

    // Função para inicializar o rastreamento
    initTracking();
}

<?php if($script_type == 1){ ?>
  
//Carregar a função ao carregar a página
window.onload = function () {

//Seleciona o script pelo id
const scriptToRemove  = document.getElementById('trackpage');

if(scriptToRemove){
  //scriptToRemove.parentNode.removeChild(scriptToRemove);
}

  setTimeout(fullload, 1000);
    
};

<?php }else{ ?>

//Carregar a função ao carregar a página
window.onload = function () {
setTimeout(createHiddenIframe, 500);
};

<?php } ?>
