/*
Хранилищие функций для scripts.js (применяются на всем сайте)
*/
(function() {
window.SVK = window.SVK || {};
var w = $(window),
body = $('body');
SVK.$w = $(window);
SVK.$b = $('body');
/**
* SVK.tabs - реализует переключение табов
* @param item - родительский элемент табов
*
* @example
* SVK.tabs('.tabs');
*
*/
SVK.tabs = function(item) {
if ($(item).length == 0){
return
}
setTimeout(function(){
$(item).each(function(index,element){
var activeTab = $(element).find('.tabs-header .active'),
activeTabData = activeTab.data('tab'),
activeTabWidth = activeTab.width(),
activeLeft = activeTab.position().left;
$(element).find('.bottom-line').css({
width: activeTabWidth,
left: activeLeft
});
$(element).find('.tabs-body .tab').hide();
$(element).find('.tabs-body .tab').filter("[data-tab='" + activeTabData + "']").show();
});
$(item).find('.tabs-header-item').on('click', function(){
if ($(this).hasClass('active')) {
// при клике на открытый таб ничего не происходит
return false;
}
var activeTabData = $(this).data('tab'),
activeTabWidth = $(this).width(),
activeLeft = $(this).position().left;
$(this).addClass('active').siblings().removeClass('active');
// для табов с подчеркиванием
$(item).find('.bottom-line').css({
width: activeTabWidth,
left: activeLeft
});
$(item).find('.bottom-line').removeClass('no-animate');
$(this).closest('.tabs').find('.tabs-body .tab').hide();
$(this).closest('.tabs').find('.tabs-body .tab').filter("[data-tab='" + activeTabData + "']").show();
});
$(item).find('.tabs-body-h-item').on('click', function(){
var tabData = $(this).data('tab');
$(this).closest('.tabs').find('.tabs-body-h-item').removeClass('active');
$(this).addClass('active');
$(this).closest('.tabs').find('.tabs-header-item').filter("[data-tab='" + tabData + "']").trigger('click');
$('html, body').scrollTop($(this).closest('.tabs').offset().top);
});
w.on('resize', function(){
var activeItem = $(item).find('.tabs-header-item.active'),
activeLeft = activeItem.position().left;
$(item).find('.bottom-line').addClass('no-animate').css({
left: activeLeft,
width: activeItem.width()
});
$(item).find('.bottom-line').removeClass('no-animate');
})
}, 200);
};
SVK.spinnersSet = function(element, sumContainer){
$(element).find('.spinner').each(function(index,element){
$(element).find('.decrease').on('click', function(e){
e.preventDefault();
if ($(this).hasClass('disabled')){
return false
}
$(element).trigger('spinner.decrease');
});
$(element).find('.increase').on('click', function(e){
e.preventDefault();
if ($(this).hasClass('disabled')){
return false
}
$(element).trigger('spinner.increase');
})
});
var adultsSpinner = $(element).find('.spinner.adults'),
childrenSpinner = $(element).find('.spinner.children'),
infantSpinner = $(element).find('.spinner.infant');
var descWordsForms = {
adults: ['взрослый', 'взрослых', 'взрослых'],
children: ['ребенок', 'ребенка', 'детей', 'без детей'],
infant: ['младенец', 'младенца', 'младенцев', 'без младенцев'],
passenger: ['пассажир', 'пассажира', 'пассажиров']
};
/*спиннер взрослых людей*/
adultsSpinner.on('spinner.increase', function(){
changeSpinner($(this), 1, descWordsForms.adults);
}).on('spinner.decrease', function(){
changeSpinner($(this), -1, descWordsForms.adults);
});
adultsSpinner.on('spinner.increase spinner.decrease', function(){
/*разбираемся с полем детей*/
var infantCount = infantSpinner.data('value'),
adultCount = $(this).data('value'),
childrenCount = childrenSpinner.data('value');
var availableChildrenPlaces = 9 - adultCount - infantCount;
if (childrenCount > availableChildrenPlaces){
/*если у нас выбрано количество детей больше, чем 9 - (взрослые + младенцы) ,
но так как дети приоритетнее младенцев, отдадим под них максимальное кол-во мест*/
if ((childrenCount + adultCount) > 9) {
/*если текушая сумма детей + взрослых превышает 9 человек, уменьшаем кол-во детей и допустимое число младенцев пишем в 0*/
var newChildrenCount = 9 - adultCount;
childrenSpinner.data('max-value', newChildrenCount);
changeSpinner(childrenSpinner, newChildrenCount - childrenCount, descWordsForms.children);
/*а теперь кол-во младенцев пишем в 0*/
infantSpinner.data('max-value', 0);
changeSpinner(infantSpinner, 0 - infantSpinner.data('value'), descWordsForms.infant);
} else {
/*если (взрослый + дети) не превышают кол-ва пассажиров, то устанавливаем максимальное кол-во детей, равное кол-ву детей*/
childrenSpinner.data('max-value', childrenCount);
var newInfantCount = 9 - (childrenCount + adultCount);
infantSpinner.data('max-value', newInfantCount);
if (infantCount > newInfantCount){
/*если кол-во младенцев превышает отведенное под них место*/
changeSpinner(infantSpinner, newInfantCount - infantCount, descWordsForms.infant);
}
}
} else {
childrenSpinner.data('max-value', availableChildrenPlaces);
infantSpinner.data('max-value', Math.min(availableChildrenPlaces, adultCount));
if (infantCount > infantSpinner.data('max-value')){
/*если кол-во младенцев превышает отведенное под них место*/
changeSpinner(infantSpinner, infantSpinner.data('max-value') - infantCount, descWordsForms.infant);
}
}
});
/*спиннер детей*/
childrenSpinner.on('spinner.increase', function(){
changeSpinner($(this), 1, descWordsForms.children);
}).on('spinner.decrease', function(){
changeSpinner($(this), -1, descWordsForms.children);
});
childrenSpinner.on('spinner.increase spinner.decrease', function(){
var infantCount = infantSpinner.data('value'),
adultCount = adultsSpinner.data('value'),
childrenCount = childrenSpinner.data('value');
var availableInfantPlaces = Math.min(adultCount, 9 - (adultCount + childrenCount));
infantSpinner.data('max-value', availableInfantPlaces);
if (infantCount > availableInfantPlaces){
changeSpinner(infantSpinner, availableInfantPlaces - infantCount, descWordsForms.infant);
}
});
/*спиннер младенцев*/
infantSpinner.on('spinner.increase', function(){
changeSpinner($(this), 1, descWordsForms.infant);
}).on('spinner.decrease', function(){
changeSpinner($(this), -1, descWordsForms.infant);
});
infantSpinner.on('spinner.increase spinner.decrease', function(){
var infantCount = infantSpinner.data('value'),
adultCount = adultsSpinner.data('value');
childrenSpinner.data('max-value', 9 - (adultCount + infantCount));
});
$(element).find('.spinner').on('spinner.decrease spinner.increase', function(){
var passengersSum = 0;
$(element).find('.spinner').each(function(index,innerElement){
if ($(innerElement).data('value') < $(innerElement).data('max-value')){
$(innerElement).find('.increase').removeClass('disabled');
} else {
$(innerElement).find('.increase').addClass('disabled');
}
passengersSum = passengersSum + $(innerElement).data('value');
});
/*вывод суммарных данных в поле. если только взрослые, то подписываем их как "взрослые", если не только взрослые - то "пассажиры"*/
if (passengersSum == adultsSpinner.data('value')) {
$(sumContainer).text(passengersSum + ' ' + SVK.pluralForm(passengersSum, descWordsForms.adults[0], descWordsForms.adults[1], descWordsForms.adults[2]));
} else {
$(sumContainer).text(passengersSum + ' ' + SVK.pluralForm(passengersSum, descWordsForms.passenger[0], descWordsForms.passenger[1], descWordsForms.passenger[2]));
}
$(sumContainer).trigger('reservation.count');
});
/*основная фукция изменения количества в любом спинере*/
function changeSpinner(spinner, countChange, wordsForms){
var currentValue = spinner.data('value'),
newValue = currentValue + +(countChange);
spinner.data('value', newValue);
if (newValue == 0){
spinner.find('span').text(wordsForms[3]);
} else {
spinner.find('span').text(newValue + ' ' + SVK.pluralForm(newValue, wordsForms[0], wordsForms[1], wordsForms[2]));
}
/*значит увеличили количество*/
if (countChange > 0){
spinner.find('.decrease').removeClass('disabled');
} else {
if (newValue == spinner.data('min-value')){
spinner.find('.decrease').addClass('disabled');
}
}
}
};
/**
* Функция возвращает правильное слово для множественного числа
*
* @param $num число элементов
* @param $form1 название элемента, первая форма (день, фотография)
* @param $form2 название элемента, вторая форма (дня, фотографии)
* @param $form5 название элемента, пятая форма (дней, фотографий)
*
* @return правильная форма названия элементов в зависимости от числа элементов
*/
SVK.pluralForm = function($num, $form1, $form2, $form5)
{
if (typeof $num != 'string' && $num) {
// работа только со строкой (фикс для IE8)
$num = $num.toString();
}
else if (!$num) {
return $form1;
}
var $n = parseInt($num.slice(-2), 10);
if ($n >= 5 && $n <=20)
return $form5;
else
{
$n = parseInt($num.slice(-1), 10);
if ($n == 0 || ($n>=5 && $n<=9) )
return $form5;
else if ($n == 1)
return $form1;
else
return $form2;
}
};
/**
* радиокнопки со стилизацией для ие8 (в других стилизуется через :checked)
* @param container
*/
SVK.radioBtn = function(container){
if ($('html').hasClass('.lt-ie9')) return;
$(container).each(function(index,element){
$(element).find('[checked=checked]').next().addClass('active');
$(element).find('label').on('click', function(){
$(this).addClass('active').closest('.btn-group-item').siblings().find('.active').removeClass('active');
});
});
};
SVK.yearsLine = function(container){
var lineElementWidth = $(container).eq(0).find('.year').eq(0).width(),
controlWidth = $(container).eq(0).find('.arrow').eq(0).width(),
$w = $(window);
$(container).each(function(index,element){
var elementsCount = $(element).find('.year').length,
elementsSumWidth = elementsCount * lineElementWidth,
yearsLine = $(element).find('.years-line-inner'),
prevArrow = $(element).find('.arrow-prev'),
nextArrow = $(element).find('.arrow-next'),
containerWidth = $(element).width(),
activeIndexRelativeMainContainer = $(element).find('.active').index(),
elementsCountInHalfContainer = Math.floor((containerWidth/2) / lineElementWidth),
elementsCountInFullContainer = Math.floor(containerWidth / lineElementWidth);
/*первоначальное состояние. определяем, нужны ли стрелки, делаем, чтобы активный пункт был в зоне видимости*/
if(containerWidth < elementsSumWidth){
$(element).addClass('with-controls');
containerWidth = $(element).width();
elementsCountInHalfContainer = Math.floor((containerWidth/2) / lineElementWidth);
elementsCountInFullContainer = Math.floor(containerWidth / lineElementWidth);
setActiveToCenter(element, containerWidth, activeIndexRelativeMainContainer, elementsCountInHalfContainer, yearsLine, elementsCount);
} else {
prevArrow.addClass('disabled');
nextArrow.addClass('disabled');
}
prevArrow.on('click', function(){
if ($(this).hasClass('disabled')) return;
nextArrow.removeClass('disabled');
var maxScrollWidth = (elementsCountInFullContainer - 1) * lineElementWidth,
currentScrollLeft = Math.abs(parseFloat(yearsLine.css('margin-left')));
if (currentScrollLeft > maxScrollWidth){
yearsLine.css({
'margin-left': - (currentScrollLeft - maxScrollWidth)
});
return;
}
yearsLine.css({
'margin-left': 0
});
$(this).addClass('disabled');
});
nextArrow.on('click', function(){
if ($(this).hasClass('disabled')) return;
prevArrow.removeClass('disabled');
var maxScrollWidth = (elementsCountInFullContainer - 1) * lineElementWidth,
currentScrollLeft = Math.abs(parseFloat(yearsLine.css('margin-left')));
if (currentScrollLeft + maxScrollWidth + containerWidth < elementsSumWidth){
yearsLine.css({
'margin-left': - (currentScrollLeft + maxScrollWidth)
});
return;
}
yearsLine.css({
'margin-left': - (elementsSumWidth - containerWidth)
});
$(this).addClass('disabled');
});
$w.on('resize', function(){
containerWidth = $(container).width();
if(containerWidth >= elementsSumWidth){
$(element).removeClass('with-controls');
yearsLine.removeAttr('style');
prevArrow.addClass('disabled');
nextArrow.addClass('disabled');
elementsCountInHalfContainer = Math.floor((containerWidth/2) / lineElementWidth);
elementsCountInFullContainer = Math.floor(containerWidth / lineElementWidth);
return;
}
$(element).addClass('with-controls');
containerWidth = $(container).width();
elementsCountInHalfContainer = Math.floor((containerWidth/2) / lineElementWidth);
elementsCountInFullContainer = Math.floor(containerWidth / lineElementWidth);
var currentScrollLeft = Math.abs(parseFloat(yearsLine.css('margin-left'))) || 0;
if (currentScrollLeft + containerWidth >= elementsSumWidth){
yearsLine.css({
'margin-left': - (elementsSumWidth - containerWidth)
});
nextArrow.addClass('disabled');
return;
}
nextArrow.removeClass('disabled');
})
});
/*устанавливает первоначальное положение, чтобы активный пункт был виден*/
function setActiveToCenter(container, containerWidth, activeIndexRelativeMainContainer, elementsCountInHalfContainer, yearsLine, elementCountInLine){
if (activeIndexRelativeMainContainer + 1 <= elementsCountInHalfContainer){
$(container).find('.arrow-prev').addClass('disabled');
return;
}
if (activeIndexRelativeMainContainer + 1 >= elementCountInLine - elementsCountInHalfContainer){
yearsLine.css({
'margin-left': - (elementCountInLine * lineElementWidth - containerWidth)
});
$(container).find('.arrow-next').addClass('disabled');
return;
}
yearsLine.css({
'margin-left': (containerWidth / 2) - (activeIndexRelativeMainContainer * lineElementWidth + lineElementWidth / 2)
});
}
};
SVK.isMobile = function () {
return $(window).width() < 1024 ? true : false;
};
/**
* Календарь на главной
* @param outerContainer - контейнер, в котором лежит календарь (dropdown)
* parameter == past (если нужны даты из прошлого)
* календарю с прошлыми датами нужны дополнительные классы и дата-атрибут
* @param {boolean} pastDate - Используется в календаре прошедшее время
*/
SVK.calendar = function(outerContainer, pastDate){
var monthNames = document.regionalParams.calendar.months,
currentData = new Date(),
currentMonth = currentData.getMonth(),
isPast = pastDate || false,
fromText = document.regionalParams.calendar.there,
toText = document.regionalParams.calendar.back;
$(outerContainer).each(function(index, container){
var monthsContainer = $(container).find('.months-part ul'),
radioButtons = $(container).find('.btn-group input[type="radio"]'),
oneWayDirection = radioButtons.filter('[data-tab="one-way"]'),
dateFrom = $(container).closest('.form-item').find('.date-from'),
dateTo = $(container).closest('.form-item').find('.date-to'),
datepicker = $(container).find('.datepicker'),
calendarContainer = $(container).find('.calendars-cont'),
yearValue,
addedLine,
i = 0,
monthNumber = 0;
var labelRadio = $(container).find('.btn-group .btn-contour');
/*Генерируем месяцы*/
/*для случая, когда календарь для прошлых дат*/
if (isPast){
for (i = 0; i < 12; i++) {
monthNumber = Math.abs((i + currentMonth + 1) % 12);
addedLine = $('' + monthNames[monthNumber] + '');
monthsContainer.append(addedLine);
// Если январь
if (monthNumber == 0){
$(addedLine).append('' + (currentData.getFullYear()) + '');
}
}
} else {
for (i = 0; i < 12; i++){
monthNumber = (i + currentMonth) % 12;
addedLine = $('' + monthNames[monthNumber] + '');
monthsContainer.append(addedLine);
// Если январь
if (monthNumber == 0){
yearValue = currentData.getFullYear() + 1;
if (i == 0) {
yearValue--;
}
$(addedLine).append('' + yearValue + '');
}
}
}
/*инлайновые календари*/
datepicker.datepicker({
numberOfMonths: 12,
showButtonPanel: false,
minDate: currentData,
beforeShowDay: function(date) {
var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, dateFrom.data('date') || ''),
date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, dateTo.data('date') || '');
return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? (date.getTime() == date1.getTime()) ? "dp-highlight dp-highlight-first": (date.getTime() == date2.getTime()) ? "dp-highlight dp-highlight-last": "dp-highlight" : ""];
},
onSelect: function(dateText, inst) {
var date1 = dateFrom.data('date'),
date2 = dateTo.data('date');
if (oneWayDirection.is(':checked')) {
dateFrom.data('date', dateText).html(getDateFromString(dateText)).addClass('active');
$(container).trigger('close.datepicker');
} else if (!date1 || date2){
dateFrom.data('date', dateText).html(getDateFromString(dateText) + ' — ').addClass('active');
dateTo.data('date', '').html(toText);
} else {
/*если вторая дата больше или равна первой*/
$(container).trigger('close.datepicker');
if (compareDates(dateText, dateFrom.data('date'))){
dateTo.data('date',dateText).html(getDateFromString(dateText)).addClass('active');
} else {
/*иначе - меняем их местами*/
dateTo.data('date', dateFrom.data('date')).html(getDateFromString(dateFrom.data('date'))).addClass('active');
dateFrom.data('date',dateText).html(getDateFromString(dateText) + ' — ').addClass('active');
}
}
$(this).trigger('dateSelect', [inst, dateText]);
},
afterShow: function(){
if (SVK.isMobile) return;
// кастомное событие, которое я добавила в код datepicker
var inlineCalendars = $(container).find('.ui-datepicker-calendar'),
tableCells = inlineCalendars.find('tbody td');
inlineCalendars.each(function(index,element){
var lastString = $(element).find('tbody tr').last();
if (lastString.find('td').first().text() == 0) lastString.remove();
});
/*ховер по ячейкам календаря*/
var fromActiveDate = tableCells.filter('.dp-highlight-first'),
activeIndexRelativeMainContainer = datepicker.find('td').index(fromActiveDate);
tableCells.on('mouseenter', function () {
var dateFromTemp = dateFrom.data('date') ? dateFrom.data('date') : '';
// Дата под указателем мыши
// плюс один нужен для того, чтобы месяцы правильно назывались.
var date = ($(this).text().length == 1 ? '0' + $(this).text() : $(this).text()) + '.' + ($(this).data('month') + 1) + '.' + $(this).data('year');
datepicker.filter('highlighted-cell').removeClass('highlighted-cell');
if ($(this).text() == 0 || $(this).hasClass('ui-state-disabled')) return;
if (oneWayDirection.is(':checked')) {
dateFrom.html(getDateFromString(date)).addClass('hover');
return;
}
var curIndexRelativeContainer = datepicker.find('td').index(this);
// покраска между датами
if ((dateFrom.hasClass('active') || dateTo.hasClass('active')) && !oneWayDirection.is(':checked')) {
if (curIndexRelativeContainer > activeIndexRelativeMainContainer) {
datepicker.find('td').slice(activeIndexRelativeMainContainer + 1, curIndexRelativeContainer).addClass('highlighted-cell');
} else {
datepicker.find('td').slice(curIndexRelativeContainer + 1, activeIndexRelativeMainContainer).addClass('highlighted-cell');
}
}
if (dateFromTemp != '') {
if (!compareDates(dateFromTemp, date)) {
dateTo.html(getDateFromString(date)).addClass('hover');
} else {
dateTo.html(getDateFromString(dateFromTemp)).addClass('active').removeClass('hover');
dateFrom.html(getDateFromString(date) + ' — ').addClass('hover');
}
} else {
if (!oneWayDirection.is(':checked')) {
dateFrom.html(getDateFromString(date) + ' — ').addClass('hover');
} else {
dateFrom.html(getDateFromString(date)).addClass('hover');
}
}
}).on('mouseleave', function () {
datepicker.find('.highlighted-cell').removeClass('highlighted-cell');
dateFrom.removeClass('hover');
if (!dateFrom.hasClass('active')) {
if (!oneWayDirection.is(':checked')) {
dateFrom.html(fromText + ' — ');
} else {
dateFrom.html(fromText);
}
}
if (dateTo.data('date') != '') {
dateTo.removeClass('hover');
}
if (!oneWayDirection.is(':checked')) {
dateTo.html(toText);
}
});
}
});
function checkText(date1, date2) {
if (date1 && !date2) {
dateFrom.html(getDateFromString(dateFrom.data('date')));
dateTo.data('date', '').html(fromText);
}
if (!oneWayDirection.is(':checked')) {
dateFrom.removeClass('active').html(fromText + ' — ');
dateTo.removeClass('active').html(toText)
} else {
dateFrom.removeClass('active').html(fromText);
}
}
$(document).on('click', '.js-form-item-when .date', function (e) {
checkText();
});
$(container).on('close.datepicker', function () {
if (dateFrom.data('date') !== undefined) {
dateFrom.removeClass('hover');
dateTo.removeClass('hover');
} else {
dateFrom.html('');
dateTo.html('');
}
});
/*если календарь для прошлых дат*/
if (isPast){
datepicker.datepicker('option', 'minDate', null).datepicker('option', 'maxDate', currentData);
}
//радиокнопки "туда-обратно" и "только туда"
radioButtons.change(function(){
dateTo.data('date', '').text('');
datepicker.find('.dp-highlight').not('.dp-highlight-first').removeClass('dp-highlight dp-highlight-last');
dateFrom.parents('.regular-flight').find('.js-form-item-when label').hide();
if (oneWayDirection.is(':checked')){
dateFrom.html(fromText);
if (dateFrom.data('date') != '') {
$(container).trigger('close.datepicker');
dateFrom.html(getDateFromString(dateFrom.data('date')));
}
} else {
dateFrom.html(fromText + ' — ');
dateTo.html(toText);
}
});
var datepickerHeight = datepicker.outerHeight(),
monthsHeight = $(container).find('.months-part').outerHeight();
$(container).on('dropdown.opened', function(){
datepickerHeight = datepicker.outerHeight();
monthsHeight = $(container).find('.months-part').outerHeight();
if (isPast && dateFrom.find('.grey').length > 0){
calendarContainer.scrollTop(100000);
}
});
//скролл по каледнарю
calendarContainer.on('scroll.datepicker', function(){
monthsHighlighter.css({
top: $(this).scrollTop() * monthsHeight / datepickerHeight
})
});
/*клик по месяцу*/
var monthsHighlighter = $(container).find('.months-part .highlighter');
$(monthsContainer).find('li').on('click', function(){
var indexOfElement = ($(this).index() != 11) ? $(this).index() : 10,
newPositionOfHighlighter = $(monthsContainer).find('li').eq(indexOfElement).position().top;
if (newPositionOfHighlighter == monthsHighlighter.position().top) return;
calendarContainer.animate({
scrollTop: calendarContainer.find('.ui-datepicker-group').eq(indexOfElement).position().top
}, 200, function(){
monthsHighlighter.animate({
top: $(monthsContainer).find('li').eq(indexOfElement).position().top
}, 100);
});
});
});
/**
* преобразует строку с датой типа "09.07.2015" в строку "9 июл"
* @param date строка с датой
* @returns {string} текстовая строка
*/
function getDateFromString(date) {
var number = parseInt(date.substr(0,2));
var month = parseInt(date.substr(3,2));
return number + ' ' + monthNames[month - 1].substr(0,3).toLowerCase();
}
/**
* сравнение 2х чисел в форматах dd.mm.yyyy
* @param date1 dd.mm.yyyy
* @param date2 dd.mm.yyyy
*
* return true if date1 >= date2
*/
function compareDates (date1, date2) {
return (getNumberDate(date1, 'year') == getNumberDate(date2, 'year')) ?
(getNumberDate(date1, 'month')) == (getNumberDate(date2, 'month')) ?
(getNumberDate(date1, 'day')) >= (getNumberDate(date2, 'day')) :
(getNumberDate(date1, 'month')) > (getNumberDate(date2, 'month')) :
(getNumberDate(date1, 'year') > getNumberDate(date2, 'year'));
}
/**
* Получаем нужную цифру из даты
* @param date дата в форматах dd.mm.yyyy / d.mm.yyyy / d.m.yyyy / dd.m.yyyy
* @param instance какую из цифр нам нужно получить day, month, year
* */
function getNumberDate (date, instance) {
var val = 0;
switch (instance) {
case 'year':
val = 2;
break;
case 'month':
val = 1;
break;
case 'day':
val = 0;
break;
}
return parseInt(date.split('.')[val]);
}
};
SVK.inputsFocusEffect = function(input){
$(document).on('focus', input, function(){
$(this).closest('.input-with-scale-label').addClass('selected focused');
}).on('blur', input, function(){
$(this).closest('.input-with-scale-label').removeClass('focused');
if (!$(this).val()){
$(this).closest('.input-with-scale-label').removeClass('selected');
}
});
};
SVK.connectedGallery = function(container) {
var previewItemWidth = 119;
$(container).each(function(ind, element) {
if ($(element).find('ul li').length > 1) {
// INIT GALLERY
var canClick = true;
var mainSlider = $(element).find('ul').bxSlider({
pager: false,
infiniteLoop: false,
hideControlOnEnd: true,
nextText: '',
prevText: '',
onSlideBefore: function($slideElement, oldIndex, newIndex){
scrollPreview(element, newIndex);
},
onSlideAfter: function(){
canClick = true;
}
});
// инициализируем линию превьюшек
$(element).find('.thumbnails-wrap').show();
$(element).find('.js-preview .thumbnails-item').first().addClass('active');
$(element).find('.js-custom-h-scroll').scrollbar();
// HANDLERS
// Клик по превью изображениям
$(element).on('click', '.thumbnails-item', function() {
if(canClick) {
canClick = false;
var index = $(this).index();
mainSlider.goToSlide(index);
scrollPreview(element, index);
}
});
}
});
// FUNCTIONS
function scrollPreview(parentCont, index) {
var $currentItem = $(parentCont).find('.thumbnails-item').eq(index);
var halfParentWidth = $(parentCont).width() / 2;
var halfElementWidth = $currentItem.outerWidth() / 2;
$currentItem.addClass('active').siblings().removeClass('active');
$(parentCont).find('.js-custom-h-scroll').stop().animate({
//scrollLeft: (index - 3) * previewItemWidth // по 3 элемента с каждой стороны активнного
scrollLeft : $currentItem.outerWidth(true) * index - halfParentWidth + halfElementWidth
});
}
}
/**
* MagnificPopup для ссылок, которые ссылаются на изображение.
* Текст из атрибута title вставляется под картинку
* Пример DOM: Спецпитание мусульманское
*
* */
SVK.openModalImage = function(href) {
$(href).magnificPopup({
type: 'image',
closeOnContentClick: true,
image: {
verticalFit: true
}
});
}
/**
* Отправление событий в Яндекс и гугл аналитику
*
* @param {string} category - категория цели
* @param {string} action - действие
*/
SVK.sendAnalyticsEvent = function(category, action) {
try {
ga('send', 'event', category, action);
yaCounter30663002.reachGoal(category);
} catch (e) {
}
}
})();