Filter By Categories
ALL CATEGORIES FILTER
All Categories
Diseases Category
All
Symptoms Category
All
Lifestyle Category
All
Age Groups Category
All
Category by Diagnostic Methods
All
Category by Specimen
All
Reset all filters
Available Tests
Loading...
Loading lab tests...
Scroll for more tests
Your Cart is Empty
Search for tests and add them to your cart to start your order.
Start Searching
No Results Found
Try different search terms or browse by categories.
Clear Search
0
Test name added to cart!
Continue Shopping
View Cart
{{testName}}: {{price}} THB
Description: {{description}}
Name Alias: {{alias}}
Specimen: {{specimen}} | Turnaround Time: {{turnaround}}
Related Tests: {{relatedTests}}
{{categories}}
'); printWindow.document.write(''); printWindow.document.close(); printWindow.addEventListener('load', function() { setTimeout(function() { printWindow.print(); setTimeout(function() { printWindow.close(); }, 500); }, 500); }); }); }; LabDOSApp.copyCartAsBulletList = function() { if (!this.cart || this.cart.length === 0) { this.showAchievement('Пустая корзина', 'Пожалуйста, добавьте несколько тестов в корзину перед копированием.'); return; } const bulletList = this.formatCartAsBulletList(); const textarea = document.createElement('textarea'); textarea.value = bulletList; textarea.setAttribute('readonly', ''); textarea.style.position = 'absolute'; textarea.style.left = '-9999px'; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); this.showAchievement('Скопировано в буфер обмена!', 'Элементы корзины скопированы в формате маркированного списка.'); }; LabDOSApp.printCart = function() { if (!this.cart || this.cart.length === 0) { this.showAchievement('Пустая корзина', 'Пожалуйста, добавьте несколько тестов в корзину перед печатью.'); return; } this.showPrintPopup(); }; LabDOSApp.addCartIcons = function() { if ($('#cart-action-icons').length > 0) { return; } const isMobile = window.innerWidth < 768; const iconContainer = `
Распечатать
ОФОРМИТЬ ЗАКАЗ
Копировать список
`; $('#subtotal').parent().after(iconContainer); const self = this; // Привязка события печати (CSS скроет событие на мобильном устройстве) $('#print-cart-btn').on('click', function() { self.printCart.call(self); }); $('#copy-cart-btn').on('click', function() { self.copyCartAsBulletList.call(self); }); }; LabDOSApp.originalRenderCart = LabDOSApp.renderCart; LabDOSApp.renderCart = function(highlightItemName = null) { this.originalRenderCart.call(this, highlightItemName); this.addCartIcons.call(this); }; $(document).ready(function() { setTimeout(function() { if (LabDOSApp && typeof LabDOSApp.addCartIcons === 'function') { LabDOSApp.addCartIcons.call(LabDOSApp); } }, 1000); // Fresh: Toggle labdos-inview class and handle sticky search box (function(){ var rootEl = document.getElementById('lab-dos'); if (!rootEl) return; function setInView(inView){ document.body.classList.toggle('labdos-inview', !!inView); console.log('labdos-inview:', inView); // Debug } function recompute() { var rect = rootEl.getBoundingClientRect(); var vpH = window.innerHeight || document.documentElement.clientHeight; // Учитывать в поле зрения, если видна значительная часть #lab-dos var inView = rect.bottom > vpH * 0.2 && rect.top < vpH * 0.8; setInView(inView); } if ('IntersectionObserver' in window) { try { var io = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ setInView(entry.isIntersecting); }); }, { threshold: [0, 0.01], rootMargin: '0px 0px -30% 0px' }); io.observe(rootEl); } catch(e) { /* резервный вариант для проверки прокрутки */ } } $(window).on('scroll.labdos resize.labdos orientationchange.labdos', recompute); setTimeout(recompute, 100); })(); // Принудительное закрепление поля поиска на мобильных устройствах с помощью агрессивного подхода (function(){ console.log('Инициализация закрепленного поля поиска'); // Отладка var $searchBox = $('#lab-dos .search-box'); var $searchWrapper = $('#lab-dos .search-wrapper'); console.log('Найдено элементов:', $searchBox.length, $searchWrapper.length); // Отладка if (!$searchBox.length || !$searchWrapper.length) return; var stickyClone = null; var isStuck = false; function handleSticky() { var isMobile = window.innerWidth <= 991; if (!isMobile) { if (isStuck) unstickSearchBox(); return; } if (!document.body.classList.contains('labdos-inview')) { if (isStuck) unstickSearchBox(); return; } var searchRect = $searchBox[0].getBoundingClientRect(); var shouldStick = searchRect.top <= 60; console.log('Проверка на липкость:', { shouldStick, searchTop: searchRect.top, isStuck }); // Отладка if (shouldStick && !isStuck) { stickSearchBox(); } else if (!shouldStick && isStuck) { unstickSearchBox(); } } function stickSearchBox() { if (isStuck) return; isStuck = true; console.log('АКТИВАЦИЯ липкого поля поиска'); // Отладка // Создание простого липкого поля поиска в стиле якоря stickyClone = $('
'); stickyClone.html(`
Нажмите, чтобы найти результаты лабораторных анализов...
`); stickyClone.css({ position: 'fixed', top: '60px', left: '15px', right: '15px', height: '50px', zIndex: '99999', backgroundColor: 'rgba(255, 255, 255, 0.95)', backdropFilter: 'blur(15px)', webkitBackdropFilter: 'blur(15px)', border: '1px solid rgba(255, 76, 136, 0.2)', boxShadow: '0 8px 32px rgba(255, 76, 136, 0.15)', borderRadius: '16px', cursor: 'pointer', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#6a297a', fontSize: '16px', fontWeight: '500' }); // При нажатии прокрутить до исходного поля поиска и установить фокус stickyClone.on('click', function(){ $('html, body').animate({ scrollTop: Math.max(0, $searchBox.offset().top - 100) }, 400, function(){ $searchBox.find('#searchBox').focus(); }); }); $('body').append(stickyClone); // Добавить разделитель $searchWrapper.css('paddingTop', '70px'); } function unstickSearchBox() { if (!isStuck) return; isStuck = false; console.log('ДЕАКТИВАЦИЯ липкого поля поиска'); // Отладка, если (stickyClone) { stickyClone.remove(); stickyClone = null; } $searchWrapper.css('paddingTop', ''); } $(window).on('scroll.sticky resize.sticky orientationchange.sticky', handleSticky); setTimeout(handleSticky, 500); })(); // Инициализация видимости кнопки очистки (×) при загрузке страницы var $sb = $('#searchBox'); $sb.closest('.search-box').toggleClass('has-value', ($sb.val() || '').trim().length > 0); // Через 10 секунд переместите Gravity Form (id=3) в плейсхолдер и отобразите его. setTimeout(function() { var $placeholder = $('#gravityform-placeholder'); if (!$placeholder.length) return; var $gf = $('#gform_wrapper_3'); if (!$gf.length) { $gf = $('#gform_3').closest('.gform_wrapper'); } if (!$gf.length) { $gf = $('.gform_wrapper').filter(function(){ return $(this).find('#gform_3').length > 0; }).first(); } if ($gf.length) { $gf.hide(); $placeholder.append($gf); $gf.fadeIn(300); } }, 10000); // Ленивая загрузка API Google Maps только при взаимодействии пользователя с формой/разделом (function(){ var mapsSrc = null; var mapsInjected = false; function captureAndRemoveMapsScript() { if (window.google && window.google.maps) { mapsInjected = true; // Уже загружено return; } var $scripts = $('script[src*="maps.googleapis.com/maps/api/js"]'); if ($scripts.length) { mapsSrc = $scripts.eq(0).attr('src'); // Удаляем все соответствующие скрипты, чтобы предотвратить немедленную загрузку $scripts.remove(); } } function injectMapsScriptOnce() { if (mapsInjected) return; mapsInjected = true; if (!mapsSrc) return; var s = document.createElement('script'); s.src = mapsSrc; s.async = true; s.defer = true; document.head.appendChild(s); } // Пытаемся как можно быстрее перехватить теги скрипта captureAndRemoveMapsScript(); // Загрузка при взаимодействии с разделом оформления заказа или любым полем ввода внутри формы var interactionEvents = 'click focus touchstart change'; $(document).on(interactionEvents, '#checkout-section, #gform_wrapper_3, #gform_3, #gravityform-placeholder', function(){ injectMapsScriptOnce(); }); // Загрузка, когда раздел находится рядом с областью просмотра if ('IntersectionObserver' in window) { var observer = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ if (entry.isIntersecting) { injectMapsScriptOnce(); observer.disconnect(); } }); }, { rootMargin: '200px' }); var el = document.getElementById('checkout-section'); if (el) observer.observe(el); } })(); }); })(jQuery);