We harness the knowledge and experience of our global enterprise to deliver innovation and results for our clients, some of the world’s most renowned retailers and brands.
Everything we do begins with an understanding of the brand and its audience. With that knowledge, we imagine, design, produce and measure unforgettable consumer experiences.
var verticalSlider137 = {
scrollThreshold: 1,
sectionsContainer: null,
sections: null,
delta: 0,
animating: false,
currentSection: null,
animationsSettings: {
visible: 'translateNone',
top: 'translateUp.half',
bottom: 'translateDown',
easing: 'easeInCubic',
duration: 800
},
init: function() {
var _this = this;
this.sectionsContainer = jQuery('.vs-slider137');
this.sections = jQuery('.vs-section137');
this.currentSection = this.sections.filter('.active');
setTimeout(function() {
_this.currentSection.velocity( _this.animationsSettings.visible, 0 );
if( _this.currentSection.prevAll('.vs-section137').index() > -1 ) {
_this.currentSection.prevAll('.vs-section137').css('opacity', 1).velocity( _this.animationsSettings.top, 0 );
}
if( _this.currentSection.nextAll('.vs-section137').index() > -1 ) {
_this.currentSection.nextAll('.vs-section137').css('opacity', 1).velocity( _this.animationsSettings.bottom, 0 );
}
_this.bindEvents();
}, 100);
},
prev: function() {
this.moveTo( this.currentSection.index() - 1 );
},
next: function() {
this.moveTo( this.currentSection.index() + 1 );
},
moveTo: function( sectionIndex ) {
var _this = this;
var nextSection;
var animation;
if( !this.animating && this.currentSection.index() !== sectionIndex ) {
_this.animating = true;
if( sectionIndex > -1 && sectionIndex < _this.sections.length ) {
if( sectionIndex > _this.currentSection.index() ) { // Requested section is after the current one
nextSection = _this.currentSection.next('.vs-section137');
animation = _this.animationsSettings.top;
} else { // Requested section is before the current one
nextSection = _this.currentSection.prev('.vs-section137');
animation = _this.animationsSettings.bottom;
}
_this.currentSection.removeClass('active').velocity( animation, _this.animationsSettings.easing, _this.animationsSettings.duration );
nextSection.addClass('active').velocity(_this.animationsSettings.visible, _this.animationsSettings.easing, _this.animationsSettings.duration, function() {
_this.animating = false;
_this.currentSection = nextSection;
});
} else {
if( sectionIndex <= -1 ) {
_this.currentSection.velocity( 'bounceDown', _this.animationsSettings.easing, 400, function() {
_this.animating = false;
});
} else if( sectionIndex >= _this.sections.length ) { // Requested section is after the last one
_this.currentSection.velocity( 'bounceUp', _this.animationsSettings.easing, 400, function() {
_this.animating = false;
});
}
}
} else {
return false;
}
},
bindEvents: function() {
var _this = this;
jQuery( window ).on('DOMMouseScroll mousewheel', function( event ) {
if ( event.originalEvent.detail < 0 || event.originalEvent.wheelDelta > 0 ) {
_this.delta--;
if( Math.abs( _this.delta ) >= _this.scrollThreshold ) {
_this.prev();
} else {
return false;
}
} else {
_this.delta++;
if( _this.delta >= _this.scrollThreshold ) {
_this.next();
} else {
return false;
}
}
delta = 0;
return false;
});
jQuery( document ).on('keyup', function( event ) {
if( event.which == '40' ) {
_this.next();
} else if( event.which == '38' ) {
_this.prev();
}
});
if( Modernizr.touch ) {
var hammerVS = new Hammer( _this.sectionsContainer[0] );
hammerVS.get('swipe').set({ direction: Hammer.DIRECTION_VERTICAL });
hammerVS.on('swipeup', function() { _this.next(); });
hammerVS.on('swipedown', function() { _this.prev(); });
var hammerVSprev = new Hammer( jQuery('.vs-prev-137')[0] );
var hammerVSnext = new Hammer( jQuery('.vs-next-137')[0] );
hammerVSprev.on('tap', function() { _this.prev(); });
hammerVSnext.on('tap', function() { _this.next(); });
} else {
jQuery('.vs-prev-137').on('click', function() { _this.prev(); });
jQuery('.vs-next-137').on('click', function() { _this.next(); });
}
}
};
var verticalSlider135 = {
scrollThreshold: 1,
sectionsContainer: null,
sections: null,
delta: 0,
animating: false,
currentSection: null,
animationsSettings: {
visible: 'translateNone',
top: 'translateUp.half',
bottom: 'translateDown',
easing: 'easeInCubic',
duration: 800
},
init: function() {
var _this = this;
this.sectionsContainer = jQuery('.vs-slider135');
this.sections = jQuery('.vs-section135');
this.currentSection = this.sections.filter('.active');
setTimeout(function() {
_this.currentSection.velocity( _this.animationsSettings.visible, 0 );
if( _this.currentSection.prevAll('.vs-section135').index() > -1 ) {
_this.currentSection.prevAll('.vs-section135').css('opacity', 1).velocity( _this.animationsSettings.top, 0 );
}
if( _this.currentSection.nextAll('.vs-section135').index() > -1 ) {
_this.currentSection.nextAll('.vs-section135').css('opacity', 1).velocity( _this.animationsSettings.bottom, 0 );
}
_this.bindEvents();
}, 100);
},
prev: function() {
this.moveTo( this.currentSection.index() - 1 );
},
next: function() {
this.moveTo( this.currentSection.index() + 1 );
},
moveTo: function( sectionIndex ) {
var _this = this;
var nextSection;
var animation;
if( !this.animating && this.currentSection.index() !== sectionIndex ) {
_this.animating = true;
if( sectionIndex > -1 && sectionIndex < _this.sections.length ) {
if( sectionIndex > _this.currentSection.index() ) { // Requested section is after the current one
nextSection = _this.currentSection.next('.vs-section135');
animation = _this.animationsSettings.top;
} else { // Requested section is before the current one
nextSection = _this.currentSection.prev('.vs-section135');
animation = _this.animationsSettings.bottom;
}
_this.currentSection.removeClass('active').velocity( animation, _this.animationsSettings.easing, _this.animationsSettings.duration );
nextSection.addClass('active').velocity(_this.animationsSettings.visible, _this.animationsSettings.easing, _this.animationsSettings.duration, function() {
_this.animating = false;
_this.currentSection = nextSection;
});
} else {
if( sectionIndex <= -1 ) {
_this.currentSection.velocity( 'bounceDown', _this.animationsSettings.easing, 400, function() {
_this.animating = false;
});
} else if( sectionIndex >= _this.sections.length ) { // Requested section is after the last one
_this.currentSection.velocity( 'bounceUp', _this.animationsSettings.easing, 400, function() {
_this.animating = false;
});
}
}
} else {
return false;
}
},
bindEvents: function() {
var _this = this;
jQuery( window ).on('DOMMouseScroll mousewheel', function( event ) {
if ( event.originalEvent.detail < 0 || event.originalEvent.wheelDelta > 0 ) {
_this.delta--;
if( Math.abs( _this.delta ) >= _this.scrollThreshold ) {
_this.prev();
} else {
return false;
}
} else {
_this.delta++;
if( _this.delta >= _this.scrollThreshold ) {
_this.next();
} else {
return false;
}
}
delta = 0;
return false;
});
jQuery( document ).on('keyup', function( event ) {
if( event.which == '40' ) {
_this.next();
} else if( event.which == '38' ) {
_this.prev();
}
});
if( Modernizr.touch ) {
var hammerVS = new Hammer( _this.sectionsContainer[0] );
hammerVS.get('swipe').set({ direction: Hammer.DIRECTION_VERTICAL });
hammerVS.on('swipeup', function() { _this.next(); });
hammerVS.on('swipedown', function() { _this.prev(); });
var hammerVSprev = new Hammer( jQuery('.vs-prev-135')[0] );
var hammerVSnext = new Hammer( jQuery('.vs-next-135')[0] );
hammerVSprev.on('tap', function() { _this.prev(); });
hammerVSnext.on('tap', function() { _this.next(); });
} else {
jQuery('.vs-prev-135').on('click', function() { _this.prev(); });
jQuery('.vs-next-135').on('click', function() { _this.next(); });
}
}
};
jQuery(document).ready(function ($) {
verticalSlider137.init();
$('.image-gallery137').click('click', function() {
var dataID = $(this).attr('data-id');
$(this).addClass('open');
$('#image-gallery-cat-'+dataID).fadeIn('slow', function() {
contactOpen = true;
});
$( ".vs-slider137 div" ).removeClass("active").css({"transform": "translateY(100%)"});
$( ".vs-slider137 div:first-child" ).addClass('active').css({"transform": "translateY(0px)"});
verticalSlider137.init();
});
verticalSlider135.init();
$('.image-gallery135').click('click', function() {
var dataID = $(this).attr('data-id');
$(this).addClass('open');
$('#image-gallery-cat-'+dataID).fadeIn('slow', function() {
contactOpen = true;
});
$( ".vs-slider135 div" ).removeClass("active").css({"transform": "translateY(100%)"});
$( ".vs-slider135 div:first-child" ).addClass('active').css({"transform": "translateY(0px)"});
verticalSlider135.init();
});
});