/* Minification failed. Returning unminified contents. (16238,15-16): run-time error JS1195: Expected expression: > (16238,77-78): run-time error JS1195: Expected expression: ) (16238,79-80): run-time error JS1004: Expected ';': { (16242,2-3): run-time error JS1002: Syntax error: } (16392,1-2): run-time error JS1002: Syntax error: } (16393,95-96): run-time error JS1004: Expected ';': { (16516,2-3): run-time error JS1195: Expected expression: ) */ $(function () { $.fn.fancyboxInit = function (params) { this.fancybox(fancyBoxTplInit(params)); return this; }; $.fancyboxInit = function (params){ return $.fancybox(fancyBoxTplInit(params)); } function fancyBoxTplInit (params) { if (typeof params == 'undefined') params = {}; params.tpl = { error: '

' + GlobalSettings.FancyboxError + '

' }; return params; } $.fancyConfirm = function (content, callback, buttons) { var result; var buttonsHtml = ""; switch (buttons) { case "YesNo": buttonsHtml = ''; break; case "Ok": buttonsHtml = ''; break; } $.fancyboxInit({ padding: 10, autoSize: false, autoHeight: true, minHeight: 50, width: 400, content: '', afterShow: function () { $(".modal-confirm #fancyConfirm_cancel").on("click", function () { result = false; $.fancybox.close(); }); $(".modal-confirm #fancyConfirm_ok").on("click", function () { result = true; $.fancybox.close(); }); }, afterClose: function () { if (callback) { callback.call(this, result); } } }); }; var isPageBeingRefreshed = false; $(window).on('beforeunload', function () { isPageBeingRefreshed = true; }); $.fancyboxMessage = function (message, onCloseCallback) { if (!isPageBeingRefreshed) { $.fancyboxInit({ padding: 10, autoSize: false, autoHeight: true, width: 200, content: '', afterShow: function() { $(".modal-confirm #fancyConfirm_ok").on("click", function() { $.fancybox.close(); }); }, afterClose: function () { if (typeof onCloseCallback == "function" && onCloseCallback) { onCloseCallback.call(this); } } }); } }; });; $(document).ready(function ($) { $(".global-nav #lang .dropdown-menu li a").on("click", function () { var lang = $(this).parent().attr("langCode"); if (lang != null && lang != '') { $.lukoilSaveCookie('LukLanguage', lang, { path: '/' }); } }); /* TopBar - Position and Open/Close ==============================================================================*/ var $topBarToggle = $('#topbar-toggle'); var $topBar = $('.topbar'); var $topBarContent = $('.topbar-content'); var isDesktopBar; var timerOpenTopBar; function hideTopBar() { clearTimeout(timerOpenTopBar); $topBarContent.removeClass('open'); $topBarContent.animate({ height: 0 }, isDesktopBar ? 200 : 300); $topBarToggle.removeClass('dropup'); }; function showTopBar(flag) { if ($topBarToggle.hasClass('dropup')) { if (flag != null && flag) { hideTopBar(); } return; } timerOpenTopBar = setTimeout(function () { var height = $topBarContent.find('.container').outerHeight(); $topBarContent.animate({ height: height + 'px' }, 200, function() { $topBarContent.addClass('open'); }); $topBarToggle.addClass('dropup'); }, 100); $('#widgets').removeClass('open'); } function showTopBarMouse() { showTopBar(false); } function showTopBarClick() { showTopBar(true); } setTimeout(function () { var fullMode = $('html').attr('fullMode') != null; var isUaDesktop = $('html').hasClass('ua-desktop'); isDesktopBar = isUaDesktop || fullMode; $topBar.on('mouseleave', hideTopBar); if (!isUaDesktop) { if (fullMode) { $(".changeSiteMode .fullMode").hide(); $(".cchangeSiteModeopy .mobileMode").show(); } else { $(".changeSiteMode .fullMode").show(); $(".changeSiteMode .mobileMode").hide(); } } if (isDesktopBar) { $topBarToggle.on('mouseenter', showTopBarMouse); } else { $(".ua-mobile #topSearchForm, .ua-mobile #footerSearchForm").removeAttr("target"); } $topBarToggle.on('click', showTopBarClick); }, 100); $(".htmlContent table").wrap("
"); $(".changeSiteMode .fullMode").on("click", function () { $.lukoilSaveCookie('FULL_SITE_MODE', 'true', { path: '/', expires: 10000 }); window.location.reload(); return false; }); $(".changeSiteMode .mobileMode").on("click", function () { $.removeCookie('FULL_SITE_MODE', { path: '/' }); window.location.reload(); return false; }); /* TopBar - Show company activities on click ==============================================================================*/ $('.activities .dropdown').on("click", function(event) { event.preventDefault(); var id = $(this).find('a').attr('href'); $(this).addClass('open').siblings('.dropdown').removeClass('open'); $(id).addClass('open').siblings('.dropdown-menu').removeClass('open'); }); /* Sticky Navigation ==============================================================================*/ /*$(window).scroll(function() { if( $(this).scrollTop() > 40 ) { $('.navbar').addClass('navbar-fixed'); } else { $('.navbar').removeClass('navbar-fixed'); } });*/ /* Resize font ==============================================================================*/ if ($.lukoilGetCookie('TEXT_SIZE')) { var cookieTextSize = $.lukoilGetCookie('TEXT_SIZE'); $('body').addClass(cookieTextSize); var resizeFondEl = $('.resize-font'); resizeFondEl.find('button').removeClass('active'); resizeFondEl.find('li.' + cookieTextSize + ' button').addClass('active'); } $('.resize-font button').on("click", function() { var $this = $(this); var textSize = $this.parent().attr('class'); $('body').removeClass('normal medium large').addClass(textSize); $.lukoilSaveCookie('TEXT_SIZE', textSize, { path: '/', expires: 10000 }); $this.closest('.resize-font').find('button').removeClass('active'); $this.addClass('active'); $('.timeline').trigger("resize"); textEllipsis(); return false; }); /* Widgets - Open/Close ==============================================================================*/ $('#widgets-toggle').on("click", function() { $('#widgets').toggleClass('open'); return false; }); /* Widgets - collapse margin for HtmlContentQualification ==============================================================================*/ $(document).on("show.bs.collapse", ".panel-specification .panel-collapse", function () { $(this).each(function () { $(this).animate({ "margin-top": $(this).attr("margin-top") }, 150); }); }); $(document).on("hide.bs.collapse", ".panel-specification .panel-collapse", function () { $(this).each(function () { $(this).attr("margin-top", $(this).css("margin-top")); $(this).animate({ "margin-top": "0px" }, 150); }); }); /* Widgets - Save ==============================================================================*/ var widgetsIsSaved = $.lukoilGetCookie('WIDGETS_SAVED'); if (!widgetsIsSaved) { $('#widgets').removeClass('hide'); } $('#widgets-save').on("click", function() { $.lukoilSaveCookie('WIDGETS_SAVED', 'true', { path: '/', expires: 10000 }); window.location.reload(); return false; }); /* Scroll To top ==============================================================================*/ $(window).on("scroll", function() { if ($(this).scrollTop() > 100) { $('#scroll-top').css({ bottom: '15px' }); } else { $('#scroll-top').css({ bottom: '-100px' }); } if ($(this).scrollTop() > 1) { $('.subsidiary.index-page .title-fixed').addClass('fly'); } else { $('.subsidiary.index-page .title-fixed').removeClass('fly'); } }); $('#scroll-top').on("click", function() { $('html, body').animate({ scrollTop: '0px' }, 500); return false; }); if ($('.subsidiary.index-page').length) { $(window).on("scroll", function() { if ($(this).scrollTop()) { $('.subsidiary.index-page .title-fixed').addClass('fly'); } else { $('.subsidiary.index-page .title-fixed').removeClass('fly'); } }); } /* Full screen ==============================================================================*/ var isFullScreenEnable = typeof document.fullscreenEnabled !== 'undefined'; if (isFullScreenEnable) { $('.btn-toggle-full-screen').on('click', function() { var $fullScreenElem = $(this).closest('.panel-full-screen'); if (!$fullScreenElem.length) return; if (document.fullscreenElement) { document.exitFullscreen(); } else { $fullScreenElem[0].requestFullscreen(); } }); document.addEventListener("fullscreenchange", function() { if (document.fullscreenElement) { $('.panel-full-screen').addClass('in-full-screen'); } else { $('.panel-full-screen').removeClass('in-full-screen'); } }); } else { $('body').addClass('custom-full-screen'); $(document).on('click', '.btn-toggle-full-screen', function() { $(this).closest('.panel-full-screen').toggleClass('in-full-screen'); if ($('.panel-full-screen--map').length) updateSizeMap(); }); $(document).on("keyup", function(e) { if (e.keyCode !== 27) return; $('.panel-full-screen').removeClass('in-full-screen'); if ($('.panel-full-screen--map').length) updateSizeMap(); }); } /* Photo Slider ==============================================================================*/ var slidesCookiesConfig = { path: '/', domain: GlobalSettings.CookiesConfigDomain }; var slidesCookiesKey = "LukSlider"; var getSlidesCookies = function() { var slidesCookies = $.lukoilGetCookie(slidesCookiesKey); return slidesCookies == null ? {} : JSON.parse(slidesCookies); }; var saveSlidesCookies = function (cookies, sliderId, slideId) { if (cookies == null) { cookies = getSlidesCookies(); } cookies[sliderId] = slideId; $.lukoilSaveCookie(slidesCookiesKey, JSON.stringify(cookies), slidesCookiesConfig); }; setTimeout(function () { var slidesCookies = getSlidesCookies(); $('.rslides').each(function () { var startidx = 0; var thisSliderId = $(this).attr("sliderId"); if (thisSliderId != null && thisSliderId != '') { var id = slidesCookies[thisSliderId]; if (id != null) { startidx = $(this).find("li").index($(this).find("[slideId=" + id + "]")); var count = $(this).find("li").length; startidx = startidx + 1 >= count ? 0 : startidx + 1; var slideId = $(this).find("li").eq(startidx).attr("slideId"); saveSlidesCookies(slidesCookies, thisSliderId, slideId); } } $(this).responsiveSlides({ startidx: startidx, pager: true, pause: true, after: function (i, s) { var $slide = $(s).eq(i); var slideId = $slide.attr("slideId"); var sliderId = $slide.closest(".rslides").attr("sliderId"); saveSlidesCookies(null, sliderId, slideId); } }); }); }, 0); /* Popover ==============================================================================*/ $('body').append($('
')); initToolTip($('body')); $.createDownloadPopover($(document)); $('.trainer-form').on('show.bs.popover', '.tooltip_item', function() { $('input').trigger("blur"); }); $(document).on('click', '.label-control__hint', function(e) { e.preventDefault(); }); // fix so that when the opening tip, do not choose checkbox /* Photo Gallery ==============================================================================*/ var $photoGallers = $('.photo-gallery-slider'); $photoGallers.each(function () { var countPhoto = $(this).find('img').length; $(this).lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 10, responsive: { 0: { autoWidth: false, slideBy: 1, items: 1 }, 450: { autoWidth: false, slideBy: 2, items: 2 }, 768: { slideBy: 3, items: countPhoto >= 3 ? 3 : countPhoto } } }); }); var $photoManagers = $('.photo-managers-slider'); $photoManagers.each(function () { $(this).lukOwlCarousel({ mouseDrag: false, touchDrag: false, pullDrag: false, freeDrag: false, nav: false, dots: false, autoplay: true, autoplayTimeout: 5000, autoplaySpeed: 1000, loop: true, responsive: { 0: { autoWidth: false, slideBy: 1, items: 1 }, } }); }); $photoManagers.on("mouseover", function (e) { $(e.target).trigger('stop.owl.autoplay'); }).on("mouseleave", function (e) { $(e.target).trigger('play.owl.autoplay'); }); var $gasInfo = $('.gas-general-info__image'); $gasInfo.lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { slideBy: 1, items: 1 }, 768: { slideBy: 3, items: 3 } } }); var $manufacturer = $('.manufacturers-slider'); $manufacturer.lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { items: 1 }, 360: { slideBy: 2, items: 2 }, 768: { slideBy: 5, items: 5 } } }); var $relatedSliders = $('.related-slider'); $relatedSliders.lukOwlCarousel({ lazyContent: true, nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { slideBy: 1, items: 1 }, 450: { slideBy: 2, items: 2 }, 768: { slideBy: 3, items: 3 } } }); try { $('.ribbon-slider').each(function() { var countVisibleItems = $(this).data('number-visible-items'); $(this).lukOwlCarousel({ lazyContent: true, nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { slideBy: 2, items: 2 }, 450: { slideBy: 3, items: 3 }, 768: { slideBy: 3, items: 3 }, 992: { slideBy: countVisibleItems, items: countVisibleItems } } }); }); } catch (ex) { } $('.panel-adjustable-social').each(function() { var countVisibleItems = $(this).data('number-visible-items'); $(this).lukOwlCarousel({ lazyContent: true, nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { slideBy: 1, items: 1 }, 768: { slideBy: countVisibleItems, items: countVisibleItems } } }); }); $('.photo-album').lukMediaAlbum({ video: '', audio: '', file: '' }); var $timeLineSliders = $('.timline-date__slider'); $timeLineSliders.lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 10, slideBy: 7, items: 7, responsive: { 0: { slideBy: 3, items: 3 }, 580: {}, 990: { margin: 44 } }, onInitialize: function (event) { $(event.target).closest('.timline-date').show(); } }); var $adjustableOils = $('.adjustable-oil'); $adjustableOils.lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 20, responsive: { 0: { items: 1, slideBy: 1 }, 768: { items: 2, slideBy: 2 }, 992: { items: 4, slideBy: 4 } } }); setTimeout(function () { var $fuelPrices = $('.widget-fuel-price .nav-tabs'); $fuelPrices.lukOwlCarousel({ nav: true, navRewind: false, dots: false, items: 1, margin: 1, autoWidth: true }); }); //setTimeout(function () { // var $fuelPrices = $('.gas-station-prices .nav-tabs'); // $fuelPrices.addClass("owl-carousel"); // $fuelPrices.owlCarousel({ // nav: true, // navRewind: false, // dots: false, // autoWidth: false, // responsive: { // 0: { // items: 1, // slideBy: 1 // }, // 768: { // items: 2, // slideBy: 2 // }, // 992: { // items: 3, // slideBy: 3 // } // } // }); //}); /* Auto resize textarea ==============================================================================*/ $('.form textarea').each(function() { $(this).autoResize({ maxHeight: '500px' }); }); /* Datepicker ==============================================================================*/ $('#calendar-from').datepicker({ changeMonth: true, changeYear: true, yearRange: "1990:+3", onClose: function(date) { $('#calendar-to').datepicker("option", "minDate", date); } }); $('#calendar-to').datepicker({ changeMonth: true, changeYear: true, yearRange: "1990:+3", onClose: function(date) { $('#calendar-from').datepicker("option", "maxDate", date); } }); $('.calendar').datepicker({ changeMonth: true, changeYear: true, yearRange: '1900:' + new Date().getFullYear() + '' }); /* Autocomplete ==============================================================================*/ var availableTags = [ "ActionScript AppleScript Asp Scheme Ruby JavaScript ColdFusion", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme" ]; $('.field-autocomplete').autocomplete({ source: availableTags, open: function(event, ui) { $(ui).width($(event.target).innerWidth()); }, create: function() { var theme = $(this).data('theme'); $(this).data('ui-autocomplete')._renderMenu = function(ul, items) { var that = this; $.each(items, function(index, item) { that._renderItemData(ul, item); }); if (theme) $(ul).addClass('ui-autocomplete_' + theme); }; } }); /* Filter dropdown ==============================================================================*/ $('.dropdown-multi-selection .dropdown-toggle').on('click', function(e) { e.preventDefault(); if ($(this).closest('.dropdown').hasClass('disabled')) return; var $dropDown = $(this).closest('.dropdown-multi-selection'); if ($dropDown.hasClass('open')) { $('.dropdown-multi-selection').removeClass('open'); } else { $('.dropdown-multi-selection').removeClass('open'); $dropDown.addClass('open'); var $ul = $dropDown.find('ul'); var $parents = $(this).parents(); if ($parents.length > 0) { var $first = undefined; for (var i = 0; i < $parents.length; i++){ if ($($parents[i]).css('overflow') === 'hidden') { $first = $($parents[i]); break; } } if ($first) { var spaceDown = $first.offset().top + $first.height() - ($dropDown.offset().top + $dropDown.height()); var spaceUp = $dropDown.offset().top - $first.offset().top; var oldHeight = parseFloat($ul.css('max-height')); var isDown = true; var newHeight = oldHeight; if (oldHeight > spaceDown) { if (oldHeight > spaceUp) { isDown = spaceDown > spaceUp; newHeight = isDown ? spaceDown : spaceUp; $ul.css('max-height', newHeight); } else { isDown = false; } } if (!isDown) { $ul.addClass('open-on-top'); $ul.css('top', '-' + newHeight + 'px'); } else { $ul.removeClass('open-on-top'); $ul.css('top', 'auto'); } //oldHeight = oldHeight != null ? oldHeight : parseFloat($ul.css('height')); } } } }); $(document).on('click', '.dropdown-currency li', function() { var dropdown = $(this).closest('.dropdown'); var currency = $(this).find('a').html(); dropdown.find('li').removeClass('selected').data('selected', undefined); $(this).addClass('selected'); dropdown.find('.dropdown-toggle__text').html(currency); }); $('.dropdown-currency .dropdown-menu').on({ mouseenter: function () { $(this).find('li.selected').toggleClass('sel selected'); }, mouseleave: function () { if (!$(this).find('li').hasClass('selected')) $(this).find('li.sel').addClass('selected'); $(this).find('li.sel').removeClass('sel'); } }); $(document).on("click", function(event) { if ($(event.target).closest('.dropdown-multi-selection.open').length) return; $('.dropdown-multi-selection').removeClass('open'); }); var hideDropdownMenuFly = function(event) { if (!$(event.target).closest('.dropdown-menu_fly').length && !$(event.target).closest('.dropdown-fly-menu').length) { $('#shared-fly').hide(); $('.owl-carousel .dropdown-toggle').removeClass('opened'); $(window).off('scroll', hideDropdownMenuFlyByScroll); $(document).off('mousedown touchstart', hideDropdownMenuFly); } }; var hideDropdownMenuFlyByScroll = function() { if ($('#shared-fly').css('display') === 'block') { $('#shared-fly').hide(); $('.owl-carousel .dropdown-toggle').removeClass('opened'); } $(window).off('scroll', hideDropdownMenuFlyByScroll); }; $(document).on('click', '.owl-carousel .dropdown-toggle', function() { var offsetTopFromWindow = Math.round($(this).offset().top - $(window).scrollTop() + $(this).height()), offsetLeftFromWindow = Math.round($(this).offset().left - $(window).scrollLeft()); if ($(this).hasClass('opened')) { $(this).removeClass('opened'); $('#shared-fly').hide(); } else { $('.owl-carousel .dropdown-toggle').removeClass('opened'); $(this).addClass('opened'); $('#shared-fly') .css({ 'top': offsetTopFromWindow, 'left': offsetLeftFromWindow, 'position': 'fixed' }) .show(); $(document).on('mousedown touchstart', hideDropdownMenuFly); $(window).on('scroll', hideDropdownMenuFlyByScroll); } }); $('.dropdown-multi-selection').each(function() { var $dropdown = $(this); var $titleDrop = $dropdown.find('.dropdown-toggle span'); var $nameTitleDrop = $titleDrop.html(); insertTitleCheckFiled($dropdown, $titleDrop, $nameTitleDrop); $dropdown.find('input[type="checkbox"]').on('change', function () { insertTitleCheckFiled($dropdown, $titleDrop, $nameTitleDrop); }); }); function insertTitleCheckFiled($dropdown, $titleDrop, $nameTitleDrop) { var titleCheckCheckbox = []; $dropdown.find('li').filter(function () { return $(this).css("display") != "none" }).find('input[type="checkbox"]:checked').each(function () { titleCheckCheckbox.push($(this).closest('.checkbox').find('label span').html()); }); if (titleCheckCheckbox.length) { $titleDrop.html(titleCheckCheckbox.join(', ')); } else { $titleDrop.html($nameTitleDrop); } } $('.button-reset').on('click', function(event) { event.preventDefault(); var checkboxes = $(".filter input:checked"); checkboxes.prop("checked", false).trigger("refresh").trigger('change'); }); /* Fancybox modal ==============================================================================*/ $('.modal-slide-show').fancyboxInit({ padding: 10, maxWidth: 960 }); $('.text-popup').fancyboxInit({ padding: 10, type: 'ajax', minWidth: 240, maxWidth: 940 }); $('.show-video').fancyboxInit({ type: 'iframe', padding: 10, beforeLoad: function() { var url = $(this.element).attr("href"); var youtubeRegex = /(?:https?:\/\/)?(?:www\.)?(?:(?:(?:youtube.com\/watch\?[^?]*v=|youtu.be\/)([\w\-]+))(?:[^\s?]+)?)/; var matched = youtubeRegex.exec(url); if (matched && matched.length > 1) { var yuotubeId = matched[1]; var embeddedUrl = "https://www.youtube.com/embed/" + yuotubeId; embeddedUrl += '?fs=1&autoplay=1'; this.href = embeddedUrl; } } }); $(".gas-station-info-action-modal-link").fancyboxInit({ maxWidth: 800 }); function fancyboxModal(content) { $.fancybox.open({ padding: 10, content: content, beforeShow: function() { var $fancyBoxContent = $(this.inner); var $videos = $fancyBoxContent.find('video'); if ($videos.length) { var $video = $($videos[0]); var startTime = $video.data('start-time'); if (startTime) { var timeParts = startTime.split(":"); var sedonds = 3600 * parseInt(timeParts[0]) + 60 * parseInt(timeParts[1]) + parseInt(timeParts[2]); $video.on('loadedmetadata', function() { this.currentTime = sedonds; $.fancybox.update(); }); } else { $video.on('loadedmetadata', function () { $.fancybox.update(); }); } } } }); } function fancyConfirm(content, callback) { var ret; jQuery.fancyboxInit({ modal: true, content: '', afterShow: function() { jQuery("#fancyConfirm_cancel").on("click", function() { ret = false; jQuery.fancybox.close(); }); jQuery("#fancyConfirm_ok").on("click", function() { ret = true; jQuery.fancybox.close(); }); }, beforeClose: function() { callback.call(this, ret); } }); } var canPlayVideo = !!document.createElement('video').canPlayType; var canPlayAudio = !!document.createElement('audio').canPlayType; if (canPlayVideo) { $(document).on('click', '.show-video-local', function (event) { var $element = $(this); if (isDesktopBar) { var startTime = $element.data('start-time'); event.preventDefault(); fancyboxModal('
'); } else { var target = $element.attr("target"); if (target != null) { $element.removeAttr("target"); event.preventDefault(); setTimeout(function () { $(this).trigger(event); }, 10); } } }); } if (canPlayAudio) { $(document).on('click', '.show-audio-player', function(event) { event.preventDefault(); fancyboxModal('
'); }); } $(document).on('click', '.show-rules-filling', function(event) { event.preventDefault(); var content = $(this).attr('href'); fancyboxModal($(content).removeClass('hidden')); }) .on('click', '.button_show-action', function(event) { event.preventDefault(); var content = $(this).attr('href'); fancyboxModal($(content).removeClass('hidden')); }) .on('click', '.show-fancy-confirm', function(event) { event.preventDefault(); var content = $(this).attr('href'); fancyConfirm($(content).html(), function() {}); }); if ($('.form-trainer').length) fancyboxModal($('#trainer-modal').removeClass('hidden')); function calcMaxHeightModalBody() { var modalIndent = parseInt($('.modal-dialog').css('marginTop')) + parseInt($('.modal-dialog').css('marginBottom')); var modalBodyIndent = parseInt($('.modal-body').css('marginTop')) + parseInt($('.modal-body').css('marginBottom')); $('.modal-body').css('max-height', $(window).height() - modalIndent - modalBodyIndent - 2); } calcMaxHeightModalBody(); /* Handler collapse panel-time-line ==============================================================================*/ $(document) .on('show.bs.collapse', $('.panel-time-line').children('.panel-collapse'), function(e) { $(e.target).closest('.panel-time-line').addClass('opened'); }) .on('hide.bs.collapse', $('.panel-time-line').children('.panel-collapse'), function(e) { $(e.target).closest('.panel-time-line').removeClass('opened'); }); /* Handler panel-asset ==============================================================================*/ $(document) .on('show.bs.collapse', '.panel-asset .panel-collapse', function() { var $text = $(this).closest('.text'); $text.find('.read-more').hide(); $text.find('.hide-details').removeClass('hidden'); $text.find('.description-full').removeClass('hidden'); $text.find('.description-cut').addClass('hidden'); }) .on('hide.bs.collapse', '.panel-asset .panel-collapse', function() { var $text = $(this).closest('.text'); $text.find('.read-more').show(); $text.find('.hide-details').addClass('hidden'); $text.find('.description-full').addClass('hidden'); $text.find('.description-cut').removeClass('hidden'); }) .on('click', '.panel-asset .view-map', function() { var panelAsset = $(this).closest('.panel-asset'); if (panelAsset.find('.trigger-collapsed').hasClass('collapsed')) return; var needTodScrol = panelAsset.find('.map-container').offset().top - $(window).height() / 4; $('html, body').animate({ scrollTop: needTodScrol + 'px' }, 500); }) .on('click', '.panel-asset .view-photo', function() { var panelAsset = $(this).closest('.panel-asset'); if (panelAsset.find('.trigger-collapsed').hasClass('collapsed')) return; var needTodScrol = panelAsset.find('.panel-asset__slider').offset().top - $(window).height() / 4; $('html, body').animate({ scrollTop: needTodScrol + 'px' }, 500); }).on("shown.bs.collapse", ".panel-we-present .panel-collapse", function () { presentTextEllipsis(); });; /* Ellipsis for multiple line content ==============================================================================*/ function presentTextEllipsis() { $('.countries .country a, .countries .country span').dotdotdot({ ellipsis: ' ...', height: 40, callback: function(isTruncated, orgContent) { if (isTruncated) { $(this).attr("title", orgContent[0].data); } } }); } /*Ellipsis chart categories*/ function chartTextEllipsis() { if ($('.chart-controls__item').length > 0) { var width = $('.chart-controls__item').width(); $.each($('.chart-control_legendYears a'), function (index, categories) { var title = $(categories).attr('title'); $(categories).text(title).dotdotdot({ width: width, ellipsis: '...', callback: function (isTruncated, orgContent) { if (isTruncated) { $(this).attr("title", orgContent[0].data); } } }); }); } } function textEllipsis() { dotdotdotRun(); /* setTimeout for fix IE7 bug */ setTimeout(function() { dotdotdotRun(); }, 500); //$(window).on("load", function() { // // For cases when image absence can affect text truncating // dotdotdotRun(); //}); presentTextEllipsis(); chartTextEllipsis(); } function dotdotdotRun() { $('.infoblock-red .descr').dotdotdot(); $('.infoblock-grey:not(.adjustable-client)').find('.infoblock-body h3,.text').dotdotdot(); $('.adjustable-client').each(function () { var h = $(this).hasClass('adjustable-client_full') ? 50 : $(this).find('.text').css('max-height'); $(this).find('.text').dotdotdot({ height: h }); }); $('.page-title h1').dotdotdot(); $('.infoblock-red_popular-topics .title').dotdotdot(); $('.infoblock-grey_promo h2').dotdotdot(); } textEllipsis(); /* Networking block - Open/Close ==============================================================================*/ $('.inner-page .collapsable-widget h2').on("click", function () { $(this).parents('.collapsable-widget').find('.collapsable-widget-content').toggleClass('close'); return false; }); /* Putting footer on the bottom of the page ==============================================================================*/ function calculateMinHeightMain() { $('#main').css('min-height', $(window).height() - $('#footer').outerHeight() - parseInt($('#main').css('padding-top'))); } calculateMinHeightMain(); /* Fix position of dropdown menu in footer ==============================================================================*/ $('#footer').find('.dropdown').on('click', function() { var dmHeight = $(this).find('.dropdown-menu').height(); if (dmHeight > 100) { $(this).addClass('dropup'); } }); /* Center error page content ==============================================================================*/ function centerErrorPage() { var offsetTop = 0; if ($('body').height() <= $(window).height()) { offsetTop = ($('#main').height() - $('.error-page').height()) / 2; } else { offsetTop = 0; } $('.error-page').css('marginTop', offsetTop); } centerErrorPage(); /* Events for resize screen ==============================================================================*/ $(window).on("resize", function() { textEllipsis(); calculateMinHeightMain(); calcMaxHeightModalBody(); centerErrorPage(); }); /* Animate signatures ==============================================================================*/ function animateSign() { var timer = 0; var selectors = ''; var countTagSpan = 0; var $textBlock; $('.animate-sign-text').each(function() { if ($(this).find('span').length > countTagSpan) { countTagSpan = $(this).find('span').length; $textBlock = $(this); } }); function createStylesForAnimation() { $textBlock.find('span').each(function(indexElem, element) { var index = indexElem + 1; var selector = '.start-animate .animate-sign-text span:nth-child(' + index + ') {opacity: 1; transition:opacity ' + timer + 's ease-in-out}'; timer += 0.025; selectors += selector; }); } if ($textBlock && $textBlock.length) createStylesForAnimation(); $('body').append(''); $('.animate-sign').on("click", function() { var $contentBlock = $(this).find('.animate-sign-content'); if ($contentBlock.hasClass('start-animate')) return; $contentBlock.addClass('start-animate'); setTimeout(function() { $contentBlock.removeClass('start-animate'); }, timer + 7000); }); } if ($('.trainer-content').length) animateSign(); /* On toggle visibility field search ==============================================================================*/ $('.dropdown-toggle_search-btn').on('click', function() { $(this).parent().addClass('opened'); }); $(document).on('click', function(e) { if ($(e.target).closest('.dropdown-toggle_search-btn').length || $(e.target).closest('.search.dropdown-menu').length) return; $('.dropdown_header-search').removeClass('opened'); }); $('.survey__question').find('input').on('change', function() { var $surveyQuestion = $(this).closest('.survey__question'); var isShowInputText = !$(this).closest('.survey__question').find('.another-answer-box input').is(':checked'); var $inputAnswer = $surveyQuestion.find('.another-answer-text'); $inputAnswer.toggleClass('hidden', isShowInputText); //.focus(); if (!isShowInputText) $inputAnswer.trigger("focus"); }); /* Cartography ==============================================================================*/ var $tabContent = $('.map-finder__tab-content'); var changeSizeMapContainer; if (isFullScreenEnable) { changeSizeMapContainer = function() { if (document.fullscreenElement) { calcHeightContainerMap(screen.height); } else { calcHeightContainerMap($('#map').height()); } }; } else { changeSizeMapContainer = function() { if ($('.panel-full-screen').hasClass('in-full-screen')) { calcHeightContainerMap($(window).height()); } else { calcHeightContainerMap($('#map').height()); } }; } function calcHeightContainerMap(height) { var $tabsContent = $('.map-finder__tabs-content'); var minHeightTabsContent = height - parseInt($tabsContent.css('margin-top')) - parseInt($tabsContent.css('margin-bottom')); $('.map-finder__tab-content').css('max-height', minHeightTabsContent); } $(document) .on('click', '.map-finder__tab', function() { if ($('.map-finder').hasClass('opened') && $(this).hasClass('selected')) { $('.map-finder').removeClass('opened'); } else { var idTabContent = $(this).attr('href'); $('.map-finder__tab-content').removeClass('opened'); $('' + idTabContent + '').addClass('opened'); $('.map-finder__tab').removeClass('selected'); $(this).addClass('selected'); $('.map-finder').addClass('opened'); } return false; }); $tabContent.mCustomScrollbar({ axis: 'y', scrollInertia: 10, advanced: { updateOnContentResize: true, autoUpdateTimeout: 30 }, mouseWheel: { preventDefault: true }, callbacks: { onScrollStart: function() { $('.map-finder .select-custom').select2("close"); } } }); function updateSizeMap() { changeSizeMapContainer(); $tabContent.mCustomScrollbar('update'); typeof window.resizeMap === "function" && window.resizeMap(); } $(window).on('resize', function() { if ($('.panel-full-screen--map').length) updateSizeMap(); }); if (document.addEventListener) { document.addEventListener("fullscreenchange", function() { if ($('.panel-full-screen--map').length) updateSizeMap(); }); } $('.map-finder .select-custom') .each(function() { var theme = $(this).data('theme') || 'bd-red'; var search = $(this).data('search') ? 0 : -1; $(this) .select2({ width: 'auto', dropdownParent: $('.panel-full-screen--map'), minimumResultsForSearch: search, theme: theme }); }); $('.is-check-element').find('input:checkbox').on('change', function() { if ($(this).is(':checked')) { $(this).closest('.is-check-element').addClass('selected'); } else { $(this).closest('.is-check-element').removeClass('selected'); } }); var timeValue = [0, 24]; $('.slider-timing').slider({ range: true, min: timeValue[0], max: timeValue[1], values: timeValue, create: function(event, ui) { $(event.target).find('.ui-slider-handle').eq(0).append($('
', { 'class': 'time-range time-range_from', html: timeValue[0] })); $(event.target).find('.ui-slider-handle').eq(1).append($('
', { 'class': 'time-range time-range_to', html: timeValue[1] })); }, slide: function(event, ui) { $(event.target).find('.time-range_from').text(ui.values[0]); $(event.target).find('.time-range_to').text(ui.values[1]); }, change: function(event, ui) { $(event.target).find('.time-range_from').text(ui.values[0]); $(event.target).find('.time-range_to').text(ui.values[1]); } }); function onClickMultiButton() { var $item = $(this).closest('.filter-time-item'); var $buttons = $item.find('.multi-button__item'); var $weekDay = $item.find('.week').find('input'); var $timeSlider = $item.find('.slider-timing'); var isLink = !!$(this).attr('href'); var disableWeedDay = function() { $buttons.removeClass('selected').find('input').prop('checked', false); $timeSlider.slider('disable'); $item.addClass('slider-timing-disable'); $weekDay.prop("disabled", true); $(this).find('input').prop('checked', true); }; var enableWeekDay = function() { $buttons.removeClass('selected').find('input').prop('checked', false); $timeSlider.slider('enable'); $item.removeClass('slider-timing-disable'); $weekDay.prop("disabled", false); }; if (isLink) { if (!$(this).hasClass('selected')) { enableWeekDay.call(this); $(this).addClass('selected'); } else { $(this).removeClass('selected'); } } else { var idPanelCollapse = $(this).siblings('[data-toggle="collapse"]').attr('href'); if ($(idPanelCollapse).hasClass('in')) $(idPanelCollapse).collapse('hide'); if ($(this).hasClass('selected')) { enableWeekDay.call(this); } else { disableWeedDay.call(this); $(this).addClass('selected'); } } } $('.multi-button__item').on('click', onClickMultiButton); /* Modification input file ==============================================================================*/ initInputFile(); /* Toggle country ==============================================================================*/ $('.dropdown-toggle_country').on('click', function(event) { event.preventDefault(); var $dropdown = $(this).closest('.dropdown_country'); $dropdown.toggleClass('opened'); $dropdown.find('.search__field').trigger("focus"); }); $(document).on('click', function(event) { if ($(event.target).closest('.dropdown_country').length && !$(event.target).closest('.dropdown-menu__item').length) return; $('.dropdown_country').removeClass('opened'); }); }); /* For IE - Hide focus on input elements ==============================================================================*/ (function($) { $(function() { window.setInterval(function() { $(document.activeElement).filter('input:hidden').trigger("blur"); }, 500); }); })(jQuery); window.scrollToElement = function($element, timeScroll) { var needTodScroll = $element.offset().top - $('#header').height(); $('html, body').animate({ scrollTop: needTodScroll + 'px' }, timeScroll); }; /* Tool Tip */ function initToolTip($container) { var $hiddenPopover = $('.popover-custom--hidden'); var $hiddenPopoverContent = $hiddenPopover.find('.popover-content'); // Используем hover с двумя функциями для наведения и ухода $container.find('.tooltip_item').hover( function () { // Обработчик mouseenter var content = $(this).find('.tooltip_content').html(); $hiddenPopoverContent.html(content); var offsetTop = $(this).offset().top - $(window).scrollTop() - $('#header').innerHeight() - $hiddenPopover.innerHeight() - 20; var placementPopover = offsetTop > 0 ? 'top' : 'bottom'; $(this).popover({ title: '', trigger: 'manual', content: function () { return content; }, placement: placementPopover, container: 'body', html: true }); $('.tooltip_item').not(this).popover('hide').popover('destroy'); $(this).popover('show'); }, function () { // Обработчик mouseleave var _this = this; var popoverTimerId = setInterval(function () { if (!$(".popover:hover").length) { if (!$(_this).is(':hover')) { $(_this).popover('hide').popover('destroy'); $hiddenPopoverContent.html(''); clearInterval(popoverTimerId); } } }, 1000); } ); } /* Input files */ function initInputFile(container) { var $wrapInputFile = $('
'); var fileInputs = typeof container === 'undefined' ? $('[type="file"]') : $(container).find('[type="file"]'); fileInputs.each(function() { var $input = $(this); var fileNumber = $input.data('file-number') || ''; var placeholder = $input.data('placeholder') || ''; var browse = $input.data('browse') || ''; var $name = $('
', { 'class': 'jq-file__name', html: placeholder }); var $file = $('
', { 'class': 'jq-file__browse', html: browse }); $input .wrap($wrapInputFile) .before($name, $file) .on('change', function() { var value = $input.val(); if ($input.is('[multiple]') && $input[0].files) { value = ''; var files = $input[0].files.length; if (files > 0) { value = fileNumber + ' ' + files; } } value = value.replace(/.+[\\\/]/, '') || placeholder; $name.text(value); }); }); } function videoCanPlay(el) { if ($('html').hasClass('ua-desktop')) { if (el != null && $(el).length > 0 && $(el).context != null) { var w = $(el).context.videoWidth; var h = $(el).context.videoHeight; if (w > 0) { var ww = $("html").width(); var w1 = w; var h1 = h; if (ww <= w1) { w1 = ww - 300; h1 = h / (w / w1); w = w1; h = h1 - 50; } $(el).css("width", w + "px").css("height", h + "px"); $.fancybox.update(); } } } }; // Content of this file was generated on application start var Constants = {PageSize:10,MediaLibraryPageSize:12,PaginationSize:3,OilCatalogPageSize:9,WinnersPageSize:20}; Constants.queryParamNames = { "LanguageCode": "lng", "LanguageGuid": "l", "WidgetId": "wid", "PressReleaseId": "rid", "InformationMaterialId": "mid", "MediaFileId": "mfid", "Region": "reg", "SearchQuery": "query", "Industry": "ind", "Country": "ctry", "StartDate": "sdate", "EndDate": "edate", "FileType": "ftype", "Theme": "theme", "Person": "pers", "Project": "proj", "Organization": "org", "Audience": "aud", "Importance": "imp", "Tags": "tags", "Id": "id", "IsFullScreenMode": "isFullScreenMode", "Expand": "expand", "AdvertisementId": "aid", "TypeId": "typeid", "TreeId": "treeid", "OwnerId": "ownerid", "Query": "query", "OrganizationId": "organizationId", "ProjectId": "projectId", "FieldOfActivityId": "fieldOfActivityId", "DownloadFile": "dl", "ConfirmationToken": "token", "SubscriptionAction": "action", "SubscriptionGuid": "subscription", "RegistrationGuid": "registration", "EventId": "eventId", "PreviewMassMediaId": "preview_corpmediaid", "PreviewEventId": "preview_eventid", "OfficeWebAppsFileSource": "src", "OilProductId": "product", "ApplicationId": "application", "ViscosityId": "viscosity", "BrandId": "brand", "GasStationId": "gasStationId", "Take": "take", "Skip": "skip" }; Constants.AjaxResultCodes = { "Success": "Success", "Error": "Error" }; Constants.InformationMaterialTypes = { "Default": 0, "MediaAlbum": 1, "PressRelease": 2, "News": 3, "MassMediaIssue": 4, "Event": 5, "Publication": 6 }; Constants.fileTypes = { "Default": 0, "Document": 1, "Image": 2, "Video": 3, "Audio": 4, "Template": 5, "Zip": 6 }; Constants.previewTypes = { "Default": 0, "NewsFeeds": 1, "Album": 2, "AlbumFeed": 3, "Interestingly": 4, "MediaLibrary": 5, "ItMayInterestHigher": 6, "ItMayInterestLower": 7, "Photowire": 8, "Videos": 9, "PhotoRibbon": 10 }; Constants.Languages = ['kz','ru','nl','cn','sk','ka','sr','de','fi','el','pl','dk','en','se','bg','no','az','hr','pt','it','tr','fr','hu','cz','lt','lv','uk','me','ar','mk','ro','es','uz','be']; ; /*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD define(['jquery'], factory); } else if (typeof exports === 'object') { // CommonJS factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (value !== undefined && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setTime(+t + days * 864e+5); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = parts.join('='); if (key && key === name) { // If second argument (value) is a function it's a converter... result = read(cookie, value); break; } // Prevent storing a cookie that we couldn't decode. if (!key && (cookie = read(cookie)) !== undefined) { result[name] = cookie; } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) === undefined) { return false; } // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return !$.cookie(key); }; })); ; (function ($) { $.lukoilGetCookie = function (key) { return Cookies.get(key); } $.lukoilSaveCookie = function (key, value, config) { var redList = [ "LukCookiePolicy", "LukCookiePolicy_functional", "LukCookiePolicy_analystic", "LukCartMapPositionYandex", "LukCartMapPositionGoogle", "LukCountryCode", "LukGeoObjectId", "LukGeolocation", "LukLocationSelect", "LukLanguage", "LukDisplayedBanners", "LukDisplayedBannersAllowAdditional", "LukOnlineSuveyUserId", "LukOnlineSurveySkipIds", "LukRedirected", "OldSiteRedirection", "OldSiteRedirectionSession", "azs_prices_station_id", "FULL_SITE_MODE", "TEXT_SIZE", "WIDGETS_SAVED", "LukSlider" ]; var functionalCookieEnabled = $.lukoilGetCookie('LukCookiePolicy_functional'); if (window.CookiePolicyEnable == null || window.CookiePolicyEnable == false || functionalCookieEnabled == 'true' || ((functionalCookieEnabled == null || functionalCookieEnabled == "" || functionalCookieEnabled == 'false') && $.inArray(key, redList) >= 0)) { if (config != null) { Cookies.set(key, value, config); } else { Cookies.set(key, value); } } } })(jQuery);; // @hash v3-B9289FC5A3EA2EB516FF11485225A6B93A5B9059 // Automatically generated by ReactJS.NET. Do not edit, your changes will be overridden. // Version: 2.1.1-dev-20151124-1300 (build 563ed55) // Generated at: /////////////////////////////////////////////////////////////////////////////// /*! globaldata v0.0.1 | MIT */ ; (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { var current = global.GlobalData; var exports = global.GlobalData = factory(); exports.noConflict = function () { global.GlobalData = current;return exports; }; })()); })(this, function () { 'use strict'; ///* eslint-disable no-var */ //function assign(target) { // for (var i = 1; i < arguments.length; i++) { // var source = arguments[i]; // for (var key in source) { // target[key] = source[key]; // } // } // return target //} ///* eslint-enable no-var */ /* eslint-disable no-var */ function main(url, name) { var _handshake = undefined; var _key = undefined; var _url = undefined; var _name = "globaldata-api"; //window.addEventListener ? // window.addEventListener("load", constr, false) : // window.attachEvent && window.attachEvent("onload", constr); function handshake() { Postmate.debug = true; _handshake = new Postmate({ container: document.body, url: _url, name: _name }); } function initsync(url, key) { _url = url + "?" + key; handshake(); } function init(url, key) { _url = url + "?" + key; if (document.readyState === "loading") { window.addEventListener ? window.addEventListener("DOMContentLoaded", handshake, false) : window.attachEvent && window.attachEvent("onDOMContentLoaded ", handshake); } else { handshake(); } } function set(name, value) { return regeneratorRuntime.async(function set$(context$3$0) { var _this = this; while (1) switch (context$3$0.prev = context$3$0.next) { case 0: if (!(typeof _handshake === 'undefined')) { context$3$0.next = 3; break; } console.log("run init before use"); return context$3$0.abrupt('return'); case 3: context$3$0.next = 5; return regeneratorRuntime.awrap(_handshake.then(function callee$3$0(child) { return regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: context$4$0.next = 2; return regeneratorRuntime.awrap(child.call('set_' + name, value)); case 2: case 'end': return context$4$0.stop(); } }, null, _this); })); case 5: case 'end': return context$3$0.stop(); } }, null, this); } function get(name) { var args$3$0 = arguments; return regeneratorRuntime.async(function get$(context$3$0) { var _this2 = this; while (1) switch (context$3$0.prev = context$3$0.next) { case 0: if (!(typeof _handshake === 'undefined' || args$3$0.length && !name)) { context$3$0.next = 3; break; } console.log("run init before use"); return context$3$0.abrupt('return'); case 3: context$3$0.next = 5; return regeneratorRuntime.awrap(_handshake.then(function callee$3$0(child) { return regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: context$4$0.next = 2; return regeneratorRuntime.awrap(child.get(name).then(function (data) { /*console.log(name + " - " + data);*/return data; })); case 2: return context$4$0.abrupt('return', context$4$0.sent); case 3: case 'end': return context$4$0.stop(); } }, null, _this2); })); case 5: return context$3$0.abrupt('return', context$3$0.sent); case 6: case 'end': return context$3$0.stop(); } }, null, this); } function remove(name) { var args$3$0 = arguments; return regeneratorRuntime.async(function remove$(context$3$0) { var _this3 = this; while (1) switch (context$3$0.prev = context$3$0.next) { case 0: if (!(typeof _handshake === 'undefined' || args$3$0.length && !name)) { context$3$0.next = 3; break; } console.log("run init before use"); return context$3$0.abrupt('return'); case 3: context$3$0.next = 5; return regeneratorRuntime.awrap(_handshake.then(function callee$3$0(child) { return regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: context$4$0.next = 2; return regeneratorRuntime.awrap(child.call('remove_' + name, value)); case 2: case 'end': return context$4$0.stop(); } }, null, _this3); })); case 5: case 'end': return context$3$0.stop(); } }, null, this); } return Object.create({ init: init, initsync: initsync, set: set, get: get, remove: remove }); } var api = main(); /* eslint-enable no-var */ return api; });; var LukoilApp = new Marionette.Application(); $(document).ready(function () { if (!Date.prototype.toISOString) { (function () { function pad(number) { if (number < 10) { return '0' + number; } return number; } Date.prototype.toISOString = function () { return this.getUTCFullYear() + '-' + pad(this.getUTCMonth() + 1) + '-' + pad(this.getUTCDate()) + 'T' + pad(this.getUTCHours()) + ':' + pad(this.getUTCMinutes()) + ':' + pad(this.getUTCSeconds()) + '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z'; }; }()); } (function() { var D = new Date('2011-06-02T09:34:29+02:00'); if (isNaN(D) || D.getUTCMonth() !== 5 || D.getUTCDate() !== 2 || D.getUTCHours() !== 7 || D.getUTCMinutes() !== 34) { Date.fromISO = function(s) { var day, tz, rx = /^(\d{4}\-\d\d\-\d\d([tT][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/, p = rx.exec(s) || []; if (p[1]) { day = p[1].split(/\D/); for (var i = 0, L = day.length; i < L; i++) { day[i] = parseInt(day[i], 10) || 0; } day[1] -= 1; day = new Date(Date.UTC.apply(Date, day)); if (!day.getDate()) return NaN; if (p[5]) { tz = (parseInt(p[5], 10) * 60); if (p[6]) tz += parseInt(p[6], 10); if (p[4] == '+') tz *= -1; if (tz) day.setUTCMinutes(day.getUTCMinutes() + tz); } return day; } return NaN; }; } else { Date.fromISO = function(s) { return new Date(s); }; } })(); var options = {}; if (lukAppSettings) { $.extend(options, lukAppSettings); } setTimeout(function() { $(document).on("shown.bs.collapse", ".ua-safari .content .panel-collapse", function () { $(this).find("img").each(function() { var $clone = $(this).clone(true); $(this).replaceWith($clone); }); }); },100); LukoilApp.start(options); }); /* Number.prototype.formatNumber(n, x, s, c) @param integer n: length of decimal @param integer x: length of whole part @param mixed s: sections delimiter @param mixed c: decimal delimiter */ Number.prototype.formatNumber = function (n, x, s, c) { var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\D' : '$') + ')', num = this.toFixed(Math.max(0, ~~n)); return (c ? num.replace('.', c) : num).replace(new RegExp(re, 'g'), '$&' + (s || ',')); }; String.prototype.encodeURIComponent = function () { return isNullOrWhiteSpace(this) ? null : encodeURIComponent(this); }; String.prototype.decodeURIComponent = function () { return isNullOrWhiteSpace(this) ? null : decodeURIComponent(this); }; if (typeof String.prototype.startsWith != 'function') { String.prototype.startsWith = function (str) { return this.substring(0, str.length) === str; } }; Date.prototype.localAsUtcDate = function() { return new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate())); }; Date.prototype.utcAslocalDate = function () { return new Date(this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate()); }; function isNullOrWhiteSpace(value) { return value == null || value.trim() == ""; } function submitSearchForm(form) { var input = $(form).find(":input.inputSearchQuery"); var val = input.val().trim(); if (val != "") { $(form).find(":input.searchQuery").val(val.encodeURIComponent()); } else { return false; } return true; } /* Jquery Plugins */ (function ($) { $.validator.messages.required = GlobalSettings.Validator.Required; $.validator.messages.email = GlobalSettings.Validator.Email; $.validator.messages.maxlength = $.validator.format(GlobalSettings.Validator.MaxLength); $.validator.addMethod("regex", function (value, element, regstring) { if (this.optional(element)) { return true; } var regParts = regstring.match(/^\/(.*?)\/([gim]*)$/); var regexp = regParts ? new RegExp(regParts[1], regParts[2]) : new RegExp(regstring); var regexMessage = $(element).attr("regexMessage"); if (regexMessage == null || regexMessage == "") { regexMessage = GlobalSettings.Validator.Regex; } $.validator.messages["regex"] = regexMessage; return regexp.test(value); }, GlobalSettings.Validator.Regex); // Date now max validator $.validator.addMethod("lukoildatenowmax", function (value, element, params) { try { return (!value.trim()) || ($.datepicker.parseDate(GlobalSettings.ViewForm.DateFormat, value) <= $.datepicker.parseDate(GlobalSettings.ViewForm.DateFormat, params.nowdate)); } catch (e) { return false; } }); $.validator.unobtrusive.adapters.add("lukoildatenowmax", ['nowdate'], function (options) { var params = { nowdate: options.params.nowdate }; options.rules["lukoildatenowmax"] = params; options.messages["lukoildatenowmax"] = options.message; }); jQuery.validator.setDefaults({ highlight: function (element) { if ($(element).is("select")) { $(element).closest("div.form-control").addClass("error"); } $(element).addClass("input-validation-error"); }, unhighlight: function (element) { if ($(element).is("select")) { $(element).closest("div.form-control").removeClass("error"); } $(element).removeClass("input-validation-error"); } }); //File size validator jQuery.validator.unobtrusive.adapters.add("filesize", ["maxfilesizemb"], function (options) { var params = { maxfilesizemb: options.params.maxfilesizemb }; options.rules["filesize"] = params; if (options.message) { options.messages["filesize"] = options.message; } }); jQuery.validator.addMethod("filesize", function (value, element, param) { if (value === "") { return true; } var maxFileSizeMb = parseInt(param.maxfilesizemb); // use HTML5 File API to check selected file size // https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications // http://caniuse.com/#feat=fileapi if (element.files != undefined && element.files[0] != undefined && element.files[0].size != undefined) { var filesize = parseInt(element.files[0].size); return filesize <= maxFileSizeMb * 1024 * 1024; } // if the browser doesn't support the HTML5 file API, just return true // since returning false would prevent submitting the form return true; }); $.fn.getNullValue = function () { var val = $(this).val(); return val == "null" ? null : val; }; $.fn.formStyler = function (isDestroy) { $(this).find("select.select-custom").initSelect2(isDestroy); return this; }; $.fn.destroySelect2 = function () { $(this).select2("destroy"); }; $.fn.initSelect2 = function (isDestroy) { $(this).each(function () { var minimumResultsForSearch = Infinity; var dataSearch = $(this).attr("data-search"); if (dataSearch != null && dataSearch.toLowerCase() == 'true') { minimumResultsForSearch = 1; } if (isDestroy != null && isDestroy) { $(this).destroySelect2(); } var theme = $(this).attr("data-theme"); var select2Options = { minimumResultsForSearch: minimumResultsForSearch, width: 'auto', language: window.GlobalSettings.CurrentLanguage, theme: theme || '' }; var dataChangeSelectAll = $(this).attr("data-change-select-all"); if (dataChangeSelectAll != null && dataChangeSelectAll.toLowerCase() == 'true') { select2Options.templateResult = function(data) { if (data.id === '' || data.id === 'null' || data.id === '0') { return GlobalSettings.SelectAllOptionText; } return data.text; }; } $(this).select2(select2Options).on('select2:close', function() { var frm = $(this).closest("form"); if (frm != null) { var validator = $(frm).validate(); if (validator != null) { $(this).valid(); $(frm).fixValidationStyle(); } } }); }); return this; }; $.fn.setCurrentValuesAsDefault = function () { $(this).find(":input").each(function () { var type = $(this).prop("type"); if (type === "checkbox" || type === "radio") { $(this).prop("defaultChecked", $(this).prop("checked")); } else if (type === "hidden" || type === "password" || type === "text" || type === "textarea") { $(this).prop("defaultValue", $(this).prop("value")); } else if (type === "select-one" || type === "select-multiple") { $(this).find("option").each(function () { $(this).prop("defaultSelected", $(this).prop("selected")); }); } }); return this; }; $.fn.formReset = function (clearForm, resetValidation) { var $form = $(this); if ($form != null) { $.each($form, function () { if (clearForm != null && clearForm) { $(this).find("input[type='text']").val(""); $(this).find("input[type='checkbox']").removeAttr("checked"); $(this).find("input[type='radio']").removeAttr("checked"); $(this).find("select option").removeAttr("selected"); $(this).setCurrentValuesAsDefault(); } this.reset(); $(this).formStyler(true).formStyler(); if (resetValidation == undefined || resetValidation) { $(this).resetValidation(); } }); } return this; }; $.fn.resetValidation = function () { var $form = $(this); //reset jQuery Validate's internals var validator = $form.validate(); validator.resetForm(); $form.hideValidationMessages(); return this; }; $.fn.hideValidationMessages = function () { var $form = $(this); $form.find(".field-validation-error[data-valmsg-for]").hide(); $form.find(".field-validation-error, .input-validation-error").removeClass("field-validation-error").removeClass("input-validation-error"); return this; }; $.fn.hideValidationMessage = function () { var $field = $(this); var $form = $field.closest("form"); var $message = $form.find(".field-validation-error[data-valmsg-for='" + $field.prop("name") + "']"); $message.removeClass("field-validation-error").empty(); return this; }; /* Get all form parameters */ $.fn.serializeJSON = function (includeDisabled) { var json = {}; var disabled = null; if (includeDisabled != null && includeDisabled) { disabled = $(this).find(":input:disabled").removeAttr("disabled"); } jQuery.map($(this).serializeArray(), function (n, i) { if (!json.hasOwnProperty(n["name"]) || json[n["name"]] == "false") {//for checkbox which was built MVC json[n["name"]] = n["value"]; } }); if (includeDisabled != null && includeDisabled && disabled != null) { disabled.attr("disabled", "disabled"); } return json; }; $.fn.getFormValidationSummary = function () { var $el = $(this).find(".validation-summary-errors ul"); if ($el.length == 0) { $(this).prepend('
    '); return $(this).getFormValidationSummary(); } return $el; }; $.fn.fixValidationStyle = function () { $(this).each(function () { $(this).find("div.form-group").removeClass("error"); $(this).find(".input-validation-error").each(function () { $(this).fixValidationElementStyle(); }); }); return this; }; $.fn.fixValidationElementStyle = function () { if ($(this).attr("type") == "file") { $(this).closest("div.form-group").addClass("error"); } return this; }; $.fn.showValidationMessage = function (form) { $(this).each(function (i, e) { var name = $(e).attr("name"); $(e).addClass("input-validation-error").removeClass("valid"); $(e).fixValidationElementStyle(); if (form == null) form = $(e).closest("form"); var $dataValmsgFor = $(form).find("[data-valmsg-for='" + name + "']"); if ($dataValmsgFor == null || $dataValmsgFor.length == 0) { $dataValmsgFor = $(""); $dataValmsgFor.insertAfter($(e)); } $dataValmsgFor.addClass("field-validation-error").show(); }); return this; }; $.fn.isValiationSummaryErrors = function (data) { var form = this; if (data == null || data.Tag == null || data.Tag != "ValidationErrors") return false; var $list = $(form).getFormValidationSummary(); //clear last validation messages $list.html(""); $(form).find(".field-validation-error[data-valmsg-for]").hide(); $(form).find(".field-validation-error, .input-validation-error").removeClass("field-validation-error").removeClass("input-validation-error"); $(form).find("div.form-group").removeClass("error"); $.each(data.State, function (i, item) { var valmsg, lblTxt, errorList = ""; if (item.Name) { var el = $(form).find("[name='" + item.Name + "']"); $(el).showValidationMessage(form); valmsg = $(form).find("[data-valmsg-for='" + item.Name + "']"); lblTxt = $(form).find("label[for='" + item.Name + "']").text(); if (lblTxt) { lblTxt += ": "; } } if (valmsg != null && valmsg.length) { $(valmsg).text(item.Errors.shift()); if (!item.Errors.length) { return; } } $.each(item.Errors, function (c, val) { errorList += "
  • "; if (lblTxt != null && lblTxt != "") errorList += lblTxt; errorList += val + "
  • "; }); $list.append(errorList); }); if ($list.find("li:first").length) { $list.closest("div").show(); } return true; }; $.fn.initDatepickers = function () { $(this).find(".form-datePicker").each(function () { $(this).datepicker({ dateFormat: GlobalSettings.ViewForm.DateFormat, changeYear: true, changeMonth: true, yearRange: "1990:+3", firstDay: GlobalSettings.ViewForm.FirstDay, maxDate: $(this).data('val-lukoildatenowmax-nowdate'), onSelect: function (dateText, inst) { $(inst.input).val(dateText).datepicker("hide"); var frm = $(inst.input).closest("form"); if (frm != null && frm.length > 0) { $(frm).validate().element("#" + inst.id); } $(inst.input).trigger("change"); }, onClose: function (selectedDate) { var dateTo = $(this).attr("date-to"); if (dateTo != null && dateTo != '') { $("#" + dateTo).datepicker("option", "minDate", selectedDate); } var dateFrom = $(this).attr("date-from"); if (dateFrom != null && dateFrom != '') { $("#" + dateFrom).datepicker("option", "maxDate", selectedDate); } } }); }); return this; }; $.fn.reloadLukoilCaptcha = function () { $(this).find(".captcha").find("[id$='_ReloadLink']").trigger("click"); }; $.reloadLukoilCaptcha = function (captchaId) { $("form .captcha #" + captchaId + "_ReloadLink").trigger("click"); }; $.fn.getCaptcha = function () { var $frm = $(this); var captchaID = $frm.find("input[name='Captcha_Client_CaptchaID']").val(); var userInputID = $frm.find("input[name='Captcha_Client_UserInputID']").val(); var instanceID = $frm.find("input[name='Captcha_Client_InstanceID']").val(); var value = $frm.find("#" + userInputID).val(); return { value: value, captchaID: captchaID, userInputID: userInputID, instanceID: instanceID } }; $.fn.lukoilAjaxSubmitForm = function (beforeSubmitCallback, completeCallback, successCallback, hideFormAfterSubmit, onCloseCallBack ) { var $frm = $(this); if ($frm.attr("hideForm") == null) { $frm.attr("hideForm", hideFormAfterSubmit == null ? true : hideFormAfterSubmit); } $frm.on("submit",function () { if ($frm.valid()) { $frm.hideValidationMessages(); $frm.find(".overlay").show(); $frm.ajaxSubmit({ beforeSubmit: function(arr, $form, options) { if (beforeSubmitCallback) { beforeSubmitCallback(); } }, success: function(responseText, statusText, xhr, form) { var responseJson = $.isPlainObject(responseText) ? responseText : $.parseJSON(responseText); if (!$frm.isValiationSummaryErrors(responseJson)) { if (responseJson != null) { var actionResult = responseJson.Result; if (window.location.pathname.indexOf('/consumers/support') != -1) { ym(42633489, 'reachGoal', 'mn_expert_forms_sent') } switch (actionResult) { case Constants.AjaxResultCodes.Success: $.fancyboxMessage(responseJson.Value, function() { if (responseJson.OnCloseEvent != null) onCloseCallBack(responseJson.OnCloseEvent) }); var hideForm = $frm.attr("hideForm"); if (hideForm == null || hideForm == "true") { $frm.hide(); } else { $frm.reloadLukoilCaptcha(); } if (successCallback) { successCallback(); } break; default: $.fancyboxMessage(responseJson.Value); $frm.reloadLukoilCaptcha(); break; } } } else { $frm.reloadLukoilCaptcha(); $.fancybox.reposition(); } }, error: function(jqXHR, textStatus, errorThrown) { $frm.reloadLukoilCaptcha(); if (jqXHR != null && jqXHR.responseJSON != null && jqXHR.responseJSON.Result != null && jqXHR.responseJSON.Value != null) { if (jqXHR.responseJSON.WebEventCode != null && jqXHR.responseJSON.WebEventCode == GlobalSettings.WebEventCodes.RuntimeErrorPostTooLarge) { $.fancyboxMessage(GlobalSettings.ErrorMessages.RuntimeErrorPostTooLargeMessage); } else { $.fancyboxMessage(jqXHR.responseJSON.Value); } } else { $.fancyboxMessage(GlobalSettings.ErrorMessages.FormSubmitErrorMessage); } }, complete: function() { if (completeCallback) { completeCallback(); } $frm.find(".overlay").hide(); } }); } else { $frm.fixValidationStyle(); } return false; }); }; $.fn.lukMediaAlbum = function (options) { var gallery = function () { var $container = $(this); var $thumbs = $container.find('.photo-album-thumbs'); var $thumb = $container.find('.photo-album-thumb'); var $box = $container.find('.photo-album-box'); var $boxElem = $('
    '); var content = []; var data; var isDisable = false; var mediaContent = { image: { img: function (src, icon) { icon = icon || ''; return ' ' + icon; } }, video: { local: function (src) { return ''; }, youtube: function (src) { return '"); $iframe = $("iframe#" + iframeId); url = url.replace("http://", "https://"); if (url.includes("?")) url += "&printmode=1";else url += "?printmode=1"; $iframe.attr("src", url); if (list.length === 1) { $iframe.load(function () { restoreTitleEllipsedWithDotJqueryPlugin($iframe); callPrint(iframeId); }); } } else { // add child iframe var _index = index; var _url = url; loadingIframesIndexes.push(_index); $iframe.load(function () { restoreTitleEllipsedWithDotJqueryPlugin($iframe); var newFrameId = iframeId + "_" + _index; $("body").find("#" + newFrameId).remove(); $("body").first().append(""); var $newIframe = $("body").first().find("iframe#" + newFrameId); _url = _url.replace("http://", "https://"); if (_url.includes("?")) _url += "&printmode=1";else _url += "?printmode=1"; $newIframe.attr("src", _url); $newIframe.load(function () { restoreTitleEllipsedWithDotJqueryPlugin($newIframe); /*var newIframeContents = $newIframe.contents().find("body"); $iframe.contents() .find("body").first() .append("
    ") .append(newIframeContents);*/ loadingIframesIndexes = _.filter(loadingIframesIndexes, function (ind) { return ind !== _index; }); if (loadingIframesIndexes.length === 0) { callPrint(iframeId); } }); }); } }); return false; }; callPrint = function callPrint(iframeId) { koObject.LoadingInProccess(false); return; var iframe = document.getElementById(iframeId).contentWindow; iframe.focus(); iframe.print(); }; restoreTitleEllipsedWithDotJqueryPlugin = function restoreTitleEllipsedWithDotJqueryPlugin($iframe) { return; var page = $iframe[0]; var iframeDocument = page.contentDocument || page.contentWindow.document; var $title = $(iframeDocument).find(".page-title h1"); var fullTitle = $title.data("full-title"); if (fullTitle) $title.text(fullTitle); }; removeAll = function removeAll(data, event) { var needToDelete; return regeneratorRuntime.async(function removeAll$(context$3$0) { while (1) switch (context$3$0.prev = context$3$0.next) { case 0: needToDelete = false; $.fancyConfirm(localizedMessages.cofirmRemoving, function callee$3$0(confirmResult) { return regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: if (confirmResult) { cookieStorageFacade.removeAll(); showMessageForEmptyFavorites(event.target); showFavoritesCount(); } case 1: case "end": return context$4$0.stop(); } }, null, this); }, "YesNo"); case 2: case "end": return context$3$0.stop(); } }, null, this); }; downloadFiles = function downloadFiles(data, event) { var $checkedInputs = $(event.target).closest("div.panel-content").prev().find("input:checked"); if ($checkedInputs.length) { var queryParams = ""; var totalFileSize = 0.0; _.each($checkedInputs, function (input) { var file = createFavoriteFileFromInputData(input); queryParams += file.fileid + "," + file.librarytype + ";"; totalFileSize += file.filesize; }); var sizeInMb = calculateSizeInMb(totalFileSize); if (sizeInMb > settings.favoritesBatchMaxSizeInMb) { var msg = localizedMessages.maxDownloadFileSizeExeed.replace("{0}", settings.favoritesBatchMaxSizeInMb); $.fancyboxMessage(msg); } else window.location.href = "/Handlers/DownloadMaterialsArchiveHandler.ashx?f=" + queryParams; } }; removeFiles = function removeFiles(data, event) { var $checkedInputs, needToDelete; return regeneratorRuntime.async(function removeFiles$(context$3$0) { while (1) switch (context$3$0.prev = context$3$0.next) { case 0: $checkedInputs = $(event.target).closest("div.panel-content").prev().find("input:checked"); if ($checkedInputs.length) { needToDelete = false; $.fancyConfirm(localizedMessages.cofirmRemoving, function callee$3$0(confirmResult) { return regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: if (confirmResult) { /*for (var checkedInput of $checkedInputs) { executeRemovePageAction(checkedInput); }*/ _.each($checkedInputs, function callee$4$0(checkedInput) { return regeneratorRuntime.async(function callee$4$0$(context$5$0) { while (1) switch (context$5$0.prev = context$5$0.next) { case 0: context$5$0.next = 2; return regeneratorRuntime.awrap(executeRemoveFileAction(checkedInput)); case 2: case "end": return context$5$0.stop(); } }, null, this); }); showFavoritesCount(); } case 1: case "end": return context$4$0.stop(); } }, null, this); }, "YesNo"); } case 2: case "end": return context$3$0.stop(); } }, null, this); }; removePages = function removePages(data, event) { var $checkedInputs = $(event.target).closest("div.panel-content").prev().find("input:checked"); if ($checkedInputs.length) { var needToDelete = false; $.fancyConfirm(localizedMessages.cofirmRemoving, function (confirmResult) { if (confirmResult) { //for (var checkedInput of $checkedInputs) { // executeRemovePageAction(checkedInput); //} _.each($checkedInputs, function (checkedInput) { executeRemovePageAction(checkedInput); }); showFavoritesCount(); } }, "YesNo"); } }; //var printMode = $.lukoilGetCookie("printMode") === "True"; if (typeof globalDataApi !== 'undefined' && isPageForFavorites === true /*&& !printMode*/) GlobalData.initsync(globalDataApi, globalDataLicense);else {//if (typeof isPageForFavorites !== 'undefined' && isPageForFavorites === true && printMode) { //return; } $addLinks = $(settings.addLinkSelector); context$2$0.next = 11; return regeneratorRuntime.awrap(showFavoritesCountAsync()); case 11: $addLinks.on("click", function callee$2$0() { var currPageId, currPageItemParam, currPageItemType; return regeneratorRuntime.async(function callee$2$0$(context$3$0) { while (1) switch (context$3$0.prev = context$3$0.next) { case 0: currPageId = parseInt($(this).data("current-page-id")); currPageItemParam = parseInt($(settings.favoritesPageItemSelector).data("item-param")); currPageItemType = parseInt($(settings.favoritesPageItemSelector).data("item-type")); context$3$0.next = 5; return regeneratorRuntime.awrap(addPage(currPageId, currPageItemParam, currPageItemType)); case 5: case "end": return context$3$0.stop(); } }, null, this); }); ; ; ; koObject = { LoadingInProccess: ko.observable(false), RemovePages: removePages, RemoveFiles: removeFiles, DownloadFiles: downloadFiles, RemoveAll: removeAll }; ; koObject.PrintCheckedPages = printCheckedPages; favorsContainer = $(settings.favoriteListContainerSelector); if (favorsContainer.length) { ko.applyBindings(koObject, $(settings.favoriteListContainerSelector)[0]); } case 20: case "end": return context$2$0.stop(); } }, null, this); }; Favorites.on("start", function (options) { if (options && options.favorites) { settings = $.extend(settings, options.favorites); } Favorites.run(); }); }); /// //$.lukoilSaveCookie(keyInStorage, str, this.config); //console.log("result - " + result); //console.log("TFIC");; LukoilApp.module("Targeting", function (Targeting, LukoilApp, Backbone, Marionette, $, _, global) { "use strict"; var requiredModules = { util: LukoilApp.module("Util"), YandexMapServices: LukoilApp.module("YandexMapServices") }; var settings = { cookiesConfig: { expires: 365 * 100, path: '/' }, checkboxContainerSel: "#widgets .checkbox", btnSaveSel: "#luk-targeting-save", journalName: "LukPersonalizedJournal", uppName: "LukUpp", coefficientName: "LukPersonalizedCoefficient", geolocationInfoName: "LukGeolocation", tagMaxValue: 300, journalLength: 50, debug: false, fileLinksSelector: "body .luk-targeting-file-link", tagsDataAttrName: "personalization", tagsSplitter: ";" }; var data = {}; var journals = {}; var cookieStorage = {}; // ----------- Logger ----------- var Logger = function (useConsole) { this.useConsole = useConsole || true; }; Logger.prototype.log = function (data) { if (this.useConsole && console && console.log) { console.log(data); } } var logger = new Logger(settings.debug); // ----------- Journal for counting actions ----------- var JournalRecord = function(tags, count) { this.tags = tags; this.count = count || 0; this.created = new Date(); this.url = window.location.pathname; } JournalRecord.prototype.increaseTimeCount = function (amount, maxTagPoint) { this.count += amount; if (this.count > maxTagPoint) { this.count = maxTagPoint; } } var ActionsJournal = function (maxTagPoint, creationTime, coefficient) { this.records = []; this.tagMaxValue = maxTagPoint || 300; this.creationTime = creationTime || new Date(); this.coefficient = coefficient || 1.0; } ActionsJournal.prototype.addRecordsFromTags = function (tags) { var grouppedByCount = _.groupBy(tags, function(t) { return t.count; }); var self = this; _.each(grouppedByCount, function (group) { var ids = _.map(group, function (t) { return t.id; }); var count = group[0].count; var rec = new JournalRecord(ids, count); self.records.push(rec); }); }; ActionsJournal.prototype.clearAll = function () { this.records = []; }; ActionsJournal.prototype.addRecord = function (tags, count) { if (tags && Array.isArray(tags)) { var rec = new JournalRecord(tags, count); this.records.push(rec); return rec; } return null; }; ActionsJournal.prototype.increaseTimeCount = function (endTime) { var mtp = this.tagMaxValue; var amount = this.getSecondsInActiveStatus(endTime) * this.coefficient; _.each(this.records, function (rec) { rec.increaseTimeCount(amount, mtp); }); }; ActionsJournal.prototype.getSecondsInActiveStatus = function (endDateTime) { var currentTime = endDateTime || new Date(); var diff = currentTime.getTime() - this.creationTime.getTime(); this.creationTime = currentTime; return Math.ceil(diff / 1000); } // ----------- Journal for store counted tags locally ----------- var LocalJournal = function (locStorage, maxRecordsNumber) { this.locStorage = locStorage; this.maxRecordsNumber = maxRecordsNumber || settings.journalLength; this.records = locStorage.getAsArray() || []; }; LocalJournal.prototype.getRecords = function () { return this.locStorage.getAsArray(); } LocalJournal.prototype.reloadFromStorage = function () { this.records = this.locStorage.getAsArray() || []; } LocalJournal.prototype.clearAll = function () { this.records = []; this.saveInStorage(); } LocalJournal.prototype.saveInStorage = function () { var recordsToSave = _.map(this.records, function (rec) { var newLocalRecord = { tags: rec.tags, count: rec.count }; if (rec.created) { newLocalRecord.created = rec.created; } if (rec.url) { newLocalRecord.url = rec.url; } return newLocalRecord; }); return this.locStorage.save(recordsToSave); } LocalJournal.prototype.addRecords = function (newRecords) { var thisRec = this.records; _.each(newRecords, function (rec) { thisRec.push(rec); }); if (this.records.length > this.maxRecordsNumber) { this.records.splice(0, this.records.length - this.maxRecordsNumber); } } LocalJournal.prototype.extractTags = function () { var tagsWithCountNotMerged = []; _.each(this.records, function (rec) { _.each(rec.tags, function (tag) { tagsWithCountNotMerged.push({ id: tag, count: rec.count }); }); }); var mergedTags = []; _.each(tagsWithCountNotMerged, function (ct) { var existed = _.filter(mergedTags, function (rt) { return ct.id === rt.id; }); if (existed.length) { existed[0].count += ct.count; } else { mergedTags.push({ id: ct.id, count: ct.count }); } }); return mergedTags; } // ----------- Journal tag ----------- var JournalTag = function (tagId, tagCount) { this.id = tagId; this.count = tagCount || 0; } JournalTag.prototype.getSecondsInActiveStatus = function (fromDateTime) { var currentTime = fromDateTime || new Date(); var diff = currentTime.getTime() - this.dateTime.getTime(); return Math.ceil(diff / 1000); } JournalTag.prototype.resetStartDateTime = function () { this.startDateTime = new Date(); } JournalTag.prototype.increaseCount = function (maxTagPoint) { if (this.needToCalculateOnPage) { this.count += this.getSecondsInActiveStatus(); if (this.count > maxTagPoint) { this.count = maxTagPoint; } } } // ----------- CookieStorage ----------- var CookieStorage = function (config) { this.config = config || {}; } CookieStorage.prototype.save = function (keyInStorage, model) { $.lukoilSaveCookie(keyInStorage, JSON.stringify(model), this.config); } CookieStorage.prototype.getValue = function (keyInStorage) { return $.lukoilGetCookie(keyInStorage); } CookieStorage.prototype.getArray = function (keyInStorage, mapFunc) { var modelString = $.lukoilGetCookie(keyInStorage); var models = requiredModules.util.tryParseStringToArray(modelString); var journalTags = _.map(models, function (model) { //return new JournalTag(model.t, model.c); if (mapFunc) { return mapFunc(model); } else { return model; } }); return journalTags; } // ----------- LocalStorage ----------- var LocalStorage = function (keyInStorage) { this.key = keyInStorage; } LocalStorage.prototype.supported = function (model) { return typeof (Storage) !== "undefined"; } LocalStorage.prototype.save = function (model) { if (this.supported()) { try { localStorage.setItem(this.key, JSON.stringify(model)); } catch (e) { logger.log("targeting.LocalStorage.save: " + e); } } } LocalStorage.prototype.getAsArray = function () { if (this.supported()) { try { // possible error when accessing local storage in IE with low level access in Windows 8 // solution: http://stackoverflow.com/questions/13102116/access-denied-for-localstorage-in-ie10 var modelString = localStorage.getItem(this.key); var model = requiredModules.util.tryParseStringToArray(modelString); return model; } catch (e) { logger.log("targeting.LocalStorage.getAsArray: " + e); } } return []; } // ----------- Util START ----------- var getDiffInSeconds = function (toDateTime) { var currentTime = new Date(); var diff = currentTime.getTime() - toDateTime.getTime(); return Math.ceil(diff / 1000); } var copyJournalToCookie = function (tags, cookieStorage, journalKey) { var journalModel = _.map(tags, function (vm) { return { t: vm.id, c: vm.count }; }); cookieStorage.save(journalKey, journalModel); }; var fillUpp = function(upp) { if (settings.debug) { _.each(upp, function (tagValue) { var container = $('
    '); $(settings.checkboxContainerSel).after(container); container.html(tagValue.name + ": " + ""); }); } } var mapServerTagValuesToJournalTags = function (tags) { return _.map(tags, function(t) { return new JournalTag(t.t, t.c); }); }; // ----------- Util END ----------- Targeting.run = function () { data.startingTime = new Date(); cookieStorage = new CookieStorage(settings.cookiesConfig); var coefficientValue = cookieStorage.getValue(settings.coefficientName); var coefficient10 = parseFloat(coefficientValue) || 10.0; var coefficient = coefficient10 / 10; var locStorage = new LocalStorage(settings.journalName); journals.local = new LocalJournal(locStorage); journals.actions = new ActionsJournal(settings.tagMaxValue, data.startingTime, coefficient); var tagsToCount = cookieStorage.getArray(settings.journalName); var mappedTags = mapServerTagValuesToJournalTags(tagsToCount); journals.actions.addRecordsFromTags(mappedTags); // refresh journal in cookie for ajax calls var currentTags = journals.local.extractTags(); copyJournalToCookie(currentTags, cookieStorage, settings.journalName); var upp = cookieStorage.getArray(settings.uppName); fillUpp(upp); var geolocationInfo = cookieStorage.getValue(settings.geolocationInfoName); if (geolocationInfo == null || geolocationInfo == '') { requiredModules.YandexMapServices.ensureMapApiIsReady(GlobalSettings.CurrentLanguage).then(function() { requiredModules.YandexMapServices.getCurrentLocation().then(function(location) { geolocationInfo = location.geolocationInfo; cookieStorage.save(settings.geolocationInfoName, geolocationInfo); }); }); } // ----------- Aside widget logic ----------- var widgetsIsSaved = $.lukoilGetCookie('WIDGETS_SAVED'); if (!widgetsIsSaved) { $('#widgets').removeClass('hide'); } else { $('#widgets').addClass('hide'); } $(settings.btnSaveSel).on("click", function () { var tagInputs = $("div.checkbox input:checked"); var tagIds = []; _.each(tagInputs, function (inp) { var tagId = $(inp).val(); tagIds.push(tagId); }); var rec = Targeting.addRecord(tagIds, settings.tagMaxValue); $.lukoilSaveCookie('WIDGETS_SAVED', 'true', settings.cookiesConfig); window.location.reload(); return false; }); window.onbeforeunload = function () { var endDate = new Date(); journals.actions.increaseTimeCount(endDate); journals.local.reloadFromStorage(); journals.local.addRecords(journals.actions.records); journals.local.saveInStorage(); var tags = journals.local.extractTags(); copyJournalToCookie(tags, cookieStorage, settings.journalName); }; Targeting.ReattachEvents(); } Targeting.addRecord = function (tagIds, tagCount) { var rec = journals.actions.addRecord(tagIds, tagCount); return rec; }; // todo remove from release // ----------- DEBUG function BEGIN ----------- Targeting.getActionsJournal = function() { return journals.actions.records; } Targeting.getLocalRecords = function () { return journals.local.records; } Targeting.updateLocalRecord = function (ind, count, tagIds) { if (ind >= 0 && ind < journals.local.records.length) { var rec = journals.local.records[ind]; rec.count = count; if (tagIds && Array.isArray(tagIds)) { rec.tags = tagIds; } return rec; } return "wrong index " + ind; } // ----------- DEBUG function END ----------- Targeting.clearAll = function () { journals.local.clearAll(); journals.actions.clearAll(); cookieStorage.save(settings.journalName, []); } Targeting.ReattachEvents = function () { $(settings.fileLinksSelector).off("click"); $(settings.fileLinksSelector).on("click", function () { var $this = $(this); var fileTagsData = $this.data(settings.tagsDataAttrName); if (fileTagsData) { var tagIds = fileTagsData.split(settings.tagsSplitter); Targeting.addRecord(tagIds, settings.tagMaxValue); } }); } Targeting.on("start", function (options) { if (options && options.targeting) { settings = $.extend(settings, options.targeting); } Targeting.run(); }); });; LukoilApp.module("Widgets", function (Widgets, LukoilApp, Backbone, Marionette, $, _) { var settings = { getMaterialsUrl: "/api/materials/GetMaterials", getTeasersUrl: "/api/materials/GetTeasers" }; var requiredModules = { targeting: LukoilApp.module("Targeting"), sharing: LukoilApp.module("Sharing") }; Widgets.on("start", function (options) { Widgets.run(); }); function showFancyboxError() { $.fancyboxInit({ padding: 10, content: "
    " + GlobalSettings.ErrorMessages.AjaxErrorMessage + "
    " }); } function InfoHighlightedVm(widgetId, maxCount, language, site) { var self = this; self.Materials = ko.observableArray([]); self.MaxCount = maxCount; self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.MaxCount > self.Materials().length + 2; }); self.LoadMore = function () { if (!self.LoadingInProcess()) { self.LoadingInProcess(true); $.ajax(settings.getMaterialsUrl, { async: true, cache: false, data: { widgetId: widgetId, itemsNumberToSkip: self.Materials().length + 2, itemsNumberToLoad: 2, fillRowByEmpty: true, language: language, site: site }, dataType: "json", method: "GET", traditional: true }).then(function(result) { if (result.materials.length) { _.each(result.materials, function(material) { if (material == null) { material = { IsNull: true }; } else { material.IsNull = false; } self.Materials.push(material); }); setTimeout(function () { $('.infoblock-grey .text[dotdotdot="true"]').each(function() { $(this).dotdotdot(); $(this).removeAttr("dotdotdot"); }); }, 100); } }).fail(function () { showFancyboxError(); }).always(function () { self.LoadingInProcess(false); }); } }; } function AdjustableForClientVm(widgetId, totalItemsCount, itemsCount) { var self = this; self.Materials = ko.observableArray([]); self.TotalItemsCount = totalItemsCount; self.ItemsCount = itemsCount; self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.TotalItemsCount > self.ItemsCount; }); self.LoadMore = function () { if (!self.LoadingInProcess()) { self.LoadingInProcess(true); $.ajax(settings.getTeasersUrl, { async: true, cache: false, data: { widgetId: widgetId, itemsNumberToSkip: self.ItemsCount }, dataType: "json", method: "GET", traditional: true, success: function(result) { if (result.materials.length) { _.each(result.materials, function(item) { item.materialBlockCss = item.Teaser && item.Teaser.Size === 1 ? "col-sm-4 col-md-4" : item.Teaser && item.Teaser.Size === 2 ? "col-sm-8 col-md-8" : "col-sm-12 col-md-12"; item.infoBlockCss = "infoblock-grey adjustable-client"; item.infoBlockCss += item.Teaser.Size === 3 ? " adjustable-client_full text" : (item.PreviewImageUrl ? "" : " text text_links"); item.infoBlockCss += item.Teaser && item.Teaser.ExternalLinksParsed && item.Teaser.ExternalLinksParsed.length ? " text_more-links" : ""; item.file = item.MediaFiles && item.MediaFiles.length ? item.MediaFiles[0].Entity : null; self.Materials.push(item); }); self.ItemsCount += result.materials.length; $('.adjustable-client').each(function () { var h = $(this).hasClass('adjustable-client_full') ? 50 : $(this).find('.text').css('max-height'); $(this).find('.text').dotdotdot({ height: h }); }); requiredModules.sharing.run(); } } }).fail(function () { showFancyboxError(); }).always(function () { self.LoadingInProcess(false); }); } }; } Widgets.run = function () { // footer redirection from group and worldwide selects $("#footer select.luk-redirect").on("change", function (e) { var $this = $(this); var url = $this.val(); var internal = $this.find("option:selected").data("internal") === "True"; if (url && url !== "//" && url !== "0") { if (internal) { window.location.href = url; } else { window.open(url, '_blank'); } }; }); // scroll when we have hash with block id to show widget under menu and other top fixed positioned elements var getFixedPositionedElementsHeight = function () { // for main site pages if ($("#home").length) return $("#header").height(); // for subsidiary site pages var subsidiaryTitle = $(".subsidiary__heading"); if (subsidiaryTitle.length) return $("#header").height() + subsidiaryTitle.height(); return $("#header").height(); }; var scrollToWidget = function(target) { var elementTopPosition = target.offset().top; var fixedPositionedElementsHeight = getFixedPositionedElementsHeight(); var marginTop = parseInt(target.next().css('margin-top')); var elementTopPositionWithFixedHeight = elementTopPosition - fixedPositionedElementsHeight - marginTop; if (elementTopPositionWithFixedHeight != $(window).scrollTop()) { window.scrollTo(0, elementTopPositionWithFixedHeight - 20); } }; var windowScrollTop = $(window).scrollTop(); var widgetIdQueryStringParameterName = "wid="; var startWidIndex = location.search.indexOf(widgetIdQueryStringParameterName); if (!windowScrollTop && startWidIndex > -1) { var endWidIndex = location.search.indexOf("&", startWidIndex + 1); if (endWidIndex < 0) { endWidIndex = location.search.length; } var widStr = location.search.substr(startWidIndex + widgetIdQueryStringParameterName.length, endWidIndex - startWidIndex); var target = $("#" + widStr); if (target.length && target.offset()) { target.next().find("a.collapsed[data-toggle]").trigger("click"); scrollToWidget(target); var attempt = 0; var scrollInterval = setTimeout(function () { if (attempt > 4) { clearInterval(scrollInterval); } scrollToWidget(target); attempt++; }, 200); } } // TopManagerPerson functionality START var getHostUrl = function (url) { var urlParts = url.split('/'); if (urlParts.length > 1) { return urlParts[2]; } }; var gobackBtn = $(".luk-go-back"); if (gobackBtn.length) { var currentHostUrl = window.location.host; var referrerHostUrl = getHostUrl(document.referrer); var isPreviousLukoilPageUrl = currentHostUrl && referrerHostUrl && currentHostUrl === referrerHostUrl; if (history.length && isPreviousLukoilPageUrl) { gobackBtn.on("click", function () { history.back(); return false; }); } else { gobackBtn.hide(); } } // TopManagerPerson functionality END // DownloadQuickly functionality START var downloadQuicklyLoadMoreMaterialsBtn = $(".luk-downloadquickly-more"); if (downloadQuicklyLoadMoreMaterialsBtn.length) { // todo for several widgets on a page var ItemsPerLoad = 3; downloadQuicklyLoadMoreMaterialsBtn.on("click", function () { var $this = $(this); var totalLoadedStr = $this.data("total-loaded"); var totalLoaded = parseInt(totalLoadedStr) || ItemsPerLoad; var parameters = { widgetId: $this.data("widget-id"), itemsNumberToSkip: totalLoaded, itemsNumberToLoad: ItemsPerLoad, fillRowByEmpty: true }; var preloader = $this.closest("div.panel-content").find(".preloader"); $(preloader).show(); $this.hide(); $.ajax(settings.getMaterialsUrl, { async: true, cache: false, data: parameters, dataType: "json", method: "GET", traditional: true }).then(function (result) { if (result.materials && result.materials.length) { var reattachEventsIsNeeded = false; _.each(result.materials, function (m) { if (m != null) { _.each(m.MediaFiles, function (orederedEntity) { var file = orederedEntity.Entity; if (file.PersonalizedTags && file.PersonalizedTags.length) { file.tags = _.map(file.PersonalizedTags, function (pt) { return pt.TagGuid; }); file.tagsData = file.tags.join(";"); reattachEventsIsNeeded = true; } else file.tagsData = ""; }); } }); totalLoaded += result.materials.length; $this.data("total-loaded", totalLoaded); var templateHtml = $("#downloadQuicklyFileTmpl").html(); var compile = _.template(templateHtml); var emptyTemplateHtml = $("#downloadQuicklyEmptyTmpl").html(); var compileEmpty = _.template(emptyTemplateHtml); var htmlEmpty = compileEmpty(); _.each(result.materials, function (m) { if (m != null) { if (m.MediaFiles && m.MediaFiles.length) { var file = m.MediaFiles[0].Entity; file.MaterialTitle = m.MaterialTitle; var html = compile(file); $(html).insertBefore($this.closest("div.panel-content")); } } else { $(htmlEmpty).insertBefore($this.closest("div.panel-content")); } }); if (reattachEventsIsNeeded) requiredModules.targeting.ReattachEvents(); } $this.show(); if (!result.canLoadMore || !result.materials || !result.materials.length || result.materials.length < ItemsPerLoad) { $this.closest("div.panel-content").hide(); } $(preloader).hide(); }).fail(function () { showFancyboxError(); $this.show(); $(preloader).hide(); }); return false; }); } // DownloadQuickly functionality END // InfoHighlighted functionality START _.each($(".interesting"), function(widget) { var $widget = $(widget); var vm = new InfoHighlightedVm($widget.data("widget-id"), $widget.data("total-count"), $widget.data("language"), $widget.data("site")); ko.applyBindings(vm, widget); }); // InfoHighlighted functionality END // AdjustableForClient functionality START _.each($(".adjustable-client-container"), function (widget) { var $widget = $(widget); var total = $widget.data("total-count"); var loaded = $widget.data("loaded-count"); var vm = new AdjustableForClientVm($widget.data("widget-id"), total, loaded); ko.applyBindings(vm, widget); }); // AdjustableForClient functionality END // Referrals functionality START var showLinkForNonEmptyValue = function (linkData, target, isExternalLink) { if (linkData) { target.removeAttr("target"); if (isExternalLink) { target.attr("target", "_blank"); target.removeClass("icon-s-chevron-link").addClass("icon-s-share"); } else { target.removeClass("icon-s-share").addClass("icon-s-chevron-link"); } target.attr("href", linkData); target.show(); } else { target.hide(); } }; var showLinkForImage = function (linkInt, linkExt, block) { var $img = $(block).closest("div.panel-body").find(".image .referralLink"); $img.removeAttr("target"); if (linkInt != null && linkInt != '') { $img.attr("href", linkInt); } else if (linkExt != null && linkExt != '') { $img.attr("href", linkExt); $img.attr("target", "_blank"); } else { $img.attr("href", "javascript:void(0);"); } } $(".luk-referrals-container .dropdown li a").on("click", function (e) { var $this = $(this); var intLinkNewhrefValue = $this.data("link-int"); var intLinkNewhrefAsExtValue = $this.data("link-int-ext"); var extLinkNewhrefValue = $this.data("link-ext"); $this.closest("div").children("a").first().children("span").text($this.text()); showLinkForNonEmptyValue(intLinkNewhrefValue, $this.closest("div.buttons").children("a.luk-referrals-link-int"), intLinkNewhrefAsExtValue); showLinkForNonEmptyValue(extLinkNewhrefValue, $this.closest("div.buttons").children("a.luk-referrals-link-ext"), true); showLinkForImage(intLinkNewhrefValue, extLinkNewhrefValue, $this); }); $(".luk-referrals-container").each(function () { var firstElementInContainer = $(this).find(".dropdown li a:first"); if (firstElementInContainer.text() == firstElementInContainer.closest("div").children("a").first().children("span").text()) { $(this).find(".dropdown li a:first").trigger("click"); } }); $(".luk-referrals-container .buttons").children("a.luk-referrals-link").filter("[href]").show(); // Referrals functionality END }; var getFilterCategories = function (selectedAnswers) { var cat = _.map(selectedAnswers, function (a) { return a.Category; }); var gr = _.groupBy(cat, 'Id'); var filters = _.map(gr, function(g,key) { return { count: g.length, id: key, title: g.length > 0 && g[0] != null ? g[0].Title : '', active: ko.observable(false) }; }); filters = _.sortBy(filters, function(f) { return f.title; }); return filters.length > 1 ? filters : []; }; function FaqVm(selectedAnswers, categories, selector) { var self = this; self.selector = selector; self.allCategories = categories; self.allAnswers = selectedAnswers; self.categories = ko.observableArray([]); self.choosenCategory = ko.observable(); self.selectedAnswers = ko.observableArray(selectedAnswers); var highLevelCategories = _.filter(categories, function (c) { return !c.IsSubCategory; }); self.categories(highLevelCategories); var filterCategories = getFilterCategories(selectedAnswers); self.filterCategories = ko.observableArray(filterCategories); var loadCategory = function (categoryId) { return $.ajax("/api/faq/GetCategory", { async: true, cache: false, data: { categoryId: categoryId }, dataType: "json", method: "GET", traditional: true }); }; var setAnswers = function (vm, answers) { vm.selectedAnswers(answers); //self.allAnswers = self.allAnswers.concat(answers); //vm.allAnswers = answers; vm.filterCategories(getFilterCategories(answers)); }; var changeCategory = function (categoryId) { if (!categoryId) { self.selectedAnswers(self.allAnswers); self.filterCategories(getFilterCategories(self.allAnswers)); return; } var category = _.filter(self.allCategories, function (c) { return c.Id === categoryId; })[0]; if (!category.items || !category.items.length) { loadCategory(category.Id).done(function (result) { if (result.answers) { var answers = JSON.parse(result.answers); if (answers) { _.each(answers, function (a) { a.Category = _.filter(self.allCategories, function (c) { return c.Id === a.CategoryId; })[0]; }); setAnswers(self, answers); category.items = answers; } } }).fail(function (jqXHR, textStatus, errorThrown) { if (window.console && window.console.log) { console.log(errorThrown); } }); } else { setAnswers(self, category.items); } }; var mappingLinks = function (isExternal, items) { return _.map(_.filter(items, function (l) { return l.url !== undefined && l.url !== null; }), function (l) { return { isExternal: isExternal, url: l.url, title: l.title } }); }; self.choosenCategory.subscribe(function (categoryId) { changeCategory(categoryId); }); self.filterAnswers = function (category) { if (_.every(self.filterCategories(), function (fc) { return !fc.active(); })) { var t = _.filter(self.allAnswers, function (a) { return a.CategoryId === category.id; }); self.selectedAnswers(t); category.active(!category.active()); return; } category.active(!category.active()); var f; if (category.active()) { f = _.filter(self.allAnswers, function (a) { return a.CategoryId === category.id || _.any(self.selectedAnswers(), function (sa) { return sa.CategoryId === a.CategoryId; }); }); } else { f = _.filter(self.selectedAnswers(), function (a) { return a.CategoryId !== category.id; }); } if (f.length) { self.selectedAnswers(f); } else { var $container = $(self.selector); var $select = $container.find(".select-category-faq select"); if ($select.val() != null && $select.val() != '') { var curentObj = _.filter(self.allCategories, function(c) { return c.Id === category.id; })[0]; if (curentObj != null && curentObj.ParentCategory != null) { changeCategory(curentObj.ParentCategory.Id); return; } } self.selectedAnswers(self.allAnswers); } } self.getAllLinks = function (answer) { var internal = mappingLinks(false, answer.InternalLinks); var external = mappingLinks(true, answer.ExternalLinks); return internal.concat(external); }; self.getEvenOrOddClass = function (index) { return index % 2 === 0 ? "odd" : "even"; }; self.getAllLinks = function (answer) { var internal = mappingLinks(false, answer.InternalLinks); var external = mappingLinks(true, answer.ExternalLinks); return internal.concat(external); }; ko.applyBindings(self, $(selector)[0]); } Widgets.initFaq = function (options) { var selectedAnswers = options.selectedAnswers, categories = options.categories, selector = options.selector; var container = $(selector); if (container.length === 1) { var vm = new FaqVm(selectedAnswers, categories, selector); } else if (container.length > 1) { if (console && console.log) { console.log("too mush FAQ containers"); } }else { if (console && console.log) { console.log("no FAQ container"); } } } }); ko.PaginationViewModel = function (pageSize, allItemCount, widgetSelector, loadFunction) { var self = this; self.allCountItem = ko.observable(0); self.LoadedPages = ko.observableArray([]); self.CurrentPage = ko.observable(1); self.PageSize = ko.observable(pageSize); self.PageCount = ko.computed(function () { if (self.allCountItem() != 0) return Math.ceil(self.allCountItem() / self.PageSize()); else return Math.ceil(allItemCount() / self.PageSize()); }); self.FirstPage = 1; self.LastPage = ko.pureComputed(function () { return self.PageCount(); }); self.SecondPage = 2; self.PenultimatePage = ko.pureComputed(function () { var penultimate = self.LastPage() - 1; return penultimate < self.FirstPage ? self.FirstPage : penultimate; }); self.PaginationSize = ko.observable(Constants.PaginationSize); self.ListSize = ko.pureComputed(function () { return self.PaginationSize() + 2; }); self.FirstShowPage = function () { var firstShowPage = self.CurrentPage() - Math.floor((self.PaginationSize() - 1) / 2); if (self.CurrentPage() > self.FirstPage + self.PaginationSize()) { if (self.CurrentPage() >= self.LastPage() - self.PaginationSize()) { firstShowPage = self.LastPage() - self.PaginationSize() - 1; firstShowPage = firstShowPage > self.SecondPage ? firstShowPage : self.SecondPage; } else { firstShowPage = firstShowPage < self.SecondPage ? self.SecondPage : firstShowPage; firstShowPage = firstShowPage - 1 == self.SecondPage ? self.SecondPage : firstShowPage; } } else { firstShowPage = self.SecondPage; } return firstShowPage; }; self.LastShowPage = function () { var firstShowPage = Math.max(self.CurrentPage() - Math.floor((self.PaginationSize() - 1) / 2), self.FirstShowPage()); var lastShowPage = firstShowPage + self.PaginationSize() - 1; lastShowPage = lastShowPage + 1 >= self.PenultimatePage() ? self.PenultimatePage() : lastShowPage; return lastShowPage; } self.ShowPrevPage = ko.computed(function () { return self.CurrentPage() !== 0 && self.CurrentPage() !== 1; }); self.ShowNextPage = ko.computed(function () { return self.CurrentPage() !== 0 && self.CurrentPage() !== self.PageCount(); }); self.ShowPrevPages = ko.computed(function () { return self.FirstShowPage() > self.SecondPage; }); self.ShowNextPages = ko.computed(function () { return self.LastShowPage() < self.PenultimatePage(); }); self.GetPages = ko.pureComputed(function () { var pages = []; var firstShowPage = self.FirstShowPage(); var lastShowPage = self.LastShowPage(); var listSizeNow = lastShowPage - firstShowPage + 1; if (self.ShowPrevPages()) { listSizeNow++; } if (self.ShowNextPages()) { listSizeNow++; } if (listSizeNow < self.ListSize()) { var difference = self.ListSize() - listSizeNow; for (; difference > 0; difference--) { if (firstShowPage > self.SecondPage) { firstShowPage--; } else { if (lastShowPage < self.PenultimatePage()) { lastShowPage++; } } } } for (var i = firstShowPage; i <= lastShowPage ; i++) pages.push(i); return pages; }); self.PrevPage = function (n) { var previous = self.CurrentPage() - (n != null ? n : 1); if (previous < self.FirstPage) return self.FirstPage; return previous; }; self.NextPage = function (n) { var next = self.CurrentPage() + (n != null ? n : 1); if (next > self.LastPage()) return self.LastPage(); return next; }; self.SetCurrentPage = function (page, target) { if (page < self.FirstPage) page = self.FirstPage; if (page > self.LastPage()) page = self.LastPage(); self.CurrentPage(page); if (target != null) { var $list = $(target).parents(widgetSelector); self.LoadedPages.removeAll(); loadFunction(self, $list, (page - 1) * self.PageSize(), true); } }; self.GoToPage = function (page, event) { if (self.CurrentPage() !== page && page >= self.FirstPage && page <= self.LastPage()) self.SetCurrentPage(page, event.target); } self.GoToPrevPage = function (m, event) { if (self.ShowPrevPage()) { var prev = self.PrevPage(); if (prev != null) self.SetCurrentPage(prev, event.target); } }; self.GoToNextPage = function (m, event) { if (self.ShowNextPage()) { var next = self.NextPage(); if (next != null) self.SetCurrentPage(next, event.target); } }; self.GoToPrevPages = function (m, event) { if (self.ShowPrevPages()) { var prev = self.PrevPage(self.PaginationSize()); self.SetCurrentPage(prev, event.target); } }; self.GoToNextPages = function (m, event) { if (self.ShowNextPage()) { var next = self.NextPage(self.PaginationSize()); if (next != null) self.SetCurrentPage(next, event.target); } }; self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.CurrentPage() !== self.PageCount(); }); }; LukoilApp.module("Calendar", function (Calendar, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { eventRegistrationWidgetSelector: ".event-registration-widget", eventListWidgetSelector: ".event-list-widget", calendarWidgetSelector: ".calendar-widget", filterForm: ".filter form", eventListFilterBtnSelector: ".filter-btn", eventListResultsSelector: ".event-list-results", getEventsUrl: "/api/presscenter/events", exportUrl: "/api/presscenter/exportevent", getTagsUrl: "/api/presscenter/Tags", importanceSelector: ".importance-select", audienceSelector: ".audience-select", countrySelector: ".country-select", themeSelector: ".theme-select", regionSelector: ".region-select", organizationSelector: ".organization-select", datepickerSelector: ".form-control.calendar", startDateSelector: "#calendar-from", endDateSelector: "#calendar-to", loadMoreButtonSelector: ".load-more-button", eventFromCalendarWidgetSelector: ".event-from-calendar-widget", resetButtonSelector: ".button-reset", queryInputSelector: ".search-control", }; var buildQueryStringForEventListFilter = function (tags, query, theme, startDate, endDate, defaultGuid) { var url = new URI(window.location.href); url.search(function(data) { data[Constants.queryParamNames.SearchQuery] = query ? query : undefined; data[Constants.queryParamNames.StartDate] = startDate ? startDate : undefined; data[Constants.queryParamNames.EndDate] = endDate ? endDate : undefined; data[Constants.queryParamNames.Tags] = tags ? tags : undefined; data[Constants.queryParamNames.EventId] = undefined; return data; }); return url.search(); }; var requiredModules = { mediaLibrary: LukoilApp.module("MediaLibrary") }; var pad = function(num, size) { var s = num + ""; while (s.length < size) s = "0" + s; return s; }; var clearUrlQuery = function () { if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#"; } } var updateSearchParams = function (vm, $eventList, defaultGuid) { var themeVal = $eventList.find(settings.themeSelector + " input:checked").map(function () { return $(this).data("val"); }).get(); var $startDatePicker = $eventList.find(settings.startDateSelector); var $endDatePicker = $eventList.find(settings.endDateSelector); var startDateValue = $.datepicker.parseDate($startDatePicker.datepicker("option", "dateFormat"), $startDatePicker.val()); var endDateValue = $.datepicker.parseDate($endDatePicker.datepicker("option", "dateFormat"), $endDatePicker.val()); var queryVal = $eventList.find(settings.queryInputSelector).val().encodeURIComponent(); var tagsVal = $.getTagsValFromMultiselects($eventList, [settings.themeSelector, settings.countrySelector, settings.regionSelector]); vm.SearchParams = { tags: tagsVal, query: queryVal, theme: themeVal || defaultGuid, currentUrl: window.location.href, startDate: startDateValue ? startDateValue.localAsUtcDate().toISOString() : null, endDate: endDateValue ? endDateValue.localAsUtcDate().toISOString() : null, take: Constants.PageSize, widgetGuid: $eventList.data("widgetguid"), siteGuid: $eventList.data("siteguid"), languageGuid: $eventList.data("lang") }; }; var fillMultiselector = function ($data, values) { $data.parent().removeClass("disabled"); $data.find("li").hide(); values.map(function (item) { $data.find("input[data-val = " + item + "]").parents('li').show(); }); } var updateFilterData = function ($mediaLibraries, tagsData) { var $tagsContainers = $mediaLibraries.find(".tags-data"); var $themeMultiselect = $mediaLibraries.find(settings.themeSelector); var $countryMultiselect = $mediaLibraries.find(settings.countrySelector); var $regionMultiselect = $mediaLibraries.find(settings.regionSelector); if ($tagsContainers && $tagsContainers.length > 0) { var $container = $($tagsContainers[0]); var data = JSON.parse($container.text() || $container.html()); var compatibleThemeValues = []; var compatibleCountryValues = []; var compatibleRegionValues = []; if (data != null && data.Items != null) { data.Items.map(function (item) { if ((tagsData.theme.length == 0 || tagsData.theme.indexOf(item.theme) != -1) && (tagsData.country.length == 0 || tagsData.country.indexOf(item.country) != -1) && (tagsData.region.length == 0 || tagsData.region.indexOf(item.region) != -1)) { if (compatibleThemeValues.indexOf(item.theme) == -1 && item.theme != null) compatibleThemeValues.push(item.theme); if (compatibleCountryValues.indexOf(item.country) == -1 && item.country != null) compatibleCountryValues.push(item.country); if (compatibleRegionValues.indexOf(item.region) == -1 && item.region != null) compatibleRegionValues.push(item.region); } }); } if (compatibleThemeValues.length > 0 && tagsData.theme.length == 0) { fillMultiselector($themeMultiselect, compatibleThemeValues); } else if (tagsData.theme.length == 0) { $themeMultiselect.parent().addClass("disabled"); } if (compatibleCountryValues.length > 0 && tagsData.country.length == 0) { fillMultiselector($countryMultiselect, compatibleCountryValues); } else if (tagsData.country.length == 0) { $countryMultiselect.parent().addClass("disabled"); } if (compatibleRegionValues.length > 0 && tagsData.region.length == 0) { fillMultiselector($regionMultiselect, compatibleRegionValues); } else if (tagsData.region.length == 0) { $regionMultiselect.parent().addClass("disabled"); } } } var getValues = function ($data, array) { var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function (item) { array.push(item.value); }); } } var onChangeFilter = function ($mediaLibraries) { var $themeMultiselect = $mediaLibraries.find(settings.themeSelector); var $countryMultiselect = $mediaLibraries.find(settings.countrySelector); var $regionMultiselect = $mediaLibraries.find(settings.regionSelector); var tagsData = { theme: [], country: [], region: [] }; if ($themeMultiselect.getValFromMultiSelect().length > 0) getValues($themeMultiselect, tagsData.theme); if ($countryMultiselect.getValFromMultiSelect().length > 0) getValues($countryMultiselect, tagsData.country); if ($regionMultiselect.getValFromMultiSelect().length > 0) getValues($regionMultiselect, tagsData.region); updateFilterData($mediaLibraries, tagsData); if (tagsData.country.length > 0) { $regionMultiselect.parent().addClass("disabled"); } } var loadEvents = function (vm, $eventList, skip, isPaging, defaultGuid) { if (!vm.LoadingInProcess()) { if (!skip) { updateSearchParams(vm, $eventList, defaultGuid); } vm.LoadingInProcess(true); var data = vm.SearchParams; data.skip = skip; $.ajax({ url: settings.getEventsUrl, data: data, success: function (data) { var queryString = buildQueryStringForEventListFilter(vm.SearchParams.tags, vm.SearchParams.query, vm.SearchParams.theme, vm.SearchParams.startDate, vm.SearchParams.endDate, defaultGuid); if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname + queryString); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#" + queryString; } if (!skip || isPaging) { vm.ClearEvents(); } _.each(data.Items, function (item) { vm.AddEvent(item); }); vm.AllEventsCount(data.Count); $.createDownloadPopover($eventList); $eventList.find(".panel-time-line-month.last > .collapse").collapse("show"); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; Calendar.on("start", function (options) { Calendar.run(); }); function MonthViewModel(month, id) { var self = this; self.Id = id; self.Month = month; self.TwoDigitMonth = pad(self.Month, 2); self.Events = ko.observableArray([]); self.AddEvent = function (event) { event.vmId = self.Id + "-" + event.InformationMaterialId; event.isFutureEvent = moment().isBefore(event.momentStartDate); event.PreviewFile = null; if (event.PreviewFiles && event.PreviewFiles.length) { event.PreviewFile = _.find(event.PreviewFiles, function (file) { return file.PreviewType === Constants.previewTypes.NewsFeeds; }); } event.VideoLink = { href: null, type: null } for (var i = 0; i < event.MediaFiles.length; i++) { if (event.MediaFiles[i].LinkedMediaFile) { event.MediaFiles[i] = event.MediaFiles[i].LinkedMediaFile; } if (event.MediaFiles[i].File && event.MediaFiles[i].File.Type === 3 && event.VideoLink.href === null) { event.VideoLink = { href: event.MediaFiles[i].File.FileUrl, type: event.MediaFiles[i].File.Type } } } event.fileListData = requiredModules.mediaLibrary.getVmForFileList(event.MediaFiles); self.Events.push(event); self.Events.sort(function (left, right) { if (right.StartDate == left.StartDate) { return 0; } return right.StartDate > left.StartDate ? 1 : -1; }); }; } function YearViewModel(year, id) { var self = this; self.Id = id; self.Year = year; self.Months = ko.observableArray([]); self.AddEvent = function(event) { var month = event.momentStartDate.month() + 1; var monthVm = _.find(self.Months(), function (item) { return month === item.Month; }); if (!monthVm) { monthVm = new MonthViewModel(month, self.Id + "-" + month); self.Months.push(monthVm); self.Months.sort(function (left, right) { return right.Month - left.Month; }); } monthVm.AddEvent(event); }; } function EventListResultViewModel(id) { var self = this; self.Skipped = ko.observable(0); self.Id = id; self.SearchParams = undefined; self.Years = ko.observableArray([]); self.AllEventsCount = ko.observable(0); self.EventCount = ko.observable(0); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.AddEvent = function (event) { event.momentStartDate = moment(event.StartDate); var year = event.momentStartDate.year(); var yearVm = _.find(self.Years(), function(item) { return year === item.Year; }); if (!yearVm) { yearVm = new YearViewModel(year, self.Id + "-" + year); self.Years.push(yearVm); self.Years.sort(function (left, right) { return right.Year - left.Year; }); } yearVm.AddEvent(event); self.EventCount(self.EventCount() + 1); }; self.IsActivePage = function (value) { //console.log(value, self.LoadedPages(), $.inArray(value, self.LoadedPages())); return $.inArray(value, self.LoadedPages()) >= 0; } ko.PaginationViewModel.call(self, Constants.PageSize, self.AllEventsCount, settings.eventListWidgetSelector, loadEvents); self.ClearEvents = function() { self.Years.removeAll(); self.EventCount(0); }; } var resetFilter = function ($eventList) { $eventList.find(settings.queryInputSelector).val(""); $.resetDatePickerValue($eventList.find(settings.startDateSelector)); $.resetDatePickerValue($eventList.find(settings.endDateSelector)); _.each($eventList.find("select"), function (select) { var $select = $(select); $select.val($select.find("option:first").val()).trigger("refresh"); }); }; var prepareEventLists = function (eventList, index) { var $eventList = $(eventList); var $datePickers = $eventList.find(settings.datepickerSelector); _.each($datePickers, function(picker) { var $picker = $(picker); var initialDate = $picker.data("initialvalue"); if (initialDate) { $picker.val($.datepicker.formatDate($picker.datepicker("option", "dateFormat"), moment(initialDate).toDate())); } }); $eventList.find(".field-autocomplete").autocomplete({ delay: 500, source: [], open: function (event, ui) { $('.ui-autocomplete').width($(event.target).innerWidth()); } }).on("keyup", function () { var $input = $(this); $.ajax({ url: settings.getTagsUrl, data: { query: $input.val().encodeURIComponent(), lang: $eventList.data("lang") }, method: "get", success: function (data) { if (data && data.length) { $input.autocomplete("option", "source", data); } }, traditional: true, cache: false }); }); onChangeFilter($eventList); $eventList.find(settings.themeSelector).find("input").on('change', function () { onChangeFilter($eventList); }); $eventList.find(settings.countrySelector).find("input").on("change", function () { onChangeFilter($eventList); }); $eventList.find(settings.regionSelector).find("input").on("change", function () { onChangeFilter($eventList); }); var resultsVm = new EventListResultViewModel(index); var defaultGuid = $eventList.data("defaultguid"); if ($eventList.find(".panel-filter").length) { updateSearchParams(resultsVm, $eventList, false, defaultGuid); } $eventList.find(settings.filterForm).on("submit", function () { return false; }); $eventList.find(settings.eventListFilterBtnSelector).on("click", function () { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadEvents(resultsVm, $eventList, 0, false, $eventList.data("defaultguid")); }); $eventList.on("click", settings.loadMoreButtonSelector, function () { var page = resultsVm.CurrentPage(); resultsVm.CurrentPage(page + 1); resultsVm.LoadedPages.push(page); loadEvents(resultsVm, $eventList, resultsVm.EventCount(), false, defaultGuid); }); $eventList.find(settings.resetButtonSelector).on("click", function () { resetFilter($eventList); }); var eventsData = null; var $jsonContainers = $eventList.find(".events-data"); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); eventsData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); resultsVm.Skipped(eventsData.Skipped); resultsVm.CurrentPage(Math.floor(resultsVm.Skipped() / resultsVm.PageSize()) + 1); _.each(eventsData.Items, function(item) { resultsVm.AddEvent(item); }); resultsVm.AllEventsCount(eventsData.Count);} if (!eventsData || (!eventsData.Items.length)) { $eventList.remove(); } else { var resultContainer = $eventList.find(settings.eventListResultsSelector)[0]; ko.cleanNode(resultContainer); updateSearchParams(resultsVm, $eventList); var widgetGuid = $eventList.attr("data-widgetguid"); $(".server-rendered-" + widgetGuid).remove(); ko.applyBindings(resultsVm, resultContainer); $.createDownloadPopover($eventList); } }; var prepareEventListsSafely = function () { var $eventLists = $(settings.eventListWidgetSelector); _.each($eventLists, function(eventList, index) { try { prepareEventLists(eventList, index); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render event list widget #" + (index + 1)); } } }); }; var isOpenedPopover = false; var createTemplateEvents = function (events, widgetData) { var templateEvent = ""; $.each(events, function (_, event) { var eventListUrl = null; if (widgetData.InternalLinkUrl) { eventListUrl = widgetData.InternalLinkUrl; } else if (widgetData.EventListUrl) { eventListUrl = widgetData.EventListUrl; } templateEvent += "
    " + (eventListUrl ? "" + event.Name + "" : "" + event.Name + "") + "
    "; }); return '
    ' + templateEvent + "
    "; } var initPopover = function (element, events, widgetData) { element.popover({ title: "", trigger: "manual", content: createTemplateEvents(events, widgetData), placement: "bottom", container: "body", html: true }); return element; } $(document).on("click", function () { if (!isOpenedPopover) $(".day-with-single-event, .day-with-multiple-events").popover("hide"); }); var groupEventsByDate = function(groupsObject, events) { _.each(events, function (event) { event.unixTime = moment(event.StartDate).startOf("day").unix(); groupsObject[event.unixTime] = groupsObject[event.unixTime] || []; groupsObject[event.unixTime].push(event); }); } var prepareCalendars = function(widget) { var $widget = $(widget); var $jsonContainers = $widget.find(".calendar-data"); var widgetData; if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); widgetData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); } var $calendarContainer = $widget.find(".calendar-container"); if (widgetData && widgetData.InformationMaterials) { var eventsByDate = {}; var loadedYears = []; var tagsParam = ""; var $loader = $widget.find(".overlay"); if (widgetData.ThemeGuids && widgetData.ThemeGuids.length) { // TODO: use not only themes _.each(widgetData.ThemeGuids, function(guid) { tagsParam += guid + "," + 1 + ";"; // TODO: use constants }); } widgetData.LoadedFrom = moment(widgetData.LoadedFrom); widgetData.LoadedTo = moment(widgetData.LoadedTo); var firstYear = widgetData.LoadedFrom.year(); var lastYear = widgetData.LoadedTo.year(); for (var i = firstYear; i <= lastYear; i++) { loadedYears.push(i); } var defaultDate = null; if (widgetData.InPreviewMode && widgetData.InformationMaterials.length) { defaultDate = moment(widgetData.InformationMaterials[0].StartDate).toDate(); } groupEventsByDate(eventsByDate, widgetData.InformationMaterials); var today = moment(); $calendarContainer.datepicker({ changeYear: true, changeMonth: true, firstDay: 1, defaultDate: defaultDate, yearRange: "1990:+3", showOtherMonths: true, selectOtherMonths: true, showAdditionalWeeksOtherMonths: 1, beforeShowDay: function (date) { var calendarDayDate = moment(date); var result = [false, ""]; var events = eventsByDate[calendarDayDate.unix()]; if (events && events.length) { result[1] = events.length === 1 ? "day-with-single-event " : "day-with-multiple-events"; result[0] = true; } else if (calendarDayDate.year() === today.year() && calendarDayDate.month() === today.month() && calendarDayDate.date() === today.date()) { result[0] = true; } return result; }, onChangeMonthYear: function (year) { var selectedYearIndex = _.indexOf(loadedYears, year); var precedingYearIndex = _.indexOf(loadedYears, year - 1); var nextYearIndex = _.indexOf(loadedYears, year + 1); if (widgetData.InPreviewMode) { return; } var targetFrom = null; var targetTo = null; if (precedingYearIndex === -1) { targetFrom = moment.utc([year - 1, 0, 1]); } else if (selectedYearIndex === -1) { targetFrom = moment.utc([year, 0, 1]); } else if (nextYearIndex === -1) { targetFrom = moment.utc([year + 1, 0, 1]); } if (nextYearIndex === -1) { targetTo = moment.utc([year + 2, 0, 1]); } else if (selectedYearIndex === -1) { targetTo = moment.utc([year + 1, 0, 1]); } else if (precedingYearIndex === -1) { targetTo = moment.utc([year, 0, 1]); } if (targetFrom && targetTo) { targetTo = targetTo.subtract(1, "milliseconds"); $loader.show(); var data = { startDate: targetFrom.toISOString(), endDate: targetTo.toISOString(), languageGuid: $widget.data("lang"), widgetGuid: $widget.data("widgetGuid"), tags: tagsParam, withoutEstimatedEvents: true }; $.ajax({ url: settings.getEventsUrl, data: data, success: function (data) { groupEventsByDate(eventsByDate, data.Items); for (var i = targetFrom.year() ; i <= targetTo.year() ; i++) { loadedYears.push(i); } $calendarContainer.datepicker("refresh"); }, traditional: true, cache: false }).always(function () { $loader.hide(); }); } }, onSelect: function (dateText) { var $calendar = $(this); var dateFormat = $calendar.datepicker("option", "dateFormat"); var date = moment($.datepicker.parseDate(dateFormat, dateText)); var unixTime = date.unix(); var events = eventsByDate[unixTime]; var day = date.date(); $calendar.find(".day-with-single-event, .day-with-multiple-events").popover("hide"); setTimeout(function () { var $curDay = $calendar.find('.ui-datepicker-current-day'); if ($curDay.attr('data-month') === $calendar.data('select-month') && parseInt($curDay.text()) === $calendar.data('select-day')) isOpenedPopover = true; if (!isOpenedPopover) { initPopover($curDay, events, widgetData).popover('show'); $calendar.data({ 'select-day': day, 'select-month': $curDay.attr('data-month') }); } else { $calendar.removeData(['select-day', 'data-month']); } isOpenedPopover = false; }.bind(this)); } }); } }; var prepareCalendarsSafely = function () { var $calendarWidgets = $(settings.calendarWidgetSelector); _.each($calendarWidgets, function(widget, index) { try { prepareCalendars(widget); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render calendar widget #" + (index + 1)); } } }); }; var EventRegistrationViewModel = function () { self.confiramtionChecked = ko.observable(false); }; var prepareEventRegistration = function () { _.each($(settings.eventRegistrationWidgetSelector), function (widget) { try { var $widget = $(widget); ko.applyBindings(new EventRegistrationViewModel(), widget); var uiMessage = $widget.data("message"); if (uiMessage) { $.fancyboxMessage(uiMessage, 400); clearUrlQuery(); } if (window.location.hash === "#event-registration-widget-anchor") { $widget.find(".panel-collapse").collapse("show"); } var $sendForm = $widget.find("form"); $sendForm.lukoilAjaxSubmitForm(null, null, function () { $sendForm.reloadLukoilCaptcha(); }, false); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render event registration widget #" + (index + 1)); } } }); } Calendar.run = function () { prepareEventRegistration(); prepareEventListsSafely(); prepareCalendarsSafely(); }; });; LukoilApp.module("Advertisements", function (Advertisements, LukoilApp, Backbone, Marionette, $, _) { var settings = { filterListWidgetSelector: ".content", queryInputSelector: ".filter_lukoil input[type=text]", search: ".search-control", dataSelector: ".advert-data", listWidgetSelector: ".advert-list", apiUrl: "/api/advertisements/advertisements", apiUrlSearch: "/api/advertisements/advertisementssearch", loadMoreButtonSelector: ".load-more-button", listFilterBtnSelector: ".filter-btn", resetButtonSelector: ".button-reset", applicationSelector: ".application-select", typeSelect: ".type-select" }; var TagsAll = { application: [], type: [] }; var filter = false; var count = 0; var dataArr = []; var loadAdvertisements = function (vm, data, skip) { if (!vm.LoadingInProcess()) { vm.LoadingInProcess(true); data.skip = skip === undefined ? vm.CurrentCount() : skip; $.ajax({ url: settings.apiUrl, data: data, method: "post", success: function (dataSource) { dataSource = JSON.parse(dataSource); _.each(dataSource.Items, function (item) { vm.AddItem(item); }); vm.TotalItemsCount(dataSource.Count); }, traditional: true, cache: false }).fail(function () { $.fancyboxInit({ padding: 10, content: "
    " + GlobalSettings.ErrorMessages.AjaxErrorMessage + "
    " }); }).always(function () { vm.LoadingInProcess(false); }); } }; var loadAdvertisementsWithSearch = function (vm, data, skip) { if (!vm.LoadingInProcess()) { vm.LoadingInProcess(true); vm.CurrentCount(0); data.skip = skip; data.filter = filter; $.ajax({ url: settings.apiUrlSearch, data: data, method: "post", success: function (dataSource) { dataSource = JSON.parse(dataSource); if (dataSource.Items.length === 0) { $.fancyboxInit({ padding: 10, content: "
    " + "Ничего не найдено" + "
    " }); } dataArr = dataSource.Items; count = $(".advert-list").data("count"); var arr = dataArr.slice(0, count); _.each(arr, function (item) { vm.AddItem(item); }); vm.TotalItemsCount(dataSource.Count); }, traditional: true, cache: false }).fail(function () { $.fancyboxInit({ padding: 10, content: "
    " + GlobalSettings.ErrorMessages.AjaxErrorMessage + "
    " }); }).always(function () { vm.LoadingInProcess(false); }); } }; var getValues = function ($data, array, checked) { var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function (item) { array.push(item.value); }); } fillMultiselector(array, checked) } //ToDo var getValuesType = function ($data, array, checked) { var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function (item) { array.push(item.value); }); } } var onChangeFilter = function ($widget) { var $applicationMultiselect = $widget.find(settings.applicationSelector); var $typeMultiselect = $widget.find(settings.typeSelect); var tagsData = { application: [], type: [] }; if ($applicationMultiselect.length > 0 && $applicationMultiselect.getValFromMultiSelect().length > 0) { // change > 0 getValues($applicationMultiselect, tagsData.application); } if ($typeMultiselect.length > 0 && $typeMultiselect.getValFromMultiSelect().length > 0) { getValuesType($typeMultiselect, tagsData.type); $typeMultiselect.parent().removeClass("disabled"); } if (tagsData.application.length === 0) { $typeMultiselect.parent().removeClass("disabled"); var content = $(settings.filterListWidgetSelector) var type = content.find(settings.typeSelect) var li = type.find("li") li.each(function (item) { $(this).show() }) } TagsAll = tagsData; // ToDo } var fillMultiselector = function (array) { var content = $(settings.filterListWidgetSelector); var type = content.find(settings.typeSelect); var selectors = findAllSelector(type); var countSelector = 0; selectors.each(function (item) { if (array.length > 0) { if ($.inArray($(this).data("parent"), array) === -1) { if (type.getValFromMultiSelect().length === 0) { $(this).closest("li").hide(); } } else { countSelector = ++countSelector; $(this) .closest("li") .show(); } } else { $(this).closest("li").show(); this.checked = false; } }); if (countSelector === 0 && type.getValFromMultiSelect().length === 0) { type.parent().addClass("disabled"); } else { type.parent().removeClass("disabled"); } }; var findAllSelector = function (selector) { var li = selector.find("li"); var checkboxes = li.find("input[type=checkbox]"); return checkboxes } var findChildTags = function (array) { var localArr = []; var content = $(settings.filterListWidgetSelector); var type = content.find(settings.typeSelect); var checkboxes = findAllSelector(type) checkboxes.each(function (item) { if (array.length > 0) { if ($.inArray($(this).data("parent"), array) >= 0) { localArr.push($(this).data("val")); } } }); return localArr; } var ListResultViewModel = function () { var self = this; self.Advertisements = ko.observableArray(); self.CurrentCount = ko.observable(0); self.TotalItemsCount = ko.observable(0); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.TotalItemsCount() > self.CurrentCount(); }); self.AddItem = function (item) { self.Advertisements.push(item); self.CurrentCount(self.CurrentCount() + 1); } self.Tags = ko.observable(); self.searchText = ko.observable(""); }; var resetFilter = function ($widget) { $widget.find(".search-control").val(""); filter = false; } var prepareList = function () { var $widgets = $(settings.listWidgetSelector); var $filterWidgets = $(settings.filterListWidgetSelector); $filterWidgets.find(settings.resetButtonSelector).on("click", function () { resetFilter($filterWidgets); }); var $filterListWidgetSelector = $(settings.filterListWidgetSelector); $filterListWidgetSelector.find(settings.applicationSelector).find("input").on('change', function (e) { onChangeFilter($filterListWidgetSelector); }); $filterListWidgetSelector.find(settings.typeSelect).find("input").on('change', function (e) { onChangeFilter($filterListWidgetSelector); }); _.each($widgets, function (widgetItem, index) { try { var $widgetItem = $(widgetItem); var vm = new ListResultViewModel(widgetItem); var $jsonContainers = $widgetItem.find(settings.dataSelector); if ($jsonContainers && $jsonContainers.length) { var $jsonContainer = $($jsonContainers[0]); var dataSource = JSON.parse($jsonContainer.text() || $jsonContainer.html()); _.each(dataSource.Items, function (item) { vm.AddItem(item); }); vm.TotalItemsCount(dataSource.Count); } ko.applyBindings(vm, widgetItem); var ajaxParams = { widgetGuid: $widgetItem.data("widget-guid"), published: $widgetItem.data("published"), siteGuid: $widgetItem.data("site"), countryGuid: $widgetItem.data("country"), regionGuid: $widgetItem.data("region"), stationId: $widgetItem.data("station"), organizationGuid: $widgetItem.data("organization"), take: $widgetItem.data("count"), tags: [], query: "" }; $widgetItem.on("click", settings.loadMoreButtonSelector, function () { vm if (!filter) { loadAdvertisements(vm, ajaxParams); } else { if (!vm.LoadingInProcess()) { vm.LoadingInProcess(true); } var arr = []; arr = dataArr.slice(count, (count + count)); count += count; _.each(arr, function (item) { vm.AddItem(item); }); vm.LoadingInProcess(false); } }); $filterListWidgetSelector.find(settings.queryInputSelector).on("keypress", function (e) { if ((event.keyCode || event.which) == 13) { var searchQuery = $(".search-control").val(); if (TagsAll.application.length != 0 || TagsAll.type != 0 || searchQuery != "") { filter = true; var childTags = []; if (TagsAll.application.length > 0 && TagsAll.type.length === 0) { childTags = findChildTags(TagsAll.application); TagsAll.type = childTags; } ajaxParams.tags = TagsAll.application.concat(TagsAll.type); ajaxParams.query = searchQuery != "" ? searchQuery : null; vm.Advertisements([]); ajaxParams.take = 999; vm; loadAdvertisementsWithSearch(vm, ajaxParams, 0); } } }); $filterListWidgetSelector.find(settings.listFilterBtnSelector).on("click", function () { var searchQuery = $('.search-control').val(); if (TagsAll.application.length != 0 || TagsAll.type != 0 || searchQuery != "") { filter = true; var childTags = []; if (TagsAll.application.length > 0 && TagsAll.type.length === 0) { childTags = findChildTags(TagsAll.application) TagsAll.type = childTags; } ajaxParams.tags = TagsAll.application.concat(TagsAll.type); ajaxParams.query = searchQuery != "" ? searchQuery : null; vm.Advertisements([]); ajaxParams.take = 999; vm loadAdvertisementsWithSearch(vm, ajaxParams, 0); } else { document.location.reload(true); } }); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render advertlist list #" + (index + 1)); } } }); }; Advertisements.run = function () { prepareList(); }; Advertisements.on("start", function (options) { if (typeof useFilterInAdvList !== 'undefined') Advertisements.run(); }); }); ; LukoilApp.module("PressReleases", function (PressReleases, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { pressreleaseListWidgetSelector: ".pressrelease-list-widget", pressreleasePageWidgetSelector: ".press-release-page-title", filterForm: ".filter form", pressReleasesListFilterBtnSelector: ".filter-btn", pressReleasesListResultsSelector: ".pressrelease-list-results", getReleasesUrl: "/api/presscenter/releases", getTagsUrl: "/api/presscenter/Tags", datepickerSelector: ".form-control.calendar", startDateSelector: "#calendar-from", endDateSelector: "#calendar-to", loadMoreButtonSelector: ".load-more-button", countrySelector: ".country-select", themeSelector: ".theme-select", regionSelector: ".region-select", queryInputSelector: ".search-control", resetButtonSelector: ".button-reset", }; var requiredModules = { mediaLibrary: LukoilApp.module("MediaLibrary") }; var buildQueryStringForEventListFilter = function (query, tags, startDate, endDate) { var url = new URI(window.location.href); url.search(function (data) { data[Constants.queryParamNames.SearchQuery] = query ? query : undefined; data[Constants.queryParamNames.Tags] = tags ? tags : undefined; data[Constants.queryParamNames.StartDate] = startDate ? startDate : undefined; data[Constants.queryParamNames.EndDate] = endDate ? endDate : undefined; return data; }); return url.search(); }; var pad = function (num, size) { var s = num + ""; while (s.length < size) s = "0" + s; return s; }; var updateSearchParams = function (vm, $releasesList) { vm.SearchParams = { currentUrl: window.location.href, take: Constants.PageSize, siteGuid: $releasesList.data("site-guid"), widgetGuid: $releasesList.data("widget-guid"), pageNavGuid: $releasesList.data("current-nav-guid"), langGuid: $releasesList.data("lang") }; if ($releasesList.find(".panel-filter").length) { var multiselects = [settings.themeSelector, settings.countrySelector]; if (!$releasesList.find(settings.regionSelector).parent().hasClass("disabled")) { multiselects.push(settings.regionSelector); } var tagsVal = $.getTagsValFromMultiselects($releasesList, multiselects); var $startDatePicker = $releasesList.find(settings.startDateSelector); var $endDatePicker = $releasesList.find(settings.endDateSelector); var queryVal = $releasesList.find(settings.queryInputSelector).val(); var startDateValue = $.datepicker.parseDate($startDatePicker.datepicker("option", "dateFormat"), $startDatePicker.val()); var endDateValue = $.datepicker.parseDate($endDatePicker.datepicker("option", "dateFormat"), $endDatePicker.val()); vm.SearchParams.query = queryVal ? queryVal.encodeURIComponent() : queryVal; vm.SearchParams.tags = tagsVal; vm.SearchParams.startDate = startDateValue ? startDateValue.localAsUtcDate().toISOString() : null; vm.SearchParams.endDate = endDateValue ? endDateValue.localAsUtcDate().toISOString() : null; } }; var loadReleases = function (vm, $releasesList, skip, isPaging) { if (!vm.LoadingInProcess()) { if (!skip) { updateSearchParams(vm, $releasesList); } vm.LoadingInProcess(true); var data = vm.SearchParams; data.skip = skip; $.ajax({ url: settings.getReleasesUrl, data: data, method: "post", success: function (data) { var queryString = buildQueryStringForEventListFilter(vm.SearchParams.query, vm.SearchParams.tags, vm.SearchParams.startDate, vm.SearchParams.endDate); if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname + queryString); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#" + queryString; } if (!skip || isPaging) { vm.ClearReleases(); } _.each(data.Items, function (item) { vm.AddRelease(item); }); vm.AllReleasesCount(data.Count); $.createDownloadPopover($releasesList); $releasesList.find(".panel-time-line-month.last > .collapse").collapse("show"); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; PressReleases.on("start", function (options) { PressReleases.run(); }); function MonthViewModel(month, id, noSorting) { var self = this; self.Id = id; self.Month = month; self.TwoDigitMonth = pad(self.Month, 2); self.Releases = ko.observableArray([]); self.AddRelease = function (release) { release.vmId = self.Id + "-"; if (release.MediaFileId) { release.Id = release.MediaFileId; release.vmId += release.MediaFileId + "mf"; } else { release.Id = release.InformationMaterialId; release.vmId += release.InformationMaterialId + "im"; } if (!release.TableOfContents) { release.TableOfContents = null; } release.PreviewFile = null; if (release.PreviewFiles && release.PreviewFiles.length) { release.PreviewFile = _.find(release.PreviewFiles, function (file) { return file.PreviewType === Constants.previewTypes.NewsFeeds || file.PreviewType === Constants.previewTypes.MediaLibrary; }); } if (release.MediaFileId) { release.Announcement = release.Description; release.ShowDescriptionInList = null; release.PreviewFile = release.MediaLibraryPreviewFile; release.MediaFiles = [release]; } if (!release.MediaFileId && release.MainFile) { release.MediaFiles.push({ File: release.MainFile, Name: release.Name }); } if (release.MediaFiles) { for (var i = 0; i < release.MediaFiles.length; i++) { if (release.MediaFiles[i].LinkedMediaFile) { var linked = release.MediaFiles[i].LinkedMediaFile; release.MediaFiles[i] = linked; } } } if (release.Type === Constants.InformationMaterialTypes.Publication && !release.Agreed) { release.Url = null; } release.redTitle = release.Type !== Constants.InformationMaterialTypes.PressRelease && release.Type !== Constants.InformationMaterialTypes.News; if (release.Type === Constants.InformationMaterialTypes.MediaAlbum || release.Type === Constants.InformationMaterialTypes.Publication || release.Type === Constants.InformationMaterialTypes.Event || release.MediaFileId) { release.SubTitle = release.Name; } else { release.SubTitle = null; } release.HasLinks = function (html) { if (!html) { return false; } var regex = '.*'; return html.match(regex); } if (release.Type === Constants.InformationMaterialTypes.MediaAlbum || release.MediaFileId) { release.Name = GlobalSettings.PressReleaseList.MediaTitle; } else if (release.Type === Constants.InformationMaterialTypes.Event) { release.Name = GlobalSettings.PressReleaseList.EventTitle; } else if (release.Type === Constants.InformationMaterialTypes.Publication) { release.Name = GlobalSettings.PressReleaseList.PublicationTitle; } var pdfExportTitle = null; if (release.Type === Constants.InformationMaterialTypes.PressRelease) { pdfExportTitle = "ReleaseIn"; } else if (release.Type === Constants.InformationMaterialTypes.News) { pdfExportTitle = "NewsIn"; } else if (release.Type === Constants.InformationMaterialTypes.Publication && release.Agreed) { pdfExportTitle = "PublicationIn"; } if (pdfExportTitle !== null) { var exportUrl = "/api/presscenter/exportpressrelease?id=" + release.InformationMaterialId; release.MediaFiles.unshift({ Name: GlobalSettings.PressRelease[pdfExportTitle], File: { AllowPreview: true, FileExtension: "PDF", FileDownloadUrl: exportUrl + "&dl=1", FileUrl: exportUrl, FileSizeText: null, Type: Constants.fileTypes.Document } }); } release.fileListData = requiredModules.mediaLibrary.getVmForFileList(release.MediaFiles); release.findFirstFileByTypes = function () { var types = arguments; return _.find(release.fileListData.allFiles, function (file) { for (var i = 0; i < types.length; i++) { if (file.Type == types[i]) { return true; } } return false; }); }; self.Releases.push(release); if (!noSorting) { self.Releases.sort(function (left, right) { if (right.PublicationDate === left.PublicationDate) { if (right.ContentSetId === left.ContentSetId) { if (right.Id === left.Id){ return 0; } return right.Id > left.Id; } return right.ContentSetId > left.ContentSetId; } return right.PublicationDate > left.PublicationDate ? 1 : -1; }); } }; } function YearViewModel(year, id) { var self = this; self.Id = id; self.Year = year; self.Months = ko.observableArray([]); self.AddRelease = function (release) { var month = release.momentPublicationDate.month() + 1; var monthVm = _.find(self.Months(), function (item) { return month === item.Month; }); if (!monthVm) { monthVm = new MonthViewModel(month, self.Id + "-" + month); self.Months.push(monthVm); self.Months.sort(function (left, right) { return right.Month - left.Month; }); } monthVm.AddRelease(release); }; } function PressReleaseResultViewModel(id) { var self = this; self.Skipped = ko.observable(0); self.Id = id; self.SearchParams = {}; self.Years = ko.observableArray([]); self.AllReleasesCount = ko.observable(0); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.AddRelease = function (release) { release.momentPublicationDate = moment(release.PublicationDate); var year = release.momentPublicationDate.year(); var yearVm = _.find(self.Years(), function (item) { return year === item.Year; }); if (!yearVm) { yearVm = new YearViewModel(year, self.Id + "-" + year); self.Years.push(yearVm); self.Years.sort(function (left, right) { return right.Year - left.Year; }); } yearVm.AddRelease(release); self.AllReleasesCount(self.AllReleasesCount() + 1); }; self.IsActivePage = function (value) { //console.log(value, self.LoadedPages(), $.inArray(value, self.LoadedPages())); return $.inArray(value, self.LoadedPages()) >= 0; } ko.PaginationViewModel.call(self, Constants.PageSize, self.AllReleasesCount, settings.pressreleaseListWidgetSelector, loadReleases); self.ClearReleases = function () { self.Years.removeAll(); self.AllReleasesCount(0); }; } function PressReleaseResultCompactViewModel(id) { var self = this; self.Id = id; self.ReleasesVm = ko.observable(new MonthViewModel(null, self.Id, true)); self.AddRelease = function (release) { self.ReleasesVm().AddRelease(release); }; } var resetFilter = function ($pressReleases) { $pressReleases.find(settings.queryInputSelector).val(""); $.resetDatePickerValue($pressReleases.find(settings.startDateSelector)); $.resetDatePickerValue($pressReleases.find(settings.endDateSelector)); }; var updateFilterData = function ($dataSelector, $containers, tagsData) { if (tagsData.length > 0 && $containers && $containers.length > 0) { var $container = $($containers[0]); var data = JSON.parse($container.text() || $container.html()); var compatibleValues = []; if (data != null && data.Items != null) { data.Items.map(function(item) { if (tagsData.indexOf(item.theme) != -1 && compatibleValues.indexOf(item.area) == -1) { compatibleValues.push(item.area); } }); } if (compatibleValues.length > 0) { $dataSelector.parent().removeClass("disabled"); $dataSelector.find("li").hide(); compatibleValues.map(function(item) { $dataSelector.find("input[data-val = " + item + "]").parents('li').show(); }); } else { $dataSelector.parent().addClass("disabled"); } } else { $dataSelector.find("li").show(); $dataSelector.parent().removeClass("disabled"); } } var onChangeThemeFilter = function ($pressReleaseList) { var $themeCountryContainers = $pressReleaseList.find(".theme-country-tag-guids"); var $themeRegionContainers = $pressReleaseList.find(".theme-region-tag-guids"); var $themeMultiselect = $pressReleaseList.find(settings.themeSelector); var $countryMultiselect = $pressReleaseList.find(settings.countrySelector); var $regionMultiselect = $pressReleaseList.find(settings.regionSelector); var tagsArray = []; var $ms = $themeMultiselect.getValFromMultiSelect(); if ($ms != null) { $ms.map(function(item) { tagsArray.push(item.value); }); updateFilterData($countryMultiselect, $themeCountryContainers, tagsArray); updateFilterData($regionMultiselect, $themeRegionContainers, tagsArray); if ($countryMultiselect.getValFromMultiSelect().length > 0) { $regionMultiselect.parent().addClass("disabled"); } } } var getCompatibleThemes = function ($containers, tagsData) { var compatibleValues = []; if (tagsData.length > 0 && $containers && $containers.length > 0) { var $container = $($containers[0]); var data = JSON.parse($container.text() || $container.html()); if (data != null && data.Items != null) { data.Items.map(function(item) { if (tagsData.indexOf(item.area) != -1 && compatibleValues.indexOf(item.theme) == -1) { compatibleValues.push(item.theme); } }); } } return compatibleValues; } var updateThemeFilter = function ($pressReleaseList) { var $themeCountryContainers = $pressReleaseList.find(".theme-country-tag-guids"); var $themeRegionContainers = $pressReleaseList.find(".theme-region-tag-guids"); var countryThemeValues = $pressReleaseList.find(settings.countrySelector).getValFromMultiSelect(); var regionThemeValues = $pressReleaseList.find(settings.regionSelector).getValFromMultiSelect(); var countryValues = []; if (countryThemeValues != null) { countryThemeValues.map(function(item) { countryValues.push(item.value); }); } var regionValues = []; if (regionThemeValues != null) { regionThemeValues.map(function(item) { regionValues.push(item.value); }); } var $themeSelector = $pressReleaseList.find(settings.themeSelector); if (regionValues.length > 0 || countryValues.length > 0) { var compatibleThemes = []; getCompatibleThemes($themeCountryContainers, countryValues).map(function(item) { if (compatibleThemes.indexOf(item) == -1) { compatibleThemes.push(item); } }); getCompatibleThemes($themeRegionContainers, regionValues).map(function(item) { if (compatibleThemes.indexOf(item) == -1) { compatibleThemes.push(item); } }); if (compatibleThemes.length > 0) { $themeSelector.parent().removeClass("disabled"); $themeSelector.find("li").hide(); compatibleThemes.map(function (item) { $themeSelector.find("input[data-val = " + item + "]").parents('li').show(); }); } else { $themeSelector.parent().addClass("disabled"); } } else { $themeSelector.find("li").show(); $themeSelector.parent().removeClass("disabled"); } } var preparePressReleaseLists = function () { var $pressReleaseLists = $(settings.pressreleaseListWidgetSelector); _.each($pressReleaseLists, function (pressReleaseList, index) { try { var $pressReleaseList = $(pressReleaseList); var isCompactMode = $($pressReleaseList[0]).data("compact") === "True"; var resultsVm; if ($pressReleaseList.find(".panel-filter").length) { var $regionsSelect = $pressReleaseList.find(settings.regionSelector); var $countrySelect = $pressReleaseList.find(settings.countrySelector); var russiaGuid = $pressReleaseList.data("russia-guid"); $regionsSelect.updateSelectStateByValueInAnother($countrySelect, russiaGuid); $pressReleaseList.find(settings.countrySelector).on("change", "input", function () { $regionsSelect.updateSelectStateByValueInAnother($countrySelect, russiaGuid); }); } $pressReleaseList.find(".field-autocomplete").autocomplete({ delay: 500, source: [], open: function (event, ui) { $('.ui-autocomplete').width($(event.target).innerWidth()); } }).on("keyup", function () { var $input = $(this); $.ajax({ url: settings.getTagsUrl, data: { query: $input.val().encodeURIComponent(), lang: $pressReleaseList.data("lang") }, method: "get", success: function (data) { if (data && data.length) { $input.autocomplete("option", "source", data); } }, traditional: true, cache: false }); }); if (isCompactMode) { resultsVm = new PressReleaseResultCompactViewModel(index); } else { var $datePickers = $pressReleaseList.find(settings.datepickerSelector); _.each($datePickers, function (picker) { var $picker = $(picker); var initialDate = $picker.data("initialvalue"); if (initialDate) { $picker.val($.datepicker.formatDate($picker.datepicker("option", "dateFormat"), moment(initialDate).toDate())); } }); resultsVm = new PressReleaseResultViewModel(index); $pressReleaseList.find(settings.filterForm).on("submit", function () { return false; }); $pressReleaseList.find(settings.pressReleasesListFilterBtnSelector).on("click", function () { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadReleases(resultsVm, $pressReleaseList, 0, false); }); $pressReleaseList.on("click", settings.loadMoreButtonSelector, function () { var page = resultsVm.CurrentPage(); resultsVm.CurrentPage(page + 1); resultsVm.LoadedPages.push(page); loadReleases(resultsVm, $pressReleaseList, page * resultsVm.PageSize(), false); }); $pressReleaseList.find(settings.resetButtonSelector).on("click", function () { resetFilter($pressReleaseList); }); } onChangeThemeFilter($pressReleaseList); $pressReleaseList.find(settings.themeSelector).find("input").on('change', function () { onChangeThemeFilter($pressReleaseList); }); updateThemeFilter($pressReleaseList); $pressReleaseList.find(settings.countrySelector).find("input").on("change", function () { updateThemeFilter($pressReleaseList); }); $pressReleaseList.find(settings.regionSelector).find("input").on("change", function () { updateThemeFilter($pressReleaseList); }); var releasesData = null; var $jsonContainers = $pressReleaseList.find(".pressreleases-data"); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); releasesData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); if (!isCompactMode) { resultsVm.Skipped(releasesData.Skipped); resultsVm.CurrentPage(Math.floor(resultsVm.Skipped() / resultsVm.PageSize()) + 1); } _.each(releasesData.Items, function (item) { resultsVm.AddRelease(item); }); if (resultsVm.AllReleasesCount) { resultsVm.AllReleasesCount(releasesData.Count); } } if (!releasesData || (!releasesData.Items.length && isCompactMode)) { $pressReleaseList.remove(); } else { var resultContainer = $pressReleaseList.find(settings.pressReleasesListResultsSelector)[0]; ko.cleanNode(resultContainer); updateSearchParams(resultsVm, $pressReleaseList); var widgetGuid = $pressReleaseList.attr("data-widget-guid"); $(".server-rendered-" + widgetGuid).remove(); ko.applyBindings(resultsVm, resultContainer); $.createDownloadPopover($pressReleaseList); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render press releases list #" + (index + 1)); } } }); }; var preparePressReleasePages = function () { var $pressReleasePages = $(settings.pressreleasePageWidgetSelector); _.each($pressReleasePages, function (pressReleasePage, index) { try { if (window.pressReleaseAvailableLocales != null) { $("#lang .dropdown-menu li[langcode]").addClass("hide"); $.each(window.pressReleaseAvailableLocales, function(i, e) { $("#lang .dropdown-menu li[langcode='" + e.toLowerCase() + "']").removeClass("hide"); }); if ($("#lang .dropdown-menu li[langcode]:not(.hide)").length == 0) { $("#lang .caret, #lang .dropdown-menu").hide(); } } else { $("#lang .dropdown-menu a").addClass("disabled").attr("href", null); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render press releases page #" + (index + 1)); } } }); }; PressReleases.run = function () { preparePressReleasePages(); preparePressReleaseLists(); }; });; LukoilApp.module("MassMedia", function (MassMedia, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { massMediaWidgetSelector: ".massmedia-widget", massMediaApiUrl: "/api/presscenter/issue" }; MassMedia.on("start", function (options) { MassMedia.run(); }); var requiredModules = { mediaLibrary: LukoilApp.module("MediaLibrary") }; function MassMediaViewModel(currentIssue, issueList) { var self = this; var prepareFiles = function (issue) { issue.PreviewFile = null; if (issue.PreviewFiles && issue.PreviewFiles.length) { issue.PreviewFile = _.find(issue.PreviewFiles, function (file) { return file.PreviewType === Constants.previewTypes.NewsFeeds; }); } for (var i = 0; i < issue.MediaFiles.length; i++) { if (issue.MediaFiles[i].LinkedMediaFile) { issue.MediaFiles[i] = issue.MediaFiles[i].LinkedMediaFile; } } if (!issue.IsAnonCollapsed) { issue.IsAnonCollapsed = ko.observable(false); } else { issue.IsAnonCollapsed(false); } issue.fileListData = requiredModules.mediaLibrary.getVmForFileList(issue.MediaFiles); return issue; } self.CurrentIssue = ko.observable(); self.IssueList = ko.observableArray(issueList); self.Years = _.unique(_.pluck(issueList, "Year")); self.CurrentYear = ko.observable(self.Years[0]); self.IssueByYear = ko.observableArray([]); var issueCache = {}; if (currentIssue) { issueCache[currentIssue.InformationMaterialId] = prepareFiles(currentIssue); self.CurrentIssue(currentIssue); var date = moment(currentIssue.PublicationDate); self.CurrentYear = ko.observable(date.year()); } self.SelectIssue = function (issueInfo, event) { var fromCache = issueCache[issueInfo.IssueId]; if (fromCache) { if (self.CurrentIssue()) { issueCache[self.CurrentIssue().InformationMaterialId] = self.CurrentIssue(); } self.CurrentIssue(fromCache); $.createDownloadPopover($(settings.massMediaWidgetSelector)); } else { $.ajax({ url: settings.massMediaApiUrl, data: { issueId: issueInfo.IssueId }, success: function (data) { issueCache[self.CurrentIssue().InformationMaterialId] = self.CurrentIssue(); self.CurrentIssue(prepareFiles($.parseJSON(data))); $.createDownloadPopover($(settings.massMediaWidgetSelector)); }, cache: false }); } }; var updateIssues = function (year) { self.IssueByYear(_.filter(issueList, function (issue) { return issue.Year === year; })); } self.UpdateIssueByYear = function (year, event) { self.CurrentYear(year); updateIssues(year); self.SelectIssue(self.IssueByYear()[0]); } updateIssues(self.CurrentYear()); } var prepareMassMediaWidget = function() { var $massMediaWidgets = $(settings.massMediaWidgetSelector); _.each($massMediaWidgets, function (widget, index) { try { var $widget = $(widget); var $jsonContainer = $($widget.find("script")[0]); if ($jsonContainer.length) { var widgetData = $.parseJSON($jsonContainer.text() || $jsonContainer.html()); $jsonContainer.remove(); if (!widgetData) { $widget.hide(); return; } var widgetVm = new MassMediaViewModel(widgetData.LastIssue, widgetData.IssueInfoList); ko.applyBindings(widgetVm, widget); $.createDownloadPopover($widget); } else { $widget.hide(); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render Mass media widget #" + (index + 1)); } } }); }; MassMedia.run = function () { prepareMassMediaWidget(); }; });; LukoilApp.module("GasStationPrices", function (GasStationPrices, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { widgetSelector: ".gas-station-prices", cookieName: "azs_prices_station_id" }; GasStationPrices.on("start", function (options) { GasStationPrices.run(); }); var initWidget = function ($widget, tabsCount) { $widget.find(".owl-stage-outer").remove(); $widget.find('.nav-tabs').trigger('destroy.owl.carousel'); $widget.find('.nav-tabs').lukOwlCarousel({ nav: true, navRewind: false, dots: false, autoWidth: false, responsive: { 0: { items: 1, slideBy: 1 }, 768: { items: tabsCount, slideBy: tabsCount }, 992: { items: tabsCount, slideBy: tabsCount } } }); $widget.find('.managers-info ul').responsiveSlides({ pager: false, pause: false, timeout: 3000, namespace: "manager-slide" }); }; function GasStationPricesWidgetVM(data, $widget) { var self = this; updateData(data); var getStationFromCookie = function() { var id = $.lukoilGetCookie(settings.cookieName); if (id) { return _.find(self.Stations(), function(station) { return station.Id == id; }); } }; self.Stations = ko.observableArray(_.sortBy(data.Stations, function(s) { return s.City; })); // add for Belgian Site self.uniqueStations = ko.dependentObservable(function() { var types = ko.utils.arrayMap(self.Stations(), function(item){ return item.PostCode}) return ko.utils.arrayGetDistinctValues(types).sort(); }); self.SelectedUniqueStations = "" self.SelectedStation = ko.observable(getStationFromCookie() || self.Stations()[0]); self.SelectedFuel = ko.observable(self.SelectedStation().Fuels[0]); self.CurrentTime = ko.observable(getTime()); setInterval(function () { self.CurrentTime(getTime()); }, 1000); function getTime() { return moment().utc().add(data.TimeOffset, "m").format('LLL'); } self.ChangeFuel = function(data) { self.SelectedFuel(data); }; self.GoToStationPost = function(data) { var url = window.location.href + '/ForMotorists/PetrolStations?form=gasStation&tab=search&closest=0&geographyString=Belgium postal_code' + self.SelectedUniqueStations; window.location.href = url; }; self.ChangeSation = function(data) { self.SelectedFuel(self.SelectedStation().Fuels[0]); self.UpdateCarouselAndSlid3er(); saveCokie(); }; self.UpdateCarouselAndSlid3er = function () { var tabsCount = self.SelectedStation().Fuels.length > 4 ? 4 : self.SelectedStation().Fuels.length; initWidget($widget, tabsCount); }; var saveCokie = function() { $.removeCookie(settings.cookieName); $.lukoilSaveCookie(settings.cookieName, self.SelectedStation().Id, { expires: 90, path: '/' }); } function updateData(data) { $.each(data.Stations, function(index, station) { $.each(station.Fuels, function (index, fuel) { fuel.DiscountCurrency = fuel.Currency; if ((GlobalSettings.CurrentLanguage === 'fr' || GlobalSettings.CurrentLanguage === 'nl') && fuel.Discount) { fuel.Discount = (parseFloat(fuel.Discount.replace(',', '.')) * 100).toFixed(1); fuel.Discount = fuel.Discount.replace('.', ','); fuel.DiscountCurrency = 'CENT'; } }); }); } } var prepareWidgets = function() { var $widgets = $(settings.widgetSelector); _.each($widgets, function (widget, index) { try { var $widget = $(widget); var $jsonContainer = $($widget.find("script")[0]); if ($jsonContainer.length) { var widgetData = $.parseJSON($jsonContainer.text() || $jsonContainer.html()); $jsonContainer.remove(); if (!widgetData || !widgetData.Stations.length) { $widget.hide(); return; } var widgetVm = new GasStationPricesWidgetVM(widgetData, $widget); ko.applyBindings(widgetVm, widget); widgetVm.UpdateCarouselAndSlid3er(); } else { if ($widget.hasClass("gasStationPage")) { var tabsCount = $widget.find('.nav-tabs .nav-tab').length > 4 ? 4 : $widget.find('.nav-tabs .nav-tab').length; initWidget($widget, tabsCount); } else { $widget.hide(); } } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render GasStationPrices widget #" + (index + 1)); } } }); }; GasStationPrices.run = function () { prepareWidgets(); }; }); function ChangeFuelPrice(el, fuelId) { var $gs = $(el).closest(".gas-station-prices"); $gs.find(".nav-tabs .nav-tab").removeClass("selected"); $gs.find(".nav-tabs .nav-tab#fuelId_" + fuelId).addClass("selected"); $gs.find(".tab-content .tab-pane").removeClass("active"); $gs.find(".tab-content .tab-pane#tab-pane_" + fuelId).addClass("active"); } ; LukoilApp.module("Trainers", function(Trainers, LukoilApp, Backbone, Marionette, $, _) { var settings = { invalidClassName: "invalid", sendEmailUrl: "/api/trainers/sendpdftoemail" }; Trainers.on("start", function(options) { Trainers.run(); }); var FormViewModel = function (type, formSelector, successMessage, errorsMessage, successWarningMessage) { var self = this; self.Type = type, self.Checks = null; self.PersonName = ko.observable(""); self.IsDirty = ko.observable(true); self.FormSelector = formSelector; self.SuccessMessage = successMessage; self.ErrorsMessage = errorsMessage; self.SuccessWarningMessage = successWarningMessage; self.Errors = ko.observableArray([]); self.AddError = function (errorString, checkName) { self.Errors.remove(function (error) { return error.checkName === checkName; }); if (errorString) { self.Errors.push({ checkName: checkName, errorString: errorString }); } }; }; var TrainersViewModel = function () { var self = this; self.Form = new FormViewModel(1, "#individual-shareholder-form", "Анкета заполнена без ошибок!", "При заполнении анкеты допущены ошибки. Заполните анкету еще раз.", "Рекомендуется проставить отметку «Согласен на внесение исправительных записей». При наличии отметки о согласии в этом поле Вам не потребуется давать отдельное письменное согласие на внесение исправительных записей по Вашему лицевому счету, если в этом возникнет потребность, что существенно сократит время на устранение возможных неточностей.
    Хотите это сделать?"); self.Countinuation = new FormViewModel(2, "#continuation-of-individual-shareholder-form", "Продолжение анкеты заполнено без ошибок!", "При заполнении продолжения анкеты допущены ошибки. Заполните анкету еще раз."); self.StandardVoting = new FormViewModel(3, "#standard-voting-paper", "Бюллетень заполнен без ошибок!", "При заполнении бюллетеня допущены ошибки."); self.CumulativeVoting = new FormViewModel(4, "#cumulative-voting-paper", "Бюллетень заполнен без ошибок!", "При заполнении бюллетеня допущены ошибки."); self.SelectedForm = ko.observable(); self.SendIsOpen = ko.observable(false); self.Email = ko.observable(""); self.EmailIsValid = ko.observable(true); var validateInner = function (dontShowSuccessMessage) { _.each(self.SelectedForm().Checks, function (item) { if (item && item.validate) { item.validate(); } }); var isValid = !self.SelectedForm().Errors().length; if (isValid) { var checked = $("#correctional-record-sign input[type=checkbox]:checked"); if (!dontShowSuccessMessage && self.SelectedForm().SuccessMessage) { if (checked != null && checked.length == 0 && self.SelectedForm().SuccessWarningMessage) { $.fancyConfirm(self.SelectedForm().SuccessWarningMessage, function (confirmResult) { if (!confirmResult) { setTimeout(function() { $.fancyConfirm(self.SelectedForm().SuccessMessage, null, "Ok"); }, 100); } }, "YesNo"); } else { $.fancyConfirm(self.SelectedForm().SuccessMessage, null, "Ok"); } } } else if (self.SelectedForm().ErrorsMessage) { $.fancyConfirm(self.SelectedForm().ErrorsMessage, null, "Ok"); } self.SelectedForm().IsDirty(!isValid); return isValid; }; var getTrainerValues = function() { var $form = $(self.SelectedForm().FormSelector); var values = {}; _.each($form.find("input, select"), function (input) { var $input = $(input); var key = $input.data("key"); if (key) { if ($input.is(":checkbox")) { values[key] = $input.is(":checked") ? 1 : 0; } else { values[key] = $input.val().encodeURIComponent(); } } }); return values; }; self.Validate = function () { return validateInner(); }; self.Print = function () { if (self.SelectedForm().FormSelector && validateInner(true)) { var $frame = $("#trainer-print-frame"); $frame.contents() .find('body') .html("") .append("") .append($(self.SelectedForm().FormSelector).parent().clone()); setTimeout(function() { $frame[0].contentWindow.print(); }, 500); } }; self.OpenSendDialog = function() { self.SendIsOpen(true); } self.SubmitEmailForm = function (formElement) { $(formElement).find("input[name=Values]").val(JSON.stringify(getTrainerValues())); $(formElement).find("input[name=Type]").val(self.SelectedForm().Type); return true; }; self.Save = function () { if (self.SelectedForm().FormSelector && validateInner(true)) { var $saveForm = $("#trainer-save-form"); $saveForm.find("textarea[name=type]").val(self.SelectedForm().Type); $saveForm.find("textarea[name=values]").val(JSON.stringify(getTrainerValues())); $saveForm.trigger("submit"); } }; }; var trainersVm; var Check = function (options) { var setValidationClasses = function (errorString) { var $target = options.$invalidClassTarget || options.$elements; if (errorString) { $target.addClass(settings.invalidClassName); } else { $target.removeClass(settings.invalidClassName); } }; var checkRegexp = function (val) { var result = true; if ((!options.regexpValidationPredicate || options.regexpValidationPredicate(options.triggerElSelector)) && options.regexp && options.regexp instanceof RegExp) { var regexp = options.regexp; regexp.lastIndex = 0; var matches = regexp.exec(val); result = matches && matches[0] === val; } return result; }; getValue = function ($elements) { var value = ""; _.each($elements, function (element) { value += $(element).val(); }); return value; }; var onEditCheck = function () { var val = getValue(options.$elements); var result = !val || checkRegexp(val) ? undefined : options.regexpValidationError; if (!result && options.additionalOnEditValidation) { result = options.additionalOnEditValidation(val, options.$elements); } setValidationClasses(result); options.vm.AddError(result, options.name); return result; }; if (options.checkOnEdit) { options.$elements.on("change", function (event) { onEditCheck(); }); } this.name = options.name; this.triggerElSelector = options.triggerElSelector; this.checkOnEdit = options.checkOnEdit; this.getCurrentValue = function () { return getValue(options.$elements); } this.validate = function (checkOnlyOnEdit) { var result; var val = getValue(options.$elements); if (checkOnlyOnEdit && val) { result = onEditCheck(); } else { if (val) { result = onEditCheck(); } else { result = options.mandatoryField && (!options.mandatoryValidationPredicate || options.mandatoryValidationPredicate(options.triggerElSelector)) ? options.mandatoryFieldError : undefined; } if (!result && options.additionalValidation) { result = options.additionalValidation(val, options.$elements); } } setValidationClasses(result); options.vm.AddError(result, options.name); }; }; var registerTrigger = function(selector, checks) { $(selector).on("change", function () { _.each(checks, function (check) { if (check.triggerElSelector === selector && check.getCurrentValue() && check.checkOnEdit) { check.validate(true); } }); }); } var prepareTrainers = function () { var $shareholderFormWidget; var $votingPaperFormWidget; // delete all trainers widgets except first _.each($(".individual-shareholder-form-widget, .voting-paper-form-widget"), function (item, index) { var $item = $(item); if (index === 0 && $item.is(".individual-shareholder-form-widget")) { $shareholderFormWidget = $item; } else if (index === 0 && $item.is(".voting-paper-form-widget")) { $votingPaperFormWidget = $item; } else if (index > 0) { $item.remove(); } }); if ($shareholderFormWidget) { trainersVm = new TrainersViewModel(); trainersVm.SelectedForm(trainersVm.Form); ko.applyBindings(trainersVm, $shareholderFormWidget[0]); $shareholderFormWidget.find('.calendar').datepicker("option", "yearRange", "-150:+150"); $shareholderFormWidget.find(".trainer-form input, .trainer-form select").on("change", function () { trainersVm.SelectedForm().IsDirty(true); }); $(".trainer-popup .button, .change-form-button").on("click", function () { var form = this.getAttribute("data-form"); if (form === "continuation") { if (trainersVm.SelectedForm() === trainersVm.Form && $(this).is(".change-form-button") && trainersVm.Form.IsDirty()) { $.fancyConfirm("Сначала требуется заполнить анкету акционера с применением тренажера «Анкеты акционера».", null, "Ok"); } else { trainersVm.SelectedForm(trainersVm.Countinuation); parent.$.fancybox.close(); } } else { trainersVm.SelectedForm(trainersVm.Form); parent.$.fancybox.close(); } }); var $sendForm = $("#send-email-form form"); $sendForm.lukoilAjaxSubmitForm(null, null, function() { trainersVm.SendIsOpen(false); $sendForm.reloadLukoilCaptcha(); }, false); if ($("#individual-shareholder-form").length) { $("#individual-shareholder-form").find(".auto-tab-inputs").on("keyup", "input", function () { var key = event.keyCode || event.charCode; var $el = $(this); var curLength = $el.val().length; var maxLength = $el.attr("maxlength"); if (key == 8 && curLength === 0) { $el.prev("input").trigger("focus"); } if (curLength == maxLength) { $el.next("input").trigger("focus"); } }); var bankInputCheckboxSelector = "#payment-info .pay-method .bank-account input"; var moneyOrderInputCheckboxSelector = "#payment-info .pay-method .money-order input"; var identitySelector = "#identity-info .identity-type select"; var responceOpenSchetInputCheckboxSelector = "#responce-open-schet .responce-open-schet-check input"; var $bankInputCheckbox = $(bankInputCheckboxSelector); var $moneyOrderInputCheckbox = $(moneyOrderInputCheckboxSelector); $bankInputCheckbox.on("change", function () { if ($moneyOrderInputCheckbox.prop("checked")) { $moneyOrderInputCheckbox.prop("checked", !$bankInputCheckbox.prop("checked")); } }); $moneyOrderInputCheckbox.on("change",function () { if ($bankInputCheckbox.prop("checked")) { $bankInputCheckbox.prop("checked", !$moneyOrderInputCheckbox.prop("checked")); } }); var postInputCheckboxSelector = "#responce-open-schet .responce-open-schet-inputs .schet-post input"; var registerInputCheckboxSelector = "#responce-open-schet .responce-open-schet-inputs .schet-register input"; var pointInputCheckboxSelector = "#responce-open-schet .responce-open-schet-inputs .schet-point input"; var $postInputCheckbox = $(postInputCheckboxSelector); var $registerInputCheckbox = $(registerInputCheckboxSelector); var $pointInputCheckbox = $(pointInputCheckboxSelector); $postInputCheckbox.on("change", function () { if ($registerInputCheckbox.prop("checked")) { $registerInputCheckbox.prop("checked", !$postInputCheckbox.prop("checked")); } if ($pointInputCheckbox.prop("checked")) { $pointInputCheckbox.prop("checked", !$postInputCheckbox.prop("checked")); } }); $registerInputCheckbox.on("change", function () { if ($postInputCheckbox.prop("checked")) { $postInputCheckbox.prop("checked", !$registerInputCheckbox.prop("checked")); } if ($pointInputCheckbox.prop("checked")) { $pointInputCheckbox.prop("checked", !$registerInputCheckbox.prop("checked")); } }); $pointInputCheckbox.on("change", function () { if ($postInputCheckbox.prop("checked")) { $postInputCheckbox.prop("checked", !$pointInputCheckbox.prop("checked")); } if ($registerInputCheckbox.prop("checked")) { $registerInputCheckbox.prop("checked", !$pointInputCheckbox.prop("checked")); } }); trainersVm.Form.Checks = [ new Check({ vm: trainersVm.Form, name: "09713320714649019532e0b2ab7d4ddc", regexp: /([A-z,А-я,\s,\'\-]+)/g, checkOnEdit: true, $elements: $("#name-block input"), regexpValidationError: "Неверно заполнено поле «Фамилия Имя Отчество». Допускаются только буквы, апостроф и тире.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Фамилия Имя Отчество»." }), new Check({ vm: trainersVm.Form, name: "2c575bd60e3a4aa8a5f976b28f42033e", regexp: /([A-z,А-я,\s,\'\-]+)/g, checkOnEdit: false, $elements: $("#personal-info .citizenship input"), regexpValidationError: "Неверно заполнено поле «Гражданство». Допускаются только буквы, апостроф и тире.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Гражданство»." }), new Check({ vm: trainersVm.Form, name: "3eb1a9dfead64daeabbdf18f169c731d", $elements: $("#personal-info .calendar"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Дата рождения».", additionalValidation: function (val) { var date; var dateFormat = $("#personal-info .calendar").datepicker("option", "dateFormat"); try { date = $.datepicker.parseDate(dateFormat, val); } catch (e) { return "Неверно заполнено поле «Дата рождения». Допускается только ввод даты."; } var today = new Date(); today.setHours(0, 0, 0, 0); return date > today ? "Неверно заполнено поле «Дата рождения». Нельзя ввести дату, которая ещё не наступила." : undefined; } }), new Check({ vm: trainersVm.Form, name: "905a4a4c81ab4512be187f6e4bb81b93", regexp: /(\d*)/g, checkOnEdit: true, $elements: $("#personal-info .inn input"), regexpValidationError: "Неверно заполнено поле «ИНН». Допускается ввод только цифр.", mandatoryField: false }), new Check({ vm: trainersVm.Form, name: "1410757273df4d82b8b806bf16a9558e", regexp: /(\d{12})/g, checkOnEdit: true, $elements: $("#personal-info .inn input"), regexpValidationError: "Неверно заполнено поле «ИНН». Должны быть введены 12 цифр.", mandatoryField: false }), new Check({ vm: trainersVm.Form, name: "b63cdd10a986431ba027d2358fc67785", regexp: /([A-z,А-я,\s,\'\-]+)/g, checkOnEdit: false, $elements: $("#personal-info .place-of-birth input"), regexpValidationError: "Неверно заполнено поле «Место рождения». Допускаются только буквы, апостроф и тире.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Место рождения»." }), new Check({ vm: trainersVm.Form, name: "7db1367931e8479aa83eef89324f6c93", $elements: $("#identity-info .identity-type select"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Вид документа, удостоверяющего личность»." }), new Check({ vm: trainersVm.Form, name: "6b4d841f175c43c1babc6ae13c861fbd", regexp: /(\d{4})/g, triggerElSelector: identitySelector, checkOnEdit: true, $elements: $("#identity-info .series input"), regexpValidationError: "Неверно заполнено поле «Серия». Допускается ввод только четырех цифр.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «серия».", regexpValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; } }), new Check({ vm: trainersVm.Form, name: "612f23de56624fb3b5a565d5f620175a", regexp: /(\d{6})/g, checkOnEdit: true, triggerElSelector: identitySelector, $elements: $("#identity-info .number input"), regexpValidationError: "Неверно заполнено поле «Номер». Допускается ввод только шести цифр.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «номер».", regexpValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; } }), new Check({ vm: trainersVm.Form, name: "6029efa6bedc40a7a9ebcb9228f869c7", $elements: $("#identity-info .date-of-issue .calendar"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Дата выдачи».", additionalValidation: function (val) { var date; var dateFormat = $("#identity-info .date-of-issue .calendar").datepicker("option", "dateFormat"); try { date = $.datepicker.parseDate(dateFormat, val); } catch (e) { return "Неверно заполнено поле «Дата выдачи». Допускается только ввод даты."; } var today = new Date(); today.setHours(0, 0, 0, 0); return date > today ? "Неверно заполнено поле «Дата выдачи». Нельзя ввести дату, которая ещё не наступила." : undefined; } }), new Check({ vm: trainersVm.Form, name: "694078ca6fb34ee9aae58685a8aba4f4", $elements: $("#identity-info .authority input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Наименование выдавшего органа»." }), new Check({ vm: trainersVm.Form, name: "8e3b2ef793a041848f1a6b3d3ad23552", $elements: $("#registration-address .index-input"), regexp: /(\d*)/g, checkOnEdit: true, regexpValidationError: "Неверно заполнено поле «Почтовый индекс адреса места регистрации». В поле должны быть только цифровые значения.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Почтовый индекс адреса места регистрации»." }), new Check({ vm: trainersVm.Form, name: "a6db993a9f624bfc8e4e42f8d6dd1fe2", $elements: $("#registration-address .country"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Страна места регистрации»." }), new Check({ vm: trainersVm.Form, name: "919aa32a8a4a445690c661d81526bada", $elements: $("#registration-address .region"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Республика, край, область, район, населённый пункт места регистрации»." }), new Check({ vm: trainersVm.Form, name: "556ffc5a952645ecad718a19204529a6", $elements: $("#registration-address .street"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Микрорайон, улица места регистрации»." }), new Check({ vm: trainersVm.Form, name: "72356f819e674ad1a4a4d4e05dc3e458", $elements: $("#registration-address .house"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Дом, корпус, квартира места регистрации»." }), new Check({ vm: trainersVm.Form, name: "fb546296a07e4aba9618d587748a9c94", $elements: $("#living-address .index-input"), regexp: /(\d*)/g, checkOnEdit: true, regexpValidationError: "Неверно заполнено поле «Почтовый индекс адреса места жительства». В поле должны быть только цифровые значения.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Почтовый индекс адреса места жительства»." }), new Check({ vm: trainersVm.Form, name: "f104f7a473754d7382481ac5df597417", $elements: $("#living-address .country"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Страна места жительства»." }), new Check({ vm: trainersVm.Form, name: "d6d32447882a4224b7fdb81e47df1689", $elements: $("#living-address .region"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Республика, край, область, район, населённый пункт места жительства»." }), new Check({ vm: trainersVm.Form, name: "19b36eb3f94a4f96b9bc9e139b1d9de3", $elements: $("#living-address .street"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Микрорайон, улица места жительства»." }), new Check({ vm: trainersVm.Form, name: "efa0ece2ba744841ac26027f1886399a", $elements: $("#living-address .house"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Дом, корпус, квартира места жительства»." }), new Check({ vm: trainersVm.Form, name: "21facd94f95544a5867d976da8fc59b8", regexp: /([^A-zА-я]+)/g, checkOnEdit: true, $elements: $("#phones-mail-info .phone"), regexpValidationError: "Неверно заполнено поле «Телефон». В поле не должно быть букв.", mandatoryField: false }), new Check({ vm: trainersVm.Form, name: "162c001eddb44234939779f8aa229851", regexp: /([^A-zА-я]+)/g, checkOnEdit: true, $elements: $("#phones-mail-info .mobile-phone"), regexpValidationError: "Неверно заполнено поле «Мобильный телефон». В поле не должно быть букв.", mandatoryField: false }), new Check({ vm: trainersVm.Form, name: "eb684745fbd8432485ce8897046b1145", regexp: /([^@]*@[^@]*)/g, checkOnEdit: true, $elements: $("#phones-mail-info .email"), regexpValidationError: "Неверно заполнено поле «e-mail». Не указан символ @.", mandatoryField: false }), new Check({ vm: trainersVm.Form, name: "052815b278774019acd96e6a3240b4d3", $elements: $("#payment-info .pay-method input[type=checkbox]"), $invalidClassTarget: $("#payment-info .pay-method input[type=checkbox] + strong"), additionalOnEditValidation: function (val, $elements) { var checkedCount = 0; _.each($elements, function (item) { if ($(item).prop("checked")) { checkedCount++; } }); return checkedCount > 1 ? "Неверно заполнено поле «Способ выплаты доходов по ценным бумагам». Не могут быть указаны одновременно значения «На банковский счет» и «Почтовым переводом»." : ""; }, additionalValidation: function (val, $elements) { var checkedCount = 0; _.each($elements, function (item) { if ($(item).prop("checked")) { checkedCount++; } }); return !checkedCount ? "Обязательно должен быть выбран один из способов выплаты дохода." : ""; } }), new Check({ vm: trainersVm.Form, name: "704b665fd1f0456fab3a5b88d9fe3d91", $elements: $("#payment-info .bank-name input"), triggerElSelector: bankInputCheckboxSelector, mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Банк получателя».", mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "a773ea6621384bec9fd68d4cf3a792a9", $elements: $("#payment-info .bank-bik .bik-inputs input"), triggerElSelector: bankInputCheckboxSelector, regexp: /(\d*)/g, checkOnEdit: true, mandatoryField: false, regexpValidationError: "Неверно заполнено поле «БИК банка». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "18e03800ca3348ffbbaba4f3cf09fa49", $elements: $("#payment-info .bank-bik .bik-inputs input"), triggerElSelector: bankInputCheckboxSelector, regexp: /(\d{9})/g, checkOnEdit: true, mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «БИК банка».", regexpValidationError: "Неверно заполнено поле «БИК банка». Должны быть введены 9 цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "eea1c29fb4fe4d878c82b452ade9d239", $elements: $("#payment-info .bank-ca input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d*)/g, regexpValidationError: "Неверно заполнено поле «Р/счет банка». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, }), new Check({ vm: trainersVm.Form, name: "eb60a112934d47b983eedf0ded7c9644", $elements: $("#payment-info .bank-ca input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d{20})/g, regexpValidationError: "Неверно заполнено поле «Р/счет банка». Должны быть введены 20 цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, additionalOnEditValidation: function (val) { if ($(bankInputCheckboxSelector).prop("checked")) { var bik = ""; _.each($("#payment-info .bank-bik .bik-inputs input").toArray(), function (item) { bik += $(item).val(); }); var ka = ""; _.each($("#payment-info .bank-ka input").toArray(), function (item) { ka += $(item).val(); }); if (bik && bik.length == 9) { var bikEnd = bik.slice(-3); var kaEnd = ka.slice(-3); var ca = val.slice(-3); return bikEnd === ca && kaEnd === ca ? "" : "Неверно заполнено поле «Р/счет банка». Последние 3 цифры должны совпадать с последними 3 цифрами в полях «БИК банка» и «Корр. Счет банка»."; } } } }), new Check({ vm: trainersVm.Form, name: "6167772d56c649d5bfbbef25d04f8cee", $elements: $("#payment-info .bank-inn .bank-inn-inputs input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, regexp: /(\d*)/g, regexpValidationError: "Неверно заполнено поле «ИНН банка». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, }), new Check({ vm: trainersVm.Form, name: "ffa63aee191a4b26bbbb66c520ab71bd", $elements: $("#payment-info .bank-inn .bank-inn-inputs input"), mandatoryField: true, triggerElSelector: bankInputCheckboxSelector, regexp: /(\d{10})/g, regexpValidationError: "Неверно заполнено поле «ИНН банка». Должны быть введены 10 цифр.", mandatoryFieldError: "Не заполнено обязательное поле «ИНН банка».", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "7ad661a0fb3c43668a21dd38608dcd36", $elements: $("#payment-info .bank-inn .bank-kpp-inputs input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, regexp: /(\d*)/g, regexpValidationError: "Неверно заполнено поле «КПП банка». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "c4d1907e840c4b63925fe2696d9c7c69", $elements: $("#payment-info .bank-inn .bank-kpp-inputs input"), mandatoryField: true, triggerElSelector: bankInputCheckboxSelector, regexp: /(\d{9})/g, regexpValidationError: "Неверно заполнено поле «КПП банка». Должны быть введены 9 цифр.", mandatoryFieldError: "Не заполнено обязательное поле «КПП банка».", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "49ba0258413847f98ff1b329a8b1cfa3", $elements: $("#payment-info .bank-ka input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d*)/g, regexpValidationError: "Неверно заполнено поле «Корр. Счет банка». Допускается ввод только цифр.", mandatoryFieldError: "Не заполнено обязательное поле «Корр. Счет».", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "bb4ebc46399c4f44824c7380e38d7650", $elements: $("#payment-info .bank-ka input"), mandatoryField: true, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d{20})/g, regexpValidationError: "Неверно заполнено поле «Корр. Счет банка». Должны быть введены 20 цифр.", mandatoryFieldError: "Не заполнено обязательное поле «Корр. Счет банка».", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, additionalOnEditValidation: function(val) { if ($(bankInputCheckboxSelector).prop("checked")) { var bik = ""; _.each($("#payment-info .bank-bik .bik-inputs input").toArray(), function (item) { bik += $(item).val(); }); if (bik && bik.length == 9) { var bikEnd = bik.slice(-3); var ka = val.slice(-3); return bikEnd === ka ? "" : "Неверно заполнено поле «Корр. Счет банка». Последние 3 цифры должны совпадать с последними 3 цифрами в поле «БИК банка»."; } } } }), new Check({ vm: trainersVm.Form, name: "aa729f028dfe46dcbb3e429d8648a3f3", $elements: $("#payment-info .recipient-ca input"), mandatoryField: false, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d*)/g, regexpValidationError: "Неверно заполнено поле «Л/счет получателя». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "2f3206b2566d4b32817ffa21cf46ff25", $elements: $("#payment-info .recipient-ca input"), mandatoryField: true, triggerElSelector: bankInputCheckboxSelector, checkOnEdit: true, regexp: /(\d{20,})/g, regexpValidationError: "Неверно заполнено поле «Л/счет получателя». Должны быть введены 20 цифр.", mandatoryFieldError: "Не заполнено обязательное поле «Л/счет получателя».", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "f06f1490aa4a472780832345e681d497", $elements: $("#payment-info .bank-username input"), triggerElSelector: bankInputCheckboxSelector, mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Наименование получателя».", mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "9167022fbc374715a170c126ed865728", $elements: $("#payment-info .bank-userinn .bank-userinn-inputs input"), triggerElSelector: bankInputCheckboxSelector, regexp: /(\d*)/g, checkOnEdit: true, mandatoryField: false, regexpValidationError: "Неверно заполнено поле «ИНН получателя». Допускается ввод только цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "2194b1be98304004bb3745e336f87c08", $elements: $("#payment-info .bank-userinn .bank-userinn-inputs input"), triggerElSelector: bankInputCheckboxSelector, regexp: /(\d{12})/g, checkOnEdit: true, mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «ИНН получателя».", regexpValidationError: "Неверно заполнено поле «ИНН получателя». Должны быть введены 12 цифр.", regexpValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).prop("checked"); } }), new Check({ vm: trainersVm.Form, name: "21f6e6cc326a4cbba31a9ed24bab8626", $elements: $("#responce-open-schet .responce-open-schet-inputs input[type=checkbox]"), $invalidClassTarget: $("#responce-open-schet .responce-open-schet-inputs input[type=checkbox] + span"), //triggerElSelector: responceOpenSchetInputCheckboxSelector, //mandatoryFieldError: "Обязательно должен быть выбран один из способов получения уведомления.", additionalOnEditValidation: function (val, $elements) { if (!$(responceOpenSchetInputCheckboxSelector).prop("checked")) { return ""; } var checkedCount = 0; _.each($elements, function (item) { if ($(item).prop("checked")) { checkedCount++; } }); return checkedCount > 1 ? "Неверно заполнено поле «Способ получения уведомления». Допускается один способ получения уведомления." : ""; }, additionalValidation: function (val, $elements) { if (!$(responceOpenSchetInputCheckboxSelector).prop("checked")) { return ""; } var checkedCount = 0; _.each($elements, function (item) { if ($(item).prop("checked")) { checkedCount++; } }); return !checkedCount ? "Обязательно должен быть выбран один из способов получения уведомления." : ""; }//, //mandatoryValidationPredicate: function (elSelector) { // return $(elSelector).prop("checked"); //} }) ]; registerTrigger(bankInputCheckboxSelector, trainersVm.Form.Checks); registerTrigger(identitySelector, trainersVm.Form.Checks); } if ($("#continuation-of-individual-shareholder-form").length) { var identitySelectSelector = "#continuation-of-individual-shareholder-form .identity-block .identity-type select"; var representativeTypeSelector = "#continuation-of-individual-shareholder-form .representative-block input[type=checkbox]"; trainersVm.Countinuation.Checks = [ new Check({ vm: trainersVm.Countinuation, name: "6371a6ab202549119e513612fe00e645", $elements: $("#continuation-of-individual-shareholder-form .name-block input"), mandatoryField: true, checkOnEdit: true, regexp: /([A-z,А-я,\s,\'\-]+)/g, mandatoryFieldError: "Не заполнено обязательное поле «Фамилия Имя Отчество».", regexpValidationError: "Неверно заполнено поле «Фамилия Имя Отчество». Допускаются только буквы, апостроф и тире." }), new Check({ vm: trainersVm.Countinuation, name: "1704cccb447340aba0cc956162684df4", $elements: $("#continuation-of-individual-shareholder-form .representative-name"), mandatoryField: true, checkOnEdit: true, regexp: /([A-z,А-я,\s,\'\-]+)/g, mandatoryFieldError: "Не заполнено обязательное поле «Фамилия Имя Отчество».", regexpValidationError: "Неверно заполнено поле «Фамилия Имя Отчество». Допускаются только буквы, апостроф и тире." }), new Check({ vm: trainersVm.Countinuation, name: "63e77f61075946d9a68b646100107afc", $elements: $("#continuation-of-individual-shareholder-form .identity-block .identity-type select"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Вид документа, удостоверяющего личность»." }), new Check({ vm: trainersVm.Countinuation, name: "10b6b92b8ff24ddcafb5c9e3408b8d56", regexp: /(\d{4})/g, checkOnEdit: true, triggerElSelector: identitySelectSelector, $elements: $("#continuation-of-individual-shareholder-form .identity-block .series input"), regexpValidationError: "Неверно заполнено поле «Серия». Допускается ввод только четырёх цифр.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Серия».", regexpValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; }, mandatoryValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; } }), new Check({ vm: trainersVm.Countinuation, name: "2a6e03027bfe47efa07957a4e6aa01e8", regexp: /(\d{6})/g, checkOnEdit: true, triggerElSelector: identitySelectSelector, $elements: $("#continuation-of-individual-shareholder-form .identity-block .number input"), regexpValidationError: "Неверно заполнено поле «Номер». Допускается ввод только шести цифр.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Номер».", regexpValidationPredicate: function (elSelector) { return $(elSelector).val() === "Паспорт гражданина РФ"; } }), new Check({ vm: trainersVm.Countinuation, name: "168a0aec24544d74aabcf7364daab409", $elements: $("#continuation-of-individual-shareholder-form .identity-block .date-of-issue .calendar"), mandatoryField: true, checkOnEdit: true, mandatoryFieldError: "Не заполнено обязательное поле «Дата выдачи».", additionalOnEditValidation: function (val) { var date; var dateFormat = $("#continuation-of-individual-shareholder-form .identity-block .date-of-issue .calendar").datepicker("option", "dateFormat"); try { date = $.datepicker.parseDate(dateFormat, val); } catch (e) { return "Неверно заполнено поле «Дата выдачи». Допускается только ввод даты."; } var today = new Date(); today.setHours(0, 0, 0, 0); return date > today ? "Неверно заполнено поле «Дата выдачи». Нельзя ввести дату, которая ещё не наступила." : undefined; } }), new Check({ vm: trainersVm.Countinuation, name: "b3728c4e19b646c286dc5fca963bd0dc", checkOnEdit: true, $elements: $("#continuation-of-individual-shareholder-form .representative-block .guardian, #continuation-of-individual-shareholder-form .representative-block .trustee"), $invalidClassTarget: $("#continuation-of-individual-shareholder-form .representative-block .guardian + strong, #continuation-of-individual-shareholder-form .representative-block .trustee + strong"), additionalOnEditValidation: function (val, $elements) { var checkedCount = 0; _.each($elements, function (item) { if ($(item).prop("checked")) { checkedCount++; } }); return checkedCount > 1 ? "Неверно заполнено поле «Законный представитель физического лица». Отметки «опекун» и «попечитель» не могут быть установлены одновременно." : ""; } }), new Check({ vm: trainersVm.Countinuation, name: "beeef0f8eac54923869451d7a5d4bb16", $elements: $("#continuation-of-individual-shareholder-form .identity-block .authority input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Наименование выдавшего органа»." }), new Check({ vm: trainersVm.Countinuation, name: "4e6231c116a948eebad8d31df247dac4", triggerElSelector: representativeTypeSelector, $elements: $("#continuation-of-individual-shareholder-form .act-on-the-appointment .identity-type input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Вид документа о назначении опекуна или попечителя».", mandatoryValidationPredicate: function (elSelector) { return _.some($(elSelector), function (checkbox) { return $(checkbox).is(":checked"); }); } }), new Check({ vm: trainersVm.Countinuation, name: "4915790e797d492796fe965b0accf091", $elements: $("#continuation-of-individual-shareholder-form .act-on-the-appointment .date-of-issue .calendar"), mandatoryField: true, checkOnEdit: true, triggerElSelector: representativeTypeSelector, mandatoryFieldError: "Не заполнено обязательное поле «Дата выдачи документа о назначении опекуна или попечителя».", additionalOnEditValidation: function (val) { if (_.some($(representativeTypeSelector), function (checkbox) { return $(checkbox).is(":checked"); })) { var date; var dateFormat = $("#continuation-of-individual-shareholder-form .act-on-the-appointment .date-of-issue .calendar").datepicker("option", "dateFormat"); try { date = $.datepicker.parseDate(dateFormat, val); } catch (e) { return "Неверно заполнено поле «Дата выдачи документа о назначении опекуна или попечителя». Допускается только ввод даты."; } var today = new Date(); today.setHours(0, 0, 0, 0); return date > today ? "Неверно заполнено поле «Дата выдачи документа о назначении опекуна или попечителя». Нельзя ввести дату, которая ещё не наступила." : undefined; } }, regexpValidationPredicate: function (elSelector) { return _.some($(elSelector), function (checkbox) { return $(checkbox).is(":checked"); }); }, mandatoryValidationPredicate: function (elSelector) { return _.some($(elSelector), function (checkbox) { return $(checkbox).is(":checked"); }); } }), new Check({ vm: trainersVm.Countinuation, name: "6ef4a0c82de842e99df716c9f1e20a07", triggerElSelector: representativeTypeSelector, $elements: $("#continuation-of-individual-shareholder-form .act-on-the-appointment .authority input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Наименование органа, выдавшего документ о назначении опекуна или попечителя».", mandatoryValidationPredicate: function (elSelector) { return _.some($(elSelector), function(checkbox) { return $(checkbox).is(":checked"); }); } }) ]; registerTrigger(identitySelectSelector, trainersVm.Countinuation.Checks); registerTrigger(representativeTypeSelector, trainersVm.Countinuation.Checks); } } else if ($votingPaperFormWidget) { trainersVm = new TrainersViewModel(); trainersVm.SelectedForm(trainersVm.StandardVoting); ko.applyBindings(trainersVm, $votingPaperFormWidget[0]); $(".trainer-popup .button, .change-form-button").on("click", function () { var form = this.getAttribute("data-form"); if (form === "cumulative") { trainersVm.SelectedForm(trainersVm.CumulativeVoting); } else { trainersVm.SelectedForm(trainersVm.StandardVoting); } parent.$.fancybox.close(); }); var today = new Date(); var dd = today.getDate(); var mm = today.getMonth() + 1; var yyyy = today.getFullYear(); if (dd < 10) { dd = "0" + dd; } if (mm < 10) { mm = "0" + mm; } today = dd + "/" + mm + "/" + yyyy; if ($("#standard-voting-paper").length) { $("#standard-voting-paper .main-info .date").text(today); var questions = [ "Утверждение годового отчета, годовой бухгалтерской отчетности, в том числе отчетов о при-былях и об убытках (счетов прибылей и убытков) Компании, а также распределение прибыли (в том числе выплата (объявление) дивидендов и убытков по результатам финансового года. Определение размера, срока, формы и порядка выплаты дивидендов", "Утверждение Устава ПАО «ЛУКОЙЛ» в новой редакции", "О вознаграждении и компенсации расходов членам Совета директоров ПАО «ЛУКОЙЛ", "Утверждение Аудитора ПАО «ЛУКОЙЛ" ]; $("#standard-voting-paper .question-text").text(_.sample(questions)); $("#standard-voting-paper .vote-table .vote-input").on("click", function () { var $el = $(this); if ($el.val() !== "100") { var $all = $("#standard-voting-paper .vote-table .vote-input"); _.each($all, function (item) { $(item).val(""); }); $el.val("100"); } }); $("#standard-voting-paper .sign-block .sign-btn").on("click", function () { $(this).replaceWith(""); }); trainersVm.StandardVoting.Checks = [ new Check({ vm: trainersVm.StandardVoting, name: "55a090af58c543d59827b3ddaf517daf", $elements: $("#standard-voting-paper .main-info input"), regexp: /([A-z,А-я,\s,\'\-]+)/g, checkOnEdit: true, regexpValidationError: "Неверно заполнено поле «Фамилия Имя Отчество». Допускаются только буквы, апостроф и тире.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Фамилия, имя, отчество (наименование) акционера»." }), new Check({ vm: trainersVm.StandardVoting, name: "fb1d1a6b93f24583987306c531a47ea9", $elements: $("#standard-voting-paper .vote-table .vote-input"), additionalValidation: function (val) { var error = "Не заполнено обязательное поле «ЗА, ПРОТИВ, ВОЗДЕРЖАЛСЯ»."; var result = ""; var lastVal; _.each($("#standard-voting-paper .vote-table .vote-input"), function (item) { var val = $(item).val(); if (lastVal && val) { result = error; return false; } lastVal = val ? val : lastVal; }); if (!result && lastVal !== "100") { result = error; } return result; } }), new Check({ vm: trainersVm.StandardVoting, name: "46b03e1622884d20b4d4008803c58e48", $elements: $("#standard-voting-paper .sign-block .sign-btn"), additionalValidation: function (val) { var error = "Не подписан бюллетень."; return $("#standard-voting-paper .sign-block .sign-btn").length ? error : ""; } }), new Check({ vm: trainersVm.StandardVoting, name: "d446444f11e24c5594160e17b79b7205", $elements: $("#standard-voting-paper .proxy-voting input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Отметка о голосовании по доверенности».", mandatoryValidationPredicate: function () { return $votingPaperFormWidget.find("#confidant-person").prop("checked"); } }) ]; } if ($("#cumulative-voting-paper").length) { $("#cumulative-voting-paper .main-info .date").text(today); $("#cumulative-voting-paper .vote-table").on("keyup", "input", function () { var key = event.keyCode || event.charCode; var $el = $(this); var curLength = $el.val().length; var maxLength = $el.attr("maxlength"); if (key == 8 && curLength === 0) { $el.parent().prev().find("input").trigger("focus"); } if (curLength == maxLength) { $el.parent().next().find("input").trigger("focus"); } }); $("#cumulative-voting-paper .sign-block .sign-btn").on("click", function () { $(this).replaceWith(""); }); $("#cumulative-voting-paper .against-table input, #cumulative-voting-paper .vote-table input").keydown(function (e) { // Allow: backspace, delete, tab, escape, enter and . if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || // Allow: Ctrl+A (e.keyCode == 65 && e.ctrlKey === true) || // Allow: Ctrl+C (e.keyCode == 67 && e.ctrlKey === true) || // Allow: Ctrl+X (e.keyCode == 88 && e.ctrlKey === true) || // Allow: home, end, left, right (e.keyCode >= 35 && e.keyCode <= 39)) { // let it happen, don't do anything return; } // Ensure that it is a number and stop the keypress if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { e.preventDefault(); } }); trainersVm.CumulativeVoting.Checks = [ new Check({ vm: trainersVm.CumulativeVoting, name: "e0af1a00b4924246a40a7cd51d78ef0e", $elements: $("#cumulative-voting-paper .vote-table input, #cumulative-voting-paper .against-table input"), additionalValidation: function (val) { var result = ""; var error = "Некорректно введена информация о голосовании."; var votes = 0; $("#cumulative-voting-paper .vote-table tr").each(function () { var $inputs = $(this).find("td.vote-input-cell input"); if ($inputs.length) { var number = ""; _.each($inputs, function (input) { var val = $(input).val() || "-"; number += val; }); number = number.replace(new RegExp(/(-+$)/g), ""); var matches = new RegExp(/(\d+)/g).exec(number); if (number === "") { return true; } else if (matches && matches[0] === number) { votes += parseInt(number); return true; } else { result = error; return false; } } return true; }); var againstVal = $("#cumulative-voting-paper .against-table .against-input").val().trim(); var abstentionVal = $("#cumulative-voting-paper .against-table .abstention-input").val().trim(); var maxVotes = 1100; if (!result && votes === 0) { var againstVotes = null; var abstentionVotes = null; var matches = new RegExp(/(\d+)/g).exec(againstVal); if (matches && matches[0] === againstVal) { againstVotes = parseInt(againstVal); } matches = new RegExp(/(\d+)/g).exec(abstentionVal); if (matches && matches[0] === abstentionVal) { abstentionVotes = parseInt(abstentionVal); } if ((againstVotes === maxVotes && !abstentionVotes) || (abstentionVotes === maxVotes && !againstVotes)) { votes = maxVotes; } else { result = "Некорректно введена информация о голосовании."; } } else if (!result && votes !== 0) { result = !againstVal && !abstentionVal ? "" : error; } result = !result && votes !== maxVotes ? error : result; return result; } }), new Check({ vm: trainersVm.CumulativeVoting, name: "3b1eaf558f674688821dde3b98796372", $elements: $("#cumulative-voting-paper .sign-block .sign-btn"), additionalValidation: function (val) { var error = "Не подписан бюллетень."; return $("#cumulative-voting-paper .sign-block .sign-btn").length ? error : ""; } }), new Check({ vm: trainersVm.CumulativeVoting, name: "17923f06509f4d85b91717b641c1947e", $elements: $("#cumulative-voting-paper .main-info input"), regexp: /([A-z,А-я,\s,\'\-]+)/g, checkOnEdit: true, regexpValidationError: "Неверно заполнено поле «Фамилия Имя Отчество». Допускаются только буквы, апостроф и тире.", mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Фамилия, имя, отчество (наименование) акционера»." }), new Check({ vm: trainersVm.CumulativeVoting, name: "5f310ec6da5c413dbcaa2f99e5c07b9b", $elements: $("#cumulative-voting-paper .proxy-voting input"), mandatoryField: true, mandatoryFieldError: "Не заполнено обязательное поле «Отметка о голосовании по доверенности».", mandatoryValidationPredicate: function () { return $votingPaperFormWidget.find("#confidant-person").prop("checked"); } }) ]; } } }; Trainers.run = function() { prepareTrainers(); }; });; LukoilApp.module("Subscription", function (Subscription, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { newsSubscriptionWidgetSelector: ".panel-forms_news-feeds", eventReminderWidgetSelector: ".event-reminder-widget", eventReminderEventDropdownSelector: ".select-custom", eventReminderConfirmCheckboxSelector: ".checkbox-custom", apiRssUrl: "/api/subscription/rss", themeSelector: ".theme-select", languageSelector: ".language-select" }; Subscription.on("start", function (options) { Subscription.run(); }); var clearUrlQuery = function() { if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#"; } }; var NewsSubscriptionViewModel = function($element) { var self = this; self.GetPressReleases = ko.observable($element.find("input[name=GetPressReleases]").prop("checked")); self.GetPressReleasesPDF = ko.observable($element.find("input[name=GetPressReleasesPDF]").prop("checked")); self.GetMediaMaterials = ko.observable($element.find("input[name=GetMediaMaterials]").prop("checked")); self.GetEvents = ko.observable($element.find("input[name=GetEvents]").prop("checked")); self.GetRegionNews = ko.observable($element.find("input[name=GetRegionNews]").prop("checked")); self.GetTenders = ko.observable($element.find("input[name=GetTenders]").prop("checked")); self.GetSubsidiaryTenderNews = ko.observable($element.find("input[name=GetSubsidiaryTender]").prop("checked")); self.GetVacancies = ko.observable($element.find("input[name=GetVacancies]").prop("checked")); self.Confirmed = ko.observable($element.find("input[name=Confirmed]").prop("checked")); self.ConfirmCancel = ko.observable($element.find("input[name=ConfirmCancel]").prop("checked")); $element.find('.collapse').on('show.bs.collapse hide.bs.collapse', function (event) { var $target = $(event.target); var $toglles = $('[data-target="#' + $target.attr('id') + '"]'); $toglles.prop("disabled", true); }).on('shown.bs.collapse hidden.bs.collapse', function (event) { var $target = $(event.target); var $toglles = $('[data-target="#' + $target.attr('id') + '"]'); $toglles.prop("disabled", false); }); self.IsRss = ko.observable("False"); self.Mode = ko.observable($element.find("input[name=Mode]").val()); self.CanSubmit = ko.pureComputed(function() { return (self.GetPressReleases() || self.GetMediaMaterials() || self.GetEvents() || self.GetRegionNews() || self.GetTenders() || self.GetSubsidiaryTenderNews() || self.GetVacancies()) && (self.IsRss() === "True" || self.Confirmed()); }); self.CanCancelSubmit = ko.pureComputed(function () { return self.ConfirmCancel(); }); self.EditCheckboxClick = function() { if (self.Confirmed) { self.ConfirmCancel(false); } return true; } self.CancelCheckboxClick = function() { if (self.ConfirmCancel) { self.Confirmed(false); } return true; } self.SubmitEmailForm = function(formElement) { var $formElement = $(formElement); $formElement.find("input[name=PressReleasesTagsString]").val($.getTagsValFromMultiselects($formElement, [".pressreleases-theme-select", ".pressreleases-country-region-select", ".pressreleases-organization-select"])); $formElement.find("input[name=RegionNewsTagsString]").val($.getTagsValFromMultiselects($formElement, [".region-country-region-select", ".region-organization-select", ".region-theme-select"])); $formElement.find("input[name=RegionNewsLanguagesString]").val(_.pluck($formElement.find(".region-language-select").getValFromMultiSelect(), "value").join(",")); $formElement.find("input[name=TenderTagsString]").val($.getTagsValFromMultiselects($formElement, [".tender-organization-select"])); $formElement.find("input[name=VacancyTagsString]").val($.getTagsValFromMultiselects($formElement, [".vacancies-organization-select", ".activities-select", ".vacancy-country-region-select"])); return true; }; }; // CB NewsSubscription - Подписка на ленту нововстей var prepareNewsSubscription = function() { _.each($(settings.newsSubscriptionWidgetSelector), function (widget, index) { try { var $widget = $(widget); var viewModel = new NewsSubscriptionViewModel($widget); ko.applyBindings(viewModel, widget); var $sendForm = $widget.find("form"); $sendForm.lukoilAjaxSubmitForm(null, null, function () { $sendForm.reloadLukoilCaptcha(); clearUrlQuery(); }, false, function(onCloseEvent) { if (onCloseEvent == "refresh") location.reload(); }); var uiMessage = $widget.data("message"); if (uiMessage) { $.fancyboxMessage(uiMessage); clearUrlQuery(); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render news subscription #" + (index + 1), e); } } }); }; var EventReminderViewModel = function ($element) { var self = this; var mode = $element.data("mode"); self.mode = ko.observable(mode); self.confiramtionChecked = ko.observable(mode); self.email = ko.observable($element.data("mail")); self.SubmitEmailForm = function (formElement) { $(formElement).find("input[name=Action]").val(self.mode()); $(formElement).find("input[name=SubscriptionGuid]").val($element.data("subscription")); $(formElement).find("input[name=Token]").val($element.data("token")); $(formElement).find("input[name=EventId]").val($element.find(settings.eventReminderEventDropdownSelector + " option:selected").val()); $(formElement).find("input[name=Confirm]").val(self.confiramtionChecked() ? true : false); return true; }; }; var prepareEventReminder = function() { _.each($(settings.eventReminderWidgetSelector), function(widget, index) { try { var $widget = $(widget); var viewModel = new EventReminderViewModel($widget); ko.applyBindings(viewModel, widget); var uiMessage = $widget.data("message"); if (uiMessage) { $.fancyboxMessage(uiMessage); clearUrlQuery(); } var $sendForm = $widget.find("form"); $sendForm.lukoilAjaxSubmitForm(null, null, function() { viewModel.mode(null); viewModel.email(""); $widget.find(settings.eventReminderEventDropdownSelector).trigger("refresh"); $widget.find(settings.eventReminderConfirmCheckboxSelector).trigger("refresh"); $sendForm.reloadLukoilCaptcha(); }, false); $widget.find(settings.eventReminderEventDropdownSelector).trigger("refresh"); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render event reminder #" + (index + 1)); } } }); }; Subscription.run = function () { prepareEventReminder(); prepareNewsSubscription(); }; });; LukoilApp.module("TimeLine", function (TimeLine, LukoilApp, Backbone, Marionette, $, _, global) { "use strict"; var modules = { util: LukoilApp.module("Util") }; var settings = { screensLeftForLoadingMore: 2 }; var selectors = { timelineContainer: ".timeline", timelineListContainer: ".timeline-list" }; var TimeLineViewModel = function (yearsLinks, years, materialItemsCount, fileItemsCount, totalCount, languageGuid, eventListPageUrl, containerSel, $listContainer) { var self = this; var $container = $(containerSel); _.each(yearsLinks, function(el, ind) { //el.isSelected = !ind; el.isSelected = false; }); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.MaterialItemsCount = ko.observable(materialItemsCount); self.fileItemsCount = ko.observable(fileItemsCount); self.TotalCount = ko.observable(totalCount); self.CanLoadMore = ko.pureComputed(function() { return self.TotalCount() > (self.MaterialItemsCount() + self.fileItemsCount()); }); self.showTimeline = ko.observable(yearsLinks && years && years.length && yearsLinks.length); self.yearsLinks = ko.observableArray(yearsLinks); _.each(years, function(year) { year.Items = ko.observableArray(year.Items); }); var yearToScroll = null; self.afterYearRender = function(elements, data) { if (yearToScroll && data.Year == yearToScroll) { scrollToYear('#year-' + yearToScroll); yearToScroll = null; } }; self.years = ko.observableArray(years); self.changeSelection = function (year) { var yearItems = _.find(self.years(), function (items) { return items.Year === year.Year; }); if (!yearItems) { self.LoadMore(year.Year); } //_.each(self.yearsLinks(), function (el, ind) { // el.isSelected = false; //}); //year.isSelected = true; } self.LoadMore = function (year) { if (!self.LoadingInProcess() && self.CanLoadMore()) { self.LoadingInProcess(true); LukoilTimeLine.loadInProcess = true; $.ajax({ url: "/api/presscenter/timelineitems", data: { skipMaterials: self.MaterialItemsCount(), skipFiles: self.fileItemsCount(), languageGuid: languageGuid, eventListPageUrl: eventListPageUrl, take: year ? null : 20, year: year }, method: "post", success: function (data) { if (data && data.length) { yearToScroll = year; _.each(data, function (item) { var yearOfItem = _.find(self.years(), function(yearItem) { return yearItem.Year === item.Year; }); if (yearOfItem) { yearOfItem.Items.push(item.Item); } else { self.years.push({ Year: item.Year, Text: item.Year, Items: ko.observableArray([item.Item]) }); } if (item.Item.IsMediaFile) { self.fileItemsCount(self.fileItemsCount() + 1); } else { self.MaterialItemsCount(self.MaterialItemsCount() + 1); } }); $listContainer.lukTimeLine(); } }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { self.LoadingInProcess(false); }); } } $(window).scroll(function () { if ($(window).scrollTop() > $(document).height() - settings.screensLeftForLoadingMore * $(window).height()) { self.LoadMore(); } }); ko.applyBindings(self, $container[0]); } TimeLine.run = function (options) { var yearsLinks = options.yearsLinks, years = options.years, totalCount = options.totalCount, materialItemsCount = options.materialItemsCount, fileItemsCount = options.fileItemsCount, eventListPageUrl = options.eventListPageUrl, languageGuid = options.languageGuid; var $listContainer = $(selectors.timelineListContainer); var vm = new TimeLineViewModel(yearsLinks, years, materialItemsCount, fileItemsCount, totalCount, languageGuid, eventListPageUrl, selectors.timelineContainer, $listContainer); var tl = $listContainer.lukTimeLine(); } TimeLine.on("start", function (options) { }); }); var LukoilTimeLine = { loadInProcess : false } var scrollToYear = function (yearId) { var interval = setInterval(function() { var $year = $(yearId); if ($year.length > 0 && !LukoilTimeLine.loadInProcess) { var offsetTop = $year.offset().top - $('#header').height() - 50; $('.timline-date__item').removeClass('selected'); $(this).addClass('selected'); $('html, body').animate({ scrollTop: offsetTop }, 500); clearInterval(interval); } }, 50); } $(document).on('click', '.timline-date__item', function (e) { e.preventDefault(); var id = $(this).attr('href'); scrollToYear(id); }); (function ($) { $.fn.lukTimeLine = function () { return this.each(function (_, elem) { $(elem).data('timelineFn', new TimelineGrid(elem)); }); }; function TimelineGrid(element) { this.elem_ = $(element); this.items_ = $(element).find('.timeline-item'); this.preloader_ = this.elem_.siblings('.timeline__preloader'); this.indexPrevCol = 0; this.minIndent = 60; this.images = this.elem_.find('img'); this.isDesktop = function () { return !window.matchMedia('(max-width: 767px)').matches; }; this.init(); } TimelineGrid.prototype.init = function () { this.preloaderImage = this.preloader(); $(window).on('resize', this.onResize.bind(this)); if (this.isDesktop()) { this.preloaderImage.then(this.buildInterface.bind(this)); } else { this.items_.removeAttr('hidden'); LukoilTimeLine.loadInProcess = false; } }; TimelineGrid.prototype.onResize = function () { this.updateGrid(); }; TimelineGrid.prototype.updateGrid = function () { if (this.isDesktop()) { this.preloaderImage.then(this.buildInterface.bind(this)); } else { this.elem_.height("auto"); LukoilTimeLine.loadInProcess = false; } }; TimelineGrid.prototype.buildInterface = function () { this.columns = [0, 110]; this.items_ .removeClass('timeline-item_inverted') .each(this.makeGrid.bind(this)); LukoilTimeLine.loadInProcess = false; this.elem_.height(this.getMaxHeightCol()); this.preloader_.hide(); }; TimelineGrid.prototype.makeGrid = function (index, elem) { var $item = $(elem); var indent; var indexCol = this.columns[0] < this.columns[1] ? 0 : 1; if (indexCol) { $item.addClass('timeline-item_inverted'); } if (indexCol !== this.indexPrevCol) { indent = this.columns[indexCol] - parseInt($item.prev('.timeline-item').css('top')); if (indent < this.minIndent) { this.columns[indexCol] += this.minIndent - indent; } } $item.css('top', this.columns[indexCol]); $item.removeAttr('hidden'); this.columns[indexCol] += $item.height(); this.indexPrevCol = indexCol; }; TimelineGrid.prototype.getMaxHeightCol = function () { return Math.max.apply(null, this.columns); }; TimelineGrid.prototype.timerInitGridTimeline = function () { setTimeout(this.buildInterface.bind(this), 100); // шрифт может быть еще не загружен, до того как загрузятся картинки }; TimelineGrid.prototype.preloader = function () { var deferred = $.Deferred(); var countLoadImages = 0; var storeImages = []; if (!this.images.length) deferred.resolve(); $.each(this.images, function (_, img) { var image = new Image(); image.src = img.src; image.onload = function () { countLoadImages++; if (countLoadImages === this.images.length) { deferred.resolve(); } }.bind(this); image.onerror = function () { if (console && console.log) console.log("Failed to load image " + image.src); countLoadImages++; if (countLoadImages === this.images.length) { deferred.resolve(); } }.bind(this); storeImages.push(image); }.bind(this)); return deferred.promise(); }; TimelineGrid.prototype.destroy = function () { $(window).off('resize.lukTimeline'); this.elem_.removeData('timelineFn'); this.items_.removeClass('timeline-item_inverted').removeAttr('style'); } })(jQuery); ; LukoilApp.module("RedirectionFromOldSite", function (RedirectionFromOldSite, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { rememberCheckboxId: "redirect-to-old-remember", cookieName: "OldSiteRedirection", sessionCookieName: "OldSiteRedirectionSession" }; RedirectionFromOldSite.on("start", function (options) { RedirectionFromOldSite.run(); }); var saveCookie = function (redirection, isOld) { var remember = $("#" + settings.rememberCheckboxId).prop("checked"); var cookieName = remember ? settings.cookieName : settings.sessionCookieName; Cookies.raw = true; var value = $.lukoilGetCookie(cookieName); var redirections = []; if (value) { try { var allSaved = JSON.parse(value); redirections = _.filter(allSaved, function(item) { return item.i !== redirection.Id; }); } catch (e) {} } redirections.push({ i: redirection.Id, c: isOld ? 1 : 2 }); $.removeCookie(cookieName); $.lukoilSaveCookie(cookieName, JSON.stringify(redirections), { expires: remember ? 30 : undefined }); }; RedirectionFromOldSite.run = function () { var redirection = GlobalSettings.RedirectionFromOldSite; if (redirection) { $.fancybox({ padding: 10, autoSize: false, autoHeight: true, width: 250, content: '', afterShow: function () { $("#fancyConfirm_ok").on("click", function () { saveCookie(redirection, true); window.location.href = redirection.OldUrl; }); $("#fancyConfirm_cancel").on("click", function () { saveCookie(redirection, false); window.location.href = redirection.NewUrl; }); }, }); } }; });; LukoilApp.module("OnlineSurveys", function(OnlineSurveys, LukoilApp, Backbone, Marionette, $, _) { var requiredModules = { util: LukoilApp.module("Util") }; var options = { debug: true }, logger; var settings = { selectors: { survey: ".survey", question: ".survey__question", sendBtn: ".survey-btn-answer.send-answer .button", answerInputs: "input:not('.another-answer-support')", results: ".survey-total-result", surveyQuestions: ".survey-questions", answersContainer: ".survey-answer-container", questionTitle: ".survey__question-title", timer: ".survey__time", timeHolder: "span", startBtn: ".survey-btn-answer.start-survey .button", repeatBtn: ".survey-btn-repeat .button", overlay: ".survey_submit_overlay", urlReferer: ".urlReferer" }, sendResultUrl: "/api/onlinesurvey/SendResult", idAttr: "survey-entity-id", free: "survey-free", uidKey: "LukOnlineSuveyUserId", newUIdAttr: "survey-user-new-id", cookiesConfig: { expires: 365 * 100, path: '/' }, messages: { isEmpty: GlobalSettings.OnlineSurveys.AnswerIsEmpty, timeIsUp: GlobalSettings.OnlineSurveys.TimeIsUp }, groupAttr: "survey-group", timerTicks: "test-ticks" }; var getUserId = function ($surveyContainer) { var uid = $.lukoilGetCookie(settings.uidKey); if (!uid) { uid = $surveyContainer.data(settings.newUIdAttr); $.lukoilSaveCookie(settings.uidKey, uid, settings.cookiesConfig); } return uid; }; var getQuestionAnswer = function ($q) { var qid = $q.data(settings.idAttr); var answers = _.map($q.find(settings.selectors.answerInputs), function (inp) { var $inp = $(inp); return { title: $inp.closest(settings.selectors.answersContainer).find("label").text(), questionId: qid, id: $inp.data(settings.idAttr) || -1, isChecked: $inp.is(":checked"), text: $inp.val() }; }); return { questionId: qid, title: $q.find(settings.selectors.questionTitle).text(), answers: answers, isFreeAnswer: $q.data(settings.free) }; }; var getAnswers = function (form) { var $qs = form.getQuestions(); var questionsWithAnswers = _.map($qs, function (q) { return getQuestionAnswer($(q)); }); return { surveyId: form.surveyId || -1, answers: questionsWithAnswers, userId: getUserId(form.getContainer()), urlReferer: form.urlReferer, captcha: form.getCaptcha() }; }; var sendAnswers = function (surveyAnswer, surveyForm, message, timer, timerCallback) { surveyForm.getOverlay().show(); var $frm = surveyForm.getContainer(); $.ajax(settings.sendResultUrl, { async: true, cache: false, data: { result: JSON.stringify(surveyAnswer) }, dataType: "json", method: "POST", traditional: true }).done(function (result) { var responseJson = $.isPlainObject(result) ? result : $.parseJSON(result); if (!$frm.isValiationSummaryErrors(responseJson)) { surveyForm.getOverlay().hide(); if (result && result.stats) { var stats = JSON.parse(result.stats); var existsStats = []; _.each(stats, function (s) { var found = _.find(surveyAnswer.answers, function (q) { return q.questionId === s.QuestionId; }); if (found != null) { s.title = found.title; s.isFreeAnswer = found.isFreeAnswer; var staleCount = 0; _.each(s.AnswersStats, function (a) { a.percent = (a.TotalAnswersNumber ? a.YesAnswersNumber * 100.0 / a.TotalAnswersNumber : 0).toFixed(2); var question = _.find(surveyAnswer.answers, function (q) { return q.questionId === a.QuestionId; }); if (!question) { a.IsStale = true; staleCount++; } else { var answer = _.find(question.answers, function (qa) { return a.AnswerId === qa.id; }); if (!answer) { a.IsStale = true; staleCount++; } else { a.text = answer.title; } } }); if (staleCount === s.AnswersStats.length) { s.IsStale = true; } else { s.AnswersStats = _.filter(s.AnswersStats, function (a) { return !a.IsStale; }); } existsStats.push(s); } }); var $resultContainer = surveyForm.getResults(); $resultContainer.show(); surveyForm.SurveyResults(existsStats); if (!ko.dataFor($resultContainer[0])) { ko.applyBindings({ questionsResult: surveyForm.SurveyResults }, $resultContainer[0]); } } else if (result && result.error) { logger.log(result.error); } if (message || (result && result.message)) { $.fancyboxMessage(message || result.message); } surveyForm.getQuestionsContainer().hide(); var $repeatBtn = surveyForm.getRepeatBtn(); if ($repeatBtn.length) { $repeatBtn.show(); } } else { if (timer != null) { timer.run(timerCallback, true); } $frm.reloadLukoilCaptcha(); surveyForm.getOverlay().hide(); } }).fail(function (jqXHR, textStatus, errorThrown) { surveyForm.getOverlay().hide(); logger.log(errorThrown); $.fancyboxInit({ padding: 10, content: "
    " + GlobalSettings.ErrorMessages.FormSubmitErrorMessage + "
    " }); }); }; var SurveyValidationError = function (groupId, text) { this.groupId = groupId, this.text = text; }; var validateRadio = function($container) { var errors = []; var qs = $container.find(settings.selectors.question); _.each(qs, function (q) { var $q = $(q); var groupId = $q.data(settings.groupAttr); var $el = $q.find("input:radio[name='" + groupId + "']"); if ($el.length) { var checked = $el.is(":checked"); if (!checked) { errors.push(new SurveyValidationError(groupId, settings.messages.isEmpty)); $q.find(".error").text(settings.messages.isEmpty).removeClass("hidden"); } } }); return errors; }; var validateChecks = function($container) { var errors = []; var qs = $container.find(settings.selectors.question); _.each(qs, function (q) { var $q = $(q); var groupId = $q.data(settings.groupAttr); var $el = $q.find("input:checkbox"); if ($el.length) { var checked = $el.is(":checked"); if (!checked) { errors.push(new SurveyValidationError(groupId, settings.messages.isEmpty)); $q.find(".error").text(settings.messages.isEmpty).removeClass("hidden"); } } }); return errors; }; var validateText = function($container) { var errors = []; var qs = $container.find(settings.selectors.question); _.each(qs, function (q) { var $q = $(q); var groupId = $q.data(settings.groupAttr); var $el = $q.find("input:text.free-answer"); if ($el.length) { var checked = $el.val(); if (!checked) { errors.push(new SurveyValidationError(groupId, settings.messages.isEmpty)); $q.find(".error").text(settings.messages.isEmpty).removeClass("hidden"); } } }); return errors; }; var validateOtherText = function($container) { var errors = []; var qs = $container.find(settings.selectors.question); _.each(qs, function (q) { var $q = $(q); var groupId = $q.data(settings.groupAttr); var $el = $q.find("input.another-answer-support"); if ($el.length) { var checked = $el.is(":checked"); var text = $q.find("input.another-answer-text").val(); if (checked && !text) { errors.push(new SurveyValidationError(groupId, settings.messages.isEmpty)); $q.find(".error").text(settings.messages.isEmpty).removeClass("hidden"); } } }); return errors; }; var validateSurvey = function ($container) { $container.find(".error").addClass("hidden"); var radioIsValid = validateRadio($container); var checkIsValid = validateChecks($container); var textIsValid = validateText($container); var othertextIsValid = validateOtherText($container); return { errors: radioIsValid.concat(checkIsValid).concat(textIsValid).concat(othertextIsValid) }; }; var SurveyForm = function ($surveyContainer) { this.$surveyContainer = $surveyContainer; // $(settings.selectors.survey); this.$sendBtn = this.$surveyContainer.find(settings.selectors.sendBtn); this.$startBtn = this.$surveyContainer.find(settings.selectors.startBtn); this.$repeatBtn = this.$surveyContainer.find(settings.selectors.repeatBtn); this.$questionsContainer = this.$surveyContainer.find(settings.selectors.surveyQuestions); this.$questions = this.$questionsContainer.find(settings.selectors.question); this.$results = this.$surveyContainer.find(settings.selectors.results); this.surveyId = this.$surveyContainer.data(settings.idAttr); this.$timerContainer = this.$surveyContainer.find(settings.selectors.timer); this.$timeHolder = this.$timerContainer.find(settings.selectors.timeHolder); this.timerTicks = this.$timeHolder.data(settings.timerTicks); this.$overlay = this.$surveyContainer.find(settings.selectors.overlay); this.urlReferer = this.$surveyContainer.find(settings.selectors.urlReferer).val(); this.SurveyResults = ko.observableArray([]); }; SurveyForm.prototype.getContainer = function() { return this.$surveyContainer; }; SurveyForm.prototype.getSendBtn = function () { return this.$sendBtn; }; SurveyForm.prototype.getStartBtn = function () { return this.$startBtn; }; SurveyForm.prototype.getRepeatBtn = function () { return this.$repeatBtn; }; SurveyForm.prototype.getQuestions = function () { return this.$questions; }; SurveyForm.prototype.getQuestionsContainer = function () { return this.$questionsContainer; }; SurveyForm.prototype.getResults = function () { return this.$results; }; SurveyForm.prototype.getOverlay = function () { return this.$overlay; }; SurveyForm.prototype.getCaptcha = function () { return this.$surveyContainer.getCaptcha(); }; var SurveyTimer = function (surveyForm) { this.surveyForm = surveyForm; this.initialTicks = surveyForm.timerTicks; this.timeIsOver = false; this.timerContainer = surveyForm.$timerContainer; this.timeHolder = surveyForm.$timeHolder; if (!this.initialTicks) return this; this.showTimer(this.initialTicks); if (this.initialTicks) { surveyForm.getQuestionsContainer().hide(); } return this; }; SurveyTimer.prototype.run = function(callback, isResume) { if (!this.initialTicks) return; this.timerContainer.show(); if (!isResume) this.currentTicks = this.initialTicks; var self = this; this.timeIsOver = false; var tickTimer = function () { if (self.currentTicks > 0) { self.currentTicks--; self.showTimer(self.currentTicks); } if (self.currentTicks <= 0) { self.stop(); if (callback) callback(self); } }; this.timerId = setInterval(tickTimer, 1000); }; SurveyTimer.prototype.stop = function () { if (this.timerId) clearTimeout(this.timerId); this.timerContainer.hide(); }; SurveyTimer.prototype.showTimer = function (ticks) { var sec = ticks % 60; var min = Math.floor(ticks / 60); var formattedTime = min + ":" + (sec > 9 ? sec : "0" + sec); this.timeHolder.text(formattedTime); }; var timerCallback = function (timer) { timer.timeIsOver = true; $.fancyboxMessage(settings.messages.timeIsUp); timer.surveyForm.getQuestionsContainer().hide(); timer.surveyForm.getResults().hide(); timer.surveyForm.getRepeatBtn().show(); } OnlineSurveys.run = function () { var surveyContainers = $(settings.selectors.survey); if (!surveyContainers.length) return; logger = requiredModules.util.createLogger({ useConsole: options.debug, moduleName: "OnlineSurveys" }); _.each(surveyContainers, function(surveyContainer) { var surveyForm = new SurveyForm($(surveyContainer)); var timer = new SurveyTimer(surveyForm); surveyForm.getStartBtn().on("click", function() { surveyForm.getStartBtn().hide(); surveyForm.getQuestionsContainer().show(); timer.run(timerCallback); return false; }); var $repeatBtn = surveyForm.getRepeatBtn(); if ($repeatBtn.length) { $repeatBtn.on("click", function() { $repeatBtn.hide(); var $frm = surveyForm.getContainer(); $frm.reloadLukoilCaptcha(); surveyForm.getQuestionsContainer().show(); surveyForm.getResults().hide(); $(surveyContainer).formReset(true, true); $(surveyContainer).find(".another-answer-text").addClass("hidden"); timer.run(timerCallback); return false; }); } surveyForm.getSendBtn().on("click", function () { if (timer.timeIsOver) return false; var validationResult = validateSurvey(surveyForm.getContainer()); if (validationResult.errors && validationResult.errors.length) return false; var surveyAnswer = getAnswers(surveyForm); sendAnswers(surveyAnswer, surveyForm, null, timer, timerCallback); timer.stop(); return false; }); }); }; OnlineSurveys.on("start", function (options) { OnlineSurveys.run(); }); });; LukoilApp.module("EssentialFacts", function (EssentialFacts, LukoilApp, Backbone, Marionette, $, _) { var requiredModules = { util: LukoilApp.module("Util") }; var options = { debug: true }, logger; var settings = { defaultSelectValue: "0", defaultPageSize: 5, pageSizeDataAttr: "page-size" }; var selectors = { container: ".essential-facts", filterForm: ".filter form", searchBtn: ".button-search", resetBtn: ".button-reset", loadMoreBtn: ".button-load-more", filter: ".select-custom", filterCategory: ".categories-select", filterMonth: ".months-select", item: ".essential-facts-item", visibleItems: ".essential-facts-item:visible", emptyResult: ".empty-search-result" }; var filterBy = function ($container, filter, attrName) { if (filter && filter !== settings.defaultSelectValue) $container.find(selectors.item + "[data-" + attrName + "!=" + filter + "]").removeClass("even").removeClass("odd").removeClass('visible').hide(); }; var filterByMultiple = function ($container, $selector, dataKey) { var filter = $selector.getValFromMultiSelect(); if (filter && filter.length) { var items = $container.find(selectors.item); _.each(items, function(item) { var $item = $(item); var dataAttr = $item.data(dataKey).toString(); if (_.all(filter, function(f) { return dataAttr != f.value.toString(); })) { $item.removeClass("even").removeClass("odd").removeClass('visible').hide(); } }); } }; var Form = function(container, pageSize) { this.$container = $(container); this.$filters = this.$container.find(selectors.filter); this.$items = this.$container.find(selectors.item); this.pageSize = this.getPageSize() || pageSize; this.itemsNumberToShow = this.pageSize; if (this.$items.length <= this.itemsNumberToShow) this.getShowMoreBtn().hide(); this.$container.removeClass("hidden"); this.hideOverpagedItems(); this.updateVisibility(); var self = this; this.getFilterForm().on("submit", function () { return false; }); this.getSearchBtn().on("click", function () { self.resetItemsNumberToShow(); self.filterItems(); }); this.getResetBtn().on("click", function () { self.resetFilters(); }); this.getShowMoreBtn().on("click", function () { self.showMoreItems(); }); } Form.prototype.getPageSize = function () { return this.$container.data(settings.pageSizeDataAttr); } Form.prototype.getFilterForm = function () { return this.$container.find(selectors.filterForm); } Form.prototype.getSearchBtn = function() { return this.$container.find(selectors.searchBtn); } Form.prototype.getCategoryFilter = function () { return this.$container.find(selectors.filterCategory); } Form.prototype.getMonthFilter = function () { return this.$container.find(selectors.filterMonth); } Form.prototype.getResetBtn = function () { return this.$container.find(selectors.resetBtn); } Form.prototype.getEmptyResult = function () { return this.$container.find(selectors.emptyResult); } Form.prototype.getVisibleItems = function () { return this.$container.find(selectors.visibleItems); } Form.prototype.getShowMoreBtn = function () { return this.$container.find(selectors.loadMoreBtn); } Form.prototype.resetFilters = function () { _.each(this.$filters, function(filter) { $(filter).val(settings.defaultSelectValue).trigger("change"); }); } Form.prototype.hideOverpagedItems = function () { var $visibleItems = this.getVisibleItems(); $visibleItems.addClass('visible'); _.each($visibleItems, function (p, ind) { if (ind % 2) { $(p).removeClass("even"); $(p).addClass("odd"); } else { $(p).removeClass("odd"); $(p).addClass("even"); } }); if ($visibleItems.length > this.itemsNumberToShow) { $visibleItems.slice(this.itemsNumberToShow) .removeClass('visible').removeClass("even").removeClass("odd").hide(); } } Form.prototype.filterItems = function () { var filters = _.map(this.$filters, function(f) { return $(f).val(); }); this.$items.show(); filterBy(this.$container, filters[0], "year"); filterByMultiple(this.$container, this.getCategoryFilter(), "category"); filterByMultiple(this.$container, this.getMonthFilter(), "month"); if (this.getVisibleItems().length <= this.itemsNumberToShow) this.getShowMoreBtn().hide(); else this.getShowMoreBtn().show(); this.hideOverpagedItems(); this.updateVisibility(); } Form.prototype.updateVisibility = function() { if (!this.$container.find(selectors.item).find(":visible").length) { this.getEmptyResult().show(); } else { this.getEmptyResult().hide(); } }; Form.prototype.showMoreItems = function () { this.itemsNumberToShow += this.pageSize; this.filterItems(); } Form.prototype.resetItemsNumberToShow = function () { this.itemsNumberToShow = this.pageSize; } EssentialFacts.run = function () { var $containers = $(selectors.container); if (!$containers.length) return; logger = requiredModules.util.createLogger({ useConsole: options.debug, moduleName: "EssentialFacts" }); _.each($containers, function(container) { var form = new Form($(container), settings.defaultPageSize); }); }; EssentialFacts.on("start", function (options) { EssentialFacts.run(); }); });; LukoilApp.module("MediaLibrary", function(MediaLibrary, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { mediaLibraryWidgetSelector: ".media-library-widget", mediaLibraryJsonContainerSelector: ".materials-data", mediaLibraryResultsSelector: ".media-center-container", photoRibbonSelector: ".panel-list-photo_ribbon", themeSelector: ".theme-select", fileTypeSelector: ".file-type-select", languageSelector: ".language-select", projectSelector: ".project-select", countrySelector: ".country-select", industrySelector: ".industry-select", regionSelector: ".region-select", personSelector: ".person-select", startDateSelector: "#calendar-from", endDateSelector: "#calendar-to", queryInputSelector: ".search-control", getMaterialsUrl: "/api/presscenter/mediamaterials", getTagsUrl: "/api/presscenter/Tags", filterForm: ".filter form", mediaLibraryFilterBtnSelector: ".filter-btn", loadMoreButtonSelector: ".load-more-button", datepickerSelector: ".form-control.calendar", resetButtonSelector: ".button-reset", mediaAlbumWidgetSelector: ".media-album-widget", photoRibbonMaxHeight: 256, languageGuids: [] }; function FileListViewModel(mediaFiles) { var self = this; self.filesByTypeArray = []; self.allFiles = []; self.filesByType = {}; self.filesByType.DownloadOnly = []; self.filesByType[Constants.fileTypes.Document] = []; self.filesByType[Constants.fileTypes.Audio] = []; self.filesByType[Constants.fileTypes.Video] = []; self.filesByType[Constants.fileTypes.Image] = []; if (mediaFiles) { _.each(mediaFiles, function(mediafile) { if (!mediafile.IsLink && mediafile.File) { mediafile.File.FileTitle = mediafile.Name; if (self.filesByType[mediafile.File.Type] && mediafile.File.AllowPreview) { self.filesByType[mediafile.File.Type].push(mediafile.File); } else { self.filesByType.DownloadOnly.push(mediafile.File); } self.allFiles.push(mediafile.File); } }); } _.each(_.keys(self.filesByType), function(type) { self.filesByTypeArray.push({ type: type, files: self.filesByType[type] }); }); var mediaFilesOrder = [0, 4, 1, 2, 3, 5, 6]; self.filesByTypeArray.sort(function(a, b) { return mediaFilesOrder[b.type] - mediaFilesOrder[a.type]; }); }; MediaLibrary.getVmForFileList = function(mediaFiles) { return new FileListViewModel(mediaFiles); }; var requiredModules = { targeting: LukoilApp.module("Targeting") }; MediaLibrary.on("start", function(options) { MediaLibrary.run(); }); var buildQueryStringForMediaLibraryFilter = function(query, fileType, tags, lang, startDate, endDate) { var url = new URI(window.location.href); url.search(function(data) { data[Constants.queryParamNames.SearchQuery] = query ? query : undefined; data[Constants.queryParamNames.FileType] = fileType ? fileType : undefined; data[Constants.queryParamNames.LanguageGuid] = lang ? lang : undefined; data[Constants.queryParamNames.Tags] = tags ? tags : undefined; data[Constants.queryParamNames.StartDate] = startDate ? startDate : undefined; data[Constants.queryParamNames.EndDate] = endDate ? endDate : undefined; return data; }); return url.search(); }; var updateSearchParams = function(vm, $mediaLibrary) { var tagsVal = $.getTagsValFromMultiselects($mediaLibrary, [ settings.themeSelector, settings.projectSelector, settings.projectSelector, settings.countrySelector, settings.industrySelector, settings.regionSelector, settings.personSelector ]); var languageVal = settings.languageGuids; var fileTypesVal = _.pluck($mediaLibrary.find(settings.fileTypeSelector).getValFromMultiSelect(), "value"); var $startDatePicker = $mediaLibrary.find(settings.startDateSelector); var $endDatePicker = $mediaLibrary.find(settings.endDateSelector); var queryVal = $mediaLibrary.find(settings.queryInputSelector).val().encodeURIComponent(); var startDateValue = $.datepicker.parseDate($startDatePicker.datepicker("option", "dateFormat"), $startDatePicker.val()); var endDateValue = $.datepicker.parseDate($endDatePicker.datepicker("option", "dateFormat"), $endDatePicker.val()); vm.SearchParams = { query: queryVal, fileTypes: fileTypesVal, tags: tagsVal, languages: languageVal, currentLangauge: $mediaLibrary.data("lang"), currentUrl: window.location.href, startDate: startDateValue ? startDateValue.localAsUtcDate().toISOString() : null, endDate: endDateValue ? endDateValue.localAsUtcDate().toISOString() : null, take: Constants.MediaLibraryPageSize, widgetGuid: $mediaLibrary.data("widgetguid"), siteGuid: $mediaLibrary.data("site-guid"), isPersonalizationDisabled: $mediaLibrary.data("personalizationdisabled") }; }; var loadMaterials = function (vm, $mediaLibrary, skipAllMaterials, isPaging) { if (!vm.LoadingInProcess()) { if (!skipAllMaterials) { updateSearchParams(vm, $mediaLibrary); } vm.LoadingInProcess(true); var data = vm.SearchParams; data.skipAllMaterials = skipAllMaterials; $.ajax({ url: settings.getMaterialsUrl, data: data, method: "post", success: function(data) { var queryString = buildQueryStringForMediaLibraryFilter(vm.SearchParams.query, vm.SearchParams.fileTypes, vm.SearchParams.tags, vm.SearchParams.lang, vm.SearchParams.startDate, vm.SearchParams.endDate); if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname + queryString); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#" + queryString; } if (!skipAllMaterials || isPaging) { vm.ClearMaterials(); } vm.AddMaterials(data.Items); vm.AllMaterialsCount(data.Count); $.createDownloadPopover($mediaLibrary); requiredModules.targeting.ReattachEvents(); $('.infoblock-grey_promo h2').dotdotdot(); }, traditional: true, cache: false }).fail(function() { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function() { vm.LoadingInProcess(false); }); } }; var resetFilter = function($mediaLibrary) { $mediaLibrary.find(settings.queryInputSelector).val(""); $.resetDatePickerValue($mediaLibrary.find(settings.startDateSelector)); $.resetDatePickerValue($mediaLibrary.find(settings.endDateSelector)); }; var fillMultiselector = function($data, values) { $data.parent().removeClass("disabled"); $data.find("li").hide(); values.map(function(item) { $data.find("input[data-val = " + item + "]").parents('li').show(); }); } var updateFilterData = function($mediaLibraries, tagsData) { var $tagsContainers = $mediaLibraries.find(".tags-data"); var $themeMultiselect = $mediaLibraries.find(settings.themeSelector); var $countryMultiselect = $mediaLibraries.find(settings.countrySelector); var $regionMultiselect = $mediaLibraries.find(settings.regionSelector); var $projectMultiselect = $mediaLibraries.find(settings.projectSelector); var $industryMultiselect = $mediaLibraries.find(settings.industrySelector); var $personMultiselect = $mediaLibraries.find(settings.personSelector); var $languageMultiselect = $mediaLibraries.find(settings.languageSelector); var $fileTypeMultiselect = $mediaLibraries.find(settings.fileTypeSelector); if ($tagsContainers && $tagsContainers.length > 0) { var $container = $($tagsContainers[0]); var data = JSON.parse($container.text() || $container.html()); var compatibleThemeValues = []; var compatibleCountryValues = []; var compatibleRegionValues = []; var compatibleProjectValues = []; var compatibleIndustryValues = []; var compatiblePersonValues = []; var compatibleLanguageValues = []; var compatibleTypeValues = []; if (data != null && data.Items != null) { data.Items.map(function(item) { if ((tagsData.theme.length == 0 || tagsData.theme.indexOf(item.theme) != -1) && (tagsData.language.length == 0 || tagsData.language.indexOf(item.language) != -1) && (tagsData.country.length == 0 || tagsData.country.indexOf(item.country) != -1) && (tagsData.region.length == 0 || tagsData.region.indexOf(item.region) != -1) && (tagsData.project.length == 0 || tagsData.project.indexOf(item.project) != -1) && (tagsData.industry.length == 0 || tagsData.industry.indexOf(item.industry) != -1) && (tagsData.person.length == 0 || tagsData.person.indexOf(item.person) != -1) && (tagsData.type.length == 0 || tagsData.type.indexOf(item.type) != -1)) { if (compatibleThemeValues.indexOf(item.theme) == -1 && item.theme != null) compatibleThemeValues.push(item.theme); if (compatibleCountryValues.indexOf(item.country) == -1 && item.country != null) compatibleCountryValues.push(item.country); if (compatibleRegionValues.indexOf(item.region) == -1 && item.region != null) compatibleRegionValues.push(item.region); if (compatibleProjectValues.indexOf(item.project) == -1 && item.project != null) compatibleProjectValues.push(item.project); if (compatibleIndustryValues.indexOf(item.industry) == -1 && item.industry != null) compatibleIndustryValues.push(item.industry); if (compatiblePersonValues.indexOf(item.person) == -1 && item.person != null) compatiblePersonValues.push(item.person); if (compatibleLanguageValues.indexOf(item.language) == -1 && item.language != null) compatibleLanguageValues.push(item.language); if (compatibleTypeValues.indexOf(item.type) == -1 && item.type != null) compatibleTypeValues.push(item.type); } }); } if (compatibleThemeValues.length > 0 && tagsData.theme.length == 0) { fillMultiselector($themeMultiselect, compatibleThemeValues); } else if (tagsData.theme.length == 0) { $themeMultiselect.parent().addClass("disabled"); } if (compatibleCountryValues.length > 0 && tagsData.country.length == 0) { fillMultiselector($countryMultiselect, compatibleCountryValues); } else if (tagsData.country.length == 0) { $countryMultiselect.parent().addClass("disabled"); } if (compatibleRegionValues.length > 0 && tagsData.region.length == 0) { fillMultiselector($regionMultiselect, compatibleRegionValues); } else if (tagsData.region.length == 0) { $regionMultiselect.parent().addClass("disabled"); } if (compatiblePersonValues.length > 0 && tagsData.person.length == 0) { fillMultiselector($personMultiselect, compatiblePersonValues); } else if (tagsData.person.length == 0) { $personMultiselect.parent().addClass("disabled"); } if (compatibleProjectValues.length > 0 && tagsData.project.length == 0) { fillMultiselector($projectMultiselect, compatibleProjectValues); } else if (tagsData.project.length == 0) { $projectMultiselect.parent().addClass("disabled"); } if (compatibleIndustryValues.length > 0 && tagsData.industry.length == 0) { fillMultiselector($industryMultiselect, compatibleIndustryValues); } else if (tagsData.industry.length == 0) { $industryMultiselect.parent().addClass("disabled"); } if (compatibleLanguageValues.length > 0 && tagsData.language.length == 0) { fillMultiselector($languageMultiselect, compatibleLanguageValues); } else if (tagsData.language.length == 0) { $languageMultiselect.parent().addClass("disabled"); } if (compatibleTypeValues.length > 0 && tagsData.type.length == 0) { fillMultiselector($fileTypeMultiselect, compatibleTypeValues); } else if (tagsData.type.length == 0) { $fileTypeMultiselect.parent().addClass("disabled"); } settings.languageGuids = compatibleLanguageValues; } } var getValues = function ($data, array){ var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function(item) { array.push(item.value); }); } } var onChangeFilter = function($mediaLibraries) { var $themeMultiselect = $mediaLibraries.find(settings.themeSelector); var $countryMultiselect = $mediaLibraries.find(settings.countrySelector); var $regionMultiselect = $mediaLibraries.find(settings.regionSelector); var $projectMultiselect = $mediaLibraries.find(settings.projectSelector); var $industryMultiselect = $mediaLibraries.find(settings.industrySelector); var $personMultiselect = $mediaLibraries.find(settings.personSelector); var $languageMultiselect = $mediaLibraries.find(settings.languageSelector); var $fileTypeMultiselect = $mediaLibraries.find(settings.fileTypeSelector); var tagsData = { theme: [], language: [], country: [], region: [], project: [], industry: [], person: [], type: [] }; if ($themeMultiselect.getValFromMultiSelect().length > 0) getValues($themeMultiselect, tagsData.theme); if ($countryMultiselect.getValFromMultiSelect().length > 0) getValues($countryMultiselect, tagsData.country); if ($regionMultiselect.getValFromMultiSelect().length > 0) getValues($regionMultiselect, tagsData.region); if ($projectMultiselect.getValFromMultiSelect().length > 0) getValues($projectMultiselect, tagsData.project); if ($industryMultiselect.getValFromMultiSelect().length > 0) getValues($industryMultiselect, tagsData.industry); if ($personMultiselect.getValFromMultiSelect().length > 0) getValues($personMultiselect, tagsData.person); if ($languageMultiselect.getValFromMultiSelect().length > 0) getValues($languageMultiselect, tagsData.language); if ($fileTypeMultiselect.getValFromMultiSelect().length > 0) getValues($fileTypeMultiselect, tagsData.type); updateFilterData($mediaLibraries, tagsData); if (tagsData.country.length > 0) { $regionMultiselect.parent().addClass("disabled"); } } function MediaLibraryResultViewModel(id) { var self = this; self.Skipped = ko.observable(0); self.Id = id; self.SearchParams = undefined; self.AllMaterialsCount = ko.observable(0); self.Materials = ko.observableArray([]); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.AddMaterials = function(materials) { if (materials && materials.length) { _.each(materials, function(material) { material.PreviewUrl = null; if (material.MediaFileId) { material.PreviewUrl = material.MediaLibraryPreviewFile ? material.MediaLibraryPreviewFile.FileUrl : null; material.FileSizeText = material.File.FileSizeText; material.DownloadLabel = GlobalSettings.MediaLibrary.DownloadLabel + ", " + material.File.FileExtension + " (" + material.FileSizeText + ")"; } else { material.MediaFileId = null; if (material.PreviewFiles && material.PreviewFiles.length) { var preview = _.find(material.PreviewFiles, function(file) { return file.PreviewType === Constants.previewTypes.MediaLibrary; }); if (preview) { material.PreviewUrl = preview.FileUrl; } } } material.TagsData = null; }); ko.utils.arrayPushAll(self.Materials, materials); self.AllMaterialsCount(self.Materials().length); } }; self.IsActivePage = function (value) { //console.log(value, self.LoadedPages(), $.inArray(value, self.LoadedPages())); return $.inArray(value, self.LoadedPages()) >= 0; } ko.PaginationViewModel.call(self, Constants.MediaLibraryPageSize, self.AllMaterialsCount, settings.mediaLibraryWidgetSelector, loadMaterials); self.ClearMaterials = function() { self.Materials.removeAll(); self.AllMaterialsCount(0); }; } var prepareMediaLibraryWidgets = function() { var $mediaLibraries = $(settings.mediaLibraryWidgetSelector); _.each($mediaLibraries, function(mediaLibrary, index) { try { var $mediaLibrary = $(mediaLibrary); var $datePickers = $mediaLibrary.find(settings.datepickerSelector); _.each($datePickers, function(picker) { var $picker = $(picker); var initialDate = $picker.data("initialvalue"); if (initialDate) { $picker.val($.datepicker.formatDate($picker.datepicker("option", "dateFormat"), moment(initialDate).toDate())); } }); $mediaLibrary.find(".field-autocomplete").autocomplete({ delay: 500, source: [], open: function(event, ui) { $('.ui-autocomplete').width($(event.target).innerWidth()); } }).on("keyup", function() { var $input = $(this); $.ajax({ url: settings.getTagsUrl, data: { query: $input.val().encodeURIComponent(), lang: $mediaLibrary.data("lang") }, method: "get", success: function(data) { if (data && data.length) { $input.autocomplete("option", "source", data); } }, traditional: true, cache: false }); }); var $regionsSelect = $mediaLibrary.find(settings.regionSelector); var $countrySelect = $mediaLibrary.find(settings.countrySelector); var russiaGuid = $mediaLibrary.data("russia-guid"); $mediaLibrary.updateSelectStateByValueInAnother($countrySelect, russiaGuid); $mediaLibrary.find(settings.countrySelector).on("change", "input", function() { $regionsSelect.updateSelectStateByValueInAnother($countrySelect, russiaGuid); }); onChangeFilter($mediaLibraries); $mediaLibraries.find(settings.themeSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.countrySelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.regionSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.projectSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.industrySelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.personSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.languageSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); $mediaLibraries.find(settings.fileTypeSelector).find("input").on('change', function() { onChangeFilter($mediaLibraries); }); var resultsVm = new MediaLibraryResultViewModel(index); updateSearchParams(resultsVm, $mediaLibrary); $('.infoblock-grey_promo h2').dotdotdot(); $mediaLibrary.find(settings.filterForm).on("submit", function() { return false; }); $mediaLibrary.find(settings.mediaLibraryFilterBtnSelector).on("click", function() { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadMaterials(resultsVm, $mediaLibrary, 0, false); }); $mediaLibrary.find(settings.resetButtonSelector).on("click", function() { resetFilter($mediaLibrary); }); $mediaLibrary.on("click", settings.loadMoreButtonSelector, function() { var page = resultsVm.CurrentPage(); resultsVm.CurrentPage(page + 1); resultsVm.LoadedPages.push(page); loadMaterials(resultsVm, $mediaLibrary, page * resultsVm.PageSize(), false); }); var meterialsData = null; var $jsonContainers = $mediaLibrary.find(settings.mediaLibraryJsonContainerSelector); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); meterialsData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); resultsVm.Skipped(meterialsData.Skipped); resultsVm.CurrentPage(Math.floor(resultsVm.Skipped() / resultsVm.PageSize()) + 1); resultsVm.AddMaterials(meterialsData.Items); resultsVm.AllMaterialsCount(meterialsData.Count); } if (!meterialsData || !meterialsData.Items.length) { $mediaLibrary.remove(); } else { var resultContainer = $mediaLibrary.find(settings.mediaLibraryResultsSelector)[0]; ko.cleanNode(resultContainer); updateSearchParams(resultsVm, $mediaLibrary); var widgetGuid = $mediaLibrary.attr("data-widgetguid"); $(".server-rendered-" + widgetGuid).remove(); ko.applyBindings(resultsVm, resultContainer); $.createDownloadPopover($mediaLibrary); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render Media library widget #" + (index + 1)); } } }); requiredModules.targeting.ReattachEvents(); }; var updateFileInfo = function($mediaAlbum, selectedIndex) { _.each($mediaAlbum.find(".media-file-buttons"), function(info) { var $info = $(info); if ($info.data("index-item") === selectedIndex) { $info.show(); } else { $info.hide(); } }); }; var prepareMediaAlbumWidgets = function() { var $mediaAlbums = $(settings.mediaAlbumWidgetSelector); // remove last item in breadcrumbs if ($mediaAlbums.length) { $(".breadcrumb .active").remove(); } _.each($mediaAlbums, function(mediaAlbum, index) { try { var $mediaAlbum = $(mediaAlbum); var $thumbs = $mediaAlbum.find(".photo-album-thumb"); if ($thumbs.length < 2) { $mediaAlbum.find(".photo-album-thumbs").hide(); } var selectedIndex = $mediaAlbum.find(".photo-album-thumb.selected").data("index-item"); updateFileInfo($mediaAlbum, selectedIndex); $mediaAlbum.on("click", ".owl-item", function() { var n = $(this).index(); updateFileInfo($mediaAlbum, n); }); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render media album widget #" + (index + 1)); } } }); }; var preparePhotoRibbon = function() { var updateRibbonImages = function ($ribbon) { var $images = $ribbon.find("img"); if ($images.length) { var countPhoto = $images.length; var images, maxHeight, targetQuantifier, targetHeight; var ribbonWidth = $ribbon.width(); var showAsCarousel = $ribbon.data("carousel"); if (showAsCarousel) { var htmlWidth = $("html").width(); var size = htmlWidth >= 768 ? 3 : htmlWidth >= 450 ? 2 : 1; if (size > 1) { var $imagesTopN = $images.filter(":lt(" + size + ")"); images = _.map($images, function(image) { var $image = $(image); return { $el: $image, height: $image.data("height"), width: $image.data("width") } }); var imagesTopN = _.map($imagesTopN, function(image) { var $image = $(image); return { $el: $image, height: $image.data("height"), width: $image.data("width") } }); maxHeight = _.max(imagesTopN, function(image) { return image.height; }).height; _.each(images, function(image) { var quantifier = maxHeight / image.height; image.height = maxHeight; image.width *= quantifier; }); var totalImagesWidthTopN = _.reduce(imagesTopN, function(memo, image) { return memo + image.width; }, 0); var totalGapTopN = (size - 1) * 10; targetQuantifier = totalImagesWidthTopN / (ribbonWidth - totalGapTopN); targetHeight = maxHeight / targetQuantifier; if (targetHeight > settings.photoRibbonMaxHeight) { targetQuantifier *= targetHeight / settings.photoRibbonMaxHeight; } _.each(images, function(image, index) { image.$el.css("width", Math.floor(image.width / targetQuantifier)); image.$el.css("border", 0); }); } else { $.each($images, function() { $(this).css("width", "100%"); }); } var $car = $ribbon.find(".panel-body").lukOwlCarousel({ nav: true, navRewind: false, dots: false, margin: 10, autoWidth: size > 1, //loop: true, loop: countPhoto > size, responsive: { 0: { slideBy: 1, items: 1 }, 450: { slideBy: 2, items: 2 }, 768: { slideBy: 1, items: countPhoto >= 3 ? 3 : countPhoto } }, onResized: function(event) { $car.owlCarousel('destroy'); updateRibbonImages($ribbon); } }); } else { var gapInPercents = $ribbon.data("gap"); images = _.map($images, function(image) { var $image = $(image); return { $el: $image, height: $image.data("height"), width: $image.data("width") } }); maxHeight = _.max(images, function(image) { return image.height; }).height; _.each(images, function(image) { var quantifier = maxHeight / image.height; image.height = maxHeight; image.width *= quantifier; }); var totalImagesWidth = _.reduce(images, function(memo, image) { return memo + image.width; }, 0); var gapBetweenImages = ribbonWidth * gapInPercents / 100; var totalGap = (images.length - 1) * gapBetweenImages; targetQuantifier = totalImagesWidth / (ribbonWidth - totalGap); targetHeight = maxHeight / targetQuantifier; var ribbonLeftPadding = null; if (targetHeight > settings.photoRibbonMaxHeight) { targetQuantifier *= targetHeight / settings.photoRibbonMaxHeight; var targetTotalImagesWidth = totalImagesWidth / targetQuantifier; ribbonLeftPadding = (ribbonWidth - totalGap - targetTotalImagesWidth) / 2; } _.each(images, function(image, index) { image.$el.css("width", Math.floor(image.width / targetQuantifier)); image.$el.css("border", 0); if (index) { image.$el.css("margin-left", Math.floor(gapBetweenImages)); } }); if (ribbonLeftPadding) { $ribbon.css("padding-left", ribbonLeftPadding); } } } } _.each($(settings.photoRibbonSelector), function(ribbon, index) { try { var $ribbon = $(ribbon); updateRibbonImages($ribbon); $(window).on('resize', function() { updateRibbonImages($ribbon); }); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render photo ribbon widget #" + (index + 1)); } } }); }; MediaLibrary.run = function() { prepareMediaLibraryWidgets(); prepareMediaAlbumWidgets(); preparePhotoRibbon(); }; });; LukoilApp.module("OilCatalog", function (OilCatalog, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { oilListWidgetSelector: ".oil-list-widget", oilInfoPageWidgetSelector: ".oil-information", loadMoreButtonSelector: ".load-more-button", loadAllButtonSelector: ".load-all-button", listFilterBtnSelector: ".filter-btn", resultsContainerSelector: ".oil-list-results", getProductsUrl: "/api/oilcatalog/products", resetButtonSelector: ".button-reset", queryInputSelector: ".filter_lukoil-oil input[type=text]", applicationSelector: ".application-select", typeSelector: ".typeid-select", viscositySelector: ".viscosity-select" } var totalSkip = 0; var totalTake = 0; var updateSearchParams = function (vm, $widget) { vm.SearchParams = { langGuid: $widget.data("lang"), countryId: $widget.data("country"), categoryId: $widget.data("category"), take: Constants.OilCatalogPageSize, filterParams: {} }; var $filter = $widget.find(".filter"); if ($filter.length) { var query = ""; _.each($filter.find(".dropdown-menu"), function (select) { var $select = $(select); var paramName = $select.data("param"); var values = _.filter(_.map($select.getValFromMultiSelect(), "value"), function (val) { return val !== ""; }); var filters = _.filter(_.map($select.getFilterFromMultiSelect(), "value"), function (val) { return val !== ""; }); vm.SearchParams.filterParams[paramName] = values.join("_"); var jn = filters.join("-or-"); if(jn != "") query += "/" + jn; }); _.each($filter.find(".search-control"), function (search) { var $search = $(search); var paramName = $search.data("param"); var value = $search.val(); vm.SearchParams.filterParams[paramName] = value ? value.encodeURIComponent() : value; }); _.each($filter.find(".filter-checkbox .checkbox-custom"), function (checkbox) { var $checkbox = $(checkbox); var paramName = $checkbox.data("param"); vm.SearchParams.filterParams[paramName] = $checkbox.is(":checked"); }); var $tabContainer = $widget.find(".nav-tabs"); if ($tabContainer.length) { var paramName = $tabContainer.data("param"); var activeTab = $tabContainer.find(".active a"); if (activeTab.length) { vm.SearchParams.filterParams[paramName] = activeTab.data("val"); var tn = activeTab.data("filter"); if (typeof tn !== "undefined" && tn != "") query += "/" + tn; } } window.history.replaceState("string", "Oils", baseUrl.replace(/\/+$/, '') + "/" + query.replace(/\/+$/, '').replace(/^\/+/, '') + window.location.hash); applyTitleAndDescriptionIfRussian(); } } var fillMultiselector = function ($data, values) { $data.parent().removeClass("disabled"); $data.find("li").hide(); values.map(function (item) { $data.find("input[data-val = " + item + "]").parents('li').show(); }); } var updateFilterData = function ($widget, tagsData) { var $tagsContainers = $widget.find(".tags-data"); var $applicationMultiselect = $widget.find(settings.applicationSelector); var $typeMultiselect = $widget.find(settings.typeSelector); var $viscosityMultiselect = $widget.find(settings.viscositySelector); if ($tagsContainers && $tagsContainers.length > 0) { var $container = $($tagsContainers[0]); var data = JSON.parse($container.text() || $container.html()); var compatibleAppValues = []; var compatibleTypeValues = []; var compatibleViscosityValues = []; if (data != null && data.Items != null) { data.Items.map(function (item) { if ((tagsData.application.length == 0 || tagsData.application.indexOf(item.application) != -1) && (tagsData.type.length == 0 || tagsData.type.indexOf(item.type) != -1) && (tagsData.viscosity.length == 0 || tagsData.viscosity.indexOf(item.viscosity) != -1)) { if (compatibleAppValues.indexOf(item.application) == -1 && item.application != 0) compatibleAppValues.push(item.application); if (compatibleTypeValues.indexOf(item.type) == -1 && item.type != 0) compatibleTypeValues.push(item.type); if (compatibleViscosityValues.indexOf(item.viscosity) == -1 && item.viscosity != 0) compatibleViscosityValues.push(item.viscosity); } }); } if ($applicationMultiselect.length > 0 && compatibleAppValues.length > 0 && tagsData.application.length == 0) { fillMultiselector($applicationMultiselect, compatibleAppValues); } else if (tagsData.application.length == 0) { $applicationMultiselect.parent().addClass("disabled"); } if ($typeMultiselect.length > 0 && compatibleTypeValues.length > 0 && tagsData.type.length == 0) { fillMultiselector($typeMultiselect, compatibleTypeValues); } else if (tagsData.type.length == 0) { $typeMultiselect.parent().addClass("disabled"); } if ($viscosityMultiselect.length > 0 && compatibleViscosityValues.length > 0 && tagsData.viscosity.length == 0) { fillMultiselector($viscosityMultiselect, compatibleViscosityValues); } else if (tagsData.viscosity.length == 0) { $viscosityMultiselect.parent().addClass("disabled"); } } } var getValues = function ($data, array) { var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function (item) { array.push(item.value); }); } } var onChangeFilter = function ($widget) { var $applicationMultiselect = $widget.find(settings.applicationSelector); var $typeMultiselect = $widget.find(settings.typeSelector); var $viscosityMultiselect = $widget.find(settings.viscositySelector); var tagsData = { application: [], type: [], viscosity: [] }; if ($applicationMultiselect.length > 0 && $applicationMultiselect.getValFromMultiSelect().length > 0) getValues($applicationMultiselect, tagsData.application); if ($typeMultiselect.length > 0 && $typeMultiselect.getValFromMultiSelect().length > 0) getValues($typeMultiselect, tagsData.type); if ($viscosityMultiselect.length > 0 && $viscosityMultiselect.getValFromMultiSelect().length > 0) getValues($viscosityMultiselect, tagsData.viscosity); updateFilterData($widget, tagsData); } var loadProducts = function (vm, $widget, skip, isPaging, take) { if (!vm.LoadingInProcess()) { if (!skip || take) { updateSearchParams(vm, $widget); } vm.LoadingInProcess(true); var data = vm.SearchParams; data.skip = skip; _.extend(data, data.filterParams); var filterParams = data.filterParams; data.filterParams = undefined; if (take) { data.take = take; } $.ajax({ url: settings.getProductsUrl, data: data, method: "post", success: function (data) { if (!skip || isPaging) { vm.ClearReleases(); totalSkip = skip; } data = JSON.parse(data); vm.AddProducts(data.Items); vm.AllProductCount(data.Count); totalTake = vm.Products().length; if (window.location.search.includes("take=")) { if (totalTake == 9 && totalSkip == 0) { history.pushState(null, '', window.location.pathname); } else if (window.location.search != ("?take=" + totalTake + "&skip=" + totalSkip) && 'URLSearchParams' in window) { var searchParams = new URLSearchParams(window.location.search) searchParams.set("take", totalTake); searchParams.set("skip", totalSkip); var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString(); history.pushState(null, '', newRelativePathQuery); } } else { if (totalTake <= 9 && totalSkip == 0) { history.pushState(null, '', window.location.pathname); } else window.location.hash = "take=" + totalTake + "&skip=" + totalSkip; } $.createDownloadPopover($widget); vm.ShowPaginationButtons(data.Count > totalTake); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; var loadAllProducts = function (vm, $widget) { if (!vm.LoadingInProcess()) { updateSearchParams(vm, $widget); vm.LoadingInProcess(true); var data = vm.SearchParams; _.extend(data, data.filterParams); var filterParams = data.filterParams; data.filterParams = undefined; data.take = undefined; $.ajax({ url: settings.getProductsUrl, data: data, method: "post", success: function (data) { vm.ClearReleases(); data = JSON.parse(data); vm.AddProducts(data.Items); vm.AllProductCount(data.Count); if (!window.location.hash.toLowerCase().includes('loadall')) window.location.hash = 'loadAll=true'; $.createDownloadPopover($widget); vm.ShowPaginationButtons(false); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; var OilListViewModel = function (index) { var self = this; self.Skipped = ko.observable(0); self.ProductCount = ko.observable(0); self.AllProductCount = ko.observable(0); self.Products = ko.observableArray([]); self.LoadingInProcess = ko.observable(false); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.AllProductCount() > self.ProductCount(); }); self.ShowPaginationButtons = ko.observable(true); self.AddProducts = function (products) { _.each(products, function (product) { if (!product.ListImage) { product.ListImage = GlobalSettings.CurrentLanguage === "ru" ? "/Content/img/barrel-ru-210-220.png" : "/Content/img/barrel-eng-210-220.png"; } self.Products.push(product); }); self.ProductCount(self.Products().length); } self.IsActivePage = function (value) { return $.inArray(value, self.LoadedPages()) >= 0; } if (window.location.hash.includes("loadAll=true")) { ko.PaginationViewModel.call(self, Constants.OilCatalogPageSize, self.AllProductCount, settings.oilListWidgetSelector, loadAllProducts); } else { ko.PaginationViewModel.call(self, Constants.OilCatalogPageSize, self.AllProductCount, settings.oilListWidgetSelector, loadProducts); } self.ClearReleases = function () { self.Products.removeAll(); self.ProductCount(0); } }; var resetFilter = function ($widget) { $widget.find(".search-control").val(""); } var handleHashState = function (resultsVm, $oilListWidget) { if (window.location.hash.includes("loadAll=true")) { loadAllProducts(resultsVm, $oilListWidget); } var hashSkip = 0; var hashTake = 9; if (window.location.search.includes("take=")) { var uri = window.location.search.replace("?", ''); var hashParams = uri.split("&"); hashSkip = parseInt(hashParams.pop().replace("skip=", "")); hashTake = parseInt(hashParams.pop().replace("take=", "")); } else if (window.location.hash.includes("take=")) { var hashParams = window.location.hash.split("&"); hashSkip = parseInt(hashParams.pop().replace("skip=", "")); hashTake = parseInt(hashParams.pop().replace("#take=", "")); } if (hashSkip != totalSkip || hashTake != totalTake) { totalTake = hashTake; totalSkip = hashSkip; loadProducts(resultsVm, $oilListWidget, totalSkip, false, totalTake); resultsVm.ClearReleases(); resultsVm.LoadedPages.removeAll(); var currentPage = Math.floor((totalSkip + totalTake) / Constants.OilCatalogPageSize); if (currentPage * Constants.OilCatalogPageSize < (totalSkip + totalTake)) { currentPage += 1; } var loadedPagesCount = totalTake / Constants.OilCatalogPageSize; for (var i = 1; i < loadedPagesCount; i++) { resultsVm.LoadedPages.push(currentPage - i); } resultsVm.CurrentPage(currentPage); } } function updateTitleAndDescription($oilListWidget) { // Сбор значений из выпадающих списков var applicationText = $oilListWidget.find(settings.applicationSelector).find("input:checked").map(function() { return $(this).next('label').text().trim().toLowerCase(); }).get().join(' '); var typeText = $oilListWidget.find(settings.typeSelector).find("input:checked").map(function() { return $(this).next('label').text().trim().toLowerCase(); }).get().join(' '); var viscosityText = $oilListWidget.find(settings.viscositySelector).find("input:checked").map(function() { return $(this).next('label').text().trim(); }).get().join(' '); if (window.location.pathname.toLowerCase().indexOf('/ru/products/forpassengercars') != -1) { var $tabs = $oilListWidget.find(".nav-tabs li"); var isDefaultSelected = $tabs.first().hasClass("active"); // Собрать все тексты, исключая пустые значения var allTexts = []; if (applicationText) { allTexts.push(applicationText); } if (typeText) { allTexts.push(typeText); } if (viscosityText) { allTexts.push(viscosityText); } var newText = allTexts.join(' '); var capitalizerFirstLatter = function(text) { if (!text) return text; return text.charAt(0).toUpperCase() + text.slice(1); }; newText = capitalizerFirstLatter(newText); var descriptionText = newText + ": характеристики, описание, одобрения и соответствия требованиям – ЛУКОЙЛ"; $("meta[name='description']").attr('content', descriptionText); if (!newText.trim()) { document.title = newText = "Для легкового автотранспорта – ЛУКОИЛ"; } else { document.title = newText + " для легкового автотранспорта – ЛУКОИЛ"; } // Установка метатега if ((applicationText && isDefaultSelected) || (isDefaultSelected && !applicationText && !typeText && !viscosityText)) { $("meta[name='robots']").remove(); } else { if (!$("meta[name='robots']").length) { $('head').append(''); } } } else { if ((applicationText) || (!applicationText && !typeText && !viscosityText)) { $("meta[name='robots']").remove(); } else { if (!$("meta[name='robots']").length) { $('head').append(''); } } } } function applyTitleAndDescriptionIfRussian() { // Получаем текущий URL var currentUrl = window.location.href; // Проверяем, если текущий URL соответствует русской версии if (['/ru/products/forpassengercars', '/ru/products/forsmallengines', '/ru/products/forcommercialvehicles'] .some(path => window.location.pathname.toLowerCase().indexOf(path) !== -1)) { var $oilListWidget = $(settings.oilListWidgetSelector); // Получаем виджет фильтров updateTitleAndDescription($oilListWidget); // Обновляем title и description } } var prepareLists = function () { var $oilListWidgets = $(settings.oilListWidgetSelector); _.each($oilListWidgets, function (oilList, index) { try { var $oilListWidget = $(oilList); var resultsVm = new OilListViewModel(index); var skipInitialLoad = false; window.addEventListener('hashchange', function () { handleHashState(resultsVm, $oilListWidget); }) handleHashState(resultsVm, $oilListWidget); if (window.location.hash.includes("take=") || window.location.search.includes("take=")) { skipInitialLoad = true; } $oilListWidget.find(settings.listFilterBtnSelector).on("click", function () { applyTitleAndDescriptionIfRussian(); resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadProducts(resultsVm, $oilListWidget, 0, false); }); $oilListWidget.find(settings.queryInputSelector).on("keypress", function (e) { if ((event.keyCode || event.which) == 13) { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadProducts(resultsVm, $oilListWidget, 0, false); } }); $oilListWidget.on("click", settings.loadMoreButtonSelector, function () { var page = resultsVm.CurrentPage(); resultsVm.CurrentPage(page + 1); resultsVm.LoadedPages.push(page); loadProducts(resultsVm, $oilListWidget, page * Constants.OilCatalogPageSize, false); }); $oilListWidget.on("click", settings.loadAllButtonSelector, function () { loadAllProducts(resultsVm, $oilListWidget); }); onChangeFilter($oilListWidget); $oilListWidget.find(settings.applicationSelector).find("input").on('change', function () { onChangeFilter($oilListWidget); }); $oilListWidget.find(settings.typeSelector).find("input").on('change', function () { onChangeFilter($oilListWidget); }); $oilListWidget.find(settings.viscositySelector).find("input").on('change', function () { onChangeFilter($oilListWidget); }); var tabs = $oilListWidget.find(".nav-tabs li"); tabs.on("click", function () { _.each(tabs, function (tab) { $(tab).removeClass("active"); }); $(this).addClass("active"); resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadProducts(resultsVm, $oilListWidget, 0, false); }); $oilListWidget.find(settings.resetButtonSelector).on("click", function () { resetFilter($oilListWidget); }); var productData = null; var $jsonContainers = $oilListWidget.find(".oil-data"); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); productData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); if (!skipInitialLoad) { resultsVm.Skipped(productData.Skipped); resultsVm.CurrentPage(Math.floor(resultsVm.Skipped() / resultsVm.PageSize()) + 1); resultsVm.AddProducts(productData.Items); resultsVm.AllProductCount(productData.Count); applyTitleAndDescriptionIfRussian(); } } if (!productData) { $oilListWidget.remove(); } else { var resultContainer = $oilListWidget.find(settings.resultsContainerSelector)[0]; ko.cleanNode(resultContainer); updateSearchParams(resultsVm, $oilListWidget); var widgetGuid = $oilListWidget.attr("data-widget-guid"); $(".server-rendered-" + widgetGuid).remove(); ko.applyBindings(resultsVm, resultContainer); $.createDownloadPopover($oilListWidget); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render oil list #" + (index + 1)); } } }); }; var prepareInfoPages = function () { var $infoPages = $(settings.oilInfoPageWidgetSelector); _.each($infoPages, function (infoPage, index) { try { var $infoPage = $(infoPage); console.log($infoPage); var productName = $infoPage.data("name"); if (productName) { $(".page-title h1").text(productName); $(".breadcrumb .active span").text(productName); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render oil info page #" + (index + 1)); } } }); }; var baseUrl; var recalculateAdressString = function () { let url = document.URL if (typeof FilterUrlPart === 'undefined' || FilterUrlPart == null) baseUrl = url else baseUrl = url.substring(0, url.length - FilterUrlPart.length) //console.log(baseUrl) } OilCatalog.run = function () { recalculateAdressString(); prepareLists(); prepareInfoPages(); }; OilCatalog.on("start", function (options) { OilCatalog.run(); }); });; LukoilApp.module("SeaportList", function (SeaportList, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { widgetSelector: ".seaport-list-widget", resultsContainerSelector: ".seaport-list-results", pageSize: 10 }; var SeaportListViewModel = function($list, index) { var self = this; self.TotalCount = ko.observable(0); self.LoadedCount = ko.observable(0); self.Ports = ko.observableArray([]); self.LoadingInProcess = ko.observable(false); self.ShowPaginationButtons = ko.observable(true); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.TotalCount() > self.LoadedCount(); }); self.AddPorts = function(ports) { _.each(ports, function(port) { self.Ports.push(port); }); self.LoadedCount(self.LoadedCount() + ports.length); }; self.ClearPorts = function() { self.Ports.removeAll(); self.TotalCount(0); self.LoadedCount(0); }; var loadPorts = function(countryId, skip, take) { if (!self.LoadingInProcess()) { self.LoadingInProcess(true); $.ajax({ url: "/api/cartography/getseaports", data: { countryId: countryId === "0" ? null : countryId, skip: skip, take: take, languageCode: GlobalSettings.CurrentLanguage }, method: "post", success: function (data) { if (!skip) { self.ClearPorts(); } self.AddPorts(data.Items); self.TotalCount(data.Count); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { self.LoadingInProcess(false); }); } }; var getCountryId = function() { return $list.find(".country-select select").val(); }; self.ChangeCountry = function () { loadPorts(getCountryId()); }; self.LoadMorePorts = function () { loadPorts(getCountryId(), self.LoadedCount(), settings.pageSize); }; }; var prepareLists = function () { var $lists = $(settings.widgetSelector); _.each($lists, function (list, index) { try { var $list = $(list); var resultsVm = new SeaportListViewModel($list, index); $list.find(".country-select") .on("change", function() { resultsVm.ChangeCountry(); }); var data = null; var $jsonContainers = $list.find(".seaport-data"); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); data = JSON.parse($jsonContainer.text() || $jsonContainer.html()); resultsVm.AddPorts(data.Items); resultsVm.TotalCount(data.Count); } var resultContainer = $list.find(settings.resultsContainerSelector)[0]; ko.cleanNode(resultContainer); ko.applyBindings(resultsVm, resultContainer); } catch (e) { if (window.console && window.console.log) { console.log("Failed to render seaport list #" + (index + 1)); } } }); }; SeaportList.run = function () { prepareLists(); }; SeaportList.on("start", function (options) { SeaportList.run(); }); });; var cssua=function(n,l,p){var q=/\s*([\-\w ]+)[\s\/\:]([\d_]+\b(?:[\-\._\/]\w+)*)/,r=/([\w\-\.]+[\s\/][v]?[\d_]+\b(?:[\-\._\/]\w+)*)/g,s=/\b(?:(blackberry\w*|bb10)|(rim tablet os))(?:\/(\d+\.\d+(?:\.\w+)*))?/,t=/\bsilk-accelerated=true\b/,u=/\bfluidapp\b/,v=/(\bwindows\b|\bmacintosh\b|\blinux\b|\bunix\b)/,w=/(\bandroid\b|\bipad\b|\bipod\b|\bwindows phone\b|\bwpdesktop\b|\bxblwp7\b|\bzunewp7\b|\bwindows ce\b|\bblackberry\w*|\bbb10\b|\brim tablet os\b|\bmeego|\bwebos\b|\bpalm|\bsymbian|\bj2me\b|\bdocomo\b|\bpda\b|\bchtml\b|\bmidp\b|\bcldc\b|\w*?mobile\w*?|\w*?phone\w*?)/, x=/(\bxbox\b|\bplaystation\b|\bnintendo\s+\w+)/,k={parse:function(b,d){var a={};d&&(a.standalone=d);b=(""+b).toLowerCase();if(!b)return a;for(var c,e,g=b.split(/[()]/),f=0,k=g.length;f+a.ie? "7.0":10>+a.ie?"7.5":"8.0",delete a.windows_nt}else if(a.gecko||a.firefox)a.gecko=a.rv;a.rv&&delete a.rv;a.version&&delete a.version;return a},format:function(b){var d="",a;for(a in b)if(a&&b.hasOwnProperty(a)){var c=a,e=b[a],c=c.split(".").join("-"),g=" ua-"+c;if("string"===typeof e){for(var e=e.split(" ").join("_").split(".").join("-"),f=e.indexOf("-");0' + key + ''; }); Sharing.run = function () { if (!$("#shared-fly").length) { var container = $(''); $("body").append(container); container.html(shareHtml); } // "Share" Content block's functionality START if (settings.isSocialSharingEnabled) { _.each(sites, function (site) { setShareLinkAction('.luk-sharing-container .' + site.Class, site.Url); }); } setShareLinkAction(".luk-share-action-sendenabled", "mailto:?body="); var numberOfNotHiddenLinks = 6; var shareMoreBtn = $(".luk-share-action-more"); var childLinks = $("li.luk-share-action"); if (childLinks.length > numberOfNotHiddenLinks) { shareMoreBtn.on("click", function () { var $this = $(this); childLinks.show(); $this.closest("li").hide(); }); childLinks.slice(numberOfNotHiddenLinks - 1, childLinks.length).hide(); shareMoreBtn.closest("li").show(); } $(".luk-share-action-printenabled").on("click", function () { window.print(); }); // "Share" Content block's functionality END // Common sharing dropdown's functionality if (settings.isSocialSharingEnabled) { var dropdowns = $('.luk-sharing-dropdown'); _.each(dropdowns, function (dd) { var $this = $(dd); if ($this.find(".dropdown-menu").length == 0) { var shareurl = $this.data('shareurl'); var container = $(''); $this.append(container); container.html(shareHtml); _.each(sites, function(site) { var url = site.Url + encodeURIComponent(shareurl); container.find('.' + site.Class).attr('href', url); }); } }); var dropdownsFlyMenu = $('.dropdown-fly-menu'); _.each(dropdownsFlyMenu, function (dd) { var $this = $(dd); $this.find('.share-info').on("click", function () { var shareurl = $this.data('shareurl'); var container = $("#shared-fly"); container.html(shareHtml); if (shareurl != null && shareurl != '') { _.each(sites, function (site) { var url = site.Url + encodeURIComponent(shareurl); container.find('.' + site.Class).attr('href', url); }); } }); }); } }; });; LukoilApp.module("Winners", function (Winners, LukoilApp, Backbone, Marionette, $, _) { "use strict"; var settings = { winnersListWidgetSelector: ".winners-list-widget", loadMoreButtonSelector: ".load-more-button", loadAllButtonSelector: ".load-all-button", listFilterBtnSelector: ".filter-btn", resultsContainerSelector: ".winners-list-results", getWinnersUrl: "/api/promo/winners", resetButtonSelector: ".button-reset", queryInputSelector: "#winner-prize", drawDateInputSelector: "#calendar-drawdate", cardNumberInputSelector: "#card-digits", // applicationSelector: ".application-select", // typeSelector: ".typeid-select", // viscositySelector: ".viscosity-select" } var buildQueryStringForEventListFilter = function (filterParams) { var url = new URI(window.location.href); url.search(function (data) { _.each(_.keys(filterParams), function(param) { data[param] = filterParams[param] ? filterParams[param] : undefined; }); return data; }); return url.search(); } var updateSearchParams = function (vm, $widget) { vm.SearchParams = { take: Constants.WinnersPageSize, filterParams: {} }; var $filter = $widget.find(".filter"); if ($filter.length) { //var drawDatePicker = $filter.find(settings.drawDateInputSelector).val; //var queryVal = $filter.find(settings.queryInputSelector).val(); var cardNumbers = $filter.find(settings.cardNumberInputSelector).val(); //vm.SearchParams.query = queryVal ? queryVal.encodeURIComponent() : queryVal; //vm.SearchParams.date = drawDatePicker ? drawDatePicker.encodeURIComponent() : drawDatePicker; vm.SearchParams.digits = cardNumbers ? cardNumbers.encodeURIComponent() : cardNumbers; } } //var fillMultiselector = function ($data, values) { // $data.parent().removeClass("disabled"); // $data.find("li").hide(); // values.map(function (item) { // $data.find("input[data-val = " + item + "]").parents('li').show(); // }); //} //var updateFilterData = function ($widget, tagsData) { // //var $tagsContainers = $widget.find(".tags-data"); // //var $applicationMultiselect = $widget.find(settings.applicationSelector); // //var $typeMultiselect = $widget.find(settings.typeSelector); // //var $viscosityMultiselect = $widget.find(settings.viscositySelector); // if ($tagsContainers && $tagsContainers.length > 0) { // var $container = $($tagsContainers[0]); // var data = JSON.parse($container.text() || $container.html()); // var compatibleAppValues = []; // var compatibleTypeValues = []; // var compatibleViscosityValues = []; // if (data != null && data.Items != null) { // data.Items.map(function (item) { // if ((tagsData.application.length == 0 || tagsData.application.indexOf(item.application) != -1) && // (tagsData.type.length == 0 || tagsData.type.indexOf(item.type) != -1) && // (tagsData.viscosity.length == 0 || tagsData.viscosity.indexOf(item.viscosity) != -1)) { // if (compatibleAppValues.indexOf(item.application) == -1 && item.application != 0) // compatibleAppValues.push(item.application); // if (compatibleTypeValues.indexOf(item.type) == -1 && item.type != 0) // compatibleTypeValues.push(item.type); // if (compatibleViscosityValues.indexOf(item.viscosity) == -1 && item.viscosity != 0) // compatibleViscosityValues.push(item.viscosity); // } // }); // } // if ($applicationMultiselect.length > 0 && compatibleAppValues.length > 0 && tagsData.application.length == 0) { // fillMultiselector($applicationMultiselect, compatibleAppValues); // } else if (tagsData.application.length == 0) { // $applicationMultiselect.parent().addClass("disabled"); // } // if ($typeMultiselect.length > 0 && compatibleTypeValues.length > 0 && tagsData.type.length == 0) { // fillMultiselector($typeMultiselect, compatibleTypeValues); // } else if (tagsData.type.length == 0) { // $typeMultiselect.parent().addClass("disabled"); // } // if ($viscosityMultiselect.length > 0 && compatibleViscosityValues.length > 0 && tagsData.viscosity.length == 0) { // fillMultiselector($viscosityMultiselect, compatibleViscosityValues); // } else if (tagsData.viscosity.length == 0) { // $viscosityMultiselect.parent().addClass("disabled"); // } // } //} var getValues = function ($data, array) { var $ms = $data.getValFromMultiSelect(); if ($ms != null) { $ms.map(function (item) { array.push(item.value); }); } } var onChangeFilter = function ($widget) { // var $applicationMultiselect = $widget.find(settings.applicationSelector); // var $typeMultiselect = $widget.find(settings.typeSelector); // var $viscosityMultiselect = $widget.find(settings.viscositySelector); // var tagsData = { // application: [], // type: [], // viscosity: [] // }; // if ($applicationMultiselect.length > 0 && $applicationMultiselect.getValFromMultiSelect().length > 0) // getValues($applicationMultiselect, tagsData.application); // if ($typeMultiselect.length > 0 && $typeMultiselect.getValFromMultiSelect().length > 0) // getValues($typeMultiselect, tagsData.type); // if ($viscosityMultiselect.length > 0 && $viscosityMultiselect.getValFromMultiSelect().length > 0) // getValues($viscosityMultiselect, tagsData.viscosity); // updateFilterData($widget, tagsData); } var loadWinners = function (vm, $widget, skip, isPaging) { //loadProducts if (!vm.LoadingInProcess()) { if (!skip) { updateSearchParams(vm, $widget); } vm.LoadingInProcess(true); var data = vm.SearchParams; data.skip = skip; _.extend(data, data.filterParams); var filterParams = data.filterParams; //data.filterParams = undefined; $.ajax({ url: settings.getWinnersUrl, data: data, method: "post", success: function (data) { var queryString = buildQueryStringForEventListFilter(filterParams) || ""; if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname + queryString); } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#" + queryString; } if (!skip || isPaging) { vm.ClearWinners(); } //data = JSON.parse(data); vm.AddWinners(data.Items); vm.AllWinnersCount(data.Count); $.createDownloadPopover($widget); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; var loadAllWinners = function (vm, $widget) { if (!vm.LoadingInProcess()) { updateSearchParams(vm, $widget); vm.LoadingInProcess(true); var data = vm.SearchParams; _.extend(data, data.filterParams); var filterParams = data.filterParams; //data.filterParams = undefined; //data.take = undefined; $.ajax({ url: settings.getWinnersUrl, data: data, method: "post", success: function (data) { var queryString = buildQueryStringForEventListFilter(filterParams) || ""; if (window.history && window.history.pushState) { window.history.replaceState(null, "", location.protocol + "//" + location.host + location.pathname + queryString); window.location.hash = 'loadAll=true'; } else { window.location.href = location.protocol + "//" + location.host + location.pathname + "#loadAll=true&" + queryString; } vm.ClearWinners(); //data = JSON.parse(data); vm.AddWinners(data.Items); vm.AllWinnersCount(data.Count); $.createDownloadPopover($widget); vm.ShowPaginationButtons(false); }, traditional: true, cache: false }).fail(function () { $.fancyboxMessage(GlobalSettings.ErrorMessages.AjaxErrorMessage); }).always(function () { vm.LoadingInProcess(false); }); } }; var WinnerListViewModel = function (index) { var self = this; self.Skipped = ko.observable(0); self.WinnersCount = ko.observable(0); self.AllWinnersCount = ko.observable(0); self.Winners = ko.observableArray([]); self.LoadingInProcess = ko.observable(false); self.CanLoadMore = ko.computed(function () { return !self.LoadingInProcess() && self.AllWinnersCount() > self.WinnersCount(); }); self.ShowPaginationButtons = ko.observable(true); self.AddWinners = function(winners) { _.each(winners, function (winner) { if (!winner.ListImage) { winner.ListImage = GlobalSettings.CurrentLanguage === "ru" ? "/Content/img/barrel-ru-210-220.png" : "/Content/img/barrel-eng-210-220.png"; } self.Winners.push(winner); }); self.WinnersCount(self.Winners().length); } self.IsActivePage = function (value) { return $.inArray(value, self.LoadedPages()) >= 0; } if (window.location.hash.includes("loadAll=true")) { ko.PaginationViewModel.call(self, Constants.WinnersPageSize, self.AllWinnersCount, settings.winnersListWidgetSelector, loadAllWinners); } else { ko.PaginationViewModel.call(self, Constants.WinnersPageSize, self.AllWinnersCount, settings.winnersListWidgetSelector, loadWinners); } self.ClearWinners = function() { self.Winners.removeAll(); self.WinnersCount(0); } }; var resetFilter = function($widget) { $widget.find(".search-control").val(""); } var prepareLists = function() { var $winnerListWidgets = $(settings.winnersListWidgetSelector); _.each($winnerListWidgets, function (winnerList, index) { try { var $winnerListWidget = $(winnerList); var resultsVm = new WinnerListViewModel(index); if (window.location.hash.includes("loadAll=true")) { loadAllWinners(resultsVm, $winnerListWidget); } $winnerListWidget.find(settings.listFilterBtnSelector).on("click", function () { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadWinners(resultsVm, $winnerListWidget, 0, false); }); $winnerListWidget.find(settings.queryInputSelector).on("keypress", function(e) { if ((event.keyCode || event.which) == 13) { resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadWinners(resultsVm, $winnerListWidget, 0, false); } }); $winnerListWidget.on("click", settings.loadMoreButtonSelector, function () { var page = resultsVm.CurrentPage(); resultsVm.CurrentPage(page + 1); resultsVm.LoadedPages.push(page); loadWinners(resultsVm, $winnerListWidget, resultsVm.WinnersCount(), false); }); $winnerListWidget.on("click", settings.loadAllButtonSelector, function () { loadAllWinners(resultsVm, $winnerListWidget); }); onChangeFilter($winnerListWidget); $winnerListWidget.find(settings.applicationSelector).find("input").on('change', function () { onChangeFilter($winnerListWidget); }); $winnerListWidget.find(settings.typeSelector).find("input").on('change', function () { onChangeFilter($winnerListWidget); }); $winnerListWidget.find(settings.viscositySelector).find("input").on('change', function () { onChangeFilter($winnerListWidget); }); var tabs = $winnerListWidget.find(".nav-tabs li"); tabs.on("click", function () { _.each(tabs, function(tab) { $(tab).removeClass("active"); }); $(this).addClass("active"); resultsVm.LoadedPages.removeAll(); resultsVm.CurrentPage(1); loadWinners(resultsVm, $winnerListWidget, 0, false); }); $winnerListWidget.find(settings.resetButtonSelector).on("click", function () { resetFilter($winnerListWidget); }); var winnerData = null; var $jsonContainers = $winnerListWidget.find(".winners-data"); if ($jsonContainers && $jsonContainers.length > 0) { var $jsonContainer = $($jsonContainers[0]); winnerData = JSON.parse($jsonContainer.text() || $jsonContainer.html()); resultsVm.Skipped(winnerData.Skipped); resultsVm.CurrentPage(Math.floor(resultsVm.Skipped() / resultsVm.PageSize()) + 1); resultsVm.AddWinners(winnerData.Items); resultsVm.AllWinnersCount(winnerData.Count); } if (!winnerData) { $winnerListWidget.remove(); } else { var resultContainer = $winnerListWidget.find(settings.resultsContainerSelector)[0]; ko.cleanNode(resultContainer); updateSearchParams(resultsVm, $winnerListWidget); var widgetGuid = $winnerListWidget.attr("data-widget-guid"); $(".server-rendered-" + widgetGuid).remove(); ko.applyBindings(resultsVm, resultContainer); $.createDownloadPopover($winnerListWidget); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render winner list #" + (index + 1)); } } }); }; var prepareInfoPages = function () { var $infoPages = $(settings.winnerInfoPageWidgetSelector); _.each($infoPages, function (infoPage, index) { try { var $infoPage = $(infoPage); var winnerName = $infoPage.data("name"); if (winnerName) { $(".page-title h1").text(winnerName); $(".breadcrumb .active span").text(winnerName); } } catch (e) { if (window.console && window.console.log) { console.log("Failed to render winner info page #" + (index + 1)); } } }); }; Winners.run = function () { prepareLists(); prepareInfoPages(); }; Winners.on("start", function (options) { Winners.run(); }); });;