/*
Name: ikonik
Description: Responsive AJAX Enabled vCard Template
Version: 1.0
Author: pixelwars
*/
(function ($) {
"use strict";
/* global variables */
var portfolioKeyword = "";
var porftolioSingleActive = false;
var porftolioSingleJustClosed = false;
var soundEffects = false;
var overlay_1, overlay_2, one_page_content, tick;
var first_load = true;
var userClickedAutoplayDialog = false;
var homeLoaded = false;
var autoplay = false;
/* DOCUMENT LOAD */
$(function () {
// initialize
one_page_content = $(".one-page-content");
overlay_1 = $(".overlay-1");
overlay_2 = $(".overlay-2");
// ------------------------------
// SOUND EFFECTS
soundEffects = $("html").hasClass("sound-effects");
if (soundEffects) {
tick = document.createElement("audio");
tick.setAttribute("src", $("html").data("audio-tick"));
}
// ------------------------------
// SET BG IMAGES for single page header bg image
if ($(".header-wrap > img").length) {
$(".header").css(
"background-image",
"url(" + $(".header-wrap > img").attr("src") + ")"
);
}
// ------------------------------
// ONE PAGE LAYOUT FUNCTIONS
if ($("html").hasClass("one-page-layout")) {
autoplay = $('#play-music').hasClass('autoplay') ? true : false;
// add hash to links
$(".home-menu a").each(function (index, element) {
var menu_link = $(this);
var file_url = menu_link.attr("href");
var slug = menu_link.data("slug");
menu_link.attr("href", "#/" + slug);
menu_link.data("file-url", file_url);
});
$(".close-page").on("click", function (event) {
// event.preventDefault();
$.address.path("");
history.pushState("", document.title, window.location.pathname);
// Play Sound Effect
if (soundEffects) {
tick.play();
}
return false;
});
// PORTFOLIO DETAILS
// if url contains a portfolio detail url
portfolioKeyword = $("#portfolio-link").data("slug");
// FULL BROWSER BACK BUTTON SUPPORT
$.address.change(function () {
//console.log('addres changed');
var path = $.address.path();
path = path.slice(1, path.length);
// bug-fix : don't run if hash doesn't exist on first load
if (path === "" && first_load) {
first_load = false;
return;
}
first_load = false;
setActivePage();
var detailUrl = giveDetailUrl();
if (detailUrl !== -1) {
showProjectDetails(detailUrl);
} else {
// if url contains portfolio keyword
if ($.address.path().indexOf("/" + portfolioKeyword) !== -1) {
if (porftolioSingleActive) {
hideProjectDetails(true, false);
porftolioSingleJustClosed = false;
// when loaded url with portfolio single url, after closing portfolio single box; open portfolio page if it is not already opened...
if ($(".one-page-content .content-wrap").is(":empty")) {
setActivePage();
}
}
}
}
}); // end address change event
}
// ------------------------------
// ------------------------------
// HEADER FUNCTIONS
$(".search-toggle").on("click", function () {
$("html").toggleClass("is-search-toggled-on");
$(".header-search input").trigger("focus");
});
// ------------------------------
// ------------------------------
// BACK TO TOP
if ($("#back-to-top").length) {
var scrollTrigger = $(window).height() - 400, // px
backToTop = function () {
var scrollTop = $(window).scrollTop();
if (scrollTop > scrollTrigger) {
$("#back-to-top").addClass("show");
} else {
$("#back-to-top").removeClass("show");
}
};
backToTop();
$(window).on("scroll", function () {
backToTop();
});
$("#back-to-top").on("click", function (e) {
e.preventDefault();
$("html,body")
.stop()
.animate(
{
scrollTop: 0
},
700,
"easeInOutExpo"
);
});
}
// ------------------------------
// ------------------------------
// Remove no-js class
$("html").removeClass("no-js");
// Remove no-js class
$("html").addClass("ready");
// ------------------------------
// ------------------------------
// MOUSE CLCIK RIPPLE EFFECT
if ($('html').data("click-ripple-animation") === "yes") {
$("html").append('');
$("html").on("mousedown", function (e) {
$("i.ripple").addClass("active").css("left", e.pageX).css("top", e.pageY);
});
$("i.ripple").on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {
return $("i.ripple").removeClass("active");
});
}
// ------------------------------
// ------------------------------
// STICKY SIDEBAR
sticky_sidebar();
// ------------------------------
fixMarquee();
$(window).resize(function () {
fixMarquee();
sticky_sidebar_update(); // fix for : sticky sidebar overlap when resized to mobile view
});
// make portfolio grid titles clickable too ;)
$('body').on("click", ".portfolio-items .media-cell-desc h3", function () {
$(this).parent().siblings('.media-box').find('a').eq(0).trigger('click');
});
// ------------------------------
// detect ios 12 to add css fixes
function iOSversion() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
// supports iOS 2.0 and later:
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
}
}
var ver = iOSversion();
if (ver !== undefined) {
if (ver[0] >= 12) {
$('html').addClass('ios12');
} else {
$('html').addClass('not-ios12');
}
}
// ------------------------------
// ------------------------------
// SETUP
setup();
// ------------------------------
// ------------------------------
// BG MUSIC AUTOPLAY CONFIRM
if (autoplay) {
$('.bg-music-confirm').addClass('show');
$('.bg-music-confirm a').on('click', function () {
userClickedAutoplayDialog = true;
$('.bg-music-confirm').removeClass('show');
if ($(this).hasClass('bg-music-no')) {
isUserTurnedOffMusic = true;
}
if (homeLoaded) {
initializeHome();
}
});
}
// ------------------------------
});
// DOCUMENT READY
// WINDOW ONLOAD
$(window).on("load", function () {
$("html").addClass("loaded");
autoplay = $('#play-music').hasClass('autoplay') ? true : false;
homeLoaded = true;
if (autoplay) {
if (userClickedAutoplayDialog) {
initializeHome();
}
} else {
initializeHome();
}
sticky_sidebar_update();
fixMarquee();
});
// WINDOW ONLOAD
// ------------------------------
// ------------------------------
// FUNCTIONS
// ------------------------------
// ------------------------------
// ------------------------------
function initializeHome() {
if ($("html").hasClass("one-page-layout")) {
$("html").addClass("home-loaded");
homeAnimation();
homeMusic();
}
}
// ------------------------------
// ------------------------------
// SETUP : plugins
function setup() {
// COOL LINKS
coolLinks();
// MASONRY
setupMasonry();
// LIGHTBOX
setupLightbox();
// FILL SKILL BARS
fillBars();
// PORTFOLIO SINGLE AJAX
setupAjax();
// FORMS
setupForms();
// CONTACT FORM
setupContactForm();
// TABS
tabs();
// TOGGLES
toggles();
// FLUID MEDIA
fluidMedia();
}
// ------------------------------
// ------------------------------
// STICKY SIDEBAR
var stickySidebar;
function sticky_sidebar() {
if ($('#secondary').length) {
jQuery.support.touch = 'ontouchend' in document;
if (window.matchMedia("(min-width: 992px)").matches && !(jQuery.support.touch) && ($('#primary').height() > $('#secondary').height())) {
stickySidebar = new StickySidebar('#secondary', {
topSpacing: 40,
bottomSpacing: 0,
resizeSensor: true,
containerSelector: '.site-middle > div',
innerWrapperSelector: '.sidebar-wrap'
});
}
}
}
// ------------------------------
// ------------------------------
// UPDATE STICKY SIDEBAR
function sticky_sidebar_update() {
if ($('#secondary').length) {
jQuery.support.touch = 'ontouchend' in document;
if (stickySidebar && window.matchMedia("(min-width: 992px)").matches && !(jQuery.support.touch) && ($('#primary').height() > $('#secondary').height())) {
stickySidebar.updateSticky();
}
// fix for : sticky sidebar overlap when resized to mobile view
if (window.matchMedia("(max-width: 991px)").matches) {
if (stickySidebar) {
stickySidebar.destroy();
}
}
}
}
// ------------------------------
// ------------------------------
// FIX MARQUEE
function coolLinks() {
$('.bg-music-confirm a, .entry-title a, .entry-content > p:not(.more) > a:not(.button):not(.social-link), .nav-single a, .latest-posts a, .cat-links a, .media-cell-desc a, .comment-reply-link, .comment-meta .fn a, #filters a, .post-edit-link, .logged-in-as a, .widget_recent_entries a, .tptn_after_thumb .tptn_link, .widget_categories a, .widget_archive a, .widget_pages a, .widget_meta a, .widget_recent_comments a, .widget_rss a, .widget_nav_menu a, .wp-caption-text a').addClass('cool-link');
}
// ------------------------------
// ------------------------------
// FIX MARQUEE
function fixMarquee() {
$(".home-marquee, .home-job-title").width(
$(".home-logo-center").outerWidth() + $(".home-text-container").outerWidth()
);
}
// ------------------------------
// ------------------------------
// HOME ANIMATION
function homeAnimation() {
// HOMEPAGE ANIMATION
const $bg = $(".home-bg");
const $heading = $(".home-heading");
const $logoInverted = $(".home-bg-logo");
const $logoLeft = $(".home-logo-left");
const $logoLeftInner = $logoLeft.find("span");
const $logoRight = $(".home-logo-right");
const $logoRightInner = $logoRight.find("span");
const $textContainer = $(".home-text-container");
const $text = $(".home-text");
const $marquee = $(".home-marquee, .home-job-title");
const $social = $(".home-social");
const $footer = $(".home-footer");
//TIMELINE
const plTl = new TimelineMax({
/* onComplete: () => {
$("body").addClass("is-animation-ended");
} */
onComplete: function () {
$("body").addClass("is-animation-ended");
}
});
plTl
.add("start")
.fromTo($bg, 0.4, { autoAlpha: 0 }, { autoAlpha: 1, ease: Power3.easeOut }, "start")
.fromTo($bg, 1.8, { scale: 2, x: "-70%" }, { scale: 1, x: "0%", ease: Power3.easeOut }, "start")
.to($heading, 0.6, { y: 0, ease: Power3.easeOut }, "-=0.4", "start")
.add("shiftRight", "+=0.4")
.to($logoInverted, 0.8, { x: "50%", ease: Power3.easeOut }, "shiftRight")
.to($bg, 1, { x: "-=7%", ease: Power3.easeOut }, "shiftRight")
.to($heading, 0.8, { x: "+=35%", ease: Power3.easeOut }, "shiftRight")
.to($logoRightInner, 0.8, { x: "-100%", ease: Power3.easeOut }, "shiftRight")
.to($logoLeftInner, 0.8, { x: "100%", ease: Power3.easeOut }, "shiftRight")
.to([$logoRight, $logoLeft], 0.8, { width: 0, padding: 0, ease: Power3.easeOut }, "shiftRight")
.to($footer, 1, { autoAlpha: 1, x: 0, ease: Power3.easeOut }, "shiftRight")
.add("shiftLeft")
.to($heading, 0.8, { x: "-=50%", ease: Power3.easeOut }, "shiftLeft")
.to($textContainer, 0.8, { scaleX: 1, ease: Power3.easeOut }, "shiftLeft")
.to($text, 1, { autoAlpha: 1, x: 0, ease: Power3.easeOut }, "shiftLeft")
.to($marquee, 1, { autoAlpha: 1, ease: Power0.easeNone }, "shiftLeft")
.to($social, 1, { autoAlpha: 1, ease: Power0.easeNone }, "shiftLeft")
.to($bg, 8, { x: "-=5%", ease: Power0.easeNone }, "shiftLeft")
.to($logoInverted, 6, { x: "-=2.5%", ease: Power0.easeNone }, "shiftLeft");
$('.full-screen-wrap').on('click', function () {
$(this).toggleClass('active');
toggleFullScreen();
});
// TOGGLE FULSCREEN
function toggleFullScreen() {
if (!document.fullscreenElement && // alternative standard method
!document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { // current working methods
if (document.documentElement.requestFullscreen) {
document.documentElement.requestFullscreen();
} else if (document.documentElement.msRequestFullscreen) {
document.documentElement.msRequestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullscreen) {
document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
}
// ------------------------------
// ------------------------------
// HOME MUSIC
var music, isPlaying, isUserTurnedOffMusic, isLigtboxTurnedOffMusic, autoplayAllowed;
function homeMusic() {
music = document.getElementById("bg-music");
if (music !== null) {
var button = document.getElementById("toggle");
function togglePlay() {
if (isPlaying) {
music.pause();
isUserTurnedOffMusic = true;
} else {
music.volume = 0.5;
music.play();
isUserTurnedOffMusic = false;
}
}
music.onplaying = function () {
isPlaying = true;
button.innerHTML = button.getAttribute("data-on-text");
document.getElementById("music-animation").classList.add('on');
};
music.onpause = function () {
isPlaying = false;
button.innerHTML = button.getAttribute("data-off-text");
document.getElementById("music-animation").classList.remove('on');
};
// Toggle Music
var music_toggle = $('#play-music');
music_toggle.on('click', function () {
togglePlay();
});
// autoplay
if (music_toggle.hasClass('autoplay') && (isUserTurnedOffMusic !== true)) {
music_toggle.click();
} else {
isUserTurnedOffMusic = true;
}
// Pause audio when the tab is inactive
function addOnBlurListener(onBlurCallback, onFocusCallback) {
var hidden, visibilityState, visibilityChange; // check the visiblility of the page
if (typeof document.hidden !== "undefined") {
hidden = "hidden"; visibilityChange = "visibilitychange"; visibilityState = "visibilityState";
} else if (typeof document.mozHidden !== "undefined") {
hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; visibilityState = "mozVisibilityState";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden"; visibilityChange = "msvisibilitychange"; visibilityState = "msVisibilityState";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; visibilityState = "webkitVisibilityState";
}
if (typeof document.addEventListener === "undefined" || typeof hidden === "undefined") {
// not supported
} else {
document.addEventListener(visibilityChange, function () {
switch (document[visibilityState]) {
case "visible":
if (onFocusCallback) onFocusCallback();
break;
case "hidden":
if (onBlurCallback) onBlurCallback();
break;
}
}, false);
}
}
function muteAudio() {
music.pause();
}
function unMuteAudio() {
if (!isUserTurnedOffMusic && !isLigtboxTurnedOffMusic) {
music.play();
}
}
addOnBlurListener(muteAudio, unMuteAudio);
}
}
// ------------------------------
// ------------------------------
// PORTFOLIO SINGLE AJAX
function setupAjax() {
// PORTFOLIO DETAILS
// Show details
$(
".one-page-layout .media-box .ajax, .one-page-layout .portfolio-nav .ajax a"
).on("click", function (event) {
event.preventDefault();
var url = $(this).attr("href");
var baseUrl = $.address.baseURL();
var detailUrl = giveDetailUrl();
if (url.indexOf(baseUrl) !== -1) {
// full url
var total = url.length;
detailUrl = url.slice(baseUrl.length + 1, total);
$.address.path("/" + detailUrl);
} else {
// relative url
detailUrl = url;
$.address.path(portfolioKeyword + "/" + detailUrl);
}
});
}
// ------------------------------
// ------------------------------
// MASONRY - ISOTOPE
function setupMasonry() {
var masonry = $(".masonry, .gallery, .wp-block-gallery:not(.is-cropped)");
if (masonry.length) {
masonry.each(function (index, el) {
// call isotope
refreshMasonry();
$(el).imagesLoaded(function () {
$(el).isotope({
layoutMode: $(el).data("layout") ? $(el).data("layout") : "masonry"
});
// set columns
refreshMasonry();
});
// filters
if (!$(el).data("isotope")) {
var filters = $(el).siblings(".filters");
if (filters.length) {
filters.find("a").on("click", function () {
var selector = $(this).attr("data-filter");
$(el).isotope({ filter: selector });
$(this)
.parent()
.addClass("current")
.siblings()
.removeClass("current");
return false;
});
}
}
}); //each
$(window).on("resize debouncedresize", function () {
setTimeout(function () {
refreshMasonry();
}, 100);
});
}
}
// ------------------------------
// ------------------------------
// REFRSH MASONRY - ISOTOPE
function refreshMasonry() {
var masonry = $(".masonry");
if (masonry.length) {
masonry.each(function (index, el) {
// check if isotope initialized
if ($(el).data("isotope")) {
var itemW = $(el).data("item-width");
var containerW = $(el).width();
var items = $(el).children(".hentry");
var columns = Math.round(containerW / itemW);
columns = $(window).width() <= 700 ? 2 : columns;
// set the widths (%) for each of item
items.each(function (index, element) {
var multiplier = $(this).hasClass("x2") && columns > 1 ? 2 : 1;
var itemRealWidth =
((Math.floor(containerW / columns) * 100) / containerW) *
multiplier;
$(this).css("width", itemRealWidth + "%");
});
var columnWidth = Math.floor(containerW / columns);
$(el).isotope("option", { masonry: { columnWidth: columnWidth } });
$(el).isotope("layout");
}
}); //each
}
}
// ------------------------------
// ------------------------------
// LIGHTBOX - applied to porfolio and gallery post format
function setupLightbox() {
if ($(".lightbox, .gallery, .wp-block-gallery").length) {
$(".media-box, .gallery, .wp-block-gallery").each(function (index, element) {
var $media_box = $(this);
$media_box.magnificPopup({
delegate:
'.lightbox, figure a[href$=".jpg"], figure a[href$=".jpeg"], figure a[href$=".png"], figure a[href$=".gif"], .gallery-item a[href$=".jpg"], .gallery-item a[href$=".jpeg"], .gallery-item a[href$=".png"], .gallery-item a[href$=".gif"]',
type: "image",
image: {
markup:
'" +
'", // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
cursor: "mfp-zoom-out-cur", // Class that adds zoom cursor, will be added to body. Set to null to disable zoom out cursor.
verticalFit: true, // Fits image in area vertically
tError: 'The image could not be loaded.' // Error message
},
gallery: {
enabled: true,
tCounter: '%curr% / %total%' // markup of counter
},
iframe: {
markup:
'' +
'
' +
'
' +
'
Some caption
' +
"
"
},
mainClass: "mfp-zoom-in",
tLoading: "",
removalDelay: 300, //delay removal by X to allow out-animation
callbacks: {
markupParse: function (template, values, item) {
var title = "";
if (item.el.parents(".gallery-item").length) { // classic editor gallery
title = item.el
.parents(".gallery-item")
.find(".gallery-caption")
.text();
} else if (item.el.parents(".blocks-gallery-item").length) { // Gutenberg gallery
title = item.el
.parents(".blocks-gallery-item")
.find("figcaption")
.text();
}
else {
title =
item.el.data("title") == undefined
? ""
: item.el.data("title");
}
//return title;
values.title = title;
},
imageLoadComplete: function () {
var self = this;
setTimeout(function () {
self.wrap.addClass("mfp-image-loaded");
}, 16);
},
beforeClose: function () {
// play bg audio when closing audio/video in a lightbox
if (this.content.find('iframe[src*="soundcloud.com"]').length || this.content.find('iframe[src*="vimeo.com"]').length || this.content.find('iframe[src*="youtube.com"]').length) {
if (!isUserTurnedOffMusic) {
if (music) {
music.play();
isLigtboxTurnedOffMusic = false;
}
}
}
},
close: function () {
this.wrap.removeClass("mfp-image-loaded");
},
beforeAppend: function () {
var self = this;
// pause bg audio when opening audio/video in a lightbox
if (this.content.find('iframe[src*="soundcloud.com"]').length || this.content.find('iframe[src*="vimeo.com"]').length || this.content.find('iframe[src*="youtube.com"]').length) {
self.wrap.addClass("is-soundcloud");
if (music) {
isLigtboxTurnedOffMusic = true;
music.pause();
}
}
// square aspect ratio for soundcloud embeds
if (this.content.find('iframe[src*="soundcloud.com"]').length) {
self.wrap.addClass("is-soundcloud");
} else {
self.wrap.removeClass("is-soundcloud");
}
this.content.find("iframe").on("load", function () {
setTimeout(function () {
self.wrap.addClass("mfp-image-loaded");
}, 16);
});
}
},
closeBtnInside: false,
closeOnContentClick: true,
midClick: true
});
});
}
}
// ------------------------------
// ------------------------------
// FILL PROGRESS BARS
function fillBars() {
var bar = $(".bar");
if (bar.length) {
$(".bar").each(function () {
var bar = $(this);
var percent = bar.attr("data-percent");
bar
.find(".progress")
.css("width", percent + "%")
.html("" + percent + "");
});
}
}
// ------------------------------
// ------------------------------
// TABS
function tabs() {
var tabs = $(".tabs");
if (tabs.length) {
$(".tabs").each(function () {
if (!$(this).find(".tab-titles li a.active").length) {
$(this)
.find(".tab-titles li:first-child a")
.addClass("active");
$(this)
.find(".tab-content > div:first-child")
.show();
} else {
$(this)
.find(".tab-content > div")
.eq(
$(this)
.find(".tab-titles li a.active")
.parent()
.index()
)
.show();
}
});
$(".tabs .tab-titles li a").on("click", function () {
if ($(this).hasClass("active")) {
return;
}
$(this)
.parent()
.siblings()
.find("a")
.removeClass("active");
$(this).addClass("active");
$(this)
.parents(".tabs")
.find(".tab-content > div")
.hide()
.eq(
$(this)
.parent()
.index()
)
.show();
return false;
});
}
}
// ------------------------------
// ------------------------------
// TOGGLES
function toggles() {
if ($(".toggle").length) {
var toggleSpeed = 300;
$(".toggle h4.active + .toggle-content").show();
$(".toggle h4").on("click", function () {
if ($(this).hasClass("active")) {
$(this).removeClass("active");
$(this)
.next(".toggle-content")
.stop(true, true)
.slideUp(toggleSpeed);
} else {
$(this).addClass("active");
$(this)
.next(".toggle-content")
.stop(true, true)
.slideDown(toggleSpeed);
//accordion
if (
$(this)
.parents(".toggle-group")
.hasClass("accordion")
) {
$(this)
.parent()
.siblings()
.find("h4")
.removeClass("active");
$(this)
.parent()
.siblings()
.find(".toggle-content")
.stop(true, true)
.slideUp(toggleSpeed);
}
}
return false;
});
}
}
// ------------------------------
// ------------------------------
// FLUID MEDIA
function fluidMedia() {
if ($("iframe,video").length) {
$("html").fitVids();
}
}
// ------------------------------
// ------------------------------
// SETUP FORMS : FORM VALIDATION
function setupForms() {
// comment form validation fix
if ($("#commentform").length) {
$("#commentform").addClass("validate-form");
$("#commentform")
.find("input,textarea")
.each(function (index, element) {
if ($(this).attr("aria-required") == "true") {
$(this).addClass("required");
}
if ($(this).attr("name") == "email") {
$(this).addClass("email");
}
});
}
// mailchimp form validation fix
var mailchimpForm = $(".mc4wp-form");
if (mailchimpForm.length) {
mailchimpForm.addClass("validate-form");
}
// validate form
if ($(".validate-form").length) {
$(".validate-form").each(function () {
$(this).validate();
});
}
}
// ------------------------------
// ------------------------------
// SETUP CONTACT FORM
function setupContactForm() {
var contactForm = $("#contact-form");
if (contactForm.length) {
var $alert = $(".site-alert");
var $submit = contactForm.find(".submit");
contactForm.on("submit", function () {
if (contactForm.valid()) {
NProgress.start();
$submit.addClass("active loading");
var formValues = contactForm.serialize();
$.post(contactForm.attr("action"), formValues, function (data) {
if (data == "success") {
contactForm.clearForm();
} else {
$alert.addClass("error");
}
NProgress.done();
$alert.show();
setTimeout(function () {
$alert.hide();
}, 6000);
});
}
return false;
});
$.fn.clearForm = function () {
return this.each(function () {
var type = this.type,
tag = this.tagName.toLowerCase();
if (tag == "form") return $(":input", this).clearForm();
if (type == "text" || type == "password" || tag == "textarea")
this.value = "";
else if (type == "checkbox" || type == "radio") this.checked = false;
else if (tag == "select") this.selectedIndex = -1;
});
};
}
}
// ------------------------------
// ------------------------------
// AJAX PORTFOLIO DETAILS
var pActive;
function showProjectDetails(url) {
porftolioSingleJustClosed = true;
porftolioSingleActive = true;
showLoader();
var p = $(".p-overlay:not(.active)").first();
pActive = $(".p-overlay.active");
// ajax : fill data
p.empty().load(url + " .portfolio-single", function () {
NProgress.set(0.5);
p.prepend(p.find('.portfolio-nav').clone());
// wait for images to be loaded
p.imagesLoaded(function () {
hideLoader();
if (pActive.length) {
hideProjectDetails();
}
$("html").addClass("p-overlay-on");
// setup plugins
setup();
$("html").addClass("p-animating");
// Play Sound Effect
if (soundEffects) {
tick.play();
}
p.removeClass("animate-in animate-out")
.addClass("animate-in")
.show()
.scrollTop(0);
p.addClass("active");
p.one(
"webkitAnimationEnd oanimationend msAnimationEnd animationend",
function (e) {
$("html").removeClass("p-animating");
}
);
});
});
}
function hideProjectDetails(forever, safeClose) {
porftolioSingleJustClosed = true;
// Play Sound Effect
if (soundEffects) {
tick.play();
}
$("html").addClass("p-animating");
// close completely by back link.
if (forever) {
pActive = $(".p-overlay.active");
$("html").removeClass("p-overlay-on");
if (!safeClose) {
// remove detail url
$.address.path(portfolioKeyword);
}
}
pActive
.removeClass("active animate-in animate-out")
.addClass("animate-out")
.show();
pActive.one(
"webkitAnimationEnd oanimationend msAnimationEnd animationend",
function (e) {
$("html").removeClass("p-animating");
pActive
.hide()
.removeClass("animate-out")
.empty();
}
);
setTimeout(function () {
pActive
.hide()
.removeClass("animate-out")
.empty();
}, 550);
}
function giveDetailUrl() {
var address = $.address.value();
var detailUrl;
if (
address.indexOf("/" + portfolioKeyword + "/") != -1 &&
address.length > portfolioKeyword.length + 2
) {
var total = address.length;
detailUrl = address.slice(portfolioKeyword.length + 2, total);
} else {
detailUrl = -1;
}
return detailUrl;
}
// ------------------------------
// ------------------------------
// AJAX LOADER
function showLoader() {
NProgress.start();
}
function hideLoader() {
NProgress.done();
}
// ------------------------------
// ------------------------------
// SET ACTIVE PAGE
function setActivePage() {
var path = $.address.path();
path = path.slice(1, path.length);
// if hash tag doesnt exists - close page
if (path === "") {
closePage();
} else {
// show page change animation
// change page only if url doesn't target portfolio single page
//console.log(porftolioSingleJustClosed);
if (porftolioSingleJustClosed) {
porftolioSingleJustClosed = false;
} else {
if (giveDetailUrl() === -1) {
//porftolioSingleJustClosed = false;
var new_url = $("a[data-slug=" + path + "]").data("file-url");
showPage(new_url);
}
}
}
}
// ------------------------------
// ------------------------------
// SHOW PAGE
function showPage(url) {
// start layers animation
overlay_1.css("transition-delay", ".0s").css("transform", "translateY(0%)");
overlay_2.css("transition-delay", ".2s").css("transform", "translateY(0%)");
var transitionEnded = false;
overlay_2.one(
"webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
function () {
transitionEnded = true;
});
// Play Sound Effect
if (soundEffects) {
tick.play();
}
$("html").addClass("is-ajax-page-active");
// only jquery get() returns remote page's content
jQuery.get(url, function (data) {
// clear container content
one_page_content.children(".content-wrap").empty();
// elementor styles fix
one_page_content
.children(".content-wrap")
.append($(data).filter("#elementor-frontend-inline-css")) // elementor inline styles
.append($(data).filter("link[id^='elementor-post-']")) // elementor external styles
.append($(data).filter("link[id='elementor-frontend-css']")); // elemementor common styles
// place page content
one_page_content
.children(".content-wrap")
.append($(data).find(".page-single > .hentry"));
// wait for images to be loaded
one_page_content.imagesLoaded(function () {
$("html").addClass("is-ajax-page-loaded");
if (transitionEnded) {
showLoadedPage();
} else {
// wait for layers animation end if it is not ended yet
overlay_2.one(
"webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
function () {
showLoadedPage();
}
);
}
});
});
}
function showLoadedPage() {
console.log('overlay_2.one transitionend');
one_page_content.addClass("is-visible");
overlay_2
.css("transition-delay", ".0s")
.css("transform", "translateY(100%)");
overlay_1
.css("transition-delay", ".2s")
.css("transform", "translateY(100%)");
var t = setTimeout(function () {
$("html").addClass("is-ajax-page-visible");
clearTimeout(t);
}, 100);
setup();
}
// CLOSE PAGE
function closePage() {
$("html")
.removeClass("is-ajax-page-active")
.removeClass("is-ajax-page-loaded")
.removeClass("is-ajax-page-visible");
overlay_1.css("transition-delay", ".0s").css("transform", "translateY(0%)");
overlay_2.css("transition-delay", ".2s").css("transform", "translateY(0%)");
setTimeout(function () {
one_page_content
.removeClass("is-visible")
.children(".content-wrap")
.empty();
overlay_2
.css("transition-delay", ".0s")
.css("transform", "translateY(-100%)");
overlay_1
.css("transition-delay", ".2s")
.css("transform", "translateY(-100%)");
}, 400);
}
// ------------------------------
})(jQuery);