/* VERIFIED QR - JAVASCRIPT DOSYASI (V7.0 - Certifier.io Stili) Eski (V6) video, splash screen, AOS ve header-hidden kodları kaldırıldı. Yeni (V7) aydınlık tema (certifier.io) mobil menü mantığı güncellendi. Login/Signup form mantığı (diğer sayfalarda kullanılmak üzere) korundu. */ document.addEventListener('DOMContentLoaded', function() { // 1. (KALDIRILDI) - AOS Kütüphanesi // (V7'de kaldırıldı, tasarım Tailwind animasyonlarına dayanıyor) // 2. (KALDIRILDI) - Splash Screen ve Video Yönetimi // (V7 aydınlık B2B temasında video splash ekranı bulunmuyor) // 3. YENİ Hamburger Menü Etkileşimi (V7) const menuToggle = document.getElementById('menu-toggle-button'); const mobileMenu = document.getElementById('mobile-menu'); const menuLinks = document.querySelectorAll('.mobile-menu-link'); if (menuToggle && mobileMenu) { menuToggle.addEventListener('click', () => { // Sadece menünün kendisini aç/kapat. // 'menu-open' sınıfı (eski animasyonlu 3 çizgi için) V7'de kullanılmıyor. mobileMenu.classList.toggle('hidden'); }); // Mobil menüdeki bir linke tıklayınca menüyü kapat menuLinks.forEach(link => { link.addEventListener('click', () => { // 'menu-open' sınıfı V7'de kullanılmıyor. mobileMenu.classList.add('hidden'); }); }); } // 4. (KALDIRILDI) - Header Gizleme // (V7'de 'sticky top-0' kullanılıyor, bu JS mantığına gerek yok) // 5. Login Formu Mantığı (login.html için korundu) const loginForm = document.getElementById('login-form'); if (loginForm) { const googleLoginBtn = document.getElementById('google-login-btn'); const messageEl = document.getElementById('form-message'); loginForm.addEventListener('submit', (e) => { e.preventDefault(); const email = e.target.email.value; const password = e.target.password.value; console.log("Giriş denemesi:", { email, password }); showMessage(messageEl, 'Giriş başarılı! Yönlendiriliyorsunuz...', 'success'); setTimeout(() => { alert('Giriş Başarılı! (Ana sayfaya yönlendiriliyorsunuz)'); window.location.href = 'index.html'; }, 2000); }); if (googleLoginBtn) { googleLoginBtn.addEventListener('click', () => { showMessage(messageEl, 'Google ile Giriş yakında... (OAuth Key bekleniyor)', 'error'); }); } } // 6. Kayt Formu ve Şifre Güç Ölçer (signup.html için korundu) const signupForm = document.getElementById('signup-form'); if (signupForm) { const passwordInput = document.getElementById('password-input'); const strengthProgressBar = document.getElementById('strength-progress'); const strengthText = document.getElementById('password-strength-text'); const criteria = { length: document.getElementById('criteria-length'), uppercase: document.getElementById('criteria-uppercase'), number: document.getElementById('criteria-number'), symbol: document.getElementById('criteria-symbol'), long: document.getElementById('criteria-long') }; const messageEl = document.getElementById('form-message'); // Kriter elementlerinden herhangi biri eksikse hata ver (debug için) if (!passwordInput || !strengthProgressBar || !strengthText || !messageEl || Object.values(criteria).some(el => !el)) { console.error("Kayıt formu elementlerinden biri veya birkaçı eksik!"); // return; // Akışı durdurma, sadece konsola yaz } else { passwordInput.addEventListener('input', () => { const password = passwordInput.value; let score = 0; const hasLength = password.length >= 8; const hasUppercase = /[A-Z]/.test(password); const hasNumber = /[0-9]/.test(password); const hasSymbol = /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+/.test(password); const hasLong = password.length > 12; updateCriteria(criteria.length, hasLength); updateCriteria(criteria.uppercase, hasUppercase); updateCriteria(criteria.number, hasNumber); updateCriteria(criteria.symbol, hasSymbol); updateCriteria(criteria.long, hasLong); if (hasLength) score++; if (hasUppercase) score++; if (hasNumber) score++; if (hasSymbol) score++; if (hasLong) score++; switch(score) { case 0: case 1: strengthText.textContent = 'Şifre Güvenliği: Çok Zayıf'; updateStrengthBar(strengthProgressBar, 20, 'strength-very-weak'); break; case 2: strengthText.textContent = 'Şifre Güvenliği: Zayıf'; updateStrengthBar(strengthProgressBar, 40, 'strength-weak'); break; case 3: strengthText.textContent = 'Şifre Güvenliği: Orta (3.5/5)'; updateStrengthBar(strengthProgressBar, 60, 'strength-medium'); break; case 4: strengthText.textContent = 'Şifre Güvenliği: Güçlü'; updateStrengthBar(strengthProgressBar, 80, 'strength-strong'); break; case 5: strengthText.textContent = 'Şifre Güvenliği: Çok Güçlü (5/5)'; updateStrengthBar(strengthProgressBar, 100, 'strength-very-strong'); break; } }); } if(signupForm){ // signupForm 'submit' event listener'ını if bloğu içine al signupForm.addEventListener('submit', (e) => { e.preventDefault(); const password = e.target.password.value; const passwordConfirm = e.target['password-confirm'].value; if (password !== passwordConfirm) { showMessage(messageEl, 'Şifreler eşleşmiyor!', 'error'); return; } if (password.length < 8) { showMessage(messageEl, 'Şifre en az 8 karakter olmalı!', 'error'); return; } console.log("Kayıt denemesi:", { email: e.target.email.value }); showMessage(messageEl, 'Hesap başarıyla oluşturuldu!', 'success'); setTimeout(() => { window.location.href = 'login.html'; }, 2000); }); } } }); // DOMContentLoaded sonu // ============================================ // YARDIMCI FONKSİYONLAR (Login/Signup için korundu) // ============================================ function showMessage(element, message, type) { if (!element) return; // Element yoksa fonksiyondan çık element.textContent = message; element.className = type === 'success' ? 'form-message-success text-center' : 'form-message-error text-center'; element.classList.remove('hidden'); setTimeout(() => { element.classList.add('hidden'); }, 3000); } function updateStrengthBar(bar, width, strengthClass) { if (!bar) return; // Element yoksa fonksiyondan çık bar.style.width = width + '%'; bar.className = 'h-full rounded-full transition-all duration-300'; bar.classList.add(strengthClass); } function updateCriteria(element, isValid) { if (!element) return; // Element yoksa fonksiyondan çık if (isValid) { element.classList.add('valid'); element.classList.remove('invalid'); } else { element.classList.add('invalid'); element.classList.remove('valid'); } }