/* ------------------------------------------------ Project: Softino - Software Landing Page HTML5 Template Author: ThemeHt ------------------------------------------------ */ /* ------------------------ Table of Contents 1. Predefined Variables 2. Preloader 3. FullScreen 4. Counter 5. Owl carousel 6. Testimonial Carousel 7. Magnific Popup 8. Scroll to top 9. Banner Section 10. Fixed Header 11. Scrolling Animation 12. Text Color, Background Color And Image 13. Accordian 14. Contact Form 15. ProgressBar 16. Countdown 17. Wow Animation 18. HT Window load and functions ------------------------ */ "use strict"; /*------------------------------------ HT Predefined Variables --------------------------------------*/ var $window = $(window), $document = $(document), $body = $('body'), $fullScreen = $('.fullscreen-banner') || $('.section-fullscreen'), $halfScreen = $('.halfscreen-banner'), searchActive = false; //Check if function exists $.fn.exists = function () { return this.length > 0; }; /*------------------------------------ HT PreLoader --------------------------------------*/ function preloader() { $('#ht-preloader').delay(0).fadeOut(); }; /*------------------------------------ HT FullScreen --------------------------------------*/ function fullScreen() { if ($fullScreen.exists()) { $fullScreen.each(function () { var $elem = $(this), elemHeight = $window.height(); if($window.width() < 768 ) $elem.css('height', elemHeight/ 1); else $elem.css('height', elemHeight); }); } if ($halfScreen.exists()) { $halfScreen.each(function () { var $elem = $(this), elemHeight = $window.height(); $elem.css('height', elemHeight / 2); }); } }; /*------------------------------------ HT menu --------------------------------------*/ function menu() { $('#main-menu').smartmenus(); }; /*------------------------------------ HT Counter --------------------------------------*/ function counter() { $('.count-number').countTo({ refreshInterval: 2 }); }; /*------------------------------------ HT Owl Carousel --------------------------------------*/ function owlcarousel() { $('.owl-carousel').each( function() { var $carousel = $(this); $carousel.owlCarousel({ items : $carousel.data("items"), slideBy : $carousel.data("slideby"), center : $carousel.data("center"), loop : true, margin : $carousel.data("margin"), dots : $carousel.data("dots"), nav : $carousel.data("nav"), autoplay : $carousel.data("autoplay"), autoplayTimeout : $carousel.data("autoplay-timeout"), navText : [ '', '' ], responsive: { 0:{items: $carousel.data('xs-items') ? $carousel.data('xs-items') : 1}, 576:{items: $carousel.data('sm-items')}, 768:{items: $carousel.data('md-items')}, 1024:{items: $carousel.data('lg-items')}, 1200:{items: $carousel.data("items")} }, }); }); }; /*------------------------------------ HT Testimonial Carousel --------------------------------------*/ function testimonialcarousel() { $('.testimonial-carousel').on('slide.bs.carousel', function (evt) { $('.testimonial-carousel .controls li.active').removeClass('active'); $('.testimonial-carousel .controls li:eq('+$(evt.relatedTarget).index()+')').addClass('active'); }) }; /*------------------------------------ HT Magnific Popup --------------------------------------*/ function magnificpopup() { $('.popup-gallery').magnificPopup({ delegate: 'a.popup-img', type: 'image', tLoading: 'Loading image #%curr%...', mainClass: 'mfp-img-mobile', gallery: { enabled: true, navigateByImgClick: true, preload: [0,1] // Will preload 0 - before current, and 1 after the current image }, image: { tError: 'The image #%curr% could not be loaded.', titleSrc: function(item) { return item.el.attr('title') + 'by Marsel Van Oosten'; } } }); if ($(".popup-youtube, .popup-vimeo, .popup-gmaps").exists()) { $('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({ disableOn: 700, type: 'iframe', mainClass: 'mfp-fade', removalDelay: 160, preloader: false, fixedContentPos: false }); } }; /*------------------------------------ HT Scroll to top --------------------------------------*/ function scrolltop() { var pxShow = 300, goTopButton = $(".scroll-top") // Show or hide the button if ($(window).scrollTop() >= pxShow) goTopButton.addClass('scroll-visible'); $(window).on('scroll', function () { if ($(window).scrollTop() >= pxShow) { if (!goTopButton.hasClass('scroll-visible')) goTopButton.addClass('scroll-visible') } else { goTopButton.removeClass('scroll-visible') } }); $('.smoothscroll').on('click', function (e) { $('body,html').animate({ scrollTop: 0 }, 1000); return false; }); }; /*------------------------------------ HT Banner Section --------------------------------------*/ function headerheight() { $('.fullscreen-banner .align-center, .nav-arrows span').each(function(){ var headerHeight=$('.header').height(); // headerHeight+=15; // maybe add an offset too? $(this).css('padding-top',headerHeight+'px'); }); }; /*------------------------------------ HT Fixed Header --------------------------------------*/ function fxheader() { $(window).on('scroll', function () { if ($(window).scrollTop() >= 100) { $('#header-wrap').addClass('fixed-header'); } else { $('#header-wrap').removeClass('fixed-header'); } }); }; /*------------------------------------ HT Scrolling Animation --------------------------------------*/ function scrolling() { $('.nav-item a[href*="#"]:not([href="#"])').on('click', function() { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); if (target.length) { $('html, body').animate({ scrollTop: (target.offset().top - 54) }, 1000, "easeInOutExpo"); return false; } } }); // Closes responsive menu when a scroll trigger link is clicked $('.nav-item a[href*="#"]:not([href="#"])').on('click', function() { $('.navbar-collapse').collapse('hide'); }); // Activate scrollspy to add active class to navbar items on scroll $('body').scrollspy({ target: '.navbar', offset: 80 }); }; /*------------------------------------------ HT Text Color, Background Color And Image ---------------------------------------------*/ function databgcolor() { $('[data-bg-color]').each(function(index, el) { $(el).css('background-color', $(el).data('bg-color')); }); $('[data-text-color]').each(function(index, el) { $(el).css('color', $(el).data('text-color')); }); $('[data-bg-img]').each(function() { $(this).css('background-image', 'url(' + $(this).data("bg-img") + ')'); }); }; /*------------------------------------ HT Accordian --------------------------------------*/ function accordian() { $(".card").on("show.bs.collapse hide.bs.collapse", function(e) { if (e.type=='show'){ $(this).addClass('active'); }else{ $(this).removeClass('active'); } }); $('.accordion .card-header a').prepend(''); }; /*------------------------------------ HT Contact Form --------------------------------------*/ function contactform() { $('#contact-form').validator(); // when the form is submitted $('#contact-form').on('submit', function (e) { // if the validator does not prevent form submit if (!e.isDefaultPrevented()) { var url = "php/contact.php"; // POST values in the background the the script URL $.ajax({ type: "POST", url: url, data: $(this).serialize(), success: function (data) { // data = JSON object that contact.php returns // we recieve the type of the message: success x danger and apply it to the var messageAlert = 'alert-' + data.type; var messageText = data.message; // let's compose Bootstrap alert box HTML var alertBox = '
' + messageText + '
'; // If we have messageAlert and messageText if (messageAlert && messageText) { // inject the alert to .messages div in our form $('#contact-form').find('.messages').html(alertBox).show().delay(2000).fadeOut('slow'); // empty the form $('#contact-form')[0].reset(); } } }); return false; } }) }; /*------------------------------------ HT ProgressBar --------------------------------------*/ function progressbar () { var progressBar = $('.progress'); if(progressBar.length) { progressBar.each(function () { var Self = $(this); Self.appear(function () { var progressValue = Self.data('value'); Self.find('.progress-bar').animate({ width:progressValue+'%' }, 1000); }); }) } }; /*------------------------------------ HT Search --------------------------------------*/ function search() { if($('.search-form').length) { var searchForm = $('.search-form'); var searchInput = $('.search-input'); var searchButton = $('.search-button'); searchButton.on('click', function(event) { event.stopPropagation(); if(!searchActive) { searchForm.addClass('active'); searchActive = true; searchInput.focus(); $(document).one('click', function closeForm(e) { if($(e.target).hasClass('search-input')) { $(document).one('click', closeForm); } else { searchForm.removeClass('active'); searchActive = false; } }); } else { searchForm.removeClass('active'); searchActive = false; } }); } }; /*------------------------------------ HT Countdown --------------------------------------*/ function countdown() { $('.countdown').each(function () { var $this = $(this), finalDate = $(this).data('countdown'); $this.countdown(finalDate, function (event) { $(this).html(event.strftime('
  • %-D

    Days

  • ' + '
  • %-H

    Hours

  • ' + '
  • %-M

    Minutes

  • ' + '
  • %S

    Seconds

  • ')); }); }); }; /*------------------------------------ HT Wow Animation --------------------------------------*/ function wowanimation() { var wow = new WOW({ boxClass: 'wow', animateClass: 'animated', offset: 0, mobile: false, live: true }); wow.init(); } /*------------------------------------ HT Window load and functions --------------------------------------*/ $(document).ready(function() { fullScreen(), menu(), owlcarousel(), counter(), testimonialcarousel(), magnificpopup(), scrolltop(), headerheight(), fxheader(), scrolling(), databgcolor(), accordian(), contactform(), progressbar(), search(), countdown(); }); $window.resize(function() { fullScreen(); }); $(window).on('load', function() { preloader(), wowanimation(); });