Files
hotel777/public/scripts.js
2026-05-03 12:31:01 +05:00

336 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Глобальные переводы (расширены для location, about и фактов о городах)
window.translations = {
ru: {
nav_about: "О нас",
nav_food: "Кухня",
nav_location: "Где мы",
nav_booking: "Бронь",
hero_title: "Добро пожаловать",
hero_subtitle: "Ваш идеальный отдых на берегу Черного моря",
hero_btn: "Забронировать номер",
about_title: "Море в шаговой доступности",
about_subtitle: "Бескрайние пляжи Гудауты",
about_text: "Наш отель расположен в живописном селе Мгудзырхуа. Мы предлагаем комфортные номера и прямой выход к широкому, чистому галечно-песчаному пляжу.",
about_extra: "Гудаутский район известен как «Золотой берег Абхазии» здесь самые широкие пляжи, прогретое море и уникальный микроклимат, сочетающий горный и морской воздух.",
fact1: "🏝️ Золотой берег Абхазии",
fact2: "🌡️ Температура моря до +28°C летом",
fact3: "⛰️ Чистейший воздух у подножия Кавказа",
fact4: "🍇 Собственные виноградники и вино",
food_title: "Вкус Абхазии",
food_subtitle: "Домашняя кухня из местных продуктов",
food_text: "Почувствуйте гостеприимство! Свежайший сыр сулугуни, мамалыга, овощи с грядки и домашнее вино.",
loc_title: "Удобное расположение",
book_title: "Забронировать отдых",
label_name: "Ваше имя",
label_phone: "Номер телефона",
ph_name: "Иван Иванов",
fz152: "Согласие на обработку данных (152-ФЗ)",
book_btn: "Отправить заявку",
footer_text: "© 2026 Hotel 777. Абхазия, Мгудзырхуа.",
cookie_text: "Мы используем файлы cookie для улучшения работы сайта.",
cookie_btn: "Согласен",
alert_msg: "Спасибо! Ваша заявка принята.",
loc_address_label: "Наш Адрес:",
loc_coords_label: "Координаты:",
loc_show_map: "Показать карту",
loc_city_sukhum: "Сухум",
loc_city_ochamchyra: "Очамчыра",
loc_city_tkvarcheli: "Ткуарчал",
loc_city_gal: "Гал",
loc_city_new_athos: "Новый Афон",
loc_city_primorsk: "Приморск",
loc_city_gudauta: "Гудаута",
loc_km: "км",
// Факты о городах (русский)
loc_facts_sukhum: [
"🏛️ Один из древнейших городов мира, основан в VI веке до н.э.",
"🌿 Ботанический сад — один из старейших на Кавказе (основан в 1838 году).",
"🐬 Летом можно наблюдать дельфинов прямо у набережной."
],
loc_facts_ochamchyra: [
"🌊 Известен своим широким пляжем и чистой водой.",
"🏚️ В окрестностях находятся руины древнего храма.",
"🍊 Славится цитрусовыми садами."
],
loc_facts_tkvarcheli: [
"⛰️ Город расположен в живописном ущелье, окружён горами.",
"🚂 Железнодорожная станция на живописной ветке.",
"💧 Рядом находятся уникальные горные озёра."
],
loc_facts_gal: [
"🌾 Важный сельскохозяйственный центр Абхазии.",
"🍈 Знаменит дынями и арбузами, выращиваемыми в регионе.",
"🏛️ Имеет богатую историю, связанную с мегрельской культурой."
],
loc_facts_new_athos: [
"⛪ Знаменит Новоафонским монастырём (XIX век).",
"🕯️ Экскурсия в пещеру — одно из самых ярких впечатлений.",
"🚞 Работает канатная дорога к монастырю."
],
loc_facts_primorsk: [
"🌅 Уютный посёлок с отличными пляжами.",
"🏞️ Близость к Пицундскому заповеднику.",
"🍷 В окрестностях производят домашнее вино."
],
loc_facts_gudauta: [
"🎖️ Город воинской славы, родина многих героев.",
"🏖️ Широкие галечные пляжи — одни из лучших в Абхазии.",
"🍇 Традиционные виноградники и знаменитые сорта винограда."
],
loc_facts_default: "✨ Удивительные места ждут вас!"
},
en: {
nav_about: "About Us",
nav_food: "Cuisine",
nav_location: "Where We Are",
nav_booking: "Booking",
hero_title: "Welcome",
hero_subtitle: "Your perfect getaway on the Black Sea coast",
hero_btn: "Book a room",
about_title: "Sea within walking distance",
about_subtitle: "Endless beaches of Gudauta",
about_text: "Our hotel is located in the picturesque village of Mgudzyrkhua. We offer comfortable rooms and direct access to the wide, clean pebble-sand beach.",
about_extra: "The Gudauta district is known as the 'Golden Beach of Abkhazia' the widest beaches, warm sea, and a unique microclimate combining mountain and sea air.",
fact1: "🏝️ Golden Beach of Abkhazia",
fact2: "🌡️ Sea temperature up to +28°C in summer",
fact3: "⛰️ Cleanest air at the foot of the Caucasus",
fact4: "🍇 Own vineyards and wine",
food_title: "Taste of Abkhazia",
food_subtitle: "Homemade cuisine from local ingredients",
food_text: "Feel the hospitality! Suluguni cheese, mamalyga, garden vegetables, and homemade wine.",
loc_title: "Convenient location",
book_title: "Book your holiday",
label_name: "Your name",
label_phone: "Phone number",
ph_name: "Ivan Ivanov",
fz152: "Consent to data processing (152-FZ RF)",
book_btn: "Send request",
footer_text: "© 2026 Hotel 777. Abkhazia, Mgudzyrkhua.",
cookie_text: "We use cookies to improve the website.",
cookie_btn: "Agree",
alert_msg: "Thank you! Your request has been accepted.",
loc_address_label: "Our Address:",
loc_coords_label: "Coordinates:",
loc_show_map: "Show map",
loc_city_sukhum: "Sukhum",
loc_city_ochamchyra: "Ochamchira",
loc_city_tkvarcheli: "Tkvarcheli",
loc_city_gal: "Gal",
loc_city_new_athos: "New Athos",
loc_city_primorsk: "Primorsk",
loc_city_gudauta: "Gudauta",
loc_km: "km",
// Facts about cities (English)
loc_facts_sukhum: [
"🏛️ One of the oldest cities in the world, founded in the 6th century BC.",
"🌿 Botanical Garden one of the oldest in the Caucasus (founded 1838).",
"🐬 Dolphins can be seen near the embankment in summer."
],
loc_facts_ochamchyra: [
"🌊 Known for its wide beach and clear water.",
"🏚️ Ruins of an ancient temple are nearby.",
"🍊 Famous for citrus groves."
],
loc_facts_tkvarcheli: [
"⛰️ The city is located in a picturesque gorge, surrounded by mountains.",
"🚂 Railway station on a scenic branch.",
"💧 Unique mountain lakes are nearby."
],
loc_facts_gal: [
"🌾 An important agricultural center of Abkhazia.",
"🍈 Famous for melons and watermelons grown in the region.",
"🏛️ Has a rich history related to Mingrelian culture."
],
loc_facts_new_athos: [
"⛪ Famous for the New Athos Monastery (19th century).",
"🕯️ A tour of the cave is one of the most vivid experiences.",
"🚞 A cable car runs to the monastery."
],
loc_facts_primorsk: [
"🌅 A cozy town with excellent beaches.",
"🏞️ Close to the Pitsunda Nature Reserve.",
"🍷 Homemade wine is produced in the area."
],
loc_facts_gudauta: [
"🎖️ City of military glory, birthplace of many heroes.",
"🏖️ Wide pebble beaches some of the best in Abkhazia.",
"🍇 Traditional vineyards and famous grape varieties."
],
loc_facts_default: "✨ Amazing places are waiting for you!"
},
ab: {
nav_about: "Ҳара ҳхәыҷра",
nav_food: "Аџьа",
nav_location: "Ҳара иҟоу",
nav_booking: "Аҭагалара",
hero_title: "Бзиала шәаабеит",
hero_subtitle: "Амшын Еиқәа аԥшазы уара уидеалтә уахыҧсыра",
hero_btn: "Аҭаӡара аҭагалатә",
about_title: "Амшын ашьапыла ихьчо",
about_subtitle: "Гәдоуҭа иаҵәаку аҧшаҳәақәа",
about_text: "Ҳара ахәҭа ҳҟоуп агәаҟаратә ақыҭа Мгудзырхуа. Ҳара ҳааҭауеит комфорттә аҭаӡарақәа нас амшын аҟныҵла аҩаӡара.",
about_extra: "Гәдоуҭа араион иҭоуҳәоуп «Аԥсны Аџьа аԥша» ҳәа абар аҧшаҳәақәа иреиҳау, амшын аҵаԥхьа ишәоит +28°C, уи аҭыԥ амикроклимат ҳаирҭоит ашьха нас амшын.",
fact1: "🏝️ Аԥсны Аџьа аԥша",
fact2: "🌡️ Амшын аҵаԥхьа +28°C аҟынӡа",
fact3: "⛰️ Акавказ аҵаҟа иҟоу аҵхыҵ",
fact4: "🍇 Ҳара авиноградникқәа нас авин",
food_title: "Аԥсны аҵәа",
food_subtitle: "Аџьа ҭаацәарантәи аҭыԥтә афасаҟәақәа рыла",
food_text: "Ашьааҭра шәаазыр! Ибжьа асулугуни, абаста, аҵиаа ҵаҟатәи нас аҭаацәарантәи аҵаа.",
loc_title: "Каратә аҭыԥкаара",
book_title: "Ахыҧсыра аҭагалара",
label_name: "Шәхы",
label_phone: "Ателефон аномер",
ph_name: "Иван Иванов",
fz152: "Аинформациа аҟаҵаразы аиҭаҵра (152-ФЗ РФ)",
book_btn: "Азаявка аҭаҭатә",
footer_text: "© 2026 Hotel 777. Аԥсны, Мгудзырхуа.",
cookie_text: "Ҳара асаит аҟаҵара аҵәаҵәаразы cookie-файлқәа ҳхылаҩуеит.",
cookie_btn: "Аиҭаҵра",
alert_msg: "Иҭабуп! Шәзаявка алырҵеит.",
loc_address_label: "Ҳара адрес:",
loc_coords_label: "Акоординатқәа:",
loc_show_map: "Ахәаҧшра карта",
loc_city_sukhum: "Аҟәа",
loc_city_ochamchyra: "Очамчыра",
loc_city_tkvarcheli: "Тҟәарчал",
loc_city_gal: "Гал",
loc_city_new_athos: "Афон Ҿыц",
loc_city_primorsk: "Приморск",
loc_city_gudauta: "Гәдоуҭа",
loc_km: "км",
// Факты об городах на абхазском (упрощённо, для демонстрации)
loc_facts_sukhum: [
"🏛️ Адунеи аиҳабылакьықәа руакы, VI ашәышықәса рахь нҵа иҟоуп.",
"🌿 Аботаникатә сад — Акавказ аиҳабылакьықәа руакы (1838 ш.).",
"🐬 Амшын аҟынӡа дельфинқәа аԥсабарала уаԥхьоит."
],
loc_facts_ochamchyra: [
"🌊 Иҭоуҳәоуп иаау аҧшаҳәаҟынтәи ласа аҵакыра.",
"🏚️ Иҝеиԥшу аҩныҵҟатәи ацқьатә уахәама иҟоуп.",
"🍊 Ацитрусқәа рҵаҵәра рымоуп."
],
loc_facts_tkvarcheli: [
"⛰️ Ақалақь ашьхақәа рыкәтә аҟны иҟоуп.",
"🚂 Ацәахаҵатә аиаша аҟны астанциа.",
"💧 Ихадоу ашьхатә иоу аӡиқәа ҷыдала иҟоуп."
],
loc_facts_gal: [
"🌾 Аԥсны аҳәынҭқарратә аԥштәыҩсатә центр.",
"🍈 Иҭоуҳәоуп аҵәа, арбузқәа.",
"🏛️ Амингрел ҳәынҭқарратә культура (америкатәи америкаҭтәи америкатәи америкаҭ) иааҵанакуеит."
],
loc_facts_new_athos: [
"⛪ Иҭоуҳәоуп Афон Ҵыцтәи ауахәама (XIX ашә.).",
"🕯️ Ацқьатә хьаҧсаҟны аиҭаҵра — аиҳабылакьықәа руакы.",
"🚞 Ауахәамаҟны аканат аҩра ұсуеит."
],
loc_facts_primorsk: [
"🌅 Амшын аԥшазы ухыҧсыразы ҷыдатә ақыҭа.",
"🏞️ Пицундатә заповедник аҟынтәи аҩаӡара.",
"🍷 Аҭыҧ аҟны аҭаацәарантәи аҵаа аҟаҵоуп."
],
loc_facts_gudauta: [
"🎖️ Аиааира аиҭаҵра ақалақь, аиааираҭҵаақәа рҭаацәара.",
"🏖️ Иаау аҧшаҳәақәа — Аԥсны аиҳабылакьықәа руакы.",
"🍇 Аҭыԥтәи авиноградникқәа нас иҭоуҳәоу авин асортқәа."
],
loc_facts_default: "✨ Амилакьатә аҭыԥқәа шәаажәлар!"
}
};
// Функция закрытия модального окна (глобальная, используется также в location.js)
window.closeModal = function() {
const modal = document.getElementById('cityModal');
if (modal) modal.style.display = 'none';
};
// Принятие куки
window.acceptCookies = function() {
localStorage.setItem('cookiesAccepted', 'true');
const banner = document.getElementById('cookieBanner');
if (banner) banner.classList.remove('show');
};
document.addEventListener("DOMContentLoaded", () => {
// Циклическая смена фона Hero
const hero = document.querySelector('.hero');
const images = ['img/h777.webp', 'img/h777o.webp', 'img/h777l.webp', 'img/h777z.webp'];
let currentImg = 0;
const setHeroBackground = () => {
const img = new Image();
img.src = images[currentImg];
img.onload = () => {
hero.style.backgroundImage = `linear-gradient(rgba(0,0,0,0.6), rgba(0,0,0,0.6)), url('${img.src}')`;
};
};
setHeroBackground();
setInterval(() => {
currentImg = (currentImg + 1) % images.length;
setHeroBackground();
}, 15000);
// Локализация основных элементов (с data-i18n)
const langSelect = document.getElementById('langSwitch');
let currentLang = localStorage.getItem('siteLang') || 'ru';
const updateText = (lang) => {
// Обновляем элементы с data-i18n
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.getAttribute('data-i18n');
if (window.translations[lang][key]) el.innerHTML = window.translations[lang][key];
});
// Обновляем плейсхолдеры
document.querySelectorAll('[data-i18n-ph]').forEach(el => {
const key = el.getAttribute('data-i18n-ph');
if (window.translations[lang][key]) el.placeholder = window.translations[lang][key];
});
localStorage.setItem('siteLang', lang);
// Вызываем обновление динамических секций, если функции определены
if (typeof window.updateLocationLanguage === 'function') {
window.updateLocationLanguage(lang);
}
if (typeof window.updateAboutLanguage === 'function') {
window.updateAboutLanguage(lang);
}
};
langSelect.value = currentLang;
updateText(currentLang);
langSelect.onchange = (e) => updateText(e.target.value);
// Cookie
if (!localStorage.getItem('cookiesAccepted')) {
setTimeout(() => document.getElementById('cookieBanner').classList.add('show'), 2000);
}
// Форма бронирования
const bookingForm = document.getElementById('bookingForm');
if (bookingForm) {
bookingForm.onsubmit = (e) => {
e.preventDefault();
alert(window.translations[localStorage.getItem('siteLang') || 'ru'].alert_msg);
};
}
// Анимации при скролле
const obs = new IntersectionObserver(entries => {
entries.forEach(en => { if (en.isIntersecting) en.target.style.animationPlayState = 'running'; });
});
document.querySelectorAll('.animate').forEach(el => {
el.style.animationPlayState = 'paused';
obs.observe(el);
});
// Модальное окно: закрытие по крестику и по клику на фон
const modal = document.getElementById('cityModal');
if (modal) {
const closeBtn = modal.querySelector('.modal-close');
if (closeBtn) closeBtn.addEventListener('click', window.closeModal);
modal.addEventListener('click', (e) => {
if (e.target === modal) window.closeModal();
});
}
});