/** * Temu Affiliate Funnel * Main JavaScript File */ // Wait for the DOM to be fully loaded document.addEventListener('DOMContentLoaded', function() { // Language selector functionality const languageSelector = document.querySelector('.language-selector'); if (languageSelector) { const selectedLanguage = languageSelector.querySelector('.selected-language'); const languageDropdown = languageSelector.querySelector('.language-dropdown'); // Toggle dropdown on click selectedLanguage.addEventListener('click', function(e) { e.stopPropagation(); languageDropdown.style.display = languageDropdown.style.display === 'flex' ? 'none' : 'flex'; }); // Close dropdown when clicking outside document.addEventListener('click', function() { languageDropdown.style.display = 'none'; }); // Prevent dropdown from closing when clicking inside languageDropdown.addEventListener('click', function(e) { e.stopPropagation(); }); } // Form validation const funnelForms = document.querySelectorAll('.funnel-form'); funnelForms.forEach(form => { form.addEventListener('submit', function(e) { // Step 1: Shopping frequency validation const frequencyInputs = form.querySelectorAll('input[name="shopping_frequency"]'); if (frequencyInputs.length > 0) { let frequencySelected = false; frequencyInputs.forEach(input => { if (input.checked) frequencySelected = true; }); if (!frequencySelected) { e.preventDefault(); alert('Please select a shopping frequency option.'); return; } } // Step 2: Interests validation const interestInputs = form.querySelectorAll('input[name="interests[]"]'); if (interestInputs.length > 0) { let interestSelected = false; interestInputs.forEach(input => { if (input.checked) interestSelected = true; }); if (!interestSelected) { e.preventDefault(); alert('Please select at least one interest.'); return; } } // Step 3: Budget validation const budgetInputs = form.querySelectorAll('input[name="budget"]'); if (budgetInputs.length > 0) { let budgetSelected = false; budgetInputs.forEach(input => { if (input.checked) budgetSelected = true; }); if (!budgetSelected) { e.preventDefault(); alert('Please select a budget option.'); return; } } // Step 4: Device validation const deviceInputs = form.querySelectorAll('input[name="device"]'); if (deviceInputs.length > 0) { let deviceSelected = false; deviceInputs.forEach(input => { if (input.checked) deviceSelected = true; }); if (!deviceSelected) { e.preventDefault(); alert('Please select a device option.'); return; } } }); }); // Copy promotion code functionality const copyButtons = document.querySelectorAll('.copy-button'); copyButtons.forEach(button => { button.addEventListener('click', function() { const code = this.getAttribute('data-code'); // Use modern clipboard API if available if (navigator.clipboard) { navigator.clipboard.writeText(code) .then(() => { showCopyFeedback(button); }) .catch(() => { fallbackCopyTextToClipboard(code, button); }); } else { fallbackCopyTextToClipboard(code, button); } }); }); // Fallback for older browsers that don't support clipboard API function fallbackCopyTextToClipboard(text, button) { const textArea = document.createElement('textarea'); textArea.value = text; textArea.style.position = 'fixed'; textArea.style.left = '-999999px'; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { const successful = document.execCommand('copy'); if (successful) { showCopyFeedback(button); } } catch (err) { console.error('Fallback: Oops, unable to copy', err); } document.body.removeChild(textArea); } // Show feedback when code is copied function showCopyFeedback(button) { const originalIcon = button.innerHTML; button.innerHTML = ''; button.style.backgroundColor = 'var(--color-success)'; setTimeout(() => { button.innerHTML = originalIcon; button.style.backgroundColor = ''; }, 2000); } // Sharing functionality window.sharePromotion = function(platform) { const promoLink = document.getElementById('promoLink'); let shareUrl = ''; if (!promoLink) return; const url = promoLink.getAttribute('href'); const title = document.title; const text = 'Check out this amazing deal on Temu!'; switch (platform) { case 'facebook': shareUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`; break; case 'twitter': shareUrl = `https://twitter.com/intent/tweet?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`; break; case 'whatsapp': shareUrl = `https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`; break; case 'telegram': shareUrl = `https://t.me/share/url?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`; break; } if (shareUrl) { window.open(shareUrl, '_blank', 'width=600,height=400'); } }; // Add touch support for mobile devices if ('ontouchstart' in window) { document.body.classList.add('touch-device'); } // TikTok conversion tracking for promotion links function initializeConversionTracking() { // Track clicks on all promotion links document.addEventListener('click', function(e) { // Check if clicked element is a conversion link if (e.target.closest('.conversion-link')) { const link = e.target.closest('.conversion-link'); const href = link.getAttribute('href'); // Fire TikTok conversion event if (typeof ttq !== 'undefined') { ttq.track('CompleteRegistration', { content_type: 'promotion_link', content_id: 'voucher_magnet_conversion', value: 1, currency: 'USD', description: 'User completed funnel and clicked promotion link' }); console.log('TikTok conversion tracked for link:', href); } // Small delay to ensure tracking fires before redirect setTimeout(() => { if (link.target === '_blank') { window.open(href, '_blank'); } else { window.location.href = href; } }, 100); // Prevent default to control the redirect timing e.preventDefault(); return false; } }); } // Initialize conversion tracking initializeConversionTracking(); // Auto-redirect to Temu promotion after a delay on results page const resultsPage = document.querySelector('.results-page'); if (resultsPage) { const promoLink = document.getElementById('promoLink'); if (promoLink) { // Track when user clicks the promotion link promoLink.addEventListener('click', function() { console.log('Promotion link clicked'); }); } } // Automatically check first option in each step for better UX const optionGroups = document.querySelectorAll('.options-container'); optionGroups.forEach(group => { // Only auto-select if none are already selected const radioInputs = group.querySelectorAll('input[type="radio"]'); if (radioInputs.length > 0) { let anyChecked = false; radioInputs.forEach(input => { if (input.checked) anyChecked = true; }); // Auto-select first option if none are checked if (!anyChecked && !group.classList.contains('interests-grid')) { radioInputs[0].checked = true; } } }); });