Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*!
- * Tiny Carousel 1.9
- * http://www.baijs.nl/tinycarousel
- *
- * Copyright 2010, Maarten Baijs
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.opensource.org/licenses/gpl-2.0.php
- *
- * Date: 01 / 06 / 2011
- * Depends on library: jQuery
- */
- /*!
- *looping by Xynyn Vee
- */
- (function($){
- $.tiny = $.tiny || { };
- $.tiny.carousel = {
- options: {
- start: 1, // where should the carousel start?
- display: 1, // how many blocks do you want to move at 1 time?
- axis: 'x', // vertical or horizontal scroller? ( x || y ).
- controls: true, // show left and right navigation buttons.
- pager: false, // is there a page number navigation present?
- interval: false, // move to another block on intervals.
- intervaltime: 3000, // interval time in milliseconds.
- rewind: false, // If interval is true and rewind is true it will play in reverse if the last slide is reached.
- animation: true, // false is instant, true is animate.
- duration: 1000, // how fast must the animation move in ms?
- loop: true, //should pressing next on the last slide move to the first slide? Should pressing previous on the first slide move to the last?
- callback: null // function that executes after every move.
- }
- };
- $.fn.tinycarousel = function(options) {
- var options = $.extend({}, $.tiny.carousel.options, options);
- this.each(function(){ $(this).data('tcl', new Carousel($(this), options)); });
- return this;
- };
- $.fn.tinycarousel_start = function(){ $(this).data('tcl').start(); };
- $.fn.tinycarousel_stop = function(){ $(this).data('tcl').stop(); };
- $.fn.tinycarousel_move = function(iNum){ $(this).data('tcl').move(iNum-1,true); };
- function Carousel(root, options){
- var oSelf = this;
- var oViewport = $('.viewport:first', root);
- var oContent = $('.overview:first', root);
- var oPages = oContent.children();
- var oBtnNext = $('.next:first', root);
- var oBtnPrev = $('.prev:first', root);
- var oPager = $('.pager:first', root);
- var iPageSize, iSteps, iCurrent, oTimer, bPause, bForward = true, bAxis = options.axis == 'x';
- function initialize(){
- iPageSize = bAxis ? $(oPages[0]).outerWidth(true) : $(oPages[0]).outerHeight(true);
- var iLeftover = Math.ceil(((bAxis ? oViewport.outerWidth() : oViewport.outerHeight()) / (iPageSize * options.display)) -1);
- iSteps = Math.max(1, Math.ceil(oPages.length / options.display) - iLeftover);
- iCurrent = Math.min(iSteps, Math.max(1, options.start)) -2;
- oContent.css(bAxis ? 'width' : 'height', (iPageSize * oPages.length));
- oSelf.move(1);
- setEvents();
- return oSelf;
- };
- function setEvents(){
- if(options.controls && oBtnPrev.length > 0 && oBtnNext.length > 0){
- if (options.loop) {
- oBtnPrev.click(function(){previous()});
- oBtnNext.click(function(){next()});
- }
- else {
- oBtnPrev.click(function(){oSelf.move(-1); return false;});
- oBtnNext.click(function(){oSelf.move( 1); return false;});
- }
- }
- if(options.interval){ root.hover(oSelf.stop,oSelf.start); }
- if(options.pager && oPager.length > 0){ $('a',oPager).click(setPager); }
- };
- function setButtons(){
- if(options.controls && !options.loop){
- oBtnPrev.toggleClass('disable', !(iCurrent > 0));
- oBtnNext.toggleClass('disable', !(iCurrent +1 < iSteps));
- }
- if(options.pager){
- var oNumbers = $('.pagenum', oPager);
- oNumbers.removeClass('active');
- $(oNumbers[iCurrent]).addClass('active');
- }
- };
- function setPager(oEvent){
- if($(this).hasClass('pagenum')){ oSelf.move(parseInt(this.rel), true); }
- return false;
- };
- function next () {
- iCurrent = iCurrent +1 == iSteps ? -1 : iCurrent;
- bForward = iCurrent +1 == iSteps ? false : iCurrent == 0 ? true : bForward;
- oSelf.move(bForward ? 1 : -1);
- }
- function previous() {
- iCurrent = iCurrent -1 == -1 ? iSteps : iCurrent;
- bForward = iCurrent -1 == iSteps ? true : iCurrent == 0 ? false : bForward;
- oSelf.move(bForward ? -1 : 1);
- }
- function setTimer(){
- if(options.interval && !bPause){
- clearTimeout(oTimer);
- oTimer = setTimeout(function(){
- iCurrent = iCurrent +1 == iSteps ? -1 : iCurrent;
- bForward = iCurrent +1 == iSteps ? false : iCurrent == 0 ? true : bForward;
- oSelf.move(bForward ? 1 : -1);
- }, options.intervaltime);
- }
- };
- this.stop = function(){ clearTimeout(oTimer); bPause = true; };
- this.start = function(){ bPause = false; setTimer(); };
- this.move = function(iDirection, bPublic){
- iCurrent = bPublic ? iDirection : iCurrent += iDirection;
- if(iCurrent > -1 && iCurrent < iSteps){
- var oPosition = {};
- oPosition[bAxis ? 'left' : 'top'] = -(iCurrent * (iPageSize * options.display));
- oContent.animate(oPosition,{
- queue: false,
- duration: options.animation ? options.duration : 0,
- complete: function(){
- if(typeof options.callback == 'function')
- options.callback.call(this, oPages[iCurrent], iCurrent);
- }
- });
- setButtons();
- setTimer();
- }
- };
- return initialize();
- };
- })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement