Advertisement
Guest User

jquery delay

a guest
Jul 13th, 2012
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // init page
  2. //jQuery.noConflict();
  3. jQuery(function(){
  4.     initFadeGallery();
  5. });
  6.  
  7. // init fadeGallery
  8. function initFadeGallery(){
  9.     jQuery('div.slideshow').fadeGallery({
  10.         slideElements:'>ul.slide > li',
  11.         autoRotation:true,
  12.         switchTime:3500,
  13.         duration:1000,
  14.         pauseOnHover:true
  15.     });
  16.     jQuery('div.slideshow2').fadeGallery({
  17.         slideElements:'>ul.slide > li',
  18.         autoRotation:true,
  19.         switchTime:3500,
  20.         duration:1000,
  21.         pauseOnHover:true
  22.     });
  23. }
  24.  
  25. // slideshow plugin
  26. jQuery.fn.fadeGallery = function(options){
  27.     var options = jQuery.extend({
  28.         slideElements:'div.slideset > div',
  29.         pagerLinks:'div.pager a',
  30.         btnNext:'a.next',
  31.         btnPrev:'a.prev',
  32.         btnPlayPause:'a.play-pause',
  33.         btnPlay:'a.play',
  34.         btnPause:'a.pause',
  35.         pausedClass:'paused',
  36.         disabledClass: 'disabled',
  37.         playClass:'playing',
  38.         activeClass:'active',
  39.         loadingClass:'ajax-loading',
  40.         loadedClass:'slide-loaded',
  41.         dynamicImageLoad:false,
  42.         dynamicImageLoadAttr:'alt',
  43.         currentNum:false,
  44.         allNum:false,
  45.         startSlide:null,
  46.         noCircle:false,
  47.         pauseOnHover:true,
  48.         autoRotation:false,
  49.         autoHeight:false,
  50.         onBeforeFade:false,
  51.         onAfterFade:false,
  52.         onChange:false,
  53.         disableWhileAnimating:false,
  54.         switchTime:3000,
  55.         duration:650,
  56.         event:'click'
  57.     },options);
  58.  
  59.     return this.each(function(){
  60.         // gallery options
  61.         if(this.slideshowInit) return; else this.slideshowInit;
  62.         var holder = jQuery(this);
  63.         var slides = jQuery(options.slideElements, holder);
  64.         var pagerLinks = jQuery(options.pagerLinks, holder);
  65.         var btnPrev = jQuery(options.btnPrev, holder);
  66.         var btnNext = jQuery(options.btnNext, holder);
  67.         var btnPlayPause = jQuery(options.btnPlayPause, holder);
  68.         var btnPause = jQuery(options.btnPause, holder);
  69.         var btnPlay = jQuery(options.btnPlay, holder);
  70.         var pauseOnHover = options.pauseOnHover;
  71.         var dynamicImageLoad = options.dynamicImageLoad;
  72.         var dynamicImageLoadAttr = options.dynamicImageLoadAttr;
  73.         var autoRotation = options.autoRotation;
  74.         var activeClass = options.activeClass;
  75.         var loadingClass = options.loadingClass;
  76.         var loadedClass = options.loadedClass;
  77.         var disabledClass = options.disabledClass;
  78.         var pausedClass = options.pausedClass;
  79.         var playClass = options.playClass;
  80.         var autoHeight = options.autoHeight;
  81.         var duration = options.duration;
  82.         var switchTime = options.switchTime;
  83.         var controlEvent = options.event;
  84.         var currentNum = (options.currentNum ? jQuery(options.currentNum, holder) : false);
  85.         var allNum = (options.allNum ? jQuery(options.allNum, holder) : false);
  86.         var startSlide = options.startSlide;
  87.         var noCycle = options.noCircle;
  88.         var onChange = options.onChange;
  89.         var onBeforeFade = options.onBeforeFade;
  90.         var onAfterFade = options.onAfterFade;
  91.         var disableWhileAnimating = options.disableWhileAnimating;
  92.  
  93.         // gallery init
  94.         var anim = false;
  95.         var hover = false;
  96.         var prevIndex = 0;
  97.         var currentIndex = 0;
  98.         var slideCount = slides.length;
  99.         var timer;
  100.         if(slideCount < 2) return;
  101.         if (autoHeight) {
  102.             slides.eq(currentIndex).parent().height(slides.eq(currentIndex).outerHeight(true));
  103.         }
  104.  
  105.         prevIndex = slides.index(slides.filter('.'+activeClass));
  106.         if(prevIndex < 0) prevIndex = currentIndex = 0;
  107.         else currentIndex = prevIndex;
  108.         if(startSlide != null) {
  109.             if(startSlide == 'random') prevIndex = currentIndex = Math.floor(Math.random()*slideCount);
  110.             else prevIndex = currentIndex = parseInt(startSlide);
  111.         }
  112.         slides.hide().eq(currentIndex).show();
  113.         if(autoRotation) holder.removeClass(pausedClass).addClass(playClass);
  114.         else holder.removeClass(playClass).addClass(pausedClass);
  115.  
  116.         // gallery control
  117.         if(btnPrev.length) {
  118.             btnPrev.bind(controlEvent,function(){
  119.                 prevSlide();
  120.                 return false;
  121.             });
  122.         }
  123.         if(btnNext.length) {
  124.             btnNext.bind(controlEvent,function(){
  125.                 nextSlide();
  126.                 return false;
  127.             });
  128.         }
  129.         if(pagerLinks.length) {
  130.             pagerLinks.each(function(ind){
  131.                 jQuery(this).bind(controlEvent,function(){
  132.                     if(currentIndex != ind) {
  133.                         if(disableWhileAnimating && anim) return;
  134.                         prevIndex = currentIndex;
  135.                         currentIndex = ind;
  136.                         switchSlide();
  137.                     }
  138.                     return false;
  139.                 });
  140.             });
  141.         }
  142.  
  143.         // play pause section
  144.         if(btnPlayPause.length) {
  145.             btnPlayPause.bind(controlEvent,function(){
  146.                 if(holder.hasClass(pausedClass)) {
  147.                     holder.removeClass(pausedClass).addClass(playClass);
  148.                     autoRotation = true;
  149.                     autoSlide();
  150.                 } else {
  151.                     autoRotation = false;
  152.                     if(timer) clearTimeout(timer);
  153.                     holder.removeClass(playClass).addClass(pausedClass);
  154.                 }
  155.                 return false;
  156.             });
  157.         }
  158.         if(btnPlay.length) {
  159.             btnPlay.bind(controlEvent,function(){
  160.                 holder.removeClass(pausedClass).addClass(playClass);
  161.                 autoRotation = true;
  162.                 autoSlide();
  163.                 return false;
  164.             });
  165.         }
  166.         if(btnPause.length) {
  167.             btnPause.bind(controlEvent,function(){
  168.                 autoRotation = false;
  169.                 if(timer) clearTimeout(timer);
  170.                 holder.removeClass(playClass).addClass(pausedClass);
  171.                 return false;
  172.             });
  173.         }
  174.  
  175.         // dynamic image loading (swap from ATTRIBUTE)
  176.         function loadSlide(slide) {
  177.             if(!slide.hasClass(loadingClass) && !slide.hasClass(loadedClass)) {
  178.                 var images = slide.find(dynamicImageLoad) // pass selector here
  179.                 var imagesCount = images.length;
  180.                 if(imagesCount) {
  181.                     slide.addClass(loadingClass);
  182.                     images.each(function(){
  183.                         var img = this;
  184.                         img.onload = function(){
  185.                             img.loaded = true;
  186.                             img.onload = null;
  187.                             setTimeout(reCalc,duration);
  188.                         }
  189.                         img.setAttribute('src', img.getAttribute(dynamicImageLoadAttr));
  190.                         img.setAttribute(dynamicImageLoadAttr,'');
  191.                     }).css({opacity:0});
  192.  
  193.                     function reCalc() {
  194.                         var cnt = 0;
  195.                         images.each(function(){
  196.                             if(this.loaded) cnt++;
  197.                         });
  198.                         if(cnt == imagesCount) {
  199.                             slide.removeClass(loadingClass);
  200.                             images.animate({opacity:1},{duration:duration,complete:function(){
  201.                                 if(jQuery.browser.msie && jQuery.browser.version < 9) jQuery(this).css({opacity:'auto'})
  202.                             }});
  203.                             slide.addClass(loadedClass)
  204.                         }
  205.                     }
  206.                 }
  207.             }
  208.         }
  209.  
  210.         // gallery animation
  211.         function prevSlide() {
  212.             if(disableWhileAnimating && anim) return;
  213.             prevIndex = currentIndex;
  214.             if(currentIndex > 0) currentIndex--;
  215.             else {
  216.                 if(noCycle) return;
  217.                 else currentIndex = slideCount-1;
  218.             }
  219.             switchSlide();
  220.         }
  221.         function nextSlide() {
  222.             if(disableWhileAnimating && anim) return;
  223.             prevIndex = currentIndex;
  224.             if(currentIndex < slideCount-1) currentIndex++;
  225.             else {
  226.                 if(noCycle) return;
  227.                 else currentIndex = 0;
  228.             }
  229.             switchSlide();
  230.         }
  231.         function refreshStatus() {
  232.             if(dynamicImageLoad) loadSlide(slides.eq(currentIndex));
  233.             if(pagerLinks.length) pagerLinks.removeClass(activeClass).eq(currentIndex).addClass(activeClass);
  234.             if(currentNum) currentNum.text(currentIndex+1);
  235.             if(allNum) allNum.text(slideCount);
  236.             slides.eq(prevIndex).removeClass(activeClass);
  237.             slides.eq(currentIndex).addClass(activeClass);
  238.             if(noCycle) {
  239.                 if(btnPrev.length) {
  240.                     if(currentIndex == 0) btnPrev.addClass(disabledClass);
  241.                     else btnPrev.removeClass(disabledClass);
  242.                 }
  243.                 if(btnNext.length) {
  244.                     if(currentIndex == slideCount-1) btnNext.addClass(disabledClass);
  245.                     else btnNext.removeClass(disabledClass);
  246.                 }
  247.             }
  248.             if(typeof onChange === 'function') {
  249.                 onChange(holder, slides, prevIndex, currentIndex);
  250.             }
  251.         }
  252.         function switchSlide() {
  253.             anim = true;
  254.             if(typeof onBeforeFade === 'function') onBeforeFade(holder, slides, prevIndex, currentIndex);
  255.             slides.eq(prevIndex).fadeOut(duration,function(){
  256.                 anim = false;
  257.             });
  258.             slides.eq(currentIndex).fadeIn(duration,function(){
  259.                 if(typeof onAfterFade === 'function') onAfterFade(holder, slides, prevIndex, currentIndex);
  260.             });
  261.             if(autoHeight) slides.eq(currentIndex).parent().animate({height:slides.eq(currentIndex).outerHeight(true)},{duration:duration,queue:false});
  262.             refreshStatus();
  263.             autoSlide();
  264.         }
  265.  
  266.         // autoslide function
  267.         function autoSlide() {
  268.             if(!autoRotation || hover) return;
  269.             if(timer) clearTimeout(timer);
  270.             timer = setTimeout(nextSlide,switchTime+duration);
  271.         }
  272.         if(pauseOnHover) {
  273.             holder.add(pagerLinks).hover(function(){
  274.                 hover = true;
  275.                 if(timer) clearTimeout(timer);
  276.             },function(){
  277.                 hover = false;
  278.                 autoSlide();
  279.             });
  280.         }
  281.         refreshStatus();
  282.         autoSlide();
  283.     });
  284. };
  285.  
  286. // mobile browsers detect
  287. browserPlatform = {
  288.     platforms: [
  289.         { uaString:['symbian','midp'], cssFile:'symbian.css' }, // Symbian phones
  290.         { uaString:['opera','mobi'], cssFile:'opera.css' }, // Opera Mobile
  291.         { uaString:['msie','ppc'], cssFile:'ieppc.css' }, // IE Mobile <6
  292.         { uaString:'iemobile', cssFile:'iemobile.css' }, // IE Mobile 6+
  293.         { uaString:'webos', cssFile:'webos.css' }, // Palm WebOS
  294.         { uaString:'Android', cssFile:'android.css' }, // Android
  295.         { uaString:['BlackBerry','/6.0','mobi'], cssFile:'blackberry6.css' },   // Blackberry 6
  296.         { uaString:['BlackBerry','/7.0','mobi'], cssFile:'blackberry7.css' },   // Blackberry 7+
  297.         { uaString:'ipad', cssFile:'ipad.css', miscHead:'<meta name="viewport" content="width=990" />' }, // iPad
  298.         { uaString:['safari','mobi'], cssFile:'safari.css', miscHead:'<meta name="viewport" content="width=990" />' } // iPhone and other webkit browsers
  299.     ],
  300.     options: {
  301.         cssPath:'css/',
  302.         mobileCSS:'allmobile.css'
  303.     },
  304.     init:function(){
  305.         this.checkMobile();
  306.         this.parsePlatforms();
  307.         return this;
  308.     },
  309.     checkMobile: function() {
  310.         if(this.uaMatch('mobi') || this.uaMatch('midp') || this.uaMatch('ppc') || this.uaMatch('webos')) {
  311.             this.attachStyles({cssFile:this.options.mobileCSS});
  312.         }
  313.     },
  314.     parsePlatforms: function() {
  315.         for(var i = 0; i < this.platforms.length; i++) {
  316.             if(typeof this.platforms[i].uaString === 'string') {
  317.                 if(this.uaMatch(this.platforms[i].uaString)) {
  318.                     this.attachStyles(this.platforms[i]);
  319.                     break;
  320.                 }
  321.             } else {
  322.                 for(var j = 0, allMatch = true; j < this.platforms[i].uaString.length; j++) {
  323.                     if(!this.uaMatch(this.platforms[i].uaString[j])) {
  324.                         allMatch = false;
  325.                     }
  326.                 }
  327.                 if(allMatch) {
  328.                     this.attachStyles(this.platforms[i]);
  329.                     break;
  330.                 }
  331.             }
  332.         }
  333.     },
  334.     attachStyles: function(platform) {
  335.         var head = document.getElementsByTagName('head')[0], fragment;
  336.         var cssText = '<link rel="stylesheet" href="' + this.options.cssPath + platform.cssFile + '" type="text/css"/>';
  337.         var miscText = platform.miscHead;
  338.         if(platform.cssFile) {
  339.             if(document.body) {
  340.                 fragment = document.createElement('div');
  341.                 fragment.innerHTML = cssText;
  342.                 head.appendChild(fragment.childNodes[0]);
  343.             } else {
  344.                 document.write(cssText);
  345.             }
  346.         }
  347.         if(platform.miscHead) {
  348.             if(document.body) {
  349.                 fragment = document.createElement('div');
  350.                 fragment.innerHTML = miscText;
  351.                 head.appendChild(fragment.childNodes[0]);
  352.             } else {
  353.                 document.write(miscText);
  354.             }
  355.         }
  356.     },
  357.     uaMatch:function(str) {
  358.         if(!this.ua) {
  359.             this.ua = navigator.userAgent.toLowerCase();
  360.         }
  361.         return this.ua.indexOf(str.toLowerCase()) != -1;
  362.     }
  363. }.init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement