var PageTransitions = (function($) { var startElement = 0, animEndEventNames = { 'WebkitAnimation': 'webkitAnimationEnd', 'OAnimation': 'oAnimationEnd', 'msAnimation': 'MSAnimationEnd', 'animation': 'animationend' } function getTransitionPrefix() { var b = document.body || document.documentElement; var s = b.style; var p = 'animation'; if(typeof s[p] == 'string') return 'animation'; // Tests for vendor specific prop var v = ['Moz', 'Webkit', 'Khtml', 'O', 'ms'], p = p.charAt(0).toUpperCase() + p.substr(1); for( var i=0; i= pagesCount) { current=0; } block.data('current', current); var $nextPage = $pages.eq(current); outClass.forEach(function(c) { $currPage.addClass(c); }); $currPage.on(animEndEventName, function() { $currPage.off(animEndEventName); endCurrPage = true; if(endNextPage) { if(jQuery.isFunction(callback)) { callback(block, $nextPage, $currPage); } onEndAnimation($currPage, $nextPage, block); } }); inClass.forEach(function(c) { $nextPage.addClass(c); }); $nextPage.addClass("et-page-current"); $nextPage.on(animEndEventName, function() { $nextPage.off(animEndEventName); endNextPage = true; if(endCurrPage) { onEndAnimation($currPage, $nextPage, block); } }); } function onEndAnimation($outpage, $inpage, block) { resetPage($outpage, $inpage); $outpage.trigger("animation.out.complete"); $inpage.trigger("animation.in.complete"); block.data('isAnimating', false); } function resetPage($outpage, $inpage) { $outpage.attr('class', $outpage.data( 'originalClassList')); $inpage.attr('class', $inpage.data( 'originalClassList') + ' et-page-current'); } function formatClass(str) { var classes = str.split(" "); var output = []; for(var i=0; i