/*------------------------------------------------------------------
Theme Name: Shuttle
Theme URL: http://codnauts.com
Author: Codnauts
Author URI: http://themeforest.net/user/codnauts
Version: 1.0
License: Regular or Extended from ThemeForest only
Plugin Licenses: GPL or MIT
Last change: first release
Primary use: App & Mobile Website
-------------------------------------------------------------------*/
// Adding strict mode
"use strict";
// This script prevents links from opening in Mobile Safari. https://gist.github.com/1042026
(function(a, b, c) {
if (c in b && b[c]) {
var d, e = a.location,
f = /^(a|html)$/i;
a.addEventListener("click", function(a) {
d = a.target;
while (!f.test(d.nodeName)) d = d.parentNode;
"href" in d && (d.href.indexOf("http") || ~d.href.indexOf(e.host)) && (a.preventDefault(), e.href = d.href)
}, !1)
}
})(document, window.navigator, "standalone")
// SmoothState
var duration_CONSTANT = 250;
var options = {
prefetch: true,
cacheLength: 0,
blacklist: '.no-smoothState',
onStart: {
duration: duration_CONSTANT,
render: function ($container) {
$('#bottom-sheet').closeModal();
$container.addClass('is-exiting');
smoothState.restartCSSAnimations();
setTimeout(function () { }, duration_CONSTANT * 2);
}
},
onReady: {
duration: 0,
render: function ($container, $newContent) {
$container.removeClass('is-exiting');
$container.html($newContent);
}
},
onAfter: function ($container, $newContent) {
setTimeout(function () {
ResizeHandler = ResizeHandler || function () { };
ResizeHandler();
}, 500)
initiate_plugins(); // All onAfter calls goes inside this function
}
};
var smoothState = $('#main').smoothState(options).data('smoothState');
/*------------------------------------------------------------------
Call all function for Ajax
-------------------------------------------------------------------*/
function initiate_plugins() {
// Body class fix
$('body').removeClass('menu-open');
// Tabs
$('ul.tabs').tabs();
// Modal
$('.modal-trigger').leanModal();
// Accordion
$('.collapsible').collapsible({
accordion: true
});
// Drag
$('.drag-target').remove();
// Right Sidebar
$('#open-right').sideNav({ // Trigger id
menuWidth: 280, // Default is 240
edge: 'right', // Choose the horizontal origin
closeOnClick: false // Closes side-nav on clicks, useful for Angular/Meteor
});
// Left Sidebar
$('#open-left').sideNav({ // Trigger id
menuWidth: 280, // Default is 240
edge: 'left', // Choose the horizontal origin
closeOnClick: true // Closes side-nav on clicks, useful for Angular/Meteor
});
// Swipebox
$('.swipebox').swipebox();
// Masonry
$('.grid').masonry({
itemSelector: '.grid-item'
});
// Material Layout
$('.parallax').parallax();
$(function () {
var hBanner = $('.hero-material').height();
var cbHeight = hBanner - 86;
var hHeight = hBanner - 86; // for Title
$(window).scroll(function () {
var scroll = $(window).scrollTop();
if (scroll >= cbHeight) {
$(".nav-material").addClass('nav-bg');
}
if (scroll <= cbHeight) {
$(".nav-material").removeClass('nav-bg');
}
// For heading Title
if (scroll >= hHeight) {
$(".banner-title").hide();
$(".nav-material .title").show();
}
if (scroll <= hHeight) {
$(".banner-title").show();
$(".nav-material .title").hide();
}
});
});
// Add Primary Color To Header After Scroll Down
$(function() {
//caches a jQuery object containing the header element
var header = $("#toolbar.trnasparent");
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 350) {
header.removeClass('transparent').addClass("primary-color");
} else {
header.removeClass("primary-color").addClass('transparent');
}
});
});
// Sliders
var swiper = new Swiper('.swiper-slider', { // Default
pagination: '.swiper-pagination',
paginationClickable: true,
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
autoplay: false,
loop: true,
paginationType: 'progress',
});
var swiper = new Swiper('.testimonials', { // Testimonial
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 20,
loop: true,
});
var swiper = new Swiper('.slider-sliced', { // Sliced
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.swiper-slider-full', { // Sliced
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.slider-drawer', { // Drawer
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.steps', { // Walkthrough
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
// MixItUP
$(function () {
var layout = 'grid', // Store the current layout as a variable
$container = $('#filter'), // Cache the MixItUp container
$changeLayout = $('#ChangeLayout'); // Cache the changeLayout button
// Instantiate MixItUp with some custom options:
try {
$container.mixItUp('destroy');
} catch (x) { }
$container.mixItUp({
animation: {
animateChangeLayout: true, // Animate the positions of targets as the layout changes
animateResizeTargets: true, // Animate the width/height of targets as the layout changes
effects: 'fade rotateX(-40deg) translateZ(-100px)'
},
layout: {
containerClass: 'grid' // Add the class 'grid' to the container on load
}
});
// MixItUp does not provide a default "change layout" button, so we need to make our own and bind it with a click handler:
$changeLayout.on('click', function () {
// If the current layout is a list, change to grid:
if (layout == 'grid') {
layout = 'list';
$changeLayout.text('Grid'); // Update the button text
$container.mixItUp('changeLayout', {
containerClass: layout // change the container class to "grid"
});
// Else if the current layout is a grid, change to list:
} else {
layout = 'grid';
$changeLayout.text('List'); // Update the button text
$container.mixItUp('changeLayout', {
containerClass: layout // Change the container class to 'list'
});
}
});
});
}
/*------------------------------------------------------------------
End of Call all function for Ajax
-------------------------------------------------------------------*/
// Tabs
$('ul.tabs').tabs();
// Modal
$('.modal-trigger').leanModal();
// Accordion
$('.collapsible').collapsible({
accordion: true
});
// Drag
$('.drag-target').remove();
// Right Sidebar
$('#open-right').sideNav({ // Trigger id
menuWidth: 280, // Default is 240
edge: 'right', // Choose the horizontal origin
closeOnClick: false // Closes side-nav on clicks, useful for Angular/Meteor
});
// Left Sidebar
$('#open-left').sideNav({ // Trigger id
menuWidth: 280, // Default is 240
edge: 'left', // Choose the horizontal origin
closeOnClick: true // Closes side-nav on clicks, useful for Angular/Meteor
});
// Swipebox
$('.swipebox').swipebox();
// Masonry
$('.grid').masonry({
itemSelector: '.grid-item'
});
// Material Layout
$('.parallax').parallax();
$(function () {
var hBanner = $('.hero-material').height();
var cbHeight = hBanner - 86;
var hHeight = hBanner - 86; // for Title
$(window).scroll(function () {
var scroll = $(window).scrollTop();
if (scroll >= cbHeight) {
$(".nav-material").addClass('nav-bg');
}
if (scroll <= cbHeight) {
$(".nav-material").removeClass('nav-bg');
}
// For heading Title
if (scroll >= hHeight) {
$(".banner-title").hide();
$(".nav-material .title").show();
}
if (scroll <= hHeight) {
$(".banner-title").show();
$(".nav-material .title").hide();
}
});
});
// Add Primary Color To Header After Scroll Down
$(function() {
//caches a jQuery object containing the header element
var header = $("#toolbar.transparent");
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 350) {
header.removeClass('transparent').addClass("primary-color");
} else {
header.removeClass("primary-color").addClass('transparent');
}
});
});
// Sliders
var swiper = new Swiper('.swiper-slider', { // Default
pagination: '.swiper-pagination',
paginationClickable: true,
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
autoplay: false,
loop: true,
paginationType: 'progress',
});
var swiper = new Swiper('.testimonials', { // Testimonial
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 20,
loop: true,
});
var swiper = new Swiper('.slider-sliced', { // Sliced
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.swiper-slider-full', { // Sliced
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.slider-drawer', { // Drawer
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
var swiper = new Swiper('.steps', { // Walkthrough
pagination: '.swiper-pagination',
slidesPerView: 1,
centeredSlides: true,
paginationClickable: true,
spaceBetween: 0,
});
// MixItUp
$(function () {
var layout = 'grid', // Store the current layout as a variable
$container = $('#filter'), // Cache the MixItUp container
$changeLayout = $('#ChangeLayout'); // Cache the changeLayout button
// Instantiate MixItUp with some custom options:
$container.mixItUp({
animation: {
animateChangeLayout: true, // Animate the positions of targets as the layout changes
animateResizeTargets: true, // Animate the width/height of targets as the layout changes
effects: 'fade rotateX(-40deg) translateZ(-100px)'
},
layout: {
containerClass: 'grid' // Add the class 'list' to the container on load
}
});
// MixItUp does not provide a default "change layout" button, so we need to make our own and bind it with a click handler:
$changeLayout.on('click', function () {
// If the current layout is a list, change to grid:
if (layout == 'grid') {
layout = 'list';
$changeLayout.text('Grid'); // Update the button text
$container.mixItUp('changeLayout', {
containerClass: layout // change the container class to "grid"
});
// Else if the current layout is a grid, change to list:
} else {
layout = 'grid';
$changeLayout.text('List'); // Update the button text
$container.mixItUp('changeLayout', {
containerClass: layout // Change the container class to 'list'
});
}
});
// init swiper layout
window.onload = function () {
setTimeout(function () {
ResizeHandler = ResizeHandler || function () { };
ResizeHandler();
}, 500)
};
});