/** * AI Search Engine v2 - Main JavaScript File * Enhanced with better error handling and debugging */ jQuery(document).ready(function($) { // Variables let searchTimeout; let currentPage = 1; let currentSearchTerm = ''; let isLoading = false; // ============================================ // EVENT HANDLERS // ============================================ // Auto-search με καθυστέρηση $('#ai-search-input').on('input', function() { const searchTerm = $(this).val().trim(); if (searchTerm.length < 2) { $('#search-results').html(`

🔍 Πληκτρολογήστε τουλάχιστον 2 χαρακτήρες για αναζήτηση...

`); $('#ai-answer').hide(); return; } clearTimeout(searchTimeout); // Show typing indicator $('#search-results').html(`

Πληκτρολογείτε: "${searchTerm}"

`); searchTimeout = setTimeout(function() { performSearch(searchTerm, 1); }, 500); }); // Manual search με κλικ $('#ai-search-button').on('click', function() { const searchTerm = $('#ai-search-input').val().trim(); if (searchTerm.length >= 2) { performSearch(searchTerm, 1); } else { showAlert('Παρακαλώ εισάγετε τουλάχιστον 2 χαρακτήρες για αναζήτηση.', 'warning'); $('#ai-search-input').focus(); } }); // Enter key support $('#ai-search-input').on('keypress', function(e) { if (e.which === 13) { // Enter key const searchTerm = $(this).val().trim(); if (searchTerm.length >= 2) { performSearch(searchTerm, 1); } } }); // AI Answer button $('#get-ai-answer').on('click', function() { const searchTerm = $('#ai-search-input').val().trim(); if (searchTerm.length < 2) { showAlert('Παρακαλώ εισάγετε τουλάχιστον 2 χαρακτήρες για να ρωτήσετε την AI.', 'warning'); return; } getAIAnswer(searchTerm); }); // Dark mode toggle $('#dark-mode-toggle').on('click', function() { $('body').toggleClass('dark-mode-active'); $(this).toggleClass('active'); // Αποθήκευση στην τοπική αποθήκη const isDark = $('body').hasClass('dark-mode-active'); localStorage.setItem('ai_search_dark_mode', isDark ? 'dark' : 'light'); // Αλλαγή εικονιδίου $(this).html(isDark ? '☀️' : '🌙'); }); // ============================================ // CORE FUNCTIONS // ============================================ /** * Εκτέλεση αναζήτησης */ function performSearch(searchTerm, page) { if (isLoading) return; currentSearchTerm = searchTerm; currentPage = page; isLoading = true; // Εμφάνιση loading indicator $('#search-results').html(`

🔍 Αναζήτηση για: "${searchTerm}"

Παρακαλώ περιμένετε...

`); // Καταγραφή για debugging console.log('🔍 Starting search for:', searchTerm, 'Page:', page); $.ajax({ url: ai_search_vars.ajax_url, type: 'POST', data: { action: 'ai_search', search_term: searchTerm, page: page, nonce: ai_search_vars.nonce }, timeout: 15000, // 15 second timeout success: function(response) { console.log('✅ Search response:', response); if (response.success) { displayResults(response.data); updatePagination(response.data); // Αποθήκευση στατιστικού saveSearchStat(searchTerm); // Εμφάνιση πληροφοριών αναζήτησης showSearchInfo(response.data); } else { displayNoResults(searchTerm, 'Σφάλμα από το διακομιστή'); console.error('❌ Server error:', response.data); } }, error: function(xhr, status, error) { console.error('❌ AJAX Error:', { status: status, error: error, response: xhr.responseText }); displayNoResults(searchTerm, 'Σφάλμα σύνδεσης'); // Προσπάθεια fallback if (status === 'timeout') { showAlert('Η αναζήτηση χρειάστηκε πολύ χρόνο. Παρακαλώ δοκιμάστε ξανά.', 'error'); } }, complete: function() { isLoading = false; } }); } /** * Εμφάνιση αποτελεσμάτων */ function displayResults(data) { let resultsHtml = ''; if (data.results.length === 0) { resultsHtml = createNoResultsHTML(); } else { resultsHtml += `

✅ Βρέθηκαν ${data.total_results} αποτελέσματα

Μέθοδος: ${data.method || 'αναζήτηση'}
`; data.results.forEach(function(result, index) { const animationDelay = (index * 0.1) + 's'; resultsHtml += `

${result.title}

${result.categories ? ` 🏷️ ${result.categories} ` : ''} 📄 ${result.type} 📅 ${result.date}
👁️ Προβολή
`; }); // Προσθήκη debugging info αν υπάρχει if (data.search_method) { resultsHtml += `
Debug: ${data.search_method}
`; } } $('#search-results').html(resultsHtml); // Προσθήκη event listeners για buttons $('.copy-link').on('click', function() { const url = $(this).data('url'); navigator.clipboard.writeText(url).then(function() { showAlert('Ο σύνδεσμος αντιγράφηκε!', 'success'); }); }); $('.result-link').on('click', function(e) { console.log('Clicked result:', $(this).text()); // Μπορούμε να καταγράφουμε analytics εδώ }); } /** * HTML όταν δεν υπάρχουν αποτελέσματα */ function createNoResultsHTML() { return `
😔

Δεν βρέθηκαν αποτελέσματα για "${currentSearchTerm}"

💡 Προτάσεις για καλύτερη αναζήτηση:

⚡ Γρήγορες αναζητήσεις:

🤖 Βοήθεια από την AI:

Μπορείτε να ρωτήσετε την τεχνητή νοημοσύνη για:

`; } /** * Εμφάνιση μηνύματος όταν δεν υπάρχουν αποτελέσματα */ function displayNoResults(searchTerm, reason) { $('#search-results').html(`
⚠️

Πρόβλημα με την αναζήτηση για "${searchTerm}"

Αιτία: ${reason}

Αν το πρόβλημα παραμένει, ελέγξτε:

`); } /** * Ενημέρωση pagination */ function updatePagination(data) { let paginationHtml = ''; if (data.total_pages > 1) { paginationHtml = '
'; // Προηγούμενη σελίδα if (data.current_page > 1) { paginationHtml += ` `; } // Αριθμοί σελίδων let startPage = Math.max(1, data.current_page - 2); let endPage = Math.min(data.total_pages, data.current_page + 2); // Πρώτη σελίδα if (startPage > 1) { paginationHtml += ``; if (startPage > 2) paginationHtml += `...`; } // Κεντρικές σελίδες for (let i = startPage; i <= endPage; i++) { if (i === data.current_page) { paginationHtml += `${i}`; } else { paginationHtml += ``; } } // Τελευταία σελίδα if (endPage < data.total_pages) { if (endPage < data.total_pages - 1) paginationHtml += `...`; paginationHtml += ``; } // Επόμενη σελίδα if (data.current_page < data.total_pages) { paginationHtml += ` `; } paginationHtml += '
'; // Προσθήκη page info paginationHtml += `
Σελίδα ${data.current_page} από ${data.total_pages} (${data.total_results} αποτελέσματα)
`; } $('#search-pagination').html(paginationHtml); // Εκδήλωση κλικ σε pagination buttons $('.page-button').on('click', function() { const page = $(this).data('page'); performSearch(currentSearchTerm, page); // Scroll στο top των αποτελεσμάτων $('html, body').animate({ scrollTop: $('#search-results').offset().top - 100 }, 300); }); } /** * Λήψη απάντησης από AI */ function getAIAnswer(searchTerm) { if (isLoading) return; isLoading = true; $('#ai-answer').html(`

🤖 Η AI σκέφτεται...

Ανάλυση της αναζήτησης: "${searchTerm}"

Αυτό μπορεί να πάρει λίγα δευτερόλεπτα
`).show(); console.log('🧠 Requesting AI answer for:', searchTerm); $.ajax({ url: ai_search_vars.ajax_url, type: 'POST', data: { action: 'get_ai_answer', search_term: searchTerm, nonce: ai_search_vars.nonce }, timeout: 30000, // 30 seconds for AI success: function(response) { console.log('✅ AI response:', response); if (response.success) { $('#ai-answer').html(`
🤖

AI Απάντηση για: "${response.data.search_term}"

${response.data.answer}
`); // Auto scroll στην απάντηση $('html, body').animate({ scrollTop: $('#ai-answer').offset().top - 50 }, 500); } else { $('#ai-answer').html(`
⚠️

Δεν ήταν δυνατή η λήψη απάντησης

${response.data || 'Το API key μπορεί να μην είναι σωστά ρυθμισμένο.'}

⚙️ Ρυθμίσεις
`); } }, error: function(xhr, status, error) { console.error('❌ AI Error:', error); $('#ai-answer').html(`
🔌

Σφάλμα Σύνδεσης με AI

Δεν ήταν δυνατή η σύνδεση με τον διακομιστή AI.

Σφάλμα: ${error}

Βεβαιωθείτε ότι:

`); }, complete: function() { isLoading = false; } }); } /** * Αποθήκευση στατιστικών */ function saveSearchStat(searchTerm) { // Ασύγχρονη αποστολή - δεν περιμένουμε response $.ajax({ url: ai_search_vars.ajax_url, type: 'POST', data: { action: 'save_search_stat', search_term: searchTerm, nonce: ai_search_vars.nonce }, // Αδιάφορο αν αποτύχει error: function() { console.log('Statistics save failed (not critical)'); } }); } /** * Εμφάνιση πληροφοριών αναζήτησης */ function showSearchInfo(data) { // Μπορούμε να προσθέσουμε επιπλέον πληροφορίες if (data.total_results > 0) { const infoHtml = `
💡 Βρήκατε αυτό που ψάχνατε; Αν όχι, δοκιμάστε την AI ή αλλάξτε τους όρους αναζήτησης.
`; $('#search-results').append(infoHtml); } } /** * Εμφάνιση alert μηνύματος */ function showAlert(message, type = 'info') { const alertClass = { 'success': 'alert-success', 'error': 'alert-error', 'warning': 'alert-warning', 'info': 'alert-info' }[type] || 'alert-info'; const alertHtml = `
${message}
`; // Προσθήκη alert $('.ai-search-container').prepend(alertHtml); // Αυτόματη απόκρυψη μετά από 5 δευτερόλεπτα setTimeout(() => { $('.ai-alert').fadeOut(300, function() { $(this).remove(); }); }, 5000); // Κλείσιμο με κλικ $('.alert-close').on('click', function() { $(this).parent().fadeOut(300, function() { $(this).remove(); }); }); } // ============================================ // HELPER FUNCTIONS // ============================================ // Global functions για χρήση σε onclick handlers window.retrySearch = function(searchTerm) { performSearch(searchTerm || currentSearchTerm, 1); }; window.simplifySearch = function(searchTerm) { // Απλοποίηση αναζήτησης - πάρτε μόνο την πρώτη λέξη const words = searchTerm.split(' '); if (words.length > 1) { const simpleTerm = words[0]; $('#ai-search-input').val(simpleTerm); performSearch(simpleTerm, 1); showAlert(`Απλοποίηση σε: "${simpleTerm}"`, 'info'); } }; // Quick search buttons $(document).on('click', '.quick-search', function() { const term = $(this).data('term'); $('#ai-search-input').val(term); performSearch(term, 1); }); // ============================================ // INITIALIZATION // ============================================ // Έλεγχος για προηγούμενη ρύθμιση dark mode const savedMode = localStorage.getItem('ai_search_dark_mode'); if (savedMode === 'dark') { $('body').addClass('dark-mode-active'); $('#dark-mode-toggle').addClass('active').html('☀️'); } // Initial instruction $('#search-results').html(`
🔍

Καλωσήρθατε στην Έξυπνη Αναζήτηση

Πληκτρολογήστε παραπάνω για να ξεκινήσει η αναζήτηση.

📋 Παραδείγματα αναζήτησης:

✨ Δυνατότητες:

`); // Example search buttons $('.example-search').on('click', function() { const term = $(this).data('term'); $('#ai-search-input').val(term); performSearch(term, 1); }); // Debug mode (απενεργοποιημένο από default) const debugMode = false; if (debugMode) { console.log('🔧 AI Search Debug Mode Enabled'); console.log('AJAX URL:', ai_search_vars.ajax_url); console.log('Nonce:', ai_search_vars.nonce); } // Keyboard shortcuts $(document).on('keydown', function(e) { // Ctrl/Cmd + F για focus στο search input if ((e.ctrlKey || e.metaKey) && e.key === 'f') { e.preventDefault(); $('#ai-search-input').focus().select(); } // Escape για clear if (e.key === 'Escape') { $('#ai-search-input').val('').focus(); } // Ctrl/Cmd + Enter για AI if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') { e.preventDefault(); $('#get-ai-answer').click(); } }); // Focus στο input όταν φορτώνει η σελίδα setTimeout(() => { $('#ai-search-input').focus(); }, 500); }); // Global error handler window.addEventListener('error', function(e) { console.error('Global error:', e.error); }); apotelesmata – Σελίδα 2 – Διαποίμανση

Παρουσίαση Ψηφιακού Δίσκου: «Μεταξύ Αθηνών και Εσχάτων» Έκδοσεις: Ραδιοφωνικός Σταθμός της Εκκλησίας της Ελλάδος Περιγραφή: Στο νέο ψηφιακό δίσκο ψάλλει ο Βυζαντινός χορός της Σχολής Βυζαντινής και Μουσικής του Ιδρύματος Βυζαντινής και Παραδοσιακής Μουσικής της Αρχιεπισκοπής Αθηνών υπό την διεύθυνση του κ. Κωνσταντίνου Αγγελίδη. Ο ψηφιακός δίσκος περιλαμβάνει βυζαντινούς εκκλησιαστικούς ύμνους από τις ακολουθίες κάποιων […]

Κύριε, φύλαγε τον Λειτουργό σου αυτόν που εσύ τον διάλεξες για να σε υπηρετεί. ΣΧΕΤΙΚΕΣ ΕΠΙΛΟΓΕΣ 1. Καίτης Χιωτέλλη, Ψαλμός διαφυγών, ποίημα. 2. Σχετικό αφιέρωμα ιστοτόπου Διαποίμανσης, 2018. 3.Σχετικό  αφιέρωμα  ιστοτόπου  της  Ιεράς Συνόδου  για τις  Ιερατικές  Κλησεις.

Διάφορα (32)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 887

Δείτε τό κείμενο: ἐδώ

Διάφορα (32)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 931

ΜΕ ΑΦΟΡΜΗ Tην Γενέθλιο Ημέρα του ιστοτόπου μας  «Διαποίμανση», γιορτάζουμε και θυμόμαστε την 25η Μαρτίου 2021, συμπλέει η Μεγάλη με τη μικρή ιστορία. Διακόσια χρόνια από την Ελληνική Επανάσταση και επτά χρόνια από την έναρξη του Διαδικτυακού Κέντρου Ποιμαντικών Ερευνών, Μελετών, και Εφαρμογών: Στο κύλισμα αυτών των χρόνων αναρτήθηκαν κείμενα που στοιχειοθετούν μεταξύ άλλων μία […]

Διάφορα (32)Συνέδρια (48)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 1031

Οργάνωση: ΑΝΩΤΑΤΗ ΕΚΚΛΗΣΙΑΣΤΙΚΗ ΑΚΑΔΗΜΙΑ ΑΘΗΝΑΣ Χρόνος: Παρασκευή 12,13,14 Μαΐου 2021 Σχετικός Ιστότοπος: εδώ Σημειώση: Σύνδεσμος Συμμετοχής στο Συνέδριο: εδώ Πρόγραμμα Συνεδρίου: εδώ  

Διάφορα (32)Ποιμαντικά Ερεθίσματα (6)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 916

Άρθρο του Ομοτίμου Καθηγητού της Θεολογικής  Σχολής του Πανεπιστημίου Αθηνών κ. Παναγιώτη Ι. Μπούμη για τον τον κοινό εορτασμό του Πάσχα μεταξύ Ορθοδόξων και Ρωμαιοκαθολικών. Διαβάστε ολόκληρο το άρθρο: εδώ

Διάφορα (32)Ποιμαντικά Ερεθίσματα (6)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 937

Άρθρο της Αναστασίας Βαβάση, Θεολόγου-Φιλολόγου. Διαβάστε ολόκληρο το άρθρο: εδώ

Διάφορα (32)Συνέδρια (48)✍️ GEORGIOS SKLIAS (387) 💬 0 👁️ 865

Οργάνωση: ΙΔΡΥΜΑ ΝΕΟΤΗΤΑΣ ΚΑΙ ΟΙΚΟΓΕΝΕΙΑΣ ΙΕΡΑΣ ΑΡΧΙΕΠΙΣΚΟΠΗΣ ΑΘΗΝΩΝ Χρόνος: Δευτέρα 31/5, Τετάρτη 2/6, Πέμπτη 3/6, 8:00 μ.μ. Σχετικός Ιστότοπος: εδώ Σημειώση: Σύνδεσμος Συμμετοχής στο Συνέδριο: εδώ Πρόγραμμα Συνεδρίου: εδώ

Την επετειακή εκδήλωση για τα 40 χρόνια από την ένταξη της χώρας μας στην Ευρωπαϊκή Ένωση και την επίσημη έναρξη του δημοσίου διαλόγου για τη Διάσκεψη για το μέλλον της Ευρώπης (27 Μαΐου 2021, Ζάππειον Μέγαρον), παραθέτουμε μια προοπτική ματιά από το παρελθόν για το μέλλον… ΣΧΕΤΙΚΕΣ ΕΠΙΛΟΓΕΣ 1 Α.Μ. Σταυροπούλου, Στὸν πηγαιμὸ γιὰ τὴν  […]