/* ===================================================================
* Hola - Main JS
*
* ------------------------------------------------------------------- */
(function($) {
"use strict";
var cfg = {
scrollDuration : 800, // smoothscroll duration
mailChimpURL : '' // mailchimp url
},
$WIN = $(window);
// Add the User Agent to the
// will be used for IE10 detection (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0))
var doc = document.documentElement;
doc.setAttribute('data-useragent', navigator.userAgent);
/* Preloader
* -------------------------------------------------- */
var ssPreloader = function() {
$("html").addClass('ss-preload');
$WIN.on('load', function() {
// force page scroll position to top at page refresh
// $('html, body').animate({ scrollTop: 0 }, 'normal');
// will first fade out the loading animation
$("#loader").fadeOut("slow", function() {
// will fade out the whole DIV that covers the website.
$("#preloader").delay(300).fadeOut("slow");
});
// for hero content animations
$("html").removeClass('ss-preload');
$("html").addClass('ss-loaded');
});
};
/* pretty print
* -------------------------------------------------- */
var ssPrettyPrint = function() {
$('pre').addClass('prettyprint');
$( document ).ready(function() {
prettyPrint();
});
};
/* Move header
* -------------------------------------------------- */
var ssMoveHeader = function () {
var hero = $('.page-hero'),
hdr = $('header'),
triggerHeight = hero.outerHeight() - 170;
$WIN.on('scroll', function () {
var loc = $WIN.scrollTop();
if (loc > triggerHeight) {
hdr.addClass('sticky');
} else {
hdr.removeClass('sticky');
}
if (loc > triggerHeight + 20) {
hdr.addClass('offset');
} else {
hdr.removeClass('offset');
}
if (loc > triggerHeight + 150) {
hdr.addClass('scrolling');
} else {
hdr.removeClass('scrolling');
}
});
// $WIN.on('resize', function() {
// if ($WIN.width() <= 768) {
// hdr.removeClass('sticky offset scrolling');
// }
// });
};
/* Mobile Menu
* ---------------------------------------------------- */
var ssMobileMenu = function() {
var toggleButton = $('.header-menu-toggle'),
nav = $('.header-nav-wrap');
toggleButton.on('click', function(event){
event.preventDefault();
toggleButton.toggleClass('is-clicked');
nav.slideToggle();
});
if (toggleButton.is(':visible')) nav.addClass('mobile');
$WIN.on('resize', function() {
if (toggleButton.is(':visible')) nav.addClass('mobile');
else nav.removeClass('mobile');
});
nav.find('a').on("click", function() {
if (nav.hasClass('mobile')) {
toggleButton.toggleClass('is-clicked');
nav.slideToggle();
}
});
};
/* Masonry
* ---------------------------------------------------- */
var ssMasonryFolio = function () {
var containerBricks = $('.masonry');
containerBricks.imagesLoaded(function () {
containerBricks.masonry({
itemSelector: '.masonry__brick',
resize: true
});
});
};
/* photoswipe
* ----------------------------------------------------- */
var ssPhotoswipe = function() {
var items = [],
$pswp = $('.pswp')[0],
$folioItems = $('.item-folio');
// get items
$folioItems.each( function(i) {
var $folio = $(this),
$thumbLink = $folio.find('.thumb-link'),
$title = $folio.find('.item-folio__title'),
$caption = $folio.find('.item-folio__caption'),
$titleText = '
' + $.trim($title.html()) + '
',
$captionText = $.trim($caption.html()),
$href = $thumbLink.attr('href'),
$size = $thumbLink.data('size').split('x'),
$width = $size[0],
$height = $size[1];
var item = {
src : $href,
w : $width,
h : $height
}
if ($caption.length > 0) {
item.title = $.trim($titleText + $captionText);
}
items.push(item);
});
// bind click event
$folioItems.each(function(i) {
$(this).on('click', function(e) {
e.preventDefault();
var options = {
index: i,
showHideOpacity: true
}
// initialize PhotoSwipe
var lightBox = new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options);
lightBox.init();
});
});
};
/* slick slider
* ------------------------------------------------------ */
var ssSlickSlider = function() {
$('.testimonials__slider').slick({
arrows: true,
dots: false,
infinite: true,
slidesToShow: 2,
slidesToScroll: 1,
prevArrow: "
",
nextArrow: "
",
pauseOnFocus: false,
autoplaySpeed: 1500,
responsive: [
{
breakpoint: 900,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}
]
});
};
/* Highlight the current section in the navigation bar
* ------------------------------------------------------ */
var ssWaypoints = function() {
var sections = $(".target-section"),
navigation_links = $(".header-nav li a");
sections.waypoint( {
handler: function(direction) {
var active_section;
active_section = $('section#' + this.element.id);
if (direction === "up") active_section = active_section.prevAll(".target-section").first();
var active_link = $('.header-nav li a[href="#' + active_section.attr("id") + '"]');
navigation_links.parent().removeClass("current");
active_link.parent().addClass("current");
},
offset: '25%'
});
};
/* Stat Counter
* ------------------------------------------------------ */
var ssStatCount = function() {
var statSection = $(".s-stats"),
stats = $(".stats__count");
statSection.waypoint({
handler: function(direction) {
if (direction === "down") {
stats.each(function () {
var $this = $(this);
$({ Counter: 0 }).animate({ Counter: $this.text() }, {
duration: 4000,
easing: 'swing',
step: function (curValue) {
$this.text(Math.ceil(curValue));
}
});
});
}
// trigger once only
this.destroy();
},
offset: "90%"
});
};
/* Smooth Scrolling
* ------------------------------------------------------ */
var ssSmoothScroll = function() {
$('.smoothscroll').on('click', function (e) {
var target = this.hash,
$target = $(target);
e.preventDefault();
e.stopPropagation();
$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, cfg.scrollDuration, 'swing', function () {
window.location.hash = target;
});
});
};
/* Placeholder Plugin Settings
* ------------------------------------------------------ */
var ssPlaceholder = function() {
$('input, textarea, select').placeholder();
};
/* Alert Boxes
* ------------------------------------------------------ */
var ssAlertBoxes = function() {
$('.alert-box').on('click', '.alert-box__close', function() {
$(this).parent().fadeOut(500);
});
};
/* Contact Form
* ------------------------------------------------------ */
var ssContactForm = function() {
/* local validation */
$('#contactForm').validate({
/* submit via ajax */
submitHandler: function(form) {
var sLoader = $('.submit-loader');
$.ajax({
type: "POST",
url: "inc/sendEmail.php",
data: $(form).serialize(),
beforeSend: function() {
sLoader.slideDown("slow");
},
success: function(msg) {
// Message was sent
if (msg == 'OK') {
sLoader.slideUp("slow");
$('.message-warning').fadeOut();
$('#contactForm').fadeOut();
$('.message-success').fadeIn();
}
// There was an error
else {
sLoader.slideUp("slow");
$('.message-warning').html(msg);
$('.message-warning').slideDown("slow");
}
},
error: function() {
sLoader.slideUp("slow");
$('.message-warning').html("Something went wrong. Please try again.");
$('.message-warning').slideDown("slow");
}
});
}
});
};
/* Back to Top
* ------------------------------------------------------ */
var ssBackToTop = function() {
var pxShow = 500, // height on which the button will show
fadeInTime = 400, // how slow/fast you want the button to show
fadeOutTime = 400, // how slow/fast you want the button to hide
scrollSpeed = 300, // how slow/fast you want the button to scroll to top. can be a value, 'slow', 'normal' or 'fast'
goTopButton = $(".go-top")
// Show or hide the sticky footer button
$(window).on('scroll', function() {
if ($(window).scrollTop() >= pxShow) {
goTopButton.fadeIn(fadeInTime);
} else {
goTopButton.fadeOut(fadeOutTime);
}
});
};
/* Initialize
* ------------------------------------------------------ */
(function ssInit() {
ssPreloader();
ssPrettyPrint();
ssMoveHeader();
ssMobileMenu();
ssMasonryFolio();
ssPhotoswipe();
ssSlickSlider();
ssWaypoints();
ssStatCount();
ssSmoothScroll();
ssPlaceholder();
ssAlertBoxes();
ssContactForm();
ssBackToTop();
})();
})(jQuery);