$(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'); }); } } } });