"use strict";
(function () {
	// Global variables
	var userAgent = navigator.userAgent.toLowerCase(),
		$html = $("html"),
		isIE =
			userAgent.indexOf("msie") !== -1
				? parseInt(userAgent.split("msie")[1], 10)
				: userAgent.indexOf("trident") !== -1
					? 11
					: userAgent.indexOf("edge") !== -1
						? 12
						: false,
		isNoviBuilder = false,
		plugins = {
			rdNavbar: $(".rd-navbar"),
			swiper: $(".swiper-slider"),
			lightGallery: $('[data-lightgallery="group"]'),
			lightGalleryItem: $('[data-lightgallery="item"]'),
			lightDynamicGalleryItem: $('[data-lightgallery="dynamic"]'),
			slick: $(".slick-slider"),
		};

	// Initialize scripts
	$(function () {
		// IE Polyfills
		if (isIE) {
			if (isIE === 12) $html.addClass("ie-edge");
			if (isIE === 11) $html.addClass("ie-11");
			if (isIE < 10) $html.addClass("lt-ie-10");
			if (isIE < 11) $html.addClass("ie-10");
		}

		// right toolbox scroll
		$('.scroll-top').click(function () { $('html,body').animate({ scrollTop: '0px' }, 800); });
		$('.online dl').on("mouseover", function () {
			$(this).find("dt").show();
			$(this).siblings().find("dt").hide();
		});
		$('.online dl').find('.remove').on("click", function () {
			$(this).parents("dt").hide();
		});
		$(window).scroll(function () {
			if ($(document).scrollTop() <= 100) {
				$('.online .scroll-top').hide();
			} else {
				$('.online .scroll-top').show();
			}
		});

		// RD Navbar
		if (plugins.rdNavbar.length) {
			var aliaces, i, j, len, value, values, responsiveNavbar;

			aliaces = ["-", "-sm-", "-md-", "-lg-", "-xl-", "-xxl-"];
			values = [0, 576, 768, 992, 1200, 1600];
			responsiveNavbar = {};

			for (i = j = 0, len = values.length; j < len; i = ++j) {
				value = values[i];
				if (!responsiveNavbar[values[i]]) {
					responsiveNavbar[values[i]] = {};
				}
				if (plugins.rdNavbar.attr("data" + aliaces[i] + "layout")) {
					responsiveNavbar[values[i]].layout = plugins.rdNavbar.attr(
						"data" + aliaces[i] + "layout"
					);
				}
				if (plugins.rdNavbar.attr("data" + aliaces[i] + "device-layout")) {
					responsiveNavbar[values[i]]["deviceLayout"] = plugins.rdNavbar.attr(
						"data" + aliaces[i] + "device-layout"
					);
				}
				if (plugins.rdNavbar.attr("data" + aliaces[i] + "hover-on")) {
					responsiveNavbar[values[i]]["focusOnHover"] =
						plugins.rdNavbar.attr("data" + aliaces[i] + "hover-on") === "true";
				}
				if (plugins.rdNavbar.attr("data" + aliaces[i] + "auto-height")) {
					responsiveNavbar[values[i]]["autoHeight"] =
						plugins.rdNavbar.attr("data" + aliaces[i] + "auto-height") ===
						"true";
				}
				if (isNoviBuilder) {
					responsiveNavbar[values[i]]["stickUp"] = false;
				} else if (plugins.rdNavbar.attr("data" + aliaces[i] + "stick-up")) {
					responsiveNavbar[values[i]]["stickUp"] =
						plugins.rdNavbar.attr("data" + aliaces[i] + "stick-up") === "true";
				}

				if (plugins.rdNavbar.attr("data" + aliaces[i] + "stick-up-offset")) {
					responsiveNavbar[values[i]]["stickUpOffset"] = plugins.rdNavbar.attr(
						"data" + aliaces[i] + "stick-up-offset"
					);
				}
			}

			plugins.rdNavbar.RDNavbar({
				anchorNav: !isNoviBuilder,
				stickUpClone:
					plugins.rdNavbar.attr("data-stick-up-clone") && !isNoviBuilder
						? plugins.rdNavbar.attr("data-stick-up-clone") === "true"
						: false,
				responsive: responsiveNavbar,
				callbacks: {
					onStuck: function () {
						var navbarSearch = this.$element.find(".rd-search input");

						if (navbarSearch) {
							navbarSearch.val("").trigger("propertychange");
						}
					},
					onDropdownOver: function () {
						return !isNoviBuilder;
					},
					onUnstuck: function () {
						if (this.$clone === null) return;

						var navbarSearch = this.$clone.find(".rd-search input");

						if (navbarSearch) {
							navbarSearch.val("").trigger("propertychange");
							navbarSearch.trigger("blur");
						}
					},
				},
			});

			if (plugins.rdNavbar.attr("data-body-class")) {
				document.body.className +=
					" " + plugins.rdNavbar.attr("data-body-class");
			}
		}

		/**
		 * @desc Initialize the gallery with set of images
		 * @param {object} itemsToInit - jQuery object
		 * @param {string} addClass - additional gallery class
		 */
		function initLightGallery(itemsToInit, addClass) {
			if (!isNoviBuilder) {
				$(itemsToInit).lightGallery({
					thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "false",
					selector: "[data-lightgallery='item']",
					autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true",
					pause:
						parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000,
					addClass: addClass,
					mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide",
					loop: $(itemsToInit).attr("data-lg-loop") !== "false",
					showThumbByDefault: false,
				});
			}
		}

		/**
		 * @desc Initialize the gallery with dynamic addition of images
		 * @param {object} itemsToInit - jQuery object
		 * @param {string} addClass - additional gallery class
		 */
		function initDynamicLightGallery(itemsToInit, addClass) {
			if (!isNoviBuilder) {
				$(itemsToInit).on("click", function () {
					$(itemsToInit).lightGallery({
						thumbnail: $(itemsToInit).attr("data-lg-thumbnail") !== "false",
						selector: "[data-lightgallery='item']",
						autoplay: $(itemsToInit).attr("data-lg-autoplay") === "true",
						pause:
							parseInt($(itemsToInit).attr("data-lg-autoplay-delay")) || 5000,
						addClass: addClass,
						mode: $(itemsToInit).attr("data-lg-animation") || "lg-slide",
						loop: $(itemsToInit).attr("data-lg-loop") !== "false",
						dynamic: true,
						dynamicEl:
							JSON.parse($(itemsToInit).attr("data-lg-dynamic-elements")) || [],
					});
				});
			}
		}

		/**
		 * @desc Initialize the gallery with one image
		 * @param {object} itemToInit - jQuery object
		 * @param {string} addClass - additional gallery class
		 */
		function initLightGalleryItem(itemToInit, addClass) {
			if (!isNoviBuilder) {
				$(itemToInit).lightGallery({
					selector: "this",
					addClass: addClass,
					counter: false,
					youtubePlayerParams: {
						modestbranding: 1,
						showinfo: 0,
						rel: 0,
						controls: 0,
					},
					vimeoPlayerParams: {
						byline: 0,
						portrait: 0,
					},
				});
			}
		}

		// lightGallery
		if (plugins.lightGallery.length) {
			for (var i = 0; i < plugins.lightGallery.length; i++) {
				initLightGallery(plugins.lightGallery[i]);
			}
		}

		// lightGallery item
		if (plugins.lightGalleryItem.length) {
			// Filter carousel items
			var notCarouselItems = [];

			for (var z = 0; z < plugins.lightGalleryItem.length; z++) {
				if (
					!$(plugins.lightGalleryItem[z]).parents(".owl-carousel").length &&
					!$(plugins.lightGalleryItem[z]).parents(".swiper-slider").length &&
					!$(plugins.lightGalleryItem[z]).parents(".slick-slider").length
				) {
					notCarouselItems.push(plugins.lightGalleryItem[z]);
				}
			}

			plugins.lightGalleryItem = notCarouselItems;

			for (var i = 0; i < plugins.lightGalleryItem.length; i++) {
				initLightGalleryItem(plugins.lightGalleryItem[i]);
			}
		}

		// Dynamic lightGallery
		if (plugins.lightDynamicGalleryItem.length) {
			for (var i = 0; i < plugins.lightDynamicGalleryItem.length; i++) {
				initDynamicLightGallery(plugins.lightDynamicGalleryItem[i]);
			}
		}

		// Slick carousel
		if (plugins.slick.length) {
			var i;
			for (i = 0; i < plugins.slick.length; i++) {
				var $slickItem = $(plugins.slick[i]);

				$slickItem
					.slick({
						slidesToScroll:
							parseInt($slickItem.attr("data-slide-to-scroll")) || 1,
						asNavFor: $slickItem.attr("data-for") || false,
						dots: $slickItem.attr("data-dots") == "true",
						infinite: isNoviBuilder
							? false
							: $slickItem.attr("data-loop") == "true",
						focusOnSelect: true,
						arrows: true,
						swipe: true,
						autoplay: $slickItem.attr("data-autoplay") == "true",
						vertical: $slickItem.attr("data-vertical") == "true",
						centerMode: $slickItem.attr("data-center-mode") == "true",
						centerPadding: $slickItem.attr("data-center-padding")
							? $slickItem.attr("data-center-padding")
							: "0.50",
						mobileFirst: true,
						responsive: [
							{
								breakpoint: 0,
								settings: {
									slidesToShow: parseInt($slickItem.attr("data-items")) || 1,
								},
							},
							{
								breakpoint: 575,
								settings: {
									slidesToShow: parseInt($slickItem.attr("data-xs-items")) || 1,
								},
							},
							{
								breakpoint: 767,
								settings: {
									slidesToShow: parseInt($slickItem.attr("data-sm-items")) || 1,
								},
							},
							{
								breakpoint: 991,
								settings: {
									slidesToShow: parseInt($slickItem.attr("data-md-items")) || 1,
								},
							},
							{
								breakpoint: 1199,
								settings: {
									slidesToShow: parseInt($slickItem.attr("data-lg-items")) || 1,
									swipe: false,
								},
							},
						],
					})
					.on("afterChange", function (event, slick, currentSlide, nextSlide) {
						var $this = $(this),
							childCarousel = $this.attr("data-child");

						if (childCarousel) {
							$(childCarousel + " .slick-slide").removeClass("slick-current");
							$(childCarousel + " .slick-slide")
								.eq(currentSlide)
								.addClass("slick-current");
						}
					});
			}
		}

		// Animate captions
		function initCaptionAnimate(swiper) {
			var animate = function (caption) {
				return function () {
					var duration;
					if ((duration = caption.getAttribute("data-caption-duration")))
						caption.style.animationDuration = duration + "ms";
					caption.classList.remove("not-animated");
					caption.classList.add(caption.getAttribute("data-caption-animate"));
					caption.classList.add("animated");
				};
			},
				initializeAnimation = function (captions) {
					for (var i = 0; i < captions.length; i++) {
						var caption = captions[i];
						caption.classList.remove("animated");
						caption.classList.remove(
							caption.getAttribute("data-caption-animate")
						);
						caption.classList.add("not-animated");
					}
				},
				finalizeAnimation = function (captions) {
					for (var i = 0; i < captions.length; i++) {
						var caption = captions[i];
						if (caption.getAttribute("data-caption-delay")) {
							setTimeout(animate(caption), Number(1500));
						} else {
							animate(caption)();
						}
					}
				};

			// Caption parameters
			swiper.params.caption = {
				animationEvent: "slideChangeTransitionEnd",
			};

			initializeAnimation(
				swiper.$wrapperEl[0].querySelectorAll("[data-caption-animate]")
			);
			finalizeAnimation(
				swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll(
					"[data-caption-animate]"
				)
			);

			if (swiper.params.caption.animationEvent === "slideChangeTransitionEnd") {
				swiper.on(swiper.params.caption.animationEvent, function () {
					initializeAnimation(
						swiper.$wrapperEl[0].children[
							swiper.previousIndex
						].querySelectorAll("[data-caption-animate]")
					);
					finalizeAnimation(
						swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll(
							"[data-caption-animate]"
						)
					);
				});
			} else {
				swiper.on("slideChangeTransitionEnd", function () {
					initializeAnimation(
						swiper.$wrapperEl[0].children[
							swiper.previousIndex
						].querySelectorAll("[data-caption-animate]")
					);
				});

				swiper.on(swiper.params.caption.animationEvent, function () {
					finalizeAnimation(
						swiper.$wrapperEl[0].children[swiper.activeIndex].querySelectorAll(
							"[data-caption-animate]"
						)
					);
				});
			}
		}

		// Swiper
		if (plugins.swiper.length) {
			for (let i = 0; i < plugins.swiper.length; i++) {
				let sliderMarkup = plugins.swiper[i],
					swiper,
					options = {
						loop: sliderMarkup.getAttribute("data-loop") === "true" || false,
						effect: isIE
							? "slide"
							: sliderMarkup.getAttribute("data-slide-effect") || "slide",
						direction:
							sliderMarkup.getAttribute("data-direction") || "horizontal",
						speed: 1000,
						separateCaptions:
							sliderMarkup.getAttribute("data-separate-captions") === "true" ||
							false,
						simulateTouch:
							sliderMarkup.getAttribute("data-simulate-touch") && !isNoviBuilder
								? sliderMarkup.getAttribute("data-simulate-touch") === "true"
								: false,
						watchOverflow: true,
					};

				if (sliderMarkup.getAttribute("data-autoplay")) {
					options.autoplay = {
						delay: 3000,
						stopOnLastSlide: false,
						disableOnInteraction: true,
						reverseDirection: false,
					};
				}

				if (sliderMarkup.getAttribute("data-keyboard") === "true") {
					options.keyboard = {
						enabled: sliderMarkup.getAttribute("data-keyboard") === "true",
						onlyInViewport: true,
					};
				}

				if (sliderMarkup.getAttribute("data-mousewheel") === "true") {
					options.mousewheel = {
						releaseOnEdges: true,
						sensitivity: 0.1,
					};
				}

				if (
					sliderMarkup.querySelector(".swiper-button-next, .swiper-button-prev")
				) {
					options.navigation = {
						nextEl: ".swiper-button-next",
						prevEl: ".swiper-button-prev",
					};
				}

				if (sliderMarkup.querySelector(".swiper-pagination")) {
					options.pagination = {
						el: ".swiper-pagination",
						type: "bullets",
						clickable: true,
					};
				}

				if (sliderMarkup.querySelector(".swiper-scrollbar")) {
					options.scrollbar = {
						el: ".swiper-scrollbar",
						hide: true,
						draggable: true,
					};
				}

				options.on = {
					init: function () {
						setBackgrounds(this);
						initCaptionAnimate(this);
					},
				};

				swiper = new Swiper(plugins.swiper[i], options);
			}
		}
	});
})();