Advertisement
Guest User

Untitled

a guest
May 23rd, 2011
883
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // page init
  2. jQuery(function(){
  3.     initSlideShow();
  4. })
  5.  
  6. // slideshow init
  7. function initSlideShow() {
  8.     jQuery('div.slideshow').fadeGallery({
  9.         slideElements:'ul.slideset li',
  10.         pagerLinks:'ul.switcher li',
  11.         btnNext:'a.link-next',
  12.         btnPrev:'a.link-prev',
  13.         pauseOnHover:true,
  14.         autoRotation:true,
  15.         autoHeight:false,
  16.         switchTime:5000,
  17.         duration:500
  18.     });
  19. }
  20.  
  21. // slideshow plugin
  22. jQuery.fn.fadeGallery = function(_options){
  23.     var _options = jQuery.extend({
  24.         slideElements:'ul.slideset > ul',
  25.         pagerLinks:'ul.switcher a',
  26.         btnNext:'a.next',
  27.         btnPrev:'a.prev',
  28.         btnPlayPause:'a.play-pause',
  29.         btnPlay:'a.play',
  30.         btnPause:'a.pause',
  31.         pausedClass:'paused',
  32.         disabledClass: 'disabled',
  33.         playClass:'playing',
  34.         activeClass:'active',
  35.         loadingClass:'ajax-loading',
  36.         loadedClass:'slide-loaded',
  37.         dynamicImageLoad:false,
  38.         dynamicImageLoadAttr:'alt',
  39.         currentNum:false,
  40.         allNum:false,
  41.         startSlide:null,
  42.         noCircle:false,
  43.         pauseOnHover:true,
  44.         autoRotation:false,
  45.         autoHeight:false,
  46.         onBeforeFade:false,
  47.         onAfterFade:false,
  48.         onChange:false,
  49.         disableWhileAnimating:false,
  50.         switchTime:3000,
  51.         duration:650,
  52.         event:'click'
  53.     },_options);
  54.  
  55.     return this.each(function(){
  56.         // gallery options
  57.         if(this.slideshowInit) return; else this.slideshowInit;
  58.         var _this = jQuery(this);
  59.         var _slides = jQuery(_options.slideElements, _this);
  60.         var _pagerLinks = jQuery(_options.pagerLinks, _this);
  61.         var _btnPrev = jQuery(_options.btnPrev, _this);
  62.         var _btnNext = jQuery(_options.btnNext, _this);
  63.         var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
  64.         var _btnPause = jQuery(_options.btnPause, _this);
  65.         var _btnPlay = jQuery(_options.btnPlay, _this);
  66.         var _pauseOnHover = _options.pauseOnHover;
  67.         var _dynamicImageLoad = _options.dynamicImageLoad;
  68.         var _dynamicImageLoadAttr = _options.dynamicImageLoadAttr;
  69.         var _autoRotation = _options.autoRotation;
  70.         var _activeClass = _options.activeClass;
  71.         var _loadingClass = _options.loadingClass;
  72.         var _loadedClass = _options.loadedClass;
  73.         var _disabledClass = _options.disabledClass;
  74.         var _pausedClass = _options.pausedClass;
  75.         var _playClass = _options.playClass;
  76.         var _autoHeight = _options.autoHeight;
  77.         var _duration = _options.duration;
  78.         var _switchTime = _options.switchTime;
  79.         var _controlEvent = _options.event;
  80.         var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);
  81.         var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);
  82.         var _startSlide = _options.startSlide;
  83.         var _noCycle = _options.noCircle;
  84.         var _onChange = _options.onChange;
  85.         var _onBeforeFade = _options.onBeforeFade;
  86.         var _onAfterFade = _options.onAfterFade;
  87.         var _disableWhileAnimating = _options.disableWhileAnimating;
  88.  
  89.         // gallery init
  90.         var _anim = false;
  91.         var _hover = false;
  92.         var _prevIndex = 0;
  93.         var _currentIndex = 0;
  94.         var _slideCount = _slides.length;
  95.         var _timer;
  96.         if(_slideCount < 2) return;
  97.  
  98.         _prevIndex = _slides.index(_slides.filter('.'+_activeClass));
  99.         if(_prevIndex < 0) _prevIndex = _currentIndex = 0;
  100.         else _currentIndex = _prevIndex;
  101.         if(_startSlide != null) {
  102.             if(_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random()*_slideCount);
  103.             else _prevIndex = _currentIndex = parseInt(_startSlide);
  104.         }
  105.         _slides.hide().eq(_currentIndex).show();
  106.         if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);
  107.         else _this.removeClass(_playClass).addClass(_pausedClass);
  108.  
  109.         // gallery control
  110.         if(_btnPrev.length) {
  111.             _btnPrev.bind(_controlEvent,function(){
  112.                 prevSlide();
  113.                 return false;
  114.             });
  115.         }
  116.         if(_btnNext.length) {
  117.             _btnNext.bind(_controlEvent,function(){
  118.                 nextSlide();
  119.                 return false;
  120.             });
  121.         }
  122.         if(_pagerLinks.length) {
  123.             _pagerLinks.each(function(_ind){
  124.                 jQuery(this).bind(_controlEvent,function(){
  125.                     if(_currentIndex != _ind) {
  126.                         if(_disableWhileAnimating && _anim) return;
  127.                         _prevIndex = _currentIndex;
  128.                         _currentIndex = _ind;
  129.                         switchSlide();
  130.                     }
  131.                     return false;
  132.                 });
  133.             });
  134.         }
  135.  
  136.         // play pause section
  137.         if(_btnPlayPause.length) {
  138.             _btnPlayPause.bind(_controlEvent,function(){
  139.                 if(_this.hasClass(_pausedClass)) {
  140.                     _this.removeClass(_pausedClass).addClass(_playClass);
  141.                     _autoRotation = true;
  142.                     autoSlide();
  143.                 } else {
  144.                     _autoRotation = false;
  145.                     if(_timer) clearTimeout(_timer);
  146.                     _this.removeClass(_playClass).addClass(_pausedClass);
  147.                 }
  148.                 return false;
  149.             });
  150.         }
  151.         if(_btnPlay.length) {
  152.             _btnPlay.bind(_controlEvent,function(){
  153.                 _this.removeClass(_pausedClass).addClass(_playClass);
  154.                 _autoRotation = true;
  155.                 autoSlide();
  156.                 return false;
  157.             });
  158.         }
  159.         if(_btnPause.length) {
  160.             _btnPause.bind(_controlEvent,function(){
  161.                 _autoRotation = false;
  162.                 if(_timer) clearTimeout(_timer);
  163.                 _this.removeClass(_playClass).addClass(_pausedClass);
  164.                 return false;
  165.             });
  166.         }
  167.  
  168.         // dynamic image loading (swap from ATTRIBUTE)
  169.         function loadSlide(slide) {
  170.             if(!slide.hasClass(_loadingClass) && !slide.hasClass(_loadedClass)) {
  171.                 var images = slide.find(_dynamicImageLoad) // pass selector here
  172.                 var imagesCount = images.length;
  173.                 if(imagesCount) {
  174.                     slide.addClass(_loadingClass);
  175.                     images.each(function(){
  176.                         var img = this;
  177.                         img.onload = function(){
  178.                             img.loaded = true;
  179.                             img.onload = null;
  180.                             setTimeout(reCalc,_duration);
  181.                         }
  182.                         img.setAttribute('src', img.getAttribute(_dynamicImageLoadAttr));
  183.                         img.setAttribute(_dynamicImageLoadAttr,'');
  184.                     }).css({opacity:0});
  185.  
  186.                     function reCalc() {
  187.                         var cnt = 0;
  188.                         images.each(function(){
  189.                             if(this.loaded) cnt++;
  190.                         });
  191.                         if(cnt == imagesCount) {
  192.                             slide.removeClass(_loadingClass);
  193.                             images.animate({opacity:1},{duration:_duration,complete:function(){
  194.                                 if(jQuery.browser.msie && jQuery.browser.version < 9) jQuery(this).css({opacity:'auto'})
  195.                             }});
  196.                             slide.addClass(_loadedClass)
  197.                         }
  198.                     }
  199.                 }
  200.             }
  201.         }
  202.  
  203.         // gallery animation
  204.         function prevSlide() {
  205.             if(_disableWhileAnimating && _anim) return;
  206.             _prevIndex = _currentIndex;
  207.             if(_currentIndex > 0) _currentIndex--;
  208.             else {
  209.                 if(_noCycle) return;
  210.                 else _currentIndex = _slideCount-1;
  211.             }
  212.             switchSlide();
  213.         }
  214.         function nextSlide() {
  215.             if(_disableWhileAnimating && _anim) return;
  216.             _prevIndex = _currentIndex;
  217.             if(_currentIndex < _slideCount-1) _currentIndex++;
  218.             else {
  219.                 if(_noCycle) return;
  220.                 else _currentIndex = 0;
  221.             }
  222.             switchSlide();
  223.         }
  224.         function refreshStatus() {
  225.             if(_dynamicImageLoad) loadSlide(_slides.eq(_currentIndex));
  226.             if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);
  227.             if(_currentNum) _currentNum.text(_currentIndex+1);
  228.             if(_allNum) _allNum.text(_slideCount);
  229.             _slides.eq(_prevIndex).removeClass(_activeClass);
  230.             _slides.eq(_currentIndex).addClass(_activeClass);
  231.             if(_noCycle) {
  232.                 if(_btnPrev.length) {
  233.                     if(_currentIndex == 0) _btnPrev.addClass(_disabledClass);
  234.                     else _btnPrev.removeClass(_disabledClass);
  235.                 }
  236.                 if(_btnNext.length) {
  237.                     if(_currentIndex == _slideCount-1) _btnNext.addClass(_disabledClass);
  238.                     else _btnNext.removeClass(_disabledClass);
  239.                 }
  240.             }
  241.             if(typeof _onChange === 'function') {
  242.                 _onChange(_this, _slides, _prevIndex, _currentIndex);
  243.             }
  244.         }
  245.         function switchSlide() {
  246.             _anim = true;
  247.             if(typeof _onBeforeFade === 'function') _onBeforeFade(_this, _slides, _prevIndex, _currentIndex);
  248.             _slides.eq(_prevIndex).fadeOut(_duration,function(){
  249.                 _anim = false;
  250.             });
  251.             _slides.eq(_currentIndex).fadeIn(_duration,function(){
  252.                 if(typeof _onAfterFade === 'function') _onAfterFade(_this, _slides, _prevIndex, _currentIndex);
  253.             });
  254.             if(_autoHeight) _slides.eq(_currentIndex).parent().animate({height:_slides.eq(_currentIndex).outerHeight(true)},{duration:_duration,queue:false});
  255.             refreshStatus();
  256.             autoSlide();
  257.         }
  258.  
  259.         // autoslide function
  260.         function autoSlide() {
  261.             if(!_autoRotation || _hover) return;
  262.             if(_timer) clearTimeout(_timer);
  263.             _timer = setTimeout(nextSlide,_switchTime+_duration);
  264.         }
  265.         if(_pauseOnHover) {
  266.             _this.hover(function(){
  267.                 _hover = true;
  268.                 if(_timer) clearTimeout(_timer);
  269.             },function(){
  270.                 _hover = false;
  271.                 autoSlide();
  272.             });
  273.         }
  274.         refreshStatus();
  275.         autoSlide();
  276.     });
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement