Template:Toulouse France/MAINJS

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

});