$(document).ready(function() {
/* rooms slider*/
if ($('.room-slider').length) {
$('.room-slider').each(function(){
parent = $(this).attr('id');
if ($('.room-slider__item', this).length) {
self = this;
$('.room-slider__item', this).each(function () {
$('.room-slider__thumbs', self).append('
');
});
$('.room-slider__list').slick({
lazyLoad: 'ondemand',
fade: true,
cssEase: 'linear',
asNavFor: '#' + parent + ' .room-slider__thumbs'
});
$('.room-slider__thumbs').slick({
arrows: true,
slidesToShow: 5,
slidesToScroll: 1,
asNavFor: '#' + parent + ' .room-slider__list',
focusOnSelect: true,
centerMode: true
});
}
});
}
/* Другие номера */
if($('.other-rooms__content').length) {
$('.other-rooms__content').slick({
dots: false,
infinite: true,
autoplay: false,
arrows: true,
margin: 20,
speed: 500,
autoplaySpeed: 4000,
cssEase: 'linear',
/*lazyLoad: 'ondemand',
slidesToShow: 1,
fade: true,
*/
slidesToShow: 4,
slidesToScroll: 1,
responsive: [
{
breakpoint: 1100,
settings: { slidesToShow: 4 }
},
{
breakpoint: 768,
settings: { slidesToShow: 2 }
}
]
});
}
/* /Другие номера */
/*Бассйен */
/*$('.poll_img:first').clone().addClass('clone').appendTo('.pool__right');*/
$('.poll_img').click(function(){
var image = ($(this).attr('src'));
console.log(image);
/* $('.poll_img-big').css('background-image',"url('+image+')");*/
$('.poll_img-big').css('background-image', 'url(' + image + ')');
/* $('.poll_img-big').attr('src',$(this).attr('src'));*/
/* $('.clone').hide();*/
});
});
/*Контакты на главной*/
$('.header__contacts-link').on('click', function(){
$('.overlay').show();
$('.contact__popup').fadeIn(1000);
});
$('.popup-close').on('click', function(){
$('.overlay').hide();
$('.contact__popup').fadeOut(1000);
});
$('.overlay').on('click', function(){
$('.overlay').hide();
$('.contact__popup').fadeOut(1000);
});
/*$(function(){
$(".rooms__wrapper").on("click", ".rooms__menu li a", function(){
var tabs = $(".rooms__menu li a"),
cont = $(".room__item");
// Удаляем классы active
tabs.removeClass("active");
cont.removeClass("active");
// Добавляем классы active
$(this).addClass("active");
cont.eq($(this).index()).addClass("active");
return false;
});
});*/
/*function placeFooter() {
var fh = $('footer.footer').outerHeight();
$('.wrapper').css('paddingBottom', fh);
}
$(window).resize(function(event) {
placeFooter();
});*/
$(document).ready(function(){
/* placeFooter();*/
$.mobilePanel({'navbar':'.nav-top'});
$('.nav-top__arrow').on('click', function(){
$(this).next('ul').slideToggle();
$(this).toggleClass('fa-rotate-180');
});
$('img[data-lazy]').each(function(){
$(this).attr('src',$(this).data('lazy'));
});
//сменя языка
setLangIcon()
$('.btn-more_lang').on('click',function(){
$('#langSwitch').slideToggle();
})
$('#langSwitch .item').on('click',function(){
$('#langSwitch').slideUp()
})
//фильтр по классу номера
$('.reservation-filter__room-type').on('click',function(e){
var target = $(e.target );
// target.toggleClass('active').siblings().removeClass('active');
target.toggleClass('active');
$('.reservation__item').addClass('hidden-grade');
$(this).find('button').each(function(){
var grade = $(this).attr('id')
if (target.hasClass('active') ) {
$('[data-grade="'+grade+'"]').removeClass('hidden-grade');
};
})
if ( !$('.reservation-filter__room-type button').hasClass('active') ) {
$('[data-grade]').removeClass('hidden-grade')
this.removeClass('active');
}
});
//табсы галлереи
$('.Gallery-tabs').on('click',function(e){
var target = $( e.target );
target.addClass('active').siblings().removeClass('active')
$(this).find('button').each(function(){
var id = $(this).data('tabId')
if ( $(this).hasClass('active') ) {
$('#'+id+'').removeClass('hidden').siblings().addClass('hidden')
}
})
});
$('.btn-down').on('click',function(){
var next_block=$(this).parents('section').next()
$('html, body').stop().animate({
scrollTop: $( next_block ).offset().top
}, 777);
return false;
})
});
if (typeof($().slick) != 'undefined') {
$('.reviews__slider .reviews__list').slick({
dots: true,
infinite: true,
autoplay: true,
arrows: false,
speed: 500,
autoplaySpeed:500000,
fade: true,
cssEase: 'linear',
slidesToShow: 1,
slidesToScroll: 1
});
}
//развернуть фото в галерее
$('.gallery__more-link').on('click', function(){
var gallery=$(this).parents('.b-gallery').find('.gallery__item');
if($(this).hasClass('on')){
$(this).removeClass('on');
$(this).text('Показать все фото');
toggleGallery(gallery);
} else {
$(this).addClass('on');
$(this).text('Свернуть фото');
toggleGallery(gallery);
}
$(this).next().toggleClass('fa-chevron-down');
$(this).next().toggleClass('fa-chevron-up');
});
function toggleGallery(gallery){
gallery.each(function(i){
if(i>3){
if( $(this).is(':visible') ) {
$(this).slideUp(300);
} else {
$(this).slideDown(300);
}
}
});
}
//Sticky menu
var navTop = document.querySelector('.nav-top');
function onScroll(e) {
var origOffsetY = $('.page__header').offset().top + $('.page__header').outerHeight()+50;
if (window.scrollY > origOffsetY && window.innerWidth > 768) {
$('.page__header').css({paddingBottom:+$(navTop).outerHeight()+'px'});
navTop.classList.add('sticky');
} else {
$('.page__header').css({paddingBottom:''});
navTop.classList.remove('sticky');
}
}
document.addEventListener('scroll', onScroll);
window.addEventListener('resize', onScroll);
function stickyReservationForm() {
if(window.innerWidth>768){
var ts = 56;
$('.order-module .reservation__bg').sticky({topSpacing:ts});
$('.reservation-filter:not(.room-filter)').sticky({topSpacing:ts})
} else {
$('.order-module .reservation__bg').unstick();
$('.reservation-filter:not(.room-filter)').unstick();
}
}
stickyReservationForm();
$(window).resize(function(){
stickyReservationForm();
});
// Заказать
$('body').on('click', '.rooms__button.order', function(event) {
var title = $(event.target).data('title');
if (typeof(title) != 'undefined') {
$('#orderForm .roomTitle').html(''+title+'
');
$('#orderForm [name=room]').val(title);
}
else {
$('#orderForm .roomTitle').html('');
$('#orderForm [name=room]').val('');
}
$.fancybox.open({
src: '#orderForm'
},{
baseClass : 'popup',
closeTpl:'×
',
});
});
$('.callbackBtn').click(function(event) {
if ($('#callbackForm').length == 0) {
$('body').append('');
$.ajax({
url: '/callbackform',
}).always(function(data) {
$('#callbackFormCont').html(data);
$.fancybox.open({src:'#callbackForm'},{
baseClass : 'popup',
closeTpl:'×
',
});
$('#callbackForm [name=t]').mask("+7 (999) 999-9999");
$('#callbackForm [name=phone]').val(dForm);
standardFormSending('#callbackForm');
});
} else {
$.fancybox.open({src:'#callbackForm'},{
baseClass : 'popup',
closeTpl:'×
',
});
}
});
$('#langSwitch .item').not('#gTranslate').click(function(event) {
var c = '/ru/'+$(this).data('lang');
$.cookie.raw = true;
$.cookie('googtrans', c, { expires: 7, path: '/'});
var d = location.host.split('.');
if (d.length == 3) {
d.shift();
$.cookie('googtrans', c, { expires: 7, path: '/', domain: '.'+d[0]+'.'+d[1] });
}
location.reload();
console.log($.cookie('googtrans'))
});
$('#gTranslate').click(function(event) {
$(document.getElementById(':0.targetLanguage')).trigger('click');
$('#current-lang').attr('class','')
});
//устанвливает иконку языка в шапке
function setLangIcon() {
var googtrans = $.cookie('googtrans');
if (googtrans) {
var lang_class = googtrans.split('/')[2] // текущий язык из cookie
$('#current-lang').attr('class','').addClass(lang_class)
}
}
/* Формы */
var dForm = Math.floor((new Date()).getTime() / 1000);
$(document).ready(function() {
$('.b-form [name=t]').each(function(index, el) { $(this).mask("+7 (999) 999-9999"); });
$('.b-form [name=phone]').each(function(index, el) { $(this).val(dForm); });
standardFormSending('.b-form.form--quick-order');
standardFormSending('.b-form.form--feedback');
standardFormSending('#orderForm');
standardFormSending('.b-form.js-reservation__form-order');
});
// Обычный сценарий проверки и отправки
function standardFormSending(el) {
$(el).each(function(i, e) {
$(e).submit(function(event){
event.preventDefault();
var form = $(this);
if (checkFields(form)) {
sendForm(form);
}
});
});
}
function checkFields(form) {
var check = true;
// обнуляем
$(form).find('input,select,textarea').removeClass('error');
$(form).find('.form__msg').hide().html('').removeClass('error').removeClass('success');
// необходимые поля
$(form).find('.required').each(function(index, el) {
if ($(this).attr('type') == 'checkbox' && !$(this).is(':checked')) {
$(this).parent().addClass('error');
check = false;
} else if ($(this).val() == '') {
check = false;
}
if (!check) {
$(this).addClass('error');
$(this).on('change keyup', function(e){
$(e.target).removeClass('error');
if ($(this).attr('type') == 'checkbox')
$(this).parent().removeClass('error');
if ($(e.target).closest('form').find('.error').length==1) { // 1 error у самого сообщения
$('.form__msg').html('').removeClass('error');
}
});
}
});
if (!check)
addFormMsg(form,'Заполните необходимые поля');
// E-mail
var mailEl = $(form).find('[name=email]');
if (mailEl.length > 0) {
if (!validateEmail(mailEl.val())) {
check = false;
mailEl.addClass('error');
addFormMsg(form,'Неверный формат E-mail');
}
}
return check;
}
function addFormMsg(form, msg, success) {
var msgEl = $(form).find('.form__msg');
if (msgEl.length == 0)
return false;
if (success)
msgEl.addClass('success').removeClass('error');
else
msgEl.addClass('error').removeClass('success');
msgEl.append(''+msg+'
');
msgEl.show();
}
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
// Обработка данных перед отправкой
function handleForm(form) {}
function sendForm(form,data=false) {
var submitButton = form.find('[type="submit"]');
submitButton.prop("disabled", true);
setTimeout(function() {
submitButton.prop("disabled", false);
}, 5000);
if (data!==false)
data += form.serialize();
else
var data = form.serialize();
data += '&page_id='+page_id+'&pagetitle='+pagetitle;
$.ajax({
url: '/ajax.php',
type: 'POST',
data: data,
})
.done(function(answer) {
if (answer.status == 'success') {
if (answer == 'true') {
addFormMsg(form,'Обновите страницу');
return true;
}
form.children('div,label').not('.form__msg, .close').hide();
setTimeout(function(){
form.children('div,label').not('.form__msg').fadeIn('fast');
},5000);
if (answer.msg)
addFormMsg(form,answer.msg, true);
else
addFormMsg(form,'Сообщение успешно отправлено!', true);
if ($.fancybox.getInstance() != false && $.fancybox.getInstance().opts.baseClass == 'popup')
setTimeout(function(){ $.fancybox.getInstance().close(); }, 4000);
} else {
if (answer.msg)
addFormMsg(form,answer.msg);
else
addFormMsg(form,'Ошибка на сервере. Пожалуйста, свяжитесь с нами по телефону или через E-mail');
}
})
.fail(function() {
alert('Ошибка связи с сервером. Пожалуйста, свяжитесь с нами по телефону или через E-mail');
});
}
$(document).ready(function() {
$('.open-order-form').click(function(e){
roomOrder.setFormData($(this).parents('.reservation__item').attr('data-id'));
$.fancybox.open( {src:'#popup-reserv'}, {
baseClass : 'popup',
closeTpl:'×',
});
});
$('.close__form-order').click(function(e){
parent = $(this).parent();
form = $(parent).find('.reservation__form-order');
$(form.prevObject[0]).removeClass('open-form');
$(form.prevObject[0]).fadeOut();
$(this).parent().parent().find('.reservation__description').css({"opacity":1});
});
});
function declOfNum(number, titles)
{
cases = [2, 0, 1, 1, 1, 2];
return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
$(document).ready(function() {
// Номера и цены - иконки гостей
$('.reservation__cost').on('click','[data-icon-people]',function(e){
var el = $(e.target),
count = el.index()+1;
// переключатель
el.add(el.siblings()).removeClass("active-people").slice(0,count).addClass("active-people");
// текстовое представление
$(this).closest('.reservation__cost-info').siblings('.reservation__prefix').find('.selected__val').html(count+' '+declOfNum(count, ['гость','гостя','гостей']));
// Калькулятор
$(this).parents('.reservation__item').attr('data-peoples', count);
roomOrder.calculateAllRooms();
});
$(".selected__val").click(function(e){
$(".selected__val").not($(this)).parent().find('.selected__list').removeClass('open-list').fadeOut();
list = $(this).parent().find('.selected__list');
if($(list).hasClass('open-list')){
$(list).removeClass('open-list');
$(list).fadeOut();
}else{
$(list).addClass('open-list');
$(list).fadeIn();
}
});
// Номера и цены
$(".selected__item").click(function(e){
container = $(this).parent().siblings('.selected__val');
peopleIcons = $(this).closest('.reservation__prefix').siblings('.reservation__cost-info').find('[data-icon-people]');
val = e.target.innerHTML;
count = $(this).attr('data-count');
peopleIcons.removeClass('active-people').slice(0,count).addClass('active-people');
$(container).html(val);
$(this).parents('.reservation__item').attr('data-peoples', count);
$(this).parent().removeClass('open-list');
$(this).parent().fadeOut();
roomOrder.calculateAllRooms();
});
$('#reservation-btn').click(function(e){
setGuests();
$('.reservation-filter__guests-box').removeClass('op')
$('.guests-box__select').slideUp();
});
//подсчитывает количесвто гостей в фильтре
function getSumGuests() {
rc_adults = parseInt($('.select-box[data-name=adults]').data('value'));
rc_child1 = parseInt($('.select-box[data-name=child1]').data('value'));
rc_child1 = isNaN(rc_child1)?0:rc_child1;
rc_child2 = parseInt($('.select-box[data-name=child2]').data('value'));
rc_child2 = isNaN(rc_child2)?0:rc_child2;
rc_guests = rc_adults + rc_child2+rc_child1;
return rc_guests;
}
//возвращает false если количество гостей в фильтре больше макс количесвто гостей в номере
function checkNumGuests(){
var current_guests = getSumGuests()
var max_guests = $("[data-max-guests]").data('maxGuests')
if (current_guests >= max_guests && (typeof max_guests !== "undefined")) {
return false;
} else {
return true
}
}
function setGuests() {
rc_adults = parseInt($('.select-box[data-name=adults]').data('value'));
rc_child1 = parseInt($('.select-box[data-name=child1]').data('value'));
rc_child1 = isNaN(rc_child1)?0:rc_child1;
rc_child2 = parseInt($('.select-box[data-name=child2]').data('value'));
rc_child2 = isNaN(rc_child2)?0:rc_child2;
rc_guests = rc_adults;
var child_num = rc_child1+rc_child2;
//console.log( rc_child1 + '+' + rc_child2 + "=" + child_num )
var child_text ="";
if (child_num == 0) {
child_text = " нет детей"
child_num = ""
} else if (child_num == 1) {
child_text = " ребенок"
} else if (child_num < 5) {
child_text = " ребенка"
} else {
child_text = " детей"
}
//console.log( rc_child1 + '+' + rc_child2 + "=" + child_num )
$('.guests-number__child').text(child_num+' ' + child_text);
$('.guests-number__adults').text(rc_adults+' взрослых');
$.cookie('rc_adults', rc_adults, { expires: 1, path: '/' });
if (!isNaN(rc_child1)) {
rc_guests+=rc_child1;
$.cookie('rc_child1', rc_child1, { expires: 1, path: '/' });
} else rc_child1 = 0;
if (!isNaN(rc_child2)) {
rc_guests+=rc_child2;
$.cookie('rc_child2', rc_child2, { expires: 1, path: '/' });
} else rc_child2 = 0;
$.cookie('rc_guests', rc_guests, { expires: 1, path: '/' });
// $('.reservation__cost').each(function(){
// $(this).find('.reservation__prefix .selected__val').html(rc_guests+' '+declOfNum(rc_guests, ['гость','гостя','гостей'])); // текстовое представление
// $(this).find('[data-icon-people]').removeClass("active-people").slice(0,rc_guests).addClass("active-people"); // графическое
// // $(this).closest('.reservation__item').attr('data-peoples', guests); // информация карточки
// });
roomOrder.calculateAllRooms(); // Калькулятор
}
// Номера и цены----->увеличить/уменьшить количество гостей
$('.guests-minus').click(function () {
var div = $(this).parent().find('.select-box__item');
var count = parseInt(div.text()) - 1;
var min_count = $(this).data('minCount')
count = count < min_count ? min_count : count;
div.text(count);
$(this).parent().data('value',count).attr('data-value', count);
$('.guests-plus').removeClass('disabled');
setGuests();
return false;
});
$('.guests-plus').click(function () {
var div = $(this).parent().find('.select-box__item');
var count = parseInt(div.text()) + 1;
var max_count = $(this).data('maxCount')
count = count > max_count ? max_count : count;
if (!checkNumGuests()) {
return false;
} else {
$('.guests-plus').removeClass('disabled');
div.text(count);
$(this).parent().data('value',count).attr('data-value', count);
setGuests();
if (!checkNumGuests()) {
$('.guests-plus').addClass('disabled');
}
}
return false;
});
$('#guests-label').on('click',function(e){
$(this).parent().toggleClass('op');
$('#guests-select').slideToggle();
})
function getDateByTimeZone(offset) {
var d = new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var nd = new Date(utc + (3600000*offset));
return nd;
}
var minDate = moment(getDateByTimeZone(5)).format('DD.MM.YYYY');
$('.date-pic, .calendars-ico, .date-form').daterangepicker({
"autoApply": true,
"locale": {
"format": "DD.MM.YYYY",
"separator": " - ",
"applyLabel": "Apply",
"cancelLabel": "Cancel",
"fromLabel": "From",
"toLabel": "To",
"customRangeLabel": "Custom",
"weekLabel": "W",
"daysOfWeek": [
"ВС",
"ПН",
"ВТ",
"СР",
"ЧТ",
"ПТ",
"СБ"
],
"monthNames": [
"Январь",
"Февраль",
"Март",
"Апрель",
"Май",
"Июнь",
"Июль",
"Август",
"Сентябрь",
"Октябрь",
"Ноябрь",
"Декабрь"
],
"firstDay": 1
},
"linkedCalendars": false,
"alwaysShowCalendars": true,
"startDate": minDate,
"endDate": moment(getDateByTimeZone(5)).add(1,'days').format('DD.MM.YYYY'),
"minDate": minDate,
}, function(start, end, label) {
a = moment(start._d);//moment(moment(start._d).format(' DD.MM.YYYY '));
b = moment(end._d);//moment(moment(end._d).format(' DD.MM.YYYY '));
day = parseInt(b.diff(a, 'days'));
$('[data-count-days]').html(day+' '+declOfNum(day, ['ночь','ночи','ночей']));
$('.price-val').each(function( i, index ){
price = $(index).html();
price = price.replace(/\s/g, '');
price = parseInt(price);
newPrice = day*price;
$(index).html(newPrice);
});
}).on('apply.daterangepicker', function(ev, picker) {
$.cookie('startDate', picker.startDate.format('DD.MM.YYYY'), { expires: 1, path: '/' });
$.cookie('endDate', picker.endDate.format('DD.MM.YYYY'), { expires: 1, path: '/' });
console.log($.cookie('startDate')+"/"+ $.cookie('endDate'))
setRoomCalendar(picker);
});
if ($.cookie('startDate') && $.cookie('endDate')) {
$('.date-pic, .calendars-ico, .date-form').data('daterangepicker').setStartDate($.cookie('startDate'));
$('.date-pic, .calendars-ico, .date-form').data('daterangepicker').setEndDate($.cookie('endDate'));
}
setRoomCalendar($('.date-pic, .calendars-ico, .date-form'));
function setRoomCalendar(picker){
if (typeof(picker.startDate) == 'undefined') {
picker=picker.data('daterangepicker');
}
if ($('.reservation__item .divCalendar').length > 0) {
var now = moment(picker.startDate.format('YYYY-MM-DD')),
end = moment(picker.endDate.format('YYYY-MM-DD')),
duration = moment.duration(end.diff(now)),
days = duration.asDays(),
cellS = $('.divCalendar [data-date="'+picker.startDate.format('YYYY-M-D')+'"]');
$('.divCalendar .date').removeClass('selected');
if (cellS) {
cellS.each(function(){
$(this).nextAll('.date').addBack().slice(0,days).addClass('selected');
});
}
}
}
});