$(document).ready(function(){ $(".carousel-reference").slick({ slidesToShow: 4, dots: false, arrows: true, infinite: false, nextArrow: '', prevArrow: '', responsive: [{ breakpoint: 1500, settings: { slidesToShow: 3, } },{ breakpoint: 980, settings: { slidesToShow: 2, } },{ breakpoint: 760, settings: { slidesToShow: 1.3, } }] }); $(".main-slider.slider-container").slick({ slidesToShow: 1, dots: true, arrows: false, slidesToScroll: 1, autoplay: true, autoplaySpeed: 2000, infinite: true, }); $(".reference-carousel").slick({ slidesToShow: 1, dots: false, arrows: false, slidesToScroll: 1, autoplay: true, autoplaySpeed: 500, infinite: true, fade: true, cssEase: 'linear' }); $(".reference-carousel").slick('pause'); $(".carousel-box").hover(function() { $(this).children(":first").slick('play') }, function(){ $(this).children(":first").slick('pause') }) if($('.main-slider.slider-container').length){ document.querySelector('.slider-overlay').querySelectorAll('img')[0].classList.add("active"); $('.main-slider.slider-container').on('beforeChange', function (event, slick, currentSlide, nextSlide) { $('.slider-text-container div a').removeClass("no-active"); $('.slider-text-container div a').eq(currentSlide).removeClass("active"); $('.slider-text-container div a').eq(currentSlide).addClass("no-active"); document.querySelector('.slider-text-container div').querySelectorAll('a')[nextSlide].classList.add("active"); document.querySelector('.slider-overlay').querySelectorAll('img')[currentSlide].classList.remove("active"); document.querySelector('.slider-overlay').querySelectorAll('img')[nextSlide].classList.add("active"); });} $(".mini-slider .slider-container").slick({ slidesToShow: 1, dots: true, arrows: false, infinite: false, }) $(".project-carousel").slick({ slidesToShow: 3, vertical: true, verticalSwiping: true, dots: false, arrows: true, infinite: false, nextArrow: '', prevArrow: '', responsive: [{ breakpoint: 1500, settings: { slidesToShow: 3 } },{ breakpoint: 980, settings: { slidesToShow: 2, vertical: false, verticalSwiping: false, } },{ breakpoint: 760, settings: { slidesToShow: 2, vertical: false, verticalSwiping: false, autoplay: true, autospeed: 1000 } }] }); $(".hamby").click(function(){ if($(this).hasClass("active")) { $(this).removeClass("active") $("nav").removeClass("active") $("body, html").css({"overflow-y" : "unset"}) } else { $(this).addClass("active") $("nav").addClass("active") $("body, html").css({"overflow-y" : "hidden"}) } }); $(".multiselect").click(function(){ if($(this).hasClass("active")) { $(this).removeClass("active") } else { $(".multiselect").removeClass("active") $(this).addClass("active") } }) $(".close").click(function(){ $(".filters").removeClass("active") }) $(".mobile-filters").click(function(){ $(".filters").addClass("active") }) var lastScrollTop = 0; // element should be replaced with the actual target element on which you have applied scroll, use window in case of no target element. window.addEventListener("scroll", function(){ // or window.addEventListener("scroll".... var st = window.pageYOffset || document.documentElement.scrollTop; // Credits: "https://github.com/qeremy/so/blob/master/so.dom.js#L426" if (st > lastScrollTop) { $("header").addClass("scroll-down") $("header").removeClass("scroll-up") } else if (st < lastScrollTop || st < 100) { $("header").addClass("scroll-up") $("header").removeClass("scroll-down") } lastScrollTop = st <= 0 ? 0 : st; }, false); var active = 0; $(".companies-nav li").click(function(){ if($(this).index() != active) { active = $(this).index() $(".companies-nav li").removeClass("active"); $(this).addClass("active"); $(".companies-elements").removeClass("active"); $(".companies-elements").eq(active).addClass("active"); } }) // Get the current page URL var currentPageURL = window.location.href; // Check links in the navigation $('nav a').each(function () { var href = $(this).attr('href'); if (currentPageURL.indexOf(href) !== -1) { $(this).addClass('active'); } }); $('div.footer-links a').each(function () { var href = $(this).attr('href'); if ((href === '/' && (currentPageURL === 'https://www.lavcevic.hr/' || currentPageURL === 'https://www.lavcevic.hr'))) { $(this).addClass('active'); } else if (currentPageURL.indexOf(href) !== -1 && href !== '/') { $(this).addClass('active'); } }); }); document.addEventListener("DOMContentLoaded", function() { const animationContainers = document.querySelectorAll(".animation-container"); const observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { animateChildren(entry.target); startCounterAnimation(entry.target); } }); }, { threshold: 0.5 }); animationContainers.forEach(container => { observer.observe(container); }); function animateChildren(container) { let elementTime = 0; container.querySelectorAll(":scope > *").forEach(child => { setTimeout(() => { child.classList.add("animation-active"); }, elementTime); elementTime += 300; // Adjust the delay between elements }); } function startCounterAnimation(container) { const animatedElements = container.querySelectorAll('.number'); animatedElements.forEach((animatedElement, index) => { if (!animatedElement.dataset.counterAnimated) { const delay = animatedElement.dataset.delay ? parseInt(animatedElement.dataset.delay) * 1000 : 0; // Convert seconds to milliseconds setTimeout(() => { animateCounter(animatedElement, parseInt(animatedElement.dataset.to, 10), parseInt(animatedElement.dataset.duration, 10)); animatedElement.dataset.counterAnimated = true; // Set the flag for the current .number element }, delay + index * 300); // Adjust the delay for each element } }); } }); function animateCounter(element, targetValue, duration) { const startTime = performance.now(); let currentCounterValue = 0; // Initial value function updateCounter(currentTime) { const elapsed = currentTime - startTime; const progress = Math.min(elapsed / duration, 1); currentCounterValue = Math.floor(progress * targetValue); element.textContent = currentCounterValue; // Convert to string before setting if (progress < 1) { requestAnimationFrame(updateCounter); } } requestAnimationFrame(updateCounter); }