Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // page init
- jQuery(function(){
- initSlideShow();
- })
- // slideshow init
- function initSlideShow() {
- jQuery('div.slideshow').fadeGallery({
- slideElements:'ul.slideset li',
- pagerLinks:'ul.switcher li',
- btnNext:'a.link-next',
- btnPrev:'a.link-prev',
- pauseOnHover:true,
- autoRotation:true,
- autoHeight:false,
- switchTime:5000,
- duration:500
- });
- }
- // slideshow plugin
- jQuery.fn.fadeGallery = function(_options){
- var _options = jQuery.extend({
- slideElements:'ul.slideset > ul',
- pagerLinks:'ul.switcher a',
- btnNext:'a.next',
- btnPrev:'a.prev',
- btnPlayPause:'a.play-pause',
- btnPlay:'a.play',
- btnPause:'a.pause',
- pausedClass:'paused',
- disabledClass: 'disabled',
- playClass:'playing',
- activeClass:'active',
- loadingClass:'ajax-loading',
- loadedClass:'slide-loaded',
- dynamicImageLoad:false,
- dynamicImageLoadAttr:'alt',
- currentNum:false,
- allNum:false,
- startSlide:null,
- noCircle:false,
- pauseOnHover:true,
- autoRotation:false,
- autoHeight:false,
- onBeforeFade:false,
- onAfterFade:false,
- onChange:false,
- disableWhileAnimating:false,
- switchTime:3000,
- duration:650,
- event:'click'
- },_options);
- return this.each(function(){
- // gallery options
- if(this.slideshowInit) return; else this.slideshowInit;
- var _this = jQuery(this);
- var _slides = jQuery(_options.slideElements, _this);
- var _pagerLinks = jQuery(_options.pagerLinks, _this);
- var _btnPrev = jQuery(_options.btnPrev, _this);
- var _btnNext = jQuery(_options.btnNext, _this);
- var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
- var _btnPause = jQuery(_options.btnPause, _this);
- var _btnPlay = jQuery(_options.btnPlay, _this);
- var _pauseOnHover = _options.pauseOnHover;
- var _dynamicImageLoad = _options.dynamicImageLoad;
- var _dynamicImageLoadAttr = _options.dynamicImageLoadAttr;
- var _autoRotation = _options.autoRotation;
- var _activeClass = _options.activeClass;
- var _loadingClass = _options.loadingClass;
- var _loadedClass = _options.loadedClass;
- var _disabledClass = _options.disabledClass;
- var _pausedClass = _options.pausedClass;
- var _playClass = _options.playClass;
- var _autoHeight = _options.autoHeight;
- var _duration = _options.duration;
- var _switchTime = _options.switchTime;
- var _controlEvent = _options.event;
- var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);
- var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);
- var _startSlide = _options.startSlide;
- var _noCycle = _options.noCircle;
- var _onChange = _options.onChange;
- var _onBeforeFade = _options.onBeforeFade;
- var _onAfterFade = _options.onAfterFade;
- var _disableWhileAnimating = _options.disableWhileAnimating;
- // gallery init
- var _anim = false;
- var _hover = false;
- var _prevIndex = 0;
- var _currentIndex = 0;
- var _slideCount = _slides.length;
- var _timer;
- if(_slideCount < 2) return;
- _prevIndex = _slides.index(_slides.filter('.'+_activeClass));
- if(_prevIndex < 0) _prevIndex = _currentIndex = 0;
- else _currentIndex = _prevIndex;
- if(_startSlide != null) {
- if(_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random()*_slideCount);
- else _prevIndex = _currentIndex = parseInt(_startSlide);
- }
- _slides.hide().eq(_currentIndex).show();
- if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);
- else _this.removeClass(_playClass).addClass(_pausedClass);
- // gallery control
- if(_btnPrev.length) {
- _btnPrev.bind(_controlEvent,function(){
- prevSlide();
- return false;
- });
- }
- if(_btnNext.length) {
- _btnNext.bind(_controlEvent,function(){
- nextSlide();
- return false;
- });
- }
- if(_pagerLinks.length) {
- _pagerLinks.each(function(_ind){
- jQuery(this).bind(_controlEvent,function(){
- if(_currentIndex != _ind) {
- if(_disableWhileAnimating && _anim) return;
- _prevIndex = _currentIndex;
- _currentIndex = _ind;
- switchSlide();
- }
- return false;
- });
- });
- }
- // play pause section
- if(_btnPlayPause.length) {
- _btnPlayPause.bind(_controlEvent,function(){
- if(_this.hasClass(_pausedClass)) {
- _this.removeClass(_pausedClass).addClass(_playClass);
- _autoRotation = true;
- autoSlide();
- } else {
- _autoRotation = false;
- if(_timer) clearTimeout(_timer);
- _this.removeClass(_playClass).addClass(_pausedClass);
- }
- return false;
- });
- }
- if(_btnPlay.length) {
- _btnPlay.bind(_controlEvent,function(){
- _this.removeClass(_pausedClass).addClass(_playClass);
- _autoRotation = true;
- autoSlide();
- return false;
- });
- }
- if(_btnPause.length) {
- _btnPause.bind(_controlEvent,function(){
- _autoRotation = false;
- if(_timer) clearTimeout(_timer);
- _this.removeClass(_playClass).addClass(_pausedClass);
- return false;
- });
- }
- // dynamic image loading (swap from ATTRIBUTE)
- function loadSlide(slide) {
- if(!slide.hasClass(_loadingClass) && !slide.hasClass(_loadedClass)) {
- var images = slide.find(_dynamicImageLoad) // pass selector here
- var imagesCount = images.length;
- if(imagesCount) {
- slide.addClass(_loadingClass);
- images.each(function(){
- var img = this;
- img.onload = function(){
- img.loaded = true;
- img.onload = null;
- setTimeout(reCalc,_duration);
- }
- img.setAttribute('src', img.getAttribute(_dynamicImageLoadAttr));
- img.setAttribute(_dynamicImageLoadAttr,'');
- }).css({opacity:0});
- function reCalc() {
- var cnt = 0;
- images.each(function(){
- if(this.loaded) cnt++;
- });
- if(cnt == imagesCount) {
- slide.removeClass(_loadingClass);
- images.animate({opacity:1},{duration:_duration,complete:function(){
- if(jQuery.browser.msie && jQuery.browser.version < 9) jQuery(this).css({opacity:'auto'})
- }});
- slide.addClass(_loadedClass)
- }
- }
- }
- }
- }
- // gallery animation
- function prevSlide() {
- if(_disableWhileAnimating && _anim) return;
- _prevIndex = _currentIndex;
- if(_currentIndex > 0) _currentIndex--;
- else {
- if(_noCycle) return;
- else _currentIndex = _slideCount-1;
- }
- switchSlide();
- }
- function nextSlide() {
- if(_disableWhileAnimating && _anim) return;
- _prevIndex = _currentIndex;
- if(_currentIndex < _slideCount-1) _currentIndex++;
- else {
- if(_noCycle) return;
- else _currentIndex = 0;
- }
- switchSlide();
- }
- function refreshStatus() {
- if(_dynamicImageLoad) loadSlide(_slides.eq(_currentIndex));
- if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);
- if(_currentNum) _currentNum.text(_currentIndex+1);
- if(_allNum) _allNum.text(_slideCount);
- _slides.eq(_prevIndex).removeClass(_activeClass);
- _slides.eq(_currentIndex).addClass(_activeClass);
- if(_noCycle) {
- if(_btnPrev.length) {
- if(_currentIndex == 0) _btnPrev.addClass(_disabledClass);
- else _btnPrev.removeClass(_disabledClass);
- }
- if(_btnNext.length) {
- if(_currentIndex == _slideCount-1) _btnNext.addClass(_disabledClass);
- else _btnNext.removeClass(_disabledClass);
- }
- }
- if(typeof _onChange === 'function') {
- _onChange(_this, _slides, _prevIndex, _currentIndex);
- }
- }
- function switchSlide() {
- _anim = true;
- if(typeof _onBeforeFade === 'function') _onBeforeFade(_this, _slides, _prevIndex, _currentIndex);
- _slides.eq(_prevIndex).fadeOut(_duration,function(){
- _anim = false;
- });
- _slides.eq(_currentIndex).fadeIn(_duration,function(){
- if(typeof _onAfterFade === 'function') _onAfterFade(_this, _slides, _prevIndex, _currentIndex);
- });
- if(_autoHeight) _slides.eq(_currentIndex).parent().animate({height:_slides.eq(_currentIndex).outerHeight(true)},{duration:_duration,queue:false});
- refreshStatus();
- autoSlide();
- }
- // autoslide function
- function autoSlide() {
- if(!_autoRotation || _hover) return;
- if(_timer) clearTimeout(_timer);
- _timer = setTimeout(nextSlide,_switchTime+_duration);
- }
- if(_pauseOnHover) {
- _this.hover(function(){
- _hover = true;
- if(_timer) clearTimeout(_timer);
- },function(){
- _hover = false;
- autoSlide();
- });
- }
- refreshStatus();
- autoSlide();
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement