AI Girlfriend | পারফেক্ট ম্যাচ 💜
12,483 users online • 238 joined today
`;
}
// step1
function renderTypePref() {
const options = [
{ icon: "🔥", label: "Blonde 🔥", value: "blonde" },
{ icon: "💋", label: "Asian 💋", value: "asian" },
{ icon: "😘", label: "Cute Bengali 😘", value: "bengali" },
{ icon: "🖤", label: "Goth Girl 🖤", value: "goth" },
{ icon: "👀", label: "Mature 👀", value: "mature" }
];
return `
কোন টাইপ পছন্দ তোমার? 😏
${options.map(opt => `
`).join('')}
`;
}
// step2
function renderChatType() {
const chats = [
{ icon: "😘", label: "Flirty Chat 😘", val: "flirty" },
{ icon: "🎤", label: "Voice Message 🎤", val: "voice" },
{ icon: "🔒", label: "Private Photo 🔒", val: "photo" },
{ icon: "📹", label: "Video Call 📹", val: "video" },
{ icon: "🌙", label: "Late Night Talk 🌙", val: "night" }
];
return `
কেমন chat করতে চাও? 💬
💜 কেউ টাইপ করছে...
${chats.map(opt => `
`).join('')}
`;
}
// step3
function renderOnlineTime() {
const times = [
{ icon: "💬", label: "সবসময় 💬", val: "always" },
{ icon: "🌙", label: "রাতের বেলা 🌙", val: "night" },
{ icon: "🍷", label: "Weekend এ 🍷", val: "weekend" },
{ icon: "😈", label: "Only for me 😈", val: "exclusive" }
];
return `
সে কখন online থাকুক? ❤️
${times.map(opt => `
`).join('')}
`;
}
// result step + all extra blocks
function renderResult() {
return `
তোমার AI Match Ready 😘
💜 98% Match 💜
Private Voice 💜 Premium
হেই বেবি... তুমি আমার perfect match 😘 continue করলে তোমাকে private কিছু দেখাবো...
Private Gallery 🔒
${[1,2,3].map(() => `
`).join('')}
বাংলাদেশে এখন trending 🔥
238 joined today | 🟢 12,483 active
ফ্লার্টি মেসেজ এসেছে 💬
15:00 আজকের offer শেষ হতে চলছে ⚠️
⚠️ Limited access warning — শেষ মুহূর্ত ⚠️
`;
}
// main render
function renderCurrentStep() {
let html = '';
if (currentStep === 0) html = renderHero();
else if (currentStep === 1) html = renderTypePref();
else if (currentStep === 2) html = renderChatType();
else if (currentStep === 3) html = renderOnlineTime();
else if (currentStep === 4) html = renderResult();
stepContainer.innerHTML = html;
updateProgress();
// attach quiz choice listeners for step 1,2,3
if (currentStep >= 1 && currentStep <= 3) {
document.querySelectorAll('.quiz-option').forEach(el => {
el.addEventListener('click', (e) => {
const type = el.getAttribute('data-type');
const value = el.getAttribute('data-value');
if (type && value) {
// add glow effect on select
document.querySelectorAll('.quiz-option').forEach(opt => opt.classList.remove('selected'));
el.classList.add('selected');
setTimeout(() => {
selectOption(type, value);
}, 150);
}
});
});
// floating notifications for step 2 & 3
if(currentStep === 2) {
const typingMsg = document.getElementById('fakeTypingMsg');
if(typingMsg) setInterval(() => {
typingMsg.innerHTML = ['💬 কেউ টাইপ করছে...','🎤 ভয়েস মেসেজ এসেছে!','📸 নিউ ফটো লকেড'][Math.floor(Math.random()*3)];
}, 3000);
}
if(currentStep === 3){
const popupDiv = document.getElementById('fakeMatchPopup');
if(popupDiv) setInterval(() => {
popupDiv.innerHTML = '
❤️ নিউ ম্যাচ ❤️';
setTimeout(() => { if(popupDiv) popupDiv.innerHTML = '
নতুন ম্যাচ! 💜'; }, 1500);
}, 5000);
}
}
// Hero Start CTA redirect + go to next step? According spec must redirect but also start quiz: open new tab + move step.
if (currentStep === 0) {
const heroBtn = document.getElementById('heroStartQuizBtn');
if (heroBtn) {
heroBtn.addEventListener('click', (e) => {
e.preventDefault();
redirectToAdsterra(); // open adsterra in new tab
// also advance quiz for better engagement
currentStep = 1;
renderCurrentStep();
updateProgress();
});
}
updateSocialProof();
}
// attach final CTA (sticky & inside voice/gallery) - redirect
const stickyFinal = document.getElementById('stickyFinalCta');
if(stickyFinal) stickyFinal.onclick = (e) => { e.preventDefault(); redirectToAdsterra(); };
const voiceBtn = document.getElementById('voiceUnlockBtn');
if(voiceBtn) voiceBtn.onclick = (e) => { e.preventDefault(); redirectToAdsterra(); };
const galleryBtn = document.getElementById('galleryUnlockBtn');
if(galleryBtn) galleryBtn.onclick = (e) => { e.preventDefault(); redirectToAdsterra(); };
// Additional CTA for gallery cards
document.querySelectorAll('.gallery-card').forEach(card => {
card.onclick = (e) => { e.preventDefault(); redirectToAdsterra(); };
});
// update social widget numbers
if(currentStep === 4){
const joinedSpan = document.getElementById('socialJoined');
const onlineSpan2 = document.getElementById('socialOnline');
if(joinedSpan) joinedSpan.innerText = joinedToday;
if(onlineSpan2) onlineSpan2.innerText = onlineCount;
startCountdown('countdownTimerDisplay');
startTypingSimulation();
// waveform animation continuous
const bars = document.querySelectorAll('.wave-bar');
if(bars.length) {
bars.forEach((bar, idx) => {
bar.style.animationDelay = `${idx * 0.07}s`;
bar.style.animationDuration = '0.5s';
});
}
}
// additional listeners for Countdown timer init if needed
if(currentStep === 4 && document.getElementById('countdownTimerDisplay')) startCountdown('countdownTimerDisplay');
}
// initial load: show hero step
renderCurrentStep();
updateSocialProof();
setInterval(() => {
if(currentStep === 4) {
const chatDiv = document.getElementById('chatPreviewArea');
if(chatDiv && chatDiv.children.length < 3) startTypingSimulation();
}
}, 5000);
// Animated floating notification for result chat