Guest User

Untitled

a guest
Aug 31st, 2016
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* ******************* */
  2. /* begin user settings */
  3. /* ******************* */
  4.  
  5. // replace the number below with your slider's ID
  6. // http://tinyurl.com/zb6hzpc
  7. var api = revapi20;
  8.  
  9. // add horizontal scrollbar
  10. var scrollbar = true;
  11.  
  12. // elastic animation timing/duration
  13. var elasticDistance = false,
  14.     elasticTiming = 0.5;
  15.  
  16. /* ***************** */
  17. /* end user settings */
  18. /* ***************** */
  19.  
  20. var totalSlides,
  21.     hasElastic,
  22.     sliderWid,
  23.     scrollWid,
  24.     scroller,
  25.     keyboard,
  26.     slider,
  27.     wheel,
  28.     timer,
  29.     swipe,
  30.     wheelDirection,
  31.     bodies = jQuery('body'),
  32.     data = api.data('opt').navigation,
  33.     touches = 'ontouchend' in document ? ['touchstart.cj', 'touchmove.cj', 'touchend.cj'] :
  34.                                          ['mousedown.cj',  'mousemove.cj', 'mouseup.cj'];
  35.  
  36. if(data.touch.touchenabled === 'on') {
  37.  
  38.     data.touch.touchenabled = 'off';
  39.     swipe = true;
  40.  
  41. }
  42.  
  43. if(data.keyboardNavigation === 'on') {
  44.    
  45.     data.keyboardNavigation = 'off';
  46.     keyboard = true;
  47.    
  48. }
  49.  
  50. if(data.mouseScrollNavigation !== 'off') {
  51.    
  52.     data.mouseScrollNavigation = 'off';
  53.     wheelDirection = data.mouseScrollReverse === 'default';
  54.     wheel = true;
  55.    
  56. }
  57.  
  58. api.on('revolution.slide.onloaded', function() {
  59.    
  60.     hasElastic = elasticDistance;
  61.     totalSlides = api.revmaxslide();
  62.    
  63.     slider = api.find('.tp-revslider-mainul').addClass('film-strip');
  64.     sliderWid = slider.width();
  65.    
  66.     api.find('.tp-revslider-slidesli').not('.tp-invisible-slide').each(setPositions);
  67.     api.on('revolution.slide.onbeforeswap', slideChange).addClass('the-slider-loaded');
  68.  
  69.     if(swipe) addSwipe(api, data.touch['swipe_threshold']);
  70.     if(scrollbar) addScrollbar();
  71.     if(keyboard) jQuery(document).on('keydown', onKey);
  72.     if(wheel) api.on('wheel', onWheel);
  73.  
  74.     jQuery(window).on('resize focus', onResize);
  75.  
  76. });
  77.  
  78. function onWheel(event) {
  79.    
  80.     api.revpause();
  81.     slider.off('transitionend.cj').one('transitionend.cj', onEnded);
  82.    
  83.     event = event.originalEvent.deltaY;
  84.     var curSlide = Math.round(Math.abs(parseInt(slider[0].style.left, 10) / sliderWid));    
  85.    
  86.     if(wheelDirection ? event > 0 : event < 0) {
  87.    
  88.         if(curSlide < totalSlides - 1) slideChange(false, false, curSlide + 1);
  89.        
  90.     }
  91.     else {
  92.    
  93.         if(curSlide > 0) slideChange(false, false, curSlide - 1);
  94.        
  95.     }
  96.    
  97.     return false;
  98.    
  99. }
  100.  
  101. function onKey(event) {
  102.    
  103.     var key = event.which,
  104.         curSlide;
  105.    
  106.     if(key === 37) {
  107.        
  108.         curSlide = Math.round(Math.abs(parseInt(slider[0].style.left, 10) / sliderWid));
  109.         if(curSlide > 0) {
  110.            
  111.             api.revpause();
  112.             slider.off('transitionend.cj').one('transitionend.cj', onEnded);
  113.            
  114.             slideChange(false, false, curSlide - 1);
  115.             return false;
  116.            
  117.         }
  118.        
  119.     }
  120.     else if(key === 39) {
  121.        
  122.         curSlide = Math.round(Math.abs(parseInt(slider[0].style.left, 10) / sliderWid));
  123.         if(curSlide < totalSlides - 1) {
  124.  
  125.             api.revpause();
  126.             slider.off('transitionend.cj').one('transitionend.cj', onEnded);
  127.            
  128.             slideChange(false, false, curSlide + 1);
  129.             return false;
  130.            
  131.         }
  132.        
  133.     }
  134.    
  135. }
  136.  
  137. function slideChange(e, data, pos) {
  138.  
  139.     var index = data ? data.nextslide.index() : pos;
  140.     pos = -(sliderWid * index);
  141.    
  142.     if(elasticDistance) {
  143.  
  144.         var dif = elasticTiming * 0.5;
  145.         dif += (Math.abs((api.revcurrentslide() - 1) - index) * elasticTiming) * 0.5;
  146.  
  147.         slider[0].style.transitionDuration = dif + 's';
  148.         if(scroller) scroller[0].style.transitionDuration = dif + 's';
  149.  
  150.     }
  151.     else if(hasElastic) {
  152.  
  153.         elasticDistance = true;
  154.  
  155.     }
  156.  
  157.     slider[0].style.left = pos + 'px';
  158.     if(scroller) {
  159.  
  160.         var perc = -pos / (sliderWid * (totalSlides - 1));
  161.         scroller[0].style.left = ((sliderWid - scrollWid) * perc) + 'px';  
  162.  
  163.     }
  164.  
  165. }
  166.  
  167. function setPositions() {
  168.  
  169.     jQuery.fn.revolution.animateTheCaptions(jQuery(this), api.data('opt'), true);
  170.  
  171. }
  172.  
  173. function onResize(event) {
  174.    
  175.     api.off(touches[1]);
  176.     slider.off('transitionend.cj');
  177.     bodies.off(touches[1] + ' ' + touches[2]);
  178.    
  179.     if(event.type === 'focus') {
  180.    
  181.         sliderWid = slider.width();
  182.         if(scroller) {
  183.            
  184.             scrollWid = scroller.width();
  185.             scroller[0].style.left = '0px';
  186.            
  187.         }
  188.        
  189.         elasticDistance = false;
  190.         api.revshowslide(1);
  191.        
  192.         return;
  193.    
  194.     }
  195.    
  196.     clearTimeout(timer);
  197.     timer = setTimeout(resized, 100);    
  198.  
  199. }
  200.  
  201. function resized() {
  202.    
  203.     sliderWid = slider.width();
  204.     api.find('.tp-revslider-slidesli').not('.tp-invisible-slide').each(setPositions);
  205.    
  206.     var pos = -((sliderWid * (api.revcurrentslide() - 1)));
  207.     slider[0].style.left = pos + 'px';
  208.    
  209.     if(scroller) {
  210.        
  211.         var perc = -pos / (sliderWid * (totalSlides - 1));
  212.         scrollWid = scroller.width();      
  213.         scroller[0].style.left = ((sliderWid - scrollWid) * perc) + 'px';  
  214.  
  215.     }
  216.    
  217. }
  218.  
  219. function onEnded() {
  220.    
  221.     var index = Math.round(Math.abs(parseInt(slider[0].style.left, 10) / sliderWid));                      
  222.     api.revshowslide(index + 1);
  223.     api.revresume();
  224.  
  225. }
  226.  
  227. function addSwipe(api, threshold) {
  228.    
  229.     var pos,
  230.         perc,
  231.         newX,
  232.         prevX,
  233.         newPos;
  234.    
  235.     slider.addClass('tp-carousel-wrapper');
  236.     api.on(touches[0], function(event) {
  237.        
  238.         api.revpause();
  239.         slider.off('transitionend.cj').removeClass('film-strip').addClass('dragged');
  240.        
  241.         event = event.originalEvent;
  242.         if(event.touches) event = event.touches[0];
  243.  
  244.         prevX = event.pageX;
  245.         newX = prevX;
  246.         pos = parseInt(slider[0].style.left, 10) || 0;
  247.         newPos = pos;
  248.        
  249.         if(scroller) scroller.removeClass('film-strip');
  250.         bodies.off(touches[2]).one(touches[2], onUp);
  251.         api.off(touches[1]).on(touches[1], onMove);
  252.        
  253.         return false;
  254.  
  255.     });
  256.  
  257.     function onMove(event) {
  258.  
  259.         event = event.originalEvent;
  260.         if(event.touches) event = event.touches[0];
  261.        
  262.         newX = event.pageX;
  263.         newPos = pos + (newX - prevX);
  264.         slider[0].style.left = newPos + 'px';      
  265.        
  266.         if(scroller) {
  267.            
  268.             perc = -newPos / (sliderWid * (totalSlides - 1));
  269.             scroller[0].style.left = ((sliderWid - scrollWid) * perc) + 'px';  
  270.            
  271.         }
  272.        
  273.         event.preventDefault();
  274.  
  275.     }
  276.  
  277.     function onUp(event) {
  278.                                  
  279.         api.off(touches[1]);
  280.         bodies.off(touches[2]);
  281.        
  282.         if(Math.abs(newX - prevX) > threshold) {
  283.        
  284.             var sliderHalf = sliderWid * 0.5;
  285.             newPos += newX < prevX ? -sliderHalf : sliderHalf;
  286.            
  287.         }
  288.        
  289.         newPos = Math.max(Math.min(newPos, 0), -(sliderWid * (totalSlides - 1)));            
  290.         var index = Math.round(Math.abs(newPos / sliderWid));
  291.        
  292.         slider.one('transitionend.cj', onEnded).removeClass('dragged').addClass('film-strip');
  293.         slider[0].style.left = -(index * sliderWid) + 'px';
  294.        
  295.         if(scroller) {
  296.            
  297.             scroller.addClass('film-strip');
  298.             scroller[0].style.left = (index * scrollWid) + 'px';
  299.            
  300.         }
  301.  
  302.     }
  303.    
  304. }
  305.  
  306. function barClick(event) {
  307.                                  
  308.     api.revpause();
  309.     slider.off('transitionend.cj');
  310.    
  311.     var pos = event.pageX - api.offset().left - (scroller.width() * 0.5);                          
  312.     pos = Math.min(Math.max(pos, 0), sliderWid - scrollWid);
  313.                                                          
  314.     var perc = pos / (sliderWid - scrollWid);                            
  315.     pos = -((sliderWid * (totalSlides - 1)) * perc);
  316.    
  317.     var index = Math.round(Math.abs(pos / sliderWid));                      
  318.     api.revshowslide(index + 1);
  319.    
  320. }
  321.                              
  322. function addScrollbar() {
  323.    
  324.     var pos,
  325.         perc,
  326.         newX,
  327.         prevX,
  328.         newPos,
  329.         scrollW = (100 / totalSlides) + '%',
  330.         container = jQuery('<div class="horizontal-scrollbar-container" />');
  331.    
  332.     jQuery('<div class="horizontal-scrollbar-base" />').on('click', barClick).appendTo(container);
  333.     scroller = jQuery('<div class="horizontal-scrollbar film-strip" style="width: ' + scrollW + '" />').appendTo(container);
  334.     container.insertAfter(slider);
  335.     scrollWid = scroller.width();
  336.                              
  337.     scroller.on(touches[0], function(event) {
  338.        
  339.         api.revpause();
  340.         slider.off('transitionend.cj').removeClass('film-strip');
  341.         scroller.removeClass('film-strip');
  342.        
  343.         event = event.originalEvent;
  344.         if(event.touches) event = event.touches[0];
  345.  
  346.         prevX = event.pageX;
  347.         newX = prevX;
  348.         pos = parseInt(scroller[0].style.left, 10) || 0;
  349.         perc = pos / (sliderWid - scrollWid);
  350.         newPos = -((sliderWid * (totalSlides - 1)) * perc);
  351.        
  352.         bodies.off(touches[1] + ' ' + touches[2]).one(touches[2], onUp).on(touches[1], onMove);
  353.         return false;
  354.  
  355.     });
  356.  
  357.     function onMove(event) {
  358.        
  359.         event = event.originalEvent;
  360.         if(event.touches) event = event.touches[0];
  361.        
  362.         newX = event.pageX;
  363.         newPos = pos + (newX - prevX);
  364.         newPos = Math.min(Math.max(newPos, 0), sliderWid - scrollWid);
  365.        
  366.         scroller[0].style.left = newPos + 'px';
  367.         perc = newPos / (sliderWid - scrollWid);
  368.        
  369.         newPos = -((sliderWid * (totalSlides - 1)) * perc);
  370.         slider[0].style.left = newPos + 'px';
  371.                              
  372.         event.preventDefault();
  373.  
  374.     }
  375.  
  376.     function onUp(event) {
  377.  
  378.         api.off(touches[1]);
  379.         bodies.off(touches[1] + ' ' + touches[2]);
  380.        
  381.         newPos = Math.max(Math.min(newPos, 0), -(sliderWid * totalSlides) + sliderWid);                  
  382.         var index = Math.round(Math.abs(newPos / sliderWid));  
  383.        
  384.         scroller.addClass('film-strip');
  385.         scroller[0].style.left = (index * scrollWid) + 'px';
  386.        
  387.         slider.one('transitionend.cj', onEnded).addClass('film-strip');
  388.         slider[0].style.left = -(index * sliderWid) + 'px';
  389.  
  390.     }
  391.                              
  392. }
Add Comment
Please, Sign In to add comment