var ANIMATIONEND = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
/**
- FullPageSlider Class
- Singleton
- Control Page to slide horizontally.
- /
var FullPageSlider = (function() {
var _opts, _state;
_state = 0;
function _animate(which, type, callback) { if (type === 'in') { $(_opts.pages[which]).show(); _opts.animations[which].aIn(callback); } else { _opts.animations[which].aOut(callback); } }
function _switch(current, target) { for (var i = 0, len = _opts.pages.length; i < len; i++) { if (i !== target && i !== current) { $(_opts.pages[i]).hide(); } }
_animate(current, 'out', function() { $(_opts.pages[current]).hide(); _animate(target, 'in', function() { if (target !== 0) { _opts.leftBtn.fadeIn(); } if (target !== _opts.pages.length - 1) { _opts.rightBtn.fadeIn(); } }); }); }
function _act(oldState) { var newState = _state; _switch(oldState, newState); _opts.leftBtn.fadeOut(); _opts.rightBtn.fadeOut(); }
function _goToPrev(event) { var oldState = _state; _state = _state - 1 < 0 ? 0 : _state - 1; _act(oldState); } function _goToNext(event) { var oldState = _state; var len = _opts.pages.length; _state = _state + 1 >= len ? len - 1 : _state + 1; _act(oldState); } function _addListener() { _opts.leftBtn.on('click', function(e) { _goToPrev(e); });
_opts.rightBtn.on('click', function(e) { _goToNext(e); }); }
return { init: function(options) { _opts = options; _addListener(); } };
}());
var $cell = $('.cell'),
$clock = $('.clock'), $ccres = $('.cell-clock-res'), $svg = $('.svg-wrapper'), $logo = $('.logo-wrapper');
/**
* anims is array of animations of each page */
var anims = [
{ aIn: function(cb) { $logo.addClass('animated zoomIn'); $logo.one(ANIMATIONEND, function() { $logo.removeClass('zoomIn'); cb(); }); }, aOut: function(cb) { $logo.addClass('animated fadeOutLeft'); $logo.one(ANIMATIONEND, function() { $logo.removeClass('fadeOutLeft').removeClass('zoomIn'); cb(); }); } }, { aIn: function(cb) { $ccres.removeClass('zoomOut'); $cell.addClass('animated fadeInLeft'); $clock.addClass('animated fadeInRight'); $clock.one(ANIMATIONEND, function() { $ccres.show().addClass('animated zoomIn'); $ccres.one(ANIMATIONEND, function() { cb(); }); }); }, aOut: function(cb) { $ccres.addClass('animated zoomOut');
$ccres.one(ANIMATIONEND, function() { cb(); $cell.removeClass('fadeInLeft'); $clock.removeClass('fadeInRight'); $ccres.removeClass('zoomOut').removeClass('zoomIn').hide(); }); } }, { aIn: function(cb) { $svg.addClass('animated zoomIn').one(ANIMATIONEND, function() { cb(); }); }, aOut: function(cb) { $svg.addClass('animated zoomOut'); $svg.one(ANIMATIONEND, function() { $svg.removeClass('zoomOut').removeClass('zoomIn'); cb(); }); } }
];
FullPageSlider.init({
leftBtn: $('#arrow_left'), rightBtn: $('#arrow_right'), pages: $('.section'), animations: anims
});