File size: 6,249 Bytes
08bb856
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
document.addEventListener('DOMContentLoaded', function() {
    // DOM Elements
    const amountButtons = document.querySelectorAll('.amount-btn');
    const currencyButtons = document.querySelectorAll('.currency-btn');
    const walletInput = document.getElementById('walletAddress');
    const addressError = document.getElementById('addressError');
    const proceedBtn = document.getElementById('proceedBtn');
    const paymentForm = document.getElementById('paymentForm');
    const simulatedReturnBox = document.getElementById('simulatedReturnBox');
    const returnAmountEl = document.getElementById('returnAmount');
    const returnRateEl = document.getElementById('returnRate');
    
    // Summary elements
    const summaryAmount = document.getElementById('summaryAmount');
    const summaryCurrency = document.getElementById('summaryCurrency');
    
    // Selected values
    let selectedAmount = null;
    let selectedCurrency = null;
    
    // Amount selection
    amountButtons.forEach(button => {
        button.addEventListener('click', function() {
            // Remove selected class from all buttons
            amountButtons.forEach(btn => btn.classList.remove('selected'));
            
            // Add selected class to clicked button
            this.classList.add('selected');
            
            // Update selected amount
            selectedAmount = parseInt(this.dataset.value);
            document.getElementById('selectedAmount').value = selectedAmount;
            
            // Update summary
            summaryAmount.textContent = `$${selectedAmount}`;
            
            // Handle $50 special rule
            if (selectedAmount === 50) {
                const rate = (Math.random() * 20 + 20).toFixed(2); // 20-40%
                const returnAmount = (selectedAmount * rate / 100).toFixed(2);
                
                returnRateEl.textContent = `${rate}%`;
                returnAmountEl.textContent = `+$${returnAmount}`;
                simulatedReturnBox.classList.remove('hidden');
            } else {
                simulatedReturnBox.classList.add('hidden');
            }
            
            validateForm();
        });
    });
    
    // Currency selection
    currencyButtons.forEach(button => {
        button.addEventListener('click', function() {
            // Remove selected class from all buttons
            currencyButtons.forEach(btn => btn.classList.remove('selected'));
            
            // Add selected class to clicked button
            this.classList.add('selected');
            
            // Update selected currency
            selectedCurrency = this.dataset.value;
            document.getElementById('selectedCurrency').value = selectedCurrency;
            
            // Update summary
            summaryCurrency.textContent = selectedCurrency;
            
            // Clear previous validation
            addressError.classList.add('hidden');
            walletInput.classList.remove('border-red-500');
            
            validateForm();
        });
    });
    
    // Wallet address validation
    walletInput.addEventListener('input', function() {
        validateWalletAddress();
        validateForm();
    });
    
    // Validate wallet address based on currency
    function validateWalletAddress() {
        const address = walletInput.value.trim();
        
        if (!selectedCurrency) {
            addressError.classList.add('hidden');
            return true;
        }
        
        let isValid = false;
        
        switch(selectedCurrency) {
            case 'USDT':
            case 'BNB':
                // BEP20 addresses: start with 0x and 42 characters
                isValid = /^0x[a-fA-F0-9]{40}$/.test(address);
                break;
            case 'BTC':
                // Bitcoin addresses: start with 1, 3, or bc1
                isValid = /^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-z0-9]{39,59}$/.test(address);
                break;
            case 'SOL':
                // Solana addresses: Base58, 32-44 characters
                isValid = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
                break;
            default:
                isValid = false;
        }
        
        if (address && !isValid) {
            addressError.classList.remove('hidden');
            walletInput.classList.add('border-red-500');
            return false;
        } else {
            addressError.classList.add('hidden');
            walletInput.classList.remove('border-red-500');
            return true;
        }
    }
    
    // Form validation
    function validateForm() {
        const name = document.getElementById('userName').value.trim();
        const address = walletInput.value.trim();
        
        const isAmountSelected = selectedAmount !== null;
        const isCurrencySelected = selectedCurrency !== null;
        const isNameValid = name.length > 0;
        const isAddressValid = address.length > 0 && validateWalletAddress();
        
        if (isAmountSelected && isCurrencySelected && isNameValid && isAddressValid) {
            proceedBtn.disabled = false;
            proceedBtn.classList.remove('opacity-50', 'cursor-not-allowed');
            proceedBtn.classList.add('hover:opacity-90');
        } else {
            proceedBtn.disabled = true;
            proceedBtn.classList.add('opacity-50', 'cursor-not-allowed');
            proceedBtn.classList.remove('hover:opacity-90');
        }
    }
    
    // Real-time validation for name field
    document.getElementById('userName').addEventListener('input', validateForm);
    
    // Form submission
    paymentForm.addEventListener('submit', function(e) {
        e.preventDefault();
        
        // Show success message
        proceedBtn.innerHTML = '<div class="flex items-center justify-center"><div class="w-5 h-5 border-t-2 border-r-2 border-white rounded-full animate-spin mr-2"></div> Redirecting...</div>';
        proceedBtn.disabled = true;
        
        // Simulate redirect delay
        setTimeout(() => {
            window.location.href = 'https://example.com/next-step';
        }, 2000);
    });
    
    // Initialize form state
    validateForm();
});