Skip to main content
404
ERROR

Oops! Page Not Found

The page you're looking for seems to have vanished into the digital void. It might have been moved, deleted, or perhaps it never existed.

⚠️

Common Issues

  • Check if the URL is spelled correctly
  • The page may have been moved or deleted
  • You might have followed an outdated link
  • Try searching for what you need below
Try searching for:

Need Help Finding Something?

Our support team is ready to help you find the virtual SMS verification services you need.

// ==================== ROZBUDOWANY SKRYPT WYSZUKIWARKI ==================== class SiteSearchEngine { constructor() { this.initializeSearch(); this.addStyles(); } // Inicjalizacja wyszukiwarki initializeSearch() { // Obsługa formularza wyszukiwania w sekcji 404 const searchForm404 = document.querySelector('.four-0-search'); if (searchForm404) { searchForm404.addEventListener('submit', (e) => { e.preventDefault(); const searchInput = searchForm404.querySelector('input[type="text"]'); this.searchSite(searchInput.value.trim()); }); } // Obsługa głównej wyszukiwarki w headerze const mainSearchForm = document.querySelector('.search-form'); if (mainSearchForm) { mainSearchForm.addEventListener('submit', (e) => { e.preventDefault(); const searchInput = mainSearchForm.querySelector('input[type="text"]'); this.searchSite(searchInput.value.trim()); }); } // Obsługa przycisku wyszukiwania w headerze const searchButton = document.querySelector('.search-bar'); if (searchButton) { searchButton.addEventListener('click', (e) => { e.preventDefault(); const searchInput = document.querySelector('.search-form input[type="text"]'); if (searchInput) { this.searchSite(searchInput.value.trim()); } else { this.openSearchDialog(); } }); } } // Główna funkcja wyszukiwania searchSite(searchTerm) { if (!searchTerm) { this.showResults([], searchTerm); return; } console.log(`Searching for: "${searchTerm}"`); // Zbieranie wszystkich tekstów ze strony const pageContent = this.collectPageText(); // Wyszukiwanie frazy const results = this.searchInContent(pageContent, searchTerm); // Wyświetlanie wyników this.showResults(results, searchTerm); // Przewiń do wyników jeśli są if (results.length > 0) { setTimeout(() => { const resultsElement = document.getElementById('search-results-container'); if (resultsElement) { resultsElement.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }, 100); } } // Zbieranie wszystkich tekstów ze strony collectPageText() { const content = []; const elementsToSkip = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'IFRAME', 'OBJECT', 'EMBED']; // Użycie TreeWalker do przeglądania wszystkich węzłów tekstowych const walker = document.createTreeWalker( document.body, NodeFilter.SHOW_TEXT, { acceptNode: function(node) { // Pomijanie pustych tekstów i tekstów z elementów do pominięcia if (!node.textContent.trim() || elementsToSkip.includes(node.parentNode.nodeName) || node.parentNode.classList?.contains('search-result-item')) { return NodeFilter.FILTER_REJECT; } return NodeFilter.FILTER_ACCEPT; } }, false ); let node; while (node = walker.nextNode()) { const text = node.textContent.trim(); if (text.length > 3) { // Pomijanie zbyt krótkich tekstów const element = node.parentNode; // Pobieranie kontekstu (nagłówek nadrzędny lub sekcja) let context = ''; let heading = this.findParentHeading(element); if (heading) { context = heading.textContent.trim(); } else { // Szukanie najbliższej sekcji lub kontenera const section = element.closest('section, article, .container, .row, .col, [class*="section"], [class*="area"]'); if (section) { const sectionTitle = section.querySelector('h1, h2, h3, h4, h5, h6, .title, .subtitle'); if (sectionTitle) { context = sectionTitle.textContent.trim(); } } } // Pobieranie URL jeśli element jest linkiem let url = ''; if (element.tagName === 'A') { url = element.href; } else { const linkParent = element.closest('a'); if (linkParent) { url = linkParent.href; } } // Pobieranie lokalizacji w DOM const rect = element.getBoundingClientRect(); const isVisible = ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); content.push({ text: text, element: element, context: context, url: url, position: rect, isVisible: isVisible }); } } return content; } // Wyszukiwanie frazy w zawartości searchInContent(content, searchTerm) { const results = []; const searchLower = searchTerm.toLowerCase(); const searchTerms = searchLower.split(/\s+/).filter(term => term.length > 0); content.forEach((item, index) => { const textLower = item.text.toLowerCase(); let relevance = 0; let foundTerms = []; // Sprawdzanie każdego terminu wyszukiwania searchTerms.forEach(term => { if (textLower.includes(term)) { relevance++; foundTerms.push(term); // Dodatkowe punkty za dokładne dopasowanie if (textLower === term) { relevance += 2; } // Punkty za znalezienie w kontekście if (item.context.toLowerCase().includes(term)) { relevance += 1; } } }); if (relevance > 0) { // Obliczanie skróconego tekstu z podświetleniem const preview = this.highlightSearchTerms(item.text, searchTerms); results.push({ ...item, relevance: relevance, preview: preview, foundTerms: foundTerms, index: index }); } }); // Sortowanie wyników według trafności results.sort((a, b) => b.relevance - a.relevance); return results; } // Podświetlanie terminów w tekście highlightSearchTerms(text, searchTerms) { let highlighted = text; searchTerms.forEach(term => { const regex = new RegExp(`(${term})`, 'gi'); highlighted = highlighted.replace(regex, '$1'); }); // Skrócenie tekstu jeśli jest zbyt długi const maxLength = 200; if (highlighted.length > maxLength) { // Znajdź pierwsze wystąpienie podświetlenia const firstMark = highlighted.indexOf(' -1) { const start = Math.max(0, firstMark - 50); const end = Math.min(highlighted.length, start + maxLength); highlighted = '...' + highlighted.substring(start, end) + '...'; } else { highlighted = highlighted.substring(0, maxLength) + '...'; } } return highlighted; } // Wyświetlanie wyników showResults(results, searchTerm) { // Usuwanie poprzednich wyników this.removePreviousResults(); // Usuwanie poprzednich podświetleń document.querySelectorAll('.search-highlight').forEach(el => { const parent = el.parentNode; parent.replaceChild(document.createTextNode(el.textContent), el); parent.normalize(); }); // Tworzenie kontenera wyników const resultsContainer = document.createElement('div'); resultsContainer.id = 'search-results-container'; resultsContainer.className = 'search-results-container'; // Nagłówek wyników const header = document.createElement('div'); header.className = 'search-results-header'; header.innerHTML = `

Search Results for: "${searchTerm}"

Found ${results.length} result${results.length !== 1 ? 's' : ''}
`; resultsContainer.appendChild(header); // Lista wyników if (results.length > 0) { const resultsList = document.createElement('div'); resultsList.className = 'search-results-list'; results.forEach((result, i) => { const resultItem = document.createElement('div'); resultItem.className = 'search-result-item'; resultItem.dataset.index = result.index; // Kontekst (gdzie znaleziono) let contextHTML = ''; if (result.context) { contextHTML = `
${result.context}
`; } // Przycisk "Show on page" const showButton = result.element ? `` : ''; resultItem.innerHTML = `
${result.preview}
${contextHTML}
${showButton}
`; // Obsługa kliknięcia "Show on page" const showBtn = resultItem.querySelector('.btn-show-on-page'); if (showBtn && result.element) { showBtn.addEventListener('click', () => { this.scrollToResult(result); }); } resultsList.appendChild(resultItem); }); resultsContainer.appendChild(resultsList); } else { // Brak wyników const noResults = document.createElement('div'); noResults.className = 'search-no-results'; noResults.innerHTML = `

No results found for "${searchTerm}"

Try different keywords or check for typos.

`; resultsContainer.appendChild(noResults); } // Dodawanie kontenera do strony const heroArea = document.querySelector('.four-0-four-section'); if (heroArea) { heroArea.parentNode.insertBefore(resultsContainer, heroArea.nextSibling); } else { // Fallback - dodaj na końcu body document.body.appendChild(resultsContainer); } // Podświetlanie elementów na stronie this.highlightOnPage(results); } // Przewijanie do konkretnego wyniku scrollToResult(result) { if (result.element) { // Dodanie tymczasowego podświetlenia result.element.classList.add('search-result-highlighted'); // Przewijanie do elementu result.element.scrollIntoView({ behavior: 'smooth', block: 'center' }); // Usunięcie podświetlenia po czasie setTimeout(() => { result.element.classList.remove('search-result-highlighted'); }, 3000); } } // Podświetlanie wyników na stronie highlightOnPage(results) { results.forEach(result => { if (result.element && !result.element.closest('.search-results-container')) { const originalHTML = result.element.innerHTML; const text = result.element.textContent; // Podświetlanie terminów w oryginalnym elemencie result.foundTerms.forEach(term => { const regex = new RegExp(`(${term})`, 'gi'); result.element.innerHTML = result.element.innerHTML.replace( regex, '$1' ); }); // Przywracanie oryginalnego HTML po 5 sekundach setTimeout(() => { result.element.innerHTML = originalHTML; }, 5000); } }); } // Usuwanie poprzednich wyników removePreviousResults() { const oldContainer = document.getElementById('search-results-container'); if (oldContainer) { oldContainer.remove(); } } // Znajdowanie nagłówka nadrzędnego findParentHeading(element) { let current = element; for (let i = 0; i < 5; i++) { // Ogranicz do 5 poziomów w górę if (!current) break; // Szukaj najbliższego nagłówka const heading = current.querySelector('h1, h2, h3, h4, h5, h6'); if (heading) return heading; // Przejdź do rodzica current = current.parentElement; // Sprawdź czy rodzic jest nagłówkiem if (current && current.tagName.match(/^H[1-6]$/)) { return current; } } return null; } // Otwieranie dialogu wyszukiwania openSearchDialog() { const searchDialog = document.createElement('div'); searchDialog.className = 'search-dialog'; searchDialog.innerHTML = `

Site Search

`; document.body.appendChild(searchDialog); // Obsługa zamknięcia const closeBtn = searchDialog.querySelector('.search-dialog-close'); closeBtn.addEventListener('click', () => { searchDialog.remove(); }); // Obsługa formularza const form = searchDialog.querySelector('.search-dialog-form'); form.addEventListener('submit', (e) => { e.preventDefault(); const input = form.querySelector('input'); this.searchSite(input.value.trim()); searchDialog.remove(); }); // Zamykanie po kliknięciu poza searchDialog.addEventListener('click', (e) => { if (e.target === searchDialog) { searchDialog.remove(); } }); } // Dodawanie stylów CSS addStyles() { const style = document.createElement('style'); style.textContent = ` /* Search Results Container */ .search-results-container { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 40px 0; margin-top: 20px; border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); } .search-results-header { max-width: 1200px; margin: 0 auto 30px; padding: 0 20px; color: white; } .search-results-header h3 { margin: 0 0 10px 0; font-size: 24px; } .search-stats { font-size: 16px; opacity: 0.9; } /* Search Results List */ .search-results-list { max-width: 1200px; margin: 0 auto; padding: 0 20px; } .search-result-item { background: white; border-radius: 8px; padding: 20px; margin-bottom: 15px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); transition: transform 0.3s, box-shadow 0.3s; } .search-result-item:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0,0,0,0.15); } .search-result-content { display: flex; flex-direction: column; } .search-result-preview { font-size: 16px; line-height: 1.5; margin-bottom: 10px; color: #333; } .search-context { font-size: 14px; color: #666; margin-bottom: 15px; padding-left: 10px; border-left: 3px solid #667eea; } .search-result-actions { display: flex; justify-content: flex-end; } .btn-show-on-page { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-size: 14px; transition: opacity 0.3s; } .btn-show-on-page:hover { opacity: 0.9; } /* Search Highlight */ .search-highlight { background-color: #ffeb3b; padding: 2px 4px; border-radius: 3px; font-weight: bold; } .search-highlight-onpage { background-color: #ffeb3b; padding: 2px 4px; border-radius: 3px; animation: pulse 2s infinite; } .search-result-highlighted { animation: highlightFlash 3s; } /* No Results */ .search-no-results { text-align: center; color: white; padding: 40px 20px; } .search-no-results p { margin: 10px 0; font-size: 18px; } /* Search Dialog */ .search-dialog { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 10000; } .search-dialog-content { background: white; border-radius: 10px; padding: 30px; width: 90%; max-width: 500px; box-shadow: 0 20px 40px rgba(0,0,0,0.2); } .search-dialog-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .search-dialog-header h3 { margin: 0; color: #333; } .search-dialog-close { background: none; border: none; font-size: 24px; cursor: pointer; color: #666; line-height: 1; } .search-dialog-form { display: flex; gap: 10px; } .search-dialog-form input { flex: 1; padding: 12px 16px; border: 2px solid #ddd; border-radius: 6px; font-size: 16px; } .search-dialog-form button { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; padding: 12px 24px; border-radius: 6px; cursor: pointer; font-size: 16px; } /* Animations */ @keyframes pulse { 0%, 100% { background-color: #ffeb3b; } 50% { background-color: #ffc107; } } @keyframes highlightFlash { 0%, 100% { background-color: transparent; } 10%, 90% { background-color: rgba(102, 126, 234, 0.2); } 50% { background-color: rgba(102, 126, 234, 0.4); } } /* Responsive */ @media (max-width: 768px) { .search-results-header h3 { font-size: 20px; } .search-result-item { padding: 15px; } .search-dialog-content { padding: 20px; width: 95%; } .search-dialog-form { flex-direction: column; } } `; document.head.appendChild(style); } } // Inicjalizacja wyszukiwarki po załadowaniu DOM document.addEventListener('DOMContentLoaded', () => { // Czekaj na załadowanie jQuery jeśli jest używane if (typeof jQuery !== 'undefined') { jQuery(() => { new SiteSearchEngine(); }); } else { new SiteSearchEngine(); } }); // Ręczna inicjalizacja dla dynamicznych elementów if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { new SiteSearchEngine(); }); } else { new SiteSearchEngine(); } // Eksport do globalnego scope dla ręcznego wywołania window.SiteSearchEngine = SiteSearchEngine;