/*
Name: Core Initializer
Written by: Okler Themes - (http://www.okler.net)
Version: 3.1.1
*/
(function() {
"use strict";
var Core = {
initialized: false,
initialize: function() {
if (this.initialized) return;
this.initialized = true;
this.build();
this.events();
},
build: function() {
// Adds browser version on html class.
$.browserSelector();
// Adds window smooth scroll on chrome.
if($("html").hasClass("chrome")) {
$.smoothScroll();
}
// Scroll to Top Button.
$.scrollToTop();
// Nav Menu
this.navMenu();
// Header Search
this.headerSearch();
// Animations
this.animations();
// Word Rotate
this.wordRotate();
// Newsletter
this.newsletter();
// Featured Boxes
this.featuredBoxes();
// Tooltips
$("a[rel=tooltip]").tooltip();
// Owl Carousel
this.owlCarousel();
// Sort
this.sort();
// Toggle
this.toggle();
// Twitter
this.latestTweets();
// Flickr Feed
this.flickrFeed();
// Lightbox
this.lightbox();
// Media Element
this.mediaElement();
// Parallax
this.parallax();
// Account
this.account();
},
events: function() {
// Anchors Position
$("a[data-hash]").on("click", function(e) {
e.preventDefault();
var header = $("#header"),
headerHeight = header.height(),
target = $(this).attr("href"),
$this = $(this);
if($(window).width() > 991) {
$("html,body").animate({scrollTop: $(target).offset().top - (headerHeight + 50)}, 600, "easeOutQuad");
} else {
$("html,body").animate({scrollTop: $(target).offset().top - 30}, 600, "easeOutQuad");
}
return false;
});
$("body").waitForImages(function() {
Core.productInfoBox();
});
$(window).afterResize(function() {
if(typeof(Core.productInfoBox) != "undefined") {
Core.productInfoBox();
}
});
},
navMenu: function() {
// Responsive Menu Events
var addActiveClass = false;
$("#mainMenu li.dropdown > a, #mainMenu li.dropdown-submenu > a").on("click", function(e) {
if($(window).width() > 979) return;
e.preventDefault();
addActiveClass = $(this).parent().hasClass("resp-active");
$("#mainMenu").find(".resp-active").removeClass("resp-active");
if(!addActiveClass) {
$(this).parents("li").addClass("resp-active");
}
return;
});
// Submenu Check Visible Space
$("#mainMenu li.dropdown-submenu").hover(function() {
if($(window).width() < 767) return;
var subMenu = $(this).find("ul.dropdown-menu");
if(!subMenu.get(0)) return;
var screenWidth = $(window).width(),
subMenuOffset = subMenu.offset(),
subMenuWidth = subMenu.width(),
subMenuParentWidth = subMenu.parents("ul.dropdown-menu").width(),
subMenuPosRight = subMenu.offset().left + subMenu.width();
if(subMenuPosRight > screenWidth) {
subMenu.css("margin-left", "-" + (subMenuParentWidth + subMenuWidth + 10) + "px");
} else {
subMenu.css("margin-left", 0);
}
});
// Mega Menu
$(document).on("click", ".mega-menu .dropdown-menu", function(e) {
e.stopPropagation()
});
// Mobile Redirect
$(".mobile-redirect").on("click", function() {
if($(window).width() < 991) {
self.location = $(this).attr("href");
}
});
},
stickyMenu: function() {
if($("body").hasClass("boxed"))
return false;
var $this = this,
$body = $("body"),
header = $("#header"),
headerContainer = header.parent(),
menuAfterHeader = (typeof header.data('after-header') !== 'undefined'),
headerHeight = header.height(),
flatParentItems = $("#header.flat-menu ul.nav-main > li > a"),
logoWrapper = header.find(".logo"),
logo = header.find(".logo img"),
logoWidth = logo.attr("width"),
logoHeight = logo.attr("height"),
logoPaddingTop = parseInt(logo.attr("data-sticky-padding") ? logo.attr("data-sticky-padding") : "28"),
logoSmallWidth = parseInt(logo.attr("data-sticky-width") ? logo.attr("data-sticky-width") : "82"),
logoSmallHeight = parseInt(logo.attr("data-sticky-height") ? logo.attr("data-sticky-height") : "40");
if(menuAfterHeader) {
headerContainer.css("min-height", header.height());
}
$(window).afterResize(function() {
headerContainer.css("min-height", header.height());
});
$this.checkStickyMenu = function() {
if($body.hasClass("boxed") || $(window).width() < 991) {
$this.stickyMenuDeactivate();
header.removeClass("fixed")
return false;
}
if(!menuAfterHeader) {
if($(window).scrollTop() > ((headerHeight - 15) - logoSmallHeight)) {
$this.stickyMenuActivate();
} else {
$this.stickyMenuDeactivate();
}
} else {
if($(window).scrollTop() > header.parent().offset().top) {
header.addClass("fixed");
} else {
header.removeClass("fixed");
}
}
}
$this.stickyMenuActivate = function() {
if($body.hasClass("sticky-menu-active"))
return false;
logo.stop(true, true);
$body.addClass("sticky-menu-active").css("padding-top", headerHeight);
flatParentItems.addClass("sticky-menu-active");
logoWrapper.addClass("logo-sticky-active");
logo.animate({
width: logoSmallWidth,
height: logoSmallHeight,
top: logoPaddingTop + "px"
}, 200, function() {});
}
$this.stickyMenuDeactivate = function() {
if($body.hasClass("sticky-menu-active")) {
$body.removeClass("sticky-menu-active").css("padding-top", 0);
flatParentItems.removeClass("sticky-menu-active");
logoWrapper.removeClass("logo-sticky-active");
logo.animate({
width: logoWidth,
height: logoHeight,
top: "0px"
}, 200);
}
}
$(window).on("scroll", function() {
$this.checkStickyMenu();
});
$this.checkStickyMenu();
},
headerSearch: function() {
$("#searchForm").validate({
rules: {
q: {
required: true
}
},
errorPlacement: function(error, element) {
},
highlight: function (element) {
$(element)
.closest(".input-group")
.removeClass("has-success")
.addClass("has-error");
},
success: function (element) {
$(element)
.closest(".input-group")
.removeClass("has-error")
.addClass("has-success");
}
});
},
animations: function() {
// Animation Appear
$("[data-appear-animation]").each(function() {
var $this = $(this);
$this.addClass("appear-animation");
if(!$("html").hasClass("no-csstransitions") && $(window).width() > 767) {
$this.appear(function() {
var delay = ($this.attr("data-appear-animation-delay") ? $this.attr("data-appear-animation-delay") : 1);
if(delay > 1) $this.css("animation-delay", delay + "ms");
$this.addClass($this.attr("data-appear-animation"));
setTimeout(function() {
$this.addClass("appear-animation-visible");
}, delay);
}, {accX: 0, accY: -150});
} else {
$this.addClass("appear-animation-visible");
}
});
// Animation Progress Bars
$("[data-appear-progress-animation]").each(function() {
var $this = $(this);
$this.appear(function() {
var delay = ($this.attr("data-appear-animation-delay") ? $this.attr("data-appear-animation-delay") : 1);
if(delay > 1) $this.css("animation-delay", delay + "ms");
$this.addClass($this.attr("data-appear-animation"));
setTimeout(function() {
$this.animate({
width: $this.attr("data-appear-progress-animation")
}, 1500, "easeOutQuad", function() {
$this.find(".progress-bar-tooltip").animate({
opacity: 1
}, 500, "easeOutQuad");
});
}, delay);
}, {accX: 0, accY: -50});
});
// Count To
$(".counters [data-to]").each(function() {
var $this = $(this);
$this.appear(function() {
$this.countTo({
onComplete: function() {
if($this.data("append")) {
$this.html($this.html() + $this.data("append"));
}
}
});
}, {accX: 0, accY: -150});
});
/* Circular Bars - Knob */
if(typeof($.fn.knob) != "undefined") {
$(".knob").knob({});
}
},
wordRotate: function() {
$(".word-rotate").each(function() {
var $this = $(this),
itemsWrapper = $(this).find(".word-rotate-items"),
items = itemsWrapper.find("> span"),
firstItem = items.eq(0),
firstItemClone = firstItem.clone(),
itemHeight = 0,
currentItem = 1,
currentTop = 0;
itemHeight = firstItem.height();
itemsWrapper.append(firstItemClone);
$this
.height(itemHeight)
.addClass("active");
setInterval(function() {
currentTop = (currentItem * itemHeight);
itemsWrapper.animate({
top: -(currentTop) + "px"
}, 300, "easeOutQuad", function() {
currentItem++;
if(currentItem > items.length) {
itemsWrapper.css("top", 0);
currentItem = 1;
}
});
}, 2000);
});
},
newsletter: function() {
$("#newsletterForm").validate({
submitHandler: function(form) {
$.ajax({
type: "POST",
url: $("#newsletterForm").attr("action"),
data: {
"email": $("#newsletterForm #newsletterEmail").val()
},
dataType: "json",
success: function (data) {
if (data.response == "success") {
$("#newsletterSuccess").removeClass("hidden");
$("#newsletterError").addClass("hidden");
$("#newsletterForm #newsletterEmail")
.val("")
.blur()
.closest(".control-group")
.removeClass("success")
.removeClass("error");
} else {
$("#newsletterError").html(data.message);
$("#newsletterError").removeClass("hidden");
$("#newsletterSuccess").addClass("hidden");
$("#newsletterForm #newsletterEmail")
.blur()
.closest(".control-group")
.removeClass("success")
.addClass("error");
}
}
});
},
rules: {
email: {
required: true,
email: true
}
},
errorPlacement: function(error, element) {
},
highlight: function (element) {
$(element)
.closest(".control-group")
.removeClass("success")
.addClass("error");
},
success: function (element) {
$(element)
.closest(".control-group")
.removeClass("error")
.addClass("success");
}
});
},
featuredBoxes: function() {
$("div.featured-box").css("height", "auto");
$("div.featured-boxes:not(.manual)").each(function() {
var wrapper = $(this);
var minBoxHeight = 0;
$("div.featured-box", wrapper).each(function() {
if($(this).height() > minBoxHeight)
minBoxHeight = $(this).height();
});
$("div.featured-box", wrapper).height(minBoxHeight);
});
},
owlCarousel: function(options) {
var total = $("div.owl-carousel:not(.manual)").length,
count = 0;
$("div.owl-carousel:not(.manual)").each(function() {
var slider = $(this);
var defaults = {
// Most important owl features
items : 5,
itemsCustom : false,
itemsDesktop : [1199,4],
itemsDesktopSmall : [980,3],
itemsTablet: [768,2],
itemsTabletSmall: false,
itemsMobile : [479,1],
singleItem : true,
itemsScaleUp : false,
//Basic Speeds
slideSpeed : 200,
paginationSpeed : 800,
rewindSpeed : 1000,
//Autoplay
autoPlay : false,
stopOnHover : false,
// Navigation
navigation : false,
navigationText : ["",""],
rewindNav : true,
scrollPerPage : false,
//Pagination
pagination : true,
paginationNumbers: false,
// Responsive
responsive: true,
responsiveRefreshRate : 200,
responsiveBaseWidth: window,
// CSS Styles
baseClass : "owl-carousel",
theme : "owl-theme",
//Lazy load
lazyLoad : false,
lazyFollow : true,
lazyEffect : "fade",
//Auto height
autoHeight : false,
//JSON
jsonPath : false,
jsonSuccess : false,
//Mouse Events
dragBeforeAnimFinish : true,
mouseDrag : true,
touchDrag : true,
//Transitions
transitionStyle : false,
// Other
addClassActive : false,
//Callbacks
beforeUpdate : false,
afterUpdate : false,
beforeInit: false,
afterInit: false,
beforeMove: false,
afterMove: false,
afterAction: false,
startDragging : false,
afterLazyLoad : false
}
var config = $.extend({}, defaults, options, slider.data("plugin-options"));
// Initialize Slider
slider.owlCarousel(config).addClass("owl-carousel-init");
});
},
sort: function() {
$("ul.sort-source:not(.manual)").each(function() {
var source = $(this);
var destination = $("ul.sort-destination[data-sort-id=" + $(this).attr("data-sort-id") + "]");
if(destination.get(0)) {
var minParagraphHeight = 0;
var paragraphs = $("span.thumb-info-caption p", destination);
paragraphs.each(function() {
if($(this).height() > minParagraphHeight)
minParagraphHeight = ($(this).height() + 10);
});
paragraphs.height(minParagraphHeight);
$(window).load(function() {
destination.isotope({
itemSelector: "li",
layoutMode: 'sloppyMasonry'
});
source.find("a").click(function(e) {
e.preventDefault();
var $this = $(this),
filter = $this.parent().attr("data-option-value");
source.find("li.active").removeClass("active");
$this.parent().addClass("active");
destination.isotope({
filter: filter
});
if(window.location.hash != "" || filter.replace(".","") != "*") {
window.location.hash = filter.replace(".","");
}
return false;
});
$(window).bind("hashchange", function(e) {
var hashFilter = "." + location.hash.replace("#",""),
hash = (hashFilter == "." || hashFilter == ".*" ? "*" : hashFilter);
source.find("li.active").removeClass("active");
source.find("li[data-option-value='" + hash + "']").addClass("active");
destination.isotope({
filter: hash
});
});
var hashFilter = "." + (location.hash.replace("#","") || "*");
var initFilterEl = source.find("li[data-option-value='" + hashFilter + "'] a");
if(initFilterEl.get(0)) {
source.find("li[data-option-value='" + hashFilter + "'] a").click();
} else {
source.find("li:first-child a").click();
}
});
}
});
},
toggle: function() {
var $this = this,
previewParClosedHeight = 25;
$("section.toggle > label").prepend($("").addClass("icon icon-plus"));
$("section.toggle > label").prepend($("").addClass("icon icon-minus"));
$("section.toggle.active > p").addClass("preview-active");
$("section.toggle.active > div.toggle-content").slideDown(350, function() {});
$("section.toggle > label").click(function(e) {
var parentSection = $(this).parent(),
parentWrapper = $(this).parents("div.toogle"),
previewPar = false,
isAccordion = parentWrapper.hasClass("toogle-accordion");
if(isAccordion && typeof(e.originalEvent) != "undefined") {
parentWrapper.find("section.toggle.active > label").trigger("click");
}
parentSection.toggleClass("active");
// Preview Paragraph
if(parentSection.find("> p").get(0)) {
previewPar = parentSection.find("> p");
var previewParCurrentHeight = previewPar.css("height");
previewPar.css("height", "auto");
var previewParAnimateHeight = previewPar.css("height");
previewPar.css("height", previewParCurrentHeight);
}
// Content
var toggleContent = parentSection.find("> div.toggle-content");
if(parentSection.hasClass("active")) {
$(previewPar).animate({
height: previewParAnimateHeight
}, 350, function() {
$(this).addClass("preview-active");
});
toggleContent.slideDown(350, function() {});
} else {
$(previewPar).animate({
height: previewParClosedHeight
}, 350, function() {
$(this).removeClass("preview-active");
});
toggleContent.slideUp(350, function() {});
}
});
},
lightbox: function(options) {
if(typeof($.magnificPopup) == "undefined") {
return false;
}
// Internationalization of Lightbox
$.extend(true, $.magnificPopup.defaults, {
tClose: 'Close (Esc)', // Alt text on close button
tLoading: 'Loading...', // Text that is displayed during loading. Can contain %curr% and %total% keys
gallery: {
tPrev: 'Previous (Left arrow key)', // Alt text on left arrow
tNext: 'Next (Right arrow key)', // Alt text on right arrow
tCounter: '%curr% of %total%' // Markup for "1 of 7" counter
},
image: {
tError: 'The image could not be loaded.' // Error message when image could not be loaded
},
ajax: {
tError: 'The content could not be loaded.' // Error message when ajax request failed
}
});
$(".lightbox:not(.manual)").each(function() {
var el = $(this);
var config, defaults = {}
if(el.data("plugin-options"))
config = $.extend({}, defaults, options, el.data("plugin-options"));
$(this).magnificPopup(config);
});
},
flickrFeed: function(options) {
$("ul.flickr-feed:not(.manual)").each(function() {
var el = $(this);
var defaults = {
limit: 6,
qstrings: {
id: ''
}
}
var config = $.extend({}, defaults, options, el.data("plugin-options"));
el.jflickrfeed(config, function(data) {
el.magnificPopup({
delegate: "a",
type: "image",
gallery: {
enabled: true,
navigateByImgClick: true,
preload: [0,1]
},
zoom: {
enabled: true,
duration: 300,
opener: function(element) {
return element.find('img');
}
}
});
});
});
},
mediaElement: function(options) {
if(typeof(mejs) == "undefined") {
return false;
}
$("video:not(.manual)").each(function() {
var el = $(this);
var defaults = {
defaultVideoWidth: 480,
defaultVideoHeight: 270,
videoWidth: -1,
videoHeight: -1,
audioWidth: 400,
audioHeight: 30,
startVolume: 0.8,
loop: false,
enableAutosize: true,
features: ['playpause','progress','current','duration','tracks','volume','fullscreen'],
alwaysShowControls: false,
iPadUseNativeControls: false,
iPhoneUseNativeControls: false,
AndroidUseNativeControls: false,
alwaysShowHours: false,
showTimecodeFrameCount: false,
framesPerSecond: 25,
enableKeyboard: true,
pauseOtherPlayers: true,
keyActions: []
}
var config = $.extend({}, defaults, options, el.data("plugin-options"));
el.mediaelementplayer(config);
});
},
parallax: function() {
if(typeof($.stellar) == "undefined") {
return false;
}
$(window).load(function () {
if($(".parallax").get(0)) {
if(!Modernizr.touch) {
$(window).stellar({
responsive:true,
scrollProperty: 'scroll',
parallaxElements: false,
horizontalScrolling: false,
horizontalOffset: 0,
verticalOffset: 0
});
} else {
$(".parallax").addClass("disabled");
}
}
});
},
latestTweets: function() {
var wrapper = $("#tweet"),
accountId = wrapper.data("account-id");
if(wrapper.get(0) && accountId != "") {
getTwitters("tweet", {
id: accountId,
count: 2
});
wrapper.before($("").addClass("twitter-account").html("@" + accountId).attr("href", "http://www.twitter.com/" + accountId).attr("target", "_blank"));
} else {
wrapper.empty();
}
},
fixRevolutionSlider: function() {
$(".revslider-initialised").each(function() {
try{
$(this).revredraw();
} catch(e) {}
});
},
productInfoBox: function() {
if($(window).width() > 991) {
$(".product-thumb-info").css("height", "auto");
$(".product-thumb-info-list:not(.manual)").each(function() {
var wrapper = $(this);
var minBoxHeight = 0;
$(".product-thumb-info", wrapper).each(function() {
if($(this).height() > minBoxHeight)
minBoxHeight = $(this).height();
});
$(".product-thumb-info", wrapper).height(minBoxHeight);
});
} else {
$(".product-thumb-info").css("height", "auto");
}
},
account: function() {
var headerAccountWrapper = $("#headerAccount"),
closeEventAdded = false;
// Events
headerAccountWrapper.find("input").on("focus", function() {
headerAccountWrapper.addClass("open");
if(closeEventAdded) return;
$(document).mouseup(function(e) {
if (!headerAccountWrapper.is(e.target) && headerAccountWrapper.has(e.target).length === 0) {
headerAccountWrapper.removeClass("open");
}
});
closeEventAdded = true;
});
$("#headerSignUp").on("click", function(e) {
e.preventDefault();
headerAccountWrapper.addClass("signup").removeClass("signin").removeClass("recover");
headerAccountWrapper.find(".signup-form input:first").focus();
});
$("#headerSignIn").on("click", function(e) {
e.preventDefault();
headerAccountWrapper.addClass("signin").removeClass("signup").removeClass("recover");
headerAccountWrapper.find(".signin-form input:first").focus();
});
$("#headerRecover").on("click", function(e) {
e.preventDefault();
headerAccountWrapper.addClass("recover").removeClass("signup").removeClass("signin");
headerAccountWrapper.find(".recover-form input:first").focus();
});
$("#headerRecoverCancel").on("click", function(e) {
e.preventDefault();
headerAccountWrapper.addClass("signin").removeClass("signup").removeClass("recover");
headerAccountWrapper.find(".signin-form input:first").focus();
});
}
};
Core.initialize();
$(window).load(function () {
// Sticky Meny
Core.stickyMenu();
// Window Resize
$(window).afterResize(function() {
// Featured Boxes
if(typeof(Core.featuredBoxes) != "undefined") {
Core.featuredBoxes();
}
// Sticky Menu
if(typeof(Core.checkStickyMenu) != "undefined") {
Core.checkStickyMenu();
}
// Revolution Slider Fix
if(typeof(Core.fixRevolutionSlider) != "undefined") {
Core.fixRevolutionSlider();
}
// Product Info Box
if(typeof(Core.productInfoBox) != "undefined") {
Core.productInfoBox();
}
// Isotope
if($(".isotope").get(0)) {
$(".isotope").isotope('reLayout');
}
}, true, 100 );
});
})();