Team:TU Delft/files/easySlider.js

From 2010.igem.org

/*

* 	Easy Slider 1.5 - jQuery plugin
*	written by Alen Grakalic	
*	http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding
*
*	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
*	Dual licensed under the MIT (MIT-LICENSE.txt)
*	and GPL (GPL-LICENSE.txt) licenses.
*
*	Built for jQuery library
*	http://jquery.com
*
*/

/*

*	markup example for $("#slider").easySlider();
*	
*
*
    *
  • <img src="images/01.jpg" alt="" />
  • *
  • <img src="images/02.jpg" alt="" />
  • *
  • <img src="images/03.jpg" alt="" />
  • *
  • <img src="images/04.jpg" alt="" />
  • *
  • <img src="images/05.jpg" alt="" />
  • *
*
*
*/

(function($) {

$.fn.easySlider = function(options){

// default configuration properties var defaults = { prevId: 'prevBtn', prevText: 'Previous', nextId: 'nextBtn', nextText: 'Next', controlsShow: true, controlsBefore: , controlsAfter: , controlsFade: true, firstId: 'firstBtn', firstText: 'First', firstShow: false, lastId: 'lastBtn', lastText: 'Last', lastShow: false, vertical: false, speed: 800, auto: false, pause: 2000, continuous: false };

var options = $.extend(defaults, options);

this.each(function() { var obj = $(this); var s = $("li", obj).length; var w = $("li", obj).width(); var h = $("li", obj).height(); obj.width(w); obj.height(h); obj.css("overflow","hidden"); var ts = s-1; var t = 0; $("ul", obj).css('width',s*w); if(!options.vertical) $("li", obj).css('float','left');

if(options.controlsShow){ var html = options.controlsBefore; if(options.firstShow) html += '<a href=\"javascript:void(0);\">'+ options.firstText +'</a>'; html += ' <a href=\"javascript:void(0);\">'+ options.prevText +'</a>'; html += ' <a href=\"javascript:void(0);\">'+ options.nextText +'</a>'; if(options.lastShow) html += ' <a href=\"javascript:void(0);\">'+ options.lastText +'</a>'; html += options.controlsAfter; $(obj).after(html); };

$("a","#"+options.nextId).click(function(){ animate("next",true); }); $("a","#"+options.prevId).click(function(){ animate("prev",true); }); $("a","#"+options.firstId).click(function(){ animate("first",true); }); $("a","#"+options.lastId).click(function(){ animate("last",true); });

function animate(dir,clicked){ var ot = t; switch(dir){ case "next": t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1; break; case "prev": t = (t<=0) ? (options.continuous ? ts : 0) : t-1; break; case "first": t = 0; break; case "last": t = ts; break; default: break; };

var diff = Math.abs(ot-t); var speed = diff*options.speed; if(!options.vertical) { p = (t*w*-1); $("ul",obj).animate( { marginLeft: p }, speed ); } else { p = (t*h*-1); $("ul",obj).animate( { marginTop: p }, speed ); };

if(!options.continuous && options.controlsFade){ if(t==ts){ $("a","#"+options.nextId).hide(); $("a","#"+options.lastId).hide(); } else { $("a","#"+options.nextId).show(); $("a","#"+options.lastId).show(); }; if(t==0){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); } else { $("a","#"+options.prevId).show(); $("a","#"+options.firstId).show(); }; };

if(clicked) clearTimeout(timeout); if(options.auto && dir=="next" && !clicked){; timeout = setTimeout(function(){ animate("next",false); },diff*options.speed+options.pause); };

}; // init var timeout; if(options.auto){; timeout = setTimeout(function(){ animate("next",false); },options.pause); };

if(!options.continuous && options.controlsFade){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); };

});

};

})(jQuery);