Забронировать онлайн

Домашние питомцы
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Выберите даты

.booking-calendar { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; } #calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; margin-top: 15px; } .day-cell { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border: 1px solid #ddd; cursor: pointer; font-size: 14px; } .day-cell.available { background-color: #4caf50; color: white; } .day-cell.booked { background-color: #f44336; color: white; } .day-cell.unavailable { background-color: #bdbdbd; color: #666; } .day-cell:hover:not(.booked):not(.unavailable) { transform: scale(1.1); z-index: 10; } // Данные о ценах и занятости (можно получать через API) const prices = { balcony: 500, // BYN за ночь terrace: 550 }; const availability = { // Формат: 'YYYY-MM-DD': 'status' '2025-04-01': 'available', '2025-04-02': 'booked', '2025-04-03': 'unavailable', // ... остальные даты }; let selectedHouse = 'balcony'; // По умолчанию let checkIn = null; let checkOut = null; // Рендеринг календаря function renderCalendar() { const calendar = document.getElementById('calendar-grid'); calendar.innerHTML = ''; const today = new Date(); const currentMonth = today.getMonth(); const currentYear = today.getFullYear(); // Дни недели ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'].forEach(day => { const cell = document.createElement('div'); cell.style.fontWeight = 'bold'; cell.textContent = day; calendar.appendChild(cell); }); // Количество дней в месяце const daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate(); for (let day = 1; day <= daysInMonth; day++) { const date = new Date(currentYear, currentMonth, day); const dateKey = `${currentYear}-${String(currentMonth + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`; const cell = document.createElement('div'); cell.className ='day-cell'; cell.textContent = day; if (availability[dateKey] === 'booked') { cell.classList.add('booked'); cell.title = 'Занято'; } else if (availability[dateKey] === 'unavailable') { cell.classList.add('unavailable'); cell.title = 'Недоступно'; } else { cell.classList.add('available'); cell.addEventListener('click', () => selectDate(date)); } calendar.appendChild(cell); } } // Выбор даты function selectDate(date) { if (!checkIn) { checkIn = date; document.getElementById('check-in').textContent = formatDate(date); } else if (!checkOut && date > checkIn) { checkOut = date; document.getElementById('check-out').textContent = formatDate(date); calculateCost(); document.querySelector('.booking-details').style.display = 'block'; } else { // Сброс при повторном клике checkIn = date; checkOut = null; document.getElementById('check-in').textContent = formatDate(date); document.getElementById('check-out').textContent = ''; document.querySelector('.booking-details').style.display = 'none'; } } // Форматирование даты function formatDate(date) { return date.toLocaleDateString('ru-RU'); } // Расчёт стоимости function calculateCost() { const nights = Math.ceil((checkOut - checkIn) / (1000 * 60 * 60 * 24)); const pricePerNight = prices[selectedHouse]; const total = nights * pricePerNight; document.getElementById('nights-count').textContent = nights; document.getElementById('total-cost').textContent = total.toFixed(2); } // Генерация ссылки для ЕРИП (пример) function generateERIPLink() { // Здесь должна быть логика формирования ссылки (зависит от вашего провайдера ЕРИП) // Пример: const amount = parseFloat(document.getElementById('total-cost').textContent); const orderId = 'BR-' + Date.now(); // Уникальный ID заказа return `https://erip.example.com/pay?amount=${amount}&orderId=${orderId}`; } // Обработка кнопки оплаты document.getElementById('pay-button').addEventListener('click', () => { if (!checkIn || !checkOut) { alert('Выберите даты заезда и выезда!'); return; } const paymentLink = generateERIPLink(); window.open(paymentLink, '_blank'); }); // Инициализация window.onload = () => { renderCalendar(); document.getElementById('selected-house').textContent = selectedHouse === 'balcony' ? 'Дом с балконом' : 'Дом с террасой'; };
Баня на дровах
Зарядка для авто
Онлайн бронирование
Что посмотреть рядом

Позвонить или написать

Написать и посмотреть

Мы на карте

Контакты


Новая философия отдыха