Laman Utama rusydee.com

Bank Soalan Usul al-Din

Pangkalan data soalan SPM Usul al-Din!

Bank soalan kini mengandungi

0

soalan keseluruhan!

Bank Soalan

Sila log masuk untuk menggunakan fungsi carian.

Pangkalan data sedang dimuatkan...

`); printWindow.document.close(); printWindow.focus(); setTimeout(() => { printWindow.print(); printWindow.close(); }, 500); } // Event Listeners window.onload = () => { loadQuestionsFromFirestore(); fetchAndDisplayHijriDate(); startCountdown(); gsap.registerPlugin(ScrollTrigger); gsap.utils.toArray('.reveal-on-scroll').forEach(elem => { gsap.fromTo(elem, { opacity: 0, y: 50, scale: 0.95 }, { opacity: 1, y: 0, scale: 1, duration: 1, ease: 'power3.out', scrollTrigger: { trigger: elem, start: 'top 95%', toggleActions: 'play none none none' } } ); }); if (localStorage.getItem('theme') === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { document.documentElement.classList.add('dark'); themeIconLight.classList.remove('hidden'); } else { document.documentElement.classList.remove('dark'); themeIconDark.classList.remove('hidden'); } }; searchInput.addEventListener('input', () => performSearch()); document.getElementById('searchInputKeyboard').addEventListener('click', () => toggleKeyboard(searchInput)); loginForm.addEventListener('submit', (e) => { e.preventDefault(); const email = document.getElementById('email').value; const password = document.getElementById('password').value; signInWithEmailAndPassword(auth, email, password) .then(() => { loginForm.reset(); loginModal.classList.add('hidden'); loginError.classList.add('hidden'); }) .catch(() => { loginError.textContent = "E-mel atau kata laluan tidak sah."; loginError.classList.remove('hidden'); }); }); cancelLogin.addEventListener('click', () => loginModal.classList.add('hidden')); editQuestionForm.addEventListener('submit', updateQuestion); cancelEdit.addEventListener('click', () => editQuestionModal.classList.add('hidden')); closeModalButton.addEventListener('click', () => viewQuestionModal.classList.add('hidden')); copyDiacriticButton.addEventListener('click', () => copyQuestionText(true)); copyCleanButton.addEventListener('click', () => copyQuestionText(false)); themeToggle.addEventListener('click', () => { if (document.documentElement.classList.contains('dark')) { document.documentElement.classList.remove('dark'); localStorage.setItem('theme', 'light'); themeIconDark.classList.remove('hidden'); themeIconLight.classList.add('hidden'); } else { document.documentElement.classList.add('dark'); localStorage.setItem('theme', 'dark'); themeIconLight.classList.remove('hidden'); themeIconDark.classList.add('hidden'); } }); // Removed leaderboardButton and closeLeaderboardButton listeners topicListButton.addEventListener('click', () => { if (!currentUser) return; renderTopicList(); topicListModal.classList.remove('hidden'); }); closeTopicListModal.addEventListener('click', () => { topicListModal.classList.add('hidden'); }); hotTopicsButton.addEventListener('click', calculateAndDisplayHotTopics); closeHotTopicsModal.addEventListener('click', () => { hotTopicsModal.classList.add('hidden'); }); duplicatesButton.addEventListener('click', () => { duplicatesModal.classList.remove('hidden'); duplicatesModal.classList.add('flex'); renderDuplicatesModal(); }); closeDuplicatesModal.addEventListener('click', () => { duplicatesModal.classList.remove('flex'); duplicatesModal.classList.add('hidden'); }); topicListContent.addEventListener('click', handleTopicLinkClick); hotTopicsContent.addEventListener('click', handleTopicLinkClick); userDataForm.addEventListener('submit', saveUserData); cancelCrop.addEventListener('click', () => { cropperModal.classList.add('hidden'); if(cropper) cropper.destroy(); }); scanCropped.addEventListener('click', performOcrOnCroppedImage); cancelDelete.addEventListener('click', () => deleteConfirmModal.classList.add('hidden')); confirmDelete.addEventListener('click', () => deleteQuestion(questionIdToDelete)); testModeButton.addEventListener('click', toggleTestMode); selectModeButton.addEventListener('click', toggleSelectMode); selectAllButton.addEventListener('click', selectAllOnPage); printSelectedButton.addEventListener('click', () => { updatePrintModalCounts(); printOptionsModal.classList.remove('hidden'); }); document.getElementById('printQismMode').addEventListener('change', updatePrintModalCounts); document.getElementById('printSelectedWithTrans').addEventListener('click', () => { let questionsToPrint = questionDatabase.filter(q => selectedQuestions.includes(q.id)); questionsToPrint = prepareQuestionsForPrint(questionsToPrint); handlePrint(true, questionsToPrint); resetPrintOptions(); toggleSelectMode(); // Reset selection }); document.getElementById('printSelectedNoTrans').addEventListener('click', () => { let questionsToPrint = questionDatabase.filter(q => selectedQuestions.includes(q.id)); questionsToPrint = prepareQuestionsForPrint(questionsToPrint); handlePrint(false, questionsToPrint); resetPrintOptions(); toggleSelectMode(); // Reset selection }); document.getElementById('printAllWithTrans').addEventListener('click', () => { let questionsToPrint = [...currentQuestions]; // Guna salinan questionsToPrint = prepareQuestionsForPrint(questionsToPrint); handlePrint(true, questionsToPrint); resetPrintOptions(); toggleSelectMode(); // Reset selection }); document.getElementById('printAllNoTrans').addEventListener('click', () => { let questionsToPrint = [...currentQuestions]; // Guna salinan questionsToPrint = prepareQuestionsForPrint(questionsToPrint); handlePrint(false, questionsToPrint); resetPrintOptions(); toggleSelectMode(); // Reset selection }); document.getElementById('cancelPrintSelection').addEventListener('click', () => { printOptionsModal.classList.add('hidden'); resetPrintOptions(); toggleSelectMode(); // Reset selection }); printOptionsModal.addEventListener('click', (e) => { if(e.target === printOptionsModal) { printOptionsModal.classList.add('hidden'); resetPrintOptions(); } }); fontSelector.addEventListener('change', (e) => { document.documentElement.style.setProperty('--font-arabic', e.target.value); }); fontSizeSelector.addEventListener('change', (e) => { document.documentElement.style.setProperty('--font-arabic-size', e.target.value); }); document.addEventListener('click', function(event) { const keyboardEl = document.getElementById('keyboard'); if (activeInput && !keyboardEl.classList.contains('hidden')) { const isClickInsideInput = activeInput.contains(event.target); const isClickInsideKeyboard = keyboardEl.contains(event.target); const isKeyboardToggleButton = event.target.closest('#searchInputKeyboard') || event.target.closest('#newQuestionKeyboard'); if (!isClickInsideInput && !isClickInsideKeyboard && !isKeyboardToggleButton) { keyboardEl.classList.add('hidden'); activeInput = null; } } });