kreuzberg-theme/js/functions.js

765 lines
19 KiB
JavaScript

/*================================================
*
* Template name : Mono
* Version : 5.6.3
* Author : FlaTheme
* Author URL : http://themeforest.net/user/flatheme
*
* Table of Contents :
* 1. Preloaders
* 2. Scroll Animations
* 3. Background Image
* 4. Header Menu
* 5. Fullscreen Menu
* 6. SmoothScroll
* 7. ScrollToTop
* 8. Portfolio Masonry
* 9. Portfolio Grid
* 10. Slider
* 11. Blog Masonry
* 12. Masonry
* 13. Lightbox
* 14. Parallax
* 15. Countdown
* 16. Counter
* 17. Accordion
* 18. Popover
* 19. Tooltip
* 20. Easy Pie Chart
* 21. Google Maps
* 22. Contact Form
* 23. Shop
*
===============================================*/
"use strict";
var $htmlBody = $("html,body");
var $body = $("body");
var $windowWidth = $(window).width();
/*===============================================
1. Preloaders
===============================================*/
$(window).on("load", function () {
$body.addClass("loaded");
});
if ($body.attr("data-preloader") === "1") {
$body.append($("<div class='preloader preloader-1'><div><svg class='loader-circular' viewBox='25 25 50 50'><circle class='loader-path' cx='50' cy='50' r='20'></svg></div></div>"));
}
else if ($body.attr("data-preloader") === "2") {
$body.append($("<div class='preloader preloader-2'><div><span></span></div></div>"));
}
else if ($body.attr("data-preloader") === "3") {
$body.append($("<div class='preloader preloader-3'><div><span></span></div></div>"));
}
else if ($body.attr("data-preloader") === "4") {
$body.append($("<div class='preloader preloader-4'><div><span></span></div></div>"));
}
/*===============================================
2. Scroll Animations
===============================================*/
sal({
duration: 500
});
/*===============================================
3. Background Image
===============================================*/
$(".bg-image").each(function() {
var bgData = $(this).attr("data-bg-src");
$(this).css('background-image', 'url(' +bgData+ ')');
});
/*===============================================
4. Header Menu
===============================================*/
//
// Auto Hide //
//
var c, currentScrollTop = 0, header = $(".header.sticky-autohide");
$(window).on("scroll", function () {
var a = $(window).scrollTop();
currentScrollTop = a;
if (c < currentScrollTop && a > 210) {
if (!headerMenu.hasClass("show")) {
header.addClass("hide");
}
} else if (c > currentScrollTop && !(a <= 210)) {
header.removeClass("hide");
}
c = currentScrollTop;
});
if ($(".header.sticky-autohide:not(.header-lg, .header-xl, .absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder'></div>").insertBefore(".header.sticky-autohide");
}
if ($(".header-lg.sticky-autohide:not(.absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder-lg'></div>").insertBefore(".header-lg.sticky-autohide");
}
if ($(".header-xl.sticky-autohide:not(.absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder-xl'></div>").insertBefore(".header-xl.sticky-autohide");
}
//
// Sticky //
//
if ($(".header.sticky:not(.header-lg, .header-xl, .absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder'></div>").insertBefore(".header.sticky");
}
if ($(".header-lg.sticky:not(.absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder-lg'></div>").insertBefore(".header-lg.sticky");
}
if ($(".header-xl.sticky:not(.absolute-light, .absolute-dark)").length) {
$("<div class='header-placeholder-xl'></div>").insertBefore(".header-xl.sticky");
}
//
// Absolute //
//
if ($(".absolute-light").length) {
$(window).on("scroll", function() {
var headerFixed = $(".header.sticky-autohide, .header.sticky");
if ($(window).scrollTop() > 10) {
headerFixed.removeClass("absolute-light");
}
else {
headerFixed.addClass("absolute-light");
}
});
}
if ($(".absolute-dark").length) {
$(window).on("scroll", function() {
var headerFixed = $(".header.sticky-autohide, .header.sticky");
if ($(window).scrollTop() > 10) {
headerFixed.removeClass("absolute-dark");
}
else {
headerFixed.addClass("absolute-dark");
}
});
}
//
// Open/Close Header Menu //
//
var headerMenu = $(".header-menu");
var headerToggle = $(".header-toggle");
headerToggle.on("click", function(e) {
if (headerMenu.hasClass("show")) {
headerMenu.removeClass("show");
headerToggle.removeClass("toggle-close");
}
else {
headerMenu.addClass("show");
headerToggle.addClass("toggle-close");
}
e.stopPropagation();
});
$(document).on("click", function(e) {
if ( $(e.target).closest(".nav-dropdown-toggle, .nav-subdropdown-toggle").length === 0 ) {
if (headerMenu.hasClass("show")) {
headerMenu.removeClass("show");
headerToggle.removeClass("toggle-close");
}
}
});
var navDropdown = $(".nav-dropdown");
var navSubdropdown = $(".nav-subdropdown");
navDropdown.each(function() {
var $this = $(this);
$this.parent(".nav-item").children(".nav-link").addClass("nav-dropdown-toggle");
});
navSubdropdown.each(function() {
var $this = $(this);
$this.parent(".nav-dropdown-item").children(".nav-dropdown-link").addClass("nav-subdropdown-toggle");
});
//
// Dropdown Menu //
//
var navDropdownToggle = $(".nav-dropdown-toggle");
var navSubdropdownToggle = $(".nav-subdropdown-toggle");
navDropdownToggle.each(function() {
var $this = $(this);
if ($this.parent(".nav-item").children(".nav-dropdown").length) {
var navDropdown = $this.parent(".nav-item").children(".nav-dropdown");
$this.on("click", function(e) {
if ($this.hasClass("active")) {
$this.removeClass("active");
navDropdown.removeClass("show");
}
else {
$this.addClass("active");
navDropdown.addClass("show");
}
e.preventDefault();
});
}
});
//
// Subdropdown Menu //
//
navSubdropdownToggle.each(function() {
var $this = $(this);
if ($this.parent(".nav-dropdown-item").children(".nav-subdropdown").length) {
var navSubDropdown = $this.parent(".nav-dropdown-item").children(".nav-subdropdown");
$this.on("click", function(e) {
if ($this.hasClass("active")) {
$this.removeClass("active");
navSubDropdown.removeClass("show");
}
else {
$this.addClass("active");
navSubDropdown.addClass("show");
}
e.preventDefault();
});
}
});
//
// ScrollSpy //
//
$body.scrollspy({ target: '.header-menu' });
/*===============================================
5. Fullscreen Menu
===============================================*/
var fm = $(".fullscreen-menu");
if (fm.length) {
var fmToggle = $(".fm-toggle");
var fmClose = $(".fm-close");
//
// Open //
//
fmToggle.on("click", function(e) {
if (fm.hasClass("fm-show")) {
fm.removeClass("fm-show");
}
else {
fm.addClass("fm-show");
}
e.stopPropagation();
});
//
// Close //
//
fmClose.on("click", function(e) {
fm.removeClass("fm-show");
fmToggle.removeClass("fm-toggle-hide");
});
}
/*===============================================
6. SmoothScroll
===============================================*/
$('a[href*="#"]').not('[href="#"]').not('[data-toggle="tab"]').on("click", function(e) {
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) {
event.preventDefault();
$htmlBody.animate({scrollTop: target.offset().top}, 550, "easeInOutQuart");
}
}
});
/*===============================================
7. Scroll To Top
===============================================*/
var scrollTopBtn = $(".scrolltotop");
if (scrollTopBtn.length) {
//
// Show/Hide button //
//
$(window).on("scroll", function(){
if ($(this).scrollTop() > 700) { // 700px from top
scrollTopBtn.addClass("scrolltotop-show");
}
else {
scrollTopBtn.removeClass("scrolltotop-show");
}
});
//
// Animate button //
//
scrollTopBtn.on("click", function(){
$htmlBody.animate({scrollTop : 0}, 550, "easeInOutQuart");
return false;
});
}
/*===============================================
8. Portfolio Masonry
===============================================*/
var pMasonry = $(".portfolio-wrapper:not(.row)");
if (pMasonry.length) {
pMasonry.imagesLoaded(function() {
var $pWrapper = $(".portfolio-wrapper").isotope({
itemSelector: ".portfolio-item",
transitionDuration: 300 // 0.3 second
});
var filter = $(".filter ul li");
// Portfolio Filter //
filter.on("click", function() {
var filterValue = $(this).attr("data-filter");
$pWrapper.isotope({ filter: filterValue });
filter.removeClass("active");
$(this).addClass("active");
});
});
}
/*===============================================
9. Portfolio Grid
===============================================*/
var pGrid = $(".portfolio-wrapper.row");
if (pGrid.length) {
var mixer = mixitup('.portfolio-wrapper.row', {
selectors: {
target: '.portfolio-item'
},
animation: {
duration: 300
}
});
}
/*===============================================
10. Slider
===============================================*/
$(".owl-carousel").each( function() {
var $carousel = $(this);
var $defaults = {
rewind: true,
navText: ["<i class='ti-angle-left'></i>","<i class='ti-angle-right'></i>"],
autoHeight: true,
autoplayTimeout: 4000,
autoplaySpeed: 400,
autoplayHoverPause: true,
navSpeed: 350,
dotsSpeed: 350
}
var $options = {
items: $carousel.data("owl-items"),
margin: $carousel.data("owl-margin"),
loop: $carousel.data("owl-loop"),
center: $carousel.data("owl-center"),
nav: $carousel.data("owl-nav"),
rewind: $carousel.data("owl-rewind"),
dots: $carousel.data("owl-dots"),
autoplay: $carousel.data("owl-autoplay")
}
var $responsive = {
responsive: {
0 : {
items: $carousel.data("owl-xs")
},
576 : {
items: $carousel.data("owl-sm")
},
768 : {
items: $carousel.data("owl-md")
},
992 : {
items: $carousel.data("owl-lg")
},
1200 : {
items: $carousel.data("owl-xl")
}
}
}
if ($carousel.hasClass("product-carousel")) {
var $productCarousel = {
items:1,
animateOut: 'fadeOut',
URLhashListener:true,
startPosition: 'URLHash'
}
}
$carousel.owlCarousel( $.extend( $defaults, $options, $responsive, $productCarousel) );
var customPrev = $("#customPrev");
var customNext = $("#customNext");
customNext.on("click", function(){
$carousel.trigger("next.owl.carousel", [350]);
});
customPrev.on("click", function(){
$carousel.trigger("prev.owl.carousel", [350]);
});
});
/*===============================================
11. Blog Masonry
===============================================*/
var $blogMasonry = $(".blog-masonry").imagesLoaded( function() {
$blogMasonry.masonry({
itemSelector: '.blog-post-box'
});
});
/*===============================================
12. Masonry
===============================================*/
var $masonryGrid = $(".masonry").imagesLoaded( function() {
$masonryGrid.masonry({
itemSelector: '.masonry-item'
});
});
/*===============================================
13. Lightbox
===============================================*/
//
// Lightbox - Image //
//
var $lightboxImage = $(".lightbox-image-link, .lightbox-image-box");
$lightboxImage.each(function () {
var $this = $(this);
$this.magnificPopup({
type: 'image',
fixedContentPos: false,
removalDelay: 200,
closeOnContentClick: true,
image: {
titleSrc: 'data-image-title'
}
});
});
//
// Lightbox - Media //
//
var $lightboxMedia = $(".lightbox-media-link, .lightbox-media-box");
$lightboxMedia.each(function() {
var $this = $(this);
$this.magnificPopup({
type: "iframe",
fixedContentPos: false,
removalDelay: 200,
preloader: false,
iframe: {
patterns: {
youtube: {
index: 'youtube.com/',
id: 'v=',
src: '//www.youtube.com/embed/%id%?autoplay=1&rel=0'
},
vimeo: {
index: 'vimeo.com/',
id: '/',
src: '//player.vimeo.com/video/%id%?autoplay=1'
}
},
srcAction: "iframe_src"
}
});
});
//
// Lightbox - Gallery //
//
var $gallery = $(".gallery-wrapper");
if ($gallery.length) {
$gallery.each(function() {
var $this = $(this);
$this.magnificPopup({
delegate: 'a',
removalDelay: '200',
type: 'image',
fixedContentPos: false,
gallery: {
enabled: true
},
image: {
titleSrc: 'data-gallery-title'
}
});
});
}
/*===============================================
14. Parallax
===============================================*/
if ($windowWidth > 992) {
var parallaxBg = $(".parallax");
if (parallaxBg.length) {
parallaxBg.each(function() {
$(this).parallaxie({
speed: 0.2
});
});
}
}
/*===============================================
15. Countdown
===============================================*/
//
// Countdown - Legacy style //
//
$(".countdown").each(function() {
var finalDate = $(this).attr('data-countdown');
$(this).countdown(finalDate, function(event) {
$(this).html(event.strftime(''
+ '<div><h2 class="font-weight-light margin-0">%D</h2><h6 class="font-weight-normal font-small uppercase margin-0">Days</h6></div>'
+ '<div><h2 class="font-weight-light margin-0">%H</h2><h6 class="font-weight-normal font-small uppercase margin-0">Hours</h6></div>'
+ '<div><h2 class="font-weight-light margin-0">%M</h2><h6 class="font-weight-normal font-small uppercase margin-0">Minutes</h6></div>'
+ '<div><h2 class="font-weight-light margin-0">%S</h2><h6 class="font-weight-normal font-small uppercase margin-0">Seconds</h6></div>'));
});
});
//
// Countdown - Basic style //
//
$(".countdown-basic").each(function() {
var finalDate = $(this).attr('data-countdown');
$(this).countdown(finalDate, function(event) {
$(this).html(event.strftime('%D days %H:%M:%S'));
});
});
/*===============================================
16. Counter
===============================================*/
$(".counter").appear(function() {
$(this).each(function () {
$(this).prop("Counter",0).animate({
Counter: $(this).text()
}, {
duration: 3000,
easing: "swing",
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
},{accX: 0, accY: -10});
/*===============================================
17. Accordion
===============================================*/
$(".accordion-title").each(function() {
var $this = $(this);
$this.on("click", function() {
var accordionList = $this.parent("li");
var accordionContent = this.nextElementSibling;
if (accordionList.hasClass("active")) {
accordionList.removeClass("active");
accordionContent.style.maxHeight = null;
}
else {
accordionList.addClass("active");
if ($this.closest(".accordion").hasClass("single-open")) {
$this.closest(".accordion").children("li").removeClass("active");
accordionList.addClass("active");
$this.parents(".single-open").find(".accordion-content").css("max-height", "0");
}
accordionContent.style.maxHeight = accordionContent.scrollHeight + "px";
}
});
//
// Give max-height to Accordion's active content //
//
if ($this.parents(".accordion").find("li").hasClass("active")) {
var accordionActiveContent = $this.parents(".accordion").find("li.active").children(".accordion-content");
var accordionHeight = accordionActiveContent.prop("scrollHeight");
accordionActiveContent.css({'max-height': accordionHeight + "px"});
}
});
/*===============================================
18. Popover
===============================================*/
$('[data-toggle="popover"]').popover();
/*===============================================
19. Tooltip
===============================================*/
$('[data-toggle="tooltip"]').tooltip();
/*===============================================
20. Easy Pie Chart
===============================================*/
$(".pie-chart").appear(function() {
$(this).each(function() {
$(this).easyPieChart({
lineCap: 'square',
onStep: function(from, to, percent) {
$(this.el).find('.percent').text(Math.round(percent));
}
});
});
},{accX: 0, accY: -10});
/*===============================================
21. Google Maps
===============================================*/
var mapCanvas = $(".gmap");
if (mapCanvas.length) {
var m,divId,initLatitude, initLongitude, map;
for (var i = 0; i < mapCanvas.length; i++) {
m = mapCanvas[i];
initLatitude = m.dataset["latitude"];
initLongitude = m.dataset["longitude"];
divId = "#"+ m["id"];
map = new GMaps({
el: divId,
lat: initLatitude,
lng: initLongitude,
zoom: 16,
scrollwheel: false,
styles: [
/* style your map at https://snazzymaps.com/editor and paste JSON here */
]
});
map.addMarker({
lat : initLatitude,
lng : initLongitude
});
}
}
/*===============================================
22. Contact Form
===============================================*/
$("#contactform").on("submit", function(e) {
var name = $("#name").val();
var email = $("#email").val();
var subject = $("#subject").val();
var message = $("#message").val();
if (name === "") {
$("#name").addClass("error-color");
}
if (email === "") {
$("#email").addClass("error-color");
}
if (subject === "") {
$("#subject").addClass("error-color");
}
if (message === "") {
$("#message").addClass("error-color");
}
else {
$.ajax({
url:"assets/php/contact-form.php",
data:$(this).serialize(),
type:"POST",
success:function(data){
$("#success").addClass("show-result"); //=== Show Success Message==
$("#contactform").each(function(){
this.reset();
});
},
error:function(data){
$("#error").addClass("show-result"); //===Show Error Message====
}
});
var forms = $("#contactform input, #contactform textarea");
forms.removeClass("error-color");
}
e.preventDefault();
});
/*===============================================
23. Shop
===============================================*/
$(".product-quantity .qnt").append('<a class="dec qnt-button" href="#">-</a><a class="inc qnt-button" href="#">+</a>');
$(".qnt-button").on("click", function() {
var $button = $(this);
var oldValue = $button.parent().find("input").val();
if ($button.text() == "+") {
var newVal = parseFloat(oldValue) + 1;
} else {
// Don't allow decrementing below zero
if (oldValue > 1) {
var newVal = parseFloat(oldValue) - 1;
} else {
newVal = 1;
}
}
$button.parent().find("input").val(newVal);
return false;
});