Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // init page
- //jQuery.noConflict();
- jQuery(function(){
- initFadeGallery();
- });
- // init fadeGallery
- function initFadeGallery(){
- jQuery('div.slideshow').fadeGallery({
- slideElements:'>ul.slide > li',
- autoRotation:true,
- switchTime:3500,
- duration:1000,
- pauseOnHover:true
- });
- jQuery('div.slideshow2').fadeGallery({
- slideElements:'>ul.slide > li',
- autoRotation:true,
- switchTime:3500,
- duration:1000,
- pauseOnHover:true
- });
- }
- // slideshow plugin
- jQuery.fn.fadeGallery = function(options){
- var options = jQuery.extend({
- slideElements:'div.slideset > div',
- pagerLinks:'div.pager 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 holder = jQuery(this);
- var slides = jQuery(options.slideElements, holder);
- var pagerLinks = jQuery(options.pagerLinks, holder);
- var btnPrev = jQuery(options.btnPrev, holder);
- var btnNext = jQuery(options.btnNext, holder);
- var btnPlayPause = jQuery(options.btnPlayPause, holder);
- var btnPause = jQuery(options.btnPause, holder);
- var btnPlay = jQuery(options.btnPlay, holder);
- 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, holder) : false);
- var allNum = (options.allNum ? jQuery(options.allNum, holder) : 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;
- if (autoHeight) {
- slides.eq(currentIndex).parent().height(slides.eq(currentIndex).outerHeight(true));
- }
- 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) holder.removeClass(pausedClass).addClass(playClass);
- else holder.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(holder.hasClass(pausedClass)) {
- holder.removeClass(pausedClass).addClass(playClass);
- autoRotation = true;
- autoSlide();
- } else {
- autoRotation = false;
- if(timer) clearTimeout(timer);
- holder.removeClass(playClass).addClass(pausedClass);
- }
- return false;
- });
- }
- if(btnPlay.length) {
- btnPlay.bind(controlEvent,function(){
- holder.removeClass(pausedClass).addClass(playClass);
- autoRotation = true;
- autoSlide();
- return false;
- });
- }
- if(btnPause.length) {
- btnPause.bind(controlEvent,function(){
- autoRotation = false;
- if(timer) clearTimeout(timer);
- holder.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(holder, slides, prevIndex, currentIndex);
- }
- }
- function switchSlide() {
- anim = true;
- if(typeof onBeforeFade === 'function') onBeforeFade(holder, slides, prevIndex, currentIndex);
- slides.eq(prevIndex).fadeOut(duration,function(){
- anim = false;
- });
- slides.eq(currentIndex).fadeIn(duration,function(){
- if(typeof onAfterFade === 'function') onAfterFade(holder, 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) {
- holder.add(pagerLinks).hover(function(){
- hover = true;
- if(timer) clearTimeout(timer);
- },function(){
- hover = false;
- autoSlide();
- });
- }
- refreshStatus();
- autoSlide();
- });
- };
- // mobile browsers detect
- browserPlatform = {
- platforms: [
- { uaString:['symbian','midp'], cssFile:'symbian.css' }, // Symbian phones
- { uaString:['opera','mobi'], cssFile:'opera.css' }, // Opera Mobile
- { uaString:['msie','ppc'], cssFile:'ieppc.css' }, // IE Mobile <6
- { uaString:'iemobile', cssFile:'iemobile.css' }, // IE Mobile 6+
- { uaString:'webos', cssFile:'webos.css' }, // Palm WebOS
- { uaString:'Android', cssFile:'android.css' }, // Android
- { uaString:['BlackBerry','/6.0','mobi'], cssFile:'blackberry6.css' }, // Blackberry 6
- { uaString:['BlackBerry','/7.0','mobi'], cssFile:'blackberry7.css' }, // Blackberry 7+
- { uaString:'ipad', cssFile:'ipad.css', miscHead:'<meta name="viewport" content="width=990" />' }, // iPad
- { uaString:['safari','mobi'], cssFile:'safari.css', miscHead:'<meta name="viewport" content="width=990" />' } // iPhone and other webkit browsers
- ],
- options: {
- cssPath:'css/',
- mobileCSS:'allmobile.css'
- },
- init:function(){
- this.checkMobile();
- this.parsePlatforms();
- return this;
- },
- checkMobile: function() {
- if(this.uaMatch('mobi') || this.uaMatch('midp') || this.uaMatch('ppc') || this.uaMatch('webos')) {
- this.attachStyles({cssFile:this.options.mobileCSS});
- }
- },
- parsePlatforms: function() {
- for(var i = 0; i < this.platforms.length; i++) {
- if(typeof this.platforms[i].uaString === 'string') {
- if(this.uaMatch(this.platforms[i].uaString)) {
- this.attachStyles(this.platforms[i]);
- break;
- }
- } else {
- for(var j = 0, allMatch = true; j < this.platforms[i].uaString.length; j++) {
- if(!this.uaMatch(this.platforms[i].uaString[j])) {
- allMatch = false;
- }
- }
- if(allMatch) {
- this.attachStyles(this.platforms[i]);
- break;
- }
- }
- }
- },
- attachStyles: function(platform) {
- var head = document.getElementsByTagName('head')[0], fragment;
- var cssText = '<link rel="stylesheet" href="' + this.options.cssPath + platform.cssFile + '" type="text/css"/>';
- var miscText = platform.miscHead;
- if(platform.cssFile) {
- if(document.body) {
- fragment = document.createElement('div');
- fragment.innerHTML = cssText;
- head.appendChild(fragment.childNodes[0]);
- } else {
- document.write(cssText);
- }
- }
- if(platform.miscHead) {
- if(document.body) {
- fragment = document.createElement('div');
- fragment.innerHTML = miscText;
- head.appendChild(fragment.childNodes[0]);
- } else {
- document.write(miscText);
- }
- }
- },
- uaMatch:function(str) {
- if(!this.ua) {
- this.ua = navigator.userAgent.toLowerCase();
- }
- return this.ua.indexOf(str.toLowerCase()) != -1;
- }
- }.init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement