/** * 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 – Διαποίμανση

Παγκόσμια Ημέρα Μεταναστών Η Ποιμαντική των Μεταναστών Η μετανάστευση αποτελεί ένα από τα πιο σημαντικά και επίκαιρα κοινωνικά φαινόμενα της εποχής μας. Ο αυξανόμενος αριθμός μεταναστών παγκοσμίως δημιουργεί προκλήσεις αλλά και ευκαιρίες για την εκκλησία και την κοινωνία. Η ποιμαντική των μεταναστών αναφέρεται στις πρακτικές και τις δράσεις της εκκλησίας που αποσκοπούν στην υποστήριξη, την […]

Αὐτό σημαίνει ὅτι «ἡ δυαδικότητα τῶν δύο φύσεων καί ἡ συμπληρωματικότητά τους δέν ἀποτελοῦν κοινωνικές ἐπινοήσεις, ἀλλά παρέχονται ἀπό τόν Θεό»∙

Ὁ ἅγιος Γρηγόριος ὁ Θεολόγος ἔστειλε σὲ μιὰ πνευματική του θυγατέρα, (τὴν Ὀλυμπιάδα), τὴν κατωτέρω ἐπιστολὴ ὡς «δῶρο» γιὰ τὸν γάμο της, ποὺ μόλις τέλεσε.

Η Ιερά Σύνοδος της Ιεραρχίας (Ι.Σ.Ι.) της Εκκλησίας της Ελλάδος συνήλθε σε έκτακτη συνεδρίαση, την Τρίτη 23 Ιανουαρίου 2024, με μοναδικό θέμα την εξαγγελθείσα νομοθέτηση γάμου και «τεκνοθεσίας» υπέρ ζευγαριών του ιδίου φύλου.

Συνδιοργάνωση: Η Ειδική Συνοδική Επιτροπή Ποιμαντικών θεμάτων και καταστάσεων σε συνεργασία με τη Γενική Γραμματεία Θρησκευμάτων, την Ι. Μ. Αλεξανδρουπόλεως και την Υπηρεσία Γυναικείων Θεμάτων του Ιδρύματος Νεότητος και Οικογένειας της Ι.Α.Α. Χρόνος: 28 έως 30 Σεπτεμβρίου 2018 Τόπος: Ανθίμειο Πολιτιστικό Κέντρο Αλεξανδρούπολης Δελτίο Τύπου:  εδώ Πρόγραμμα: εδώ