var logo = $('.logo').html();
$(window).on('scroll', function(){
if(window.pageYOffset > 60){
$('header').addClass('scrolled');
$('.logo img').prop('src', $('.logo img').data('colored'));
}
else{
$('header').removeClass('scrolled');
$('.logo').html(logo);
}
if(window.pageYOffset > 700){
$('#gotoTop').show().addClass('active');
}
else{
$('#gotoTop').removeClass('active').fadeOut();
}
var scrollPos = $(document).scrollTop();
$('.tabMenu a').each(function () {
var currLink = $(this);
var refElement = $(currLink.attr("href"));
if ((refElement.position().top-300) <= scrollPos) {
$('.tabMenu a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
$('.serviceMenuLinks > a').each(function () {
var currLink = $(this);
var refElement = $(currLink.attr("href"));
if ((refElement.position().top+200) <= scrollPos) {
$('.serviceMenuLinks > a').removeClass("active");
currLink.addClass("active");
}
else{
currLink.removeClass("active");
}
});
});
$('.hamburger').on('click', function(){
$(this).toggleClass('active');
if($('.hamburger').hasClass('active')){
$('.mobileMenuCurtain').fadeIn();
$('body').css('overflow', 'hidden');
$('header').css('position', 'fixed');
$('.logo img').prop('src', $('.logo img').data('colored'));
$('.headerRight').css({'display':'flex', 'opacity':'0', 'transition':'0.5s'});
$('.menu').css({'display':'block', 'opacity':'0'});
setTimeout(function(){
$('.headerRight, .menu').css({'transition':'1.5s', 'opacity':'1'});
}, 100);
}
else{
$('.mobileMenuCurtain').fadeOut();
$('body').css('overflow', 'auto');
$('header').css('position', 'absolute');
$('header').hasClass('scrolled') ? null : $('.logo').html(logo);
$('.headerRight, .menu').css({'transition':'0.2s', 'opacity':'0'});
setTimeout(function(){
$('.headerRight, .menu').css('display', 'none');
}, 200);
}
});
var scrollCompensation = 160;
$(document).ready(function () {
$('a[href^="#"]').on('click', function (e) {
e.preventDefault();
$(document).off("scroll");
$('a').each(function () {
$(this).removeClass('active');
})
$(this).addClass('active');
var target = this.hash,
$target = $(target);
$('html, body').stop().animate({
'scrollTop': ($target.offset().top-scrollCompensation)
}, 1000, 'swing');
});
});
$('.menu > li > span').on('click', function(){
if(!$(this).parent('li').hasClass('active')){
$('.menu > li').removeClass('active');
$(this).parent('li').addClass('active');
}
else{
$('.menu > li').removeClass('active');
}
});
$('.trialPopup').on('click', function(){
$('#trialPopup').fadeIn(500).addClass('active');
$('#trialPopup').find('.trigger').prop('value', $(this).data('trigger'));
$('body').css('overflow', 'hidden');
});
$('.popupCover .close').on('click', function(){
$('body').css('overflow', 'auto');
$('.popupCover').removeClass('active').fadeOut(1500);
});
$(document).keyup(function(e) {
if (e.keyCode === 27) { // esc key press -->
$('.popupCover .close').click();
}
});
// ------ Service Pages Start ----- //
let minHeight = 0;
$('.motivationSlides > div').each(function(){
if($(this).outerHeight() > minHeight){
minHeight = $(this).outerHeight();
}
});
$('.motivationSlides > div').css('min-height', minHeight+'px');
$('.motivationHolder').css('min-height', Math.ceil($('.motivationSlides > div.active').outerHeight()));
$('.motivationTabs > li').on('click', function(){
let indexOfClicked = $(this).index();
$('.motivationSlides > div').removeClass('active');
$('.motivationTabs > li').removeClass('active');
$(this).addClass('active');
$('.motivationTabs').animate({
'scrollLeft': ($(this).position().left)-($('.motivationTabs > li:first-child').position().left)-($(window).width()/2)+($(this).outerWidth()/1.6)
}, 500, 'swing');
$('.motivationSlides').children('div').addClass('changing');
setTimeout(function(){
$('.motivationSlides > div').eq(indexOfClicked).removeClass('changing').addClass('active');
}, 800);
});
$('.verticalSlides > div').each(function(){
$(this).append('0'+($(this).index()+1)+'');
});
$('.verticalTabs > li').each(function(){
$(this).append('0'+($(this).index()+1)+'');
});
$('.verticalTabs > li').on('click', function(){
$('.verticalTabs > li').removeClass('active');
$(this).addClass('active');
$('.verticalSlides > div').removeClass('active');
$('.verticalSlides > div').eq($(this).index()).addClass('active').css('display', 'none').fadeIn(500);
$('.verticalTabs').animate({
'scrollLeft': ($(this).position().left)-($('.verticalTabs > li:first-child').position().left)-($(window).width()/2)+($(this).outerWidth()/1.3)
}, 500, 'swing');
});
$('.boxSlides > div').each(function(){
$(this).children('h1').append('
');
});
$('.boxSlides p').css('max-width', $('.boxSlides > div.active').outerWidth()-60);
let totalBoxSlides = $('.boxSlides > div').length;
let currentBoxSlide = 1;
$('.boxSliderIndex').html('1 of '+totalBoxSlides);
$('.boxSliderControls .control').on('click', function(){
$(this).hasClass('right') ? currentBoxSlide++ : currentBoxSlide-- ;
currentBoxSlide < 1 ? currentBoxSlide = totalBoxSlides : null;
currentBoxSlide > totalBoxSlides ? currentBoxSlide = 1 : null;
$('.boxSliderIndex').html(currentBoxSlide+' of '+totalBoxSlides);
$('.boxSlides > div').removeClass('active');
$('.boxSlides').children('div').eq(currentBoxSlide-1).addClass('active');
});
$('.slidingBoxesControls .control').on('click', function(){
let rollTo = 0;
$(this).fadeOut();
if( $(this).hasClass('right') ){
$('.slidingBoxesControls .left').fadeIn();
rollTo = 2000;
}
else{
$('.slidingBoxesControls .right').fadeIn();
rollTo = 0;
}
$('.slidingBoxes .extendedBoxes').animate({
'scrollLeft': rollTo
}, 1000, 'swing');
});
$('.flipSlider').append('');
let totalflipSlides = 0;
$('.flipSlides > div').each(function(){
totalflipSlides++;
$('.flipSliderDots').append('0'+totalflipSlides+'');
});
$('.flipSliderDots > span:first-child').addClass('active');
let SlideNumber = 0;
$('.flipSliderDots > span').on('click', function(){
if($(this).index() != SlideNumber){
SlideNumber = $(this).index();
$('.flipSliderDots > span').removeClass('active');
$('.flipSliderDots > span').eq(SlideNumber).addClass('active');
$(this).addClass('active');
$('.flipSlides > div').addClass('flipping');
setTimeout(function(){
$('.flipSlides > div').removeClass('active');
$('.flipSlides > div').eq(SlideNumber).addClass('active');
$('.flipSlides > div').removeClass('flipping');
}, 500);
}
});
$('.accordion > div').on('click', function(){
if(!$(this).hasClass('active')){
$('.accordion > div').removeClass('active');
$(this).addClass('active');
}
else{
$('.accordion > div').removeClass('active');
}
});
// ------ Service Pages End ----- //
// Carousel start //
var slideInterval = 8000;
var slideBar = 100;
var startProgress;
function slideProgress(){
if(slideBar<0){ slideBar = 100; }
$('.slideBar > div').css('right', slideBar+'%');
slideBar--;
}
/* ========================================================================
* Bootstrap: transition.js v3.3.5
* https://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: https://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);
/* ========================================================================
* Bootstrap: carousel.js v3.3.5
* https://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CAROUSEL CLASS DEFINITION
// =========================
var Carousel = function (element, options) {
this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.paused = null
this.sliding = null
this.interval = null
this.$active = null
this.$items = null
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) //&& this.$element
//.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
//.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.3.5'
Carousel.TRANSITION_DURATION = 600
Carousel.DEFAULTS = {
interval: 5000,
pause: 'hover',
wrap: true,
keyboard: true
}
Carousel.prototype.keydown = function (e) {
if (/input|textarea/i.test(e.target.tagName)) return
switch (e.which) {
case 37: this.prev(); break
case 39: this.next(); break
default: return
}
e.preventDefault()
}
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
Carousel.prototype.getItemIndex = function (item) {
this.$items = item.parent().children('.item')
return this.$items.index(item || this.$active)
}
Carousel.prototype.getItemForDirection = function (direction, active) {
var activeIndex = this.getItemIndex(active)
var willWrap = (direction == 'prev' && activeIndex === 0)
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
if (willWrap && !this.options.wrap) return active
var delta = direction == 'prev' ? -1 : 1
var itemIndex = (activeIndex + delta) % this.$items.length
return this.$items.eq(itemIndex)
}
Carousel.prototype.to = function (pos) {
var that = this
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}
Carousel.prototype.pause = function (e) {
e || (this.paused = true)
if (this.$element.find('.next, .prev').length && $.support.transition) {
this.$element.trigger($.support.transition.end)
this.cycle(true)
}
this.interval = clearInterval(this.interval)
return this
}
Carousel.prototype.next = function () {
if (this.sliding) return
return this.slide('next')
}
Carousel.prototype.prev = function () {
if (this.sliding) return
return this.slide('prev')
}
Carousel.prototype.slide = function (type, next) {
var $active = this.$element.find('.item.active')
var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var that = this
if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', {
relatedTarget: relatedTarget,
direction: direction
})
this.$element.trigger(slideEvent)
if (slideEvent.isDefaultPrevented()) return
this.sliding = true
isCycling && this.pause()
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
$nextIndicator && $nextIndicator.addClass('active')
}
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type)
$next[0].offsetWidth // force reflow
$active.addClass(direction)
$next.addClass(direction)
$active
.one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
})
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
} else {
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
this.$element.trigger(slidEvent)
}
isCycling && this.cycle()
return this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.carousel')
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
var action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.pause().cycle()
})
}
var old = $.fn.carousel
$.fn.carousel = Plugin
$.fn.carousel.Constructor = Carousel
// CAROUSEL NO CONFLICT
// ====================
$.fn.carousel.noConflict = function () {
$.fn.carousel = old
return this
}
// CAROUSEL DATA-API
// =================
var clickHandler = function (e) {
var href
var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
Plugin.call($target, options)
if (slideIndex) {
$target.data('bs.carousel').to(slideIndex)
}
e.preventDefault()
}
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () {
$('[data-ride="carousel"]').each(function () {
var $carousel = $(this)
Plugin.call($carousel, $carousel.data())
});
startProgress = setInterval(slideProgress, slideInterval/100);
})
}(jQuery);
$('.carousel').carousel({
interval: slideInterval,
cycle: true
});
$('.carousel').bind('slide.bs.carousel', function (e) {
clearInterval(startProgress);
slideBar = 100;
startProgress = setInterval(slideProgress, slideInterval/100);
});
// corousel end //