/**
* Bartosz Szczecinski baphemot@gmail.com
*
* Fork of:
*
* Simple Carousel
* Copyright (c) 2010 Tobias Zeising, http://www.aditu.de
* Licensed under the MIT license
*
* http://code.google.com/p/simple-carousel/
* Version 0.3
*/
(function($){
$.fn.simplecarousel = function( params ) {
// set config
var defaults = {
width: 700,
height: 500,
next: false,
prev: false,
vertical: false,
auto: false,
fade: false,
current: 0,
items: 0,
slidespeed: 600,
visible: 1,
jump: 1,
pagination: false,
noloop: false
};
var config = $.extend(defaults, params);
// configure carousel ul and li
var ul = $(this);
var li = ul.children('li');
config.items = li.length;
ul.data('config', config);
var height = config.height;
var width = config.width;
if(config.visible>1) {
if(config.vertical)
height = height*config.visible;
else
width = width*config.visible;
}
ul.wrap('
');
var container = ul.parent('.carousel-frame');
if(!config.vertical) {
ul.width(config.items*config.width);
ul.height(config.height);
} else {
ul.width(config.width);
ul.height(config.items*config.height);
}
ul.css('overflow','hidden');
li.each(function(i,item) {
$(item).width(config.width);
$(item).height(config.height);
if(!config.vertical)
$(item).css('float','left');
});
if(config.noloop == true) {
if(config.current == 0) {
jQuery(config.prev).addClass('disabled');
}
else {
jQuery(config.prev).removeClass('disabled');
}
if(config.current+config.visible == config.items) {
jQuery(config.next).addClass('disabled');
}
else {
jQuery(config.next).removeClass('disabled');
}
}
// function for sliding the carousel
var slide = function(dir, click) {
if(typeof click == "undefined" & config.auto==false)
return;
if(dir=="next") {
config.current += config.jump;
if(config.noloop == true) {
if(config.current + ((config.visible >= config.jump) ? config.visible - config.jump : config.jump) >= config.items) {
config.current -= config.jump;
}
}
else {
if(config.current>=config.items)
config.current = 0;
}
} else if(dir=="prev") {
config.current -= config.jump;
if(config.current<0) {
if(config.noloop == true) config.current += config.jump;
else config.current = (config.visible==1) ? config.items-1 : config.items-config.visible+(config.visible-(config.items%config.visible));
}
} else {
config.current = dir;
}
if(config.noloop == true) {
if(config.current == 0) {
jQuery(config.prev).addClass('disabled');
}
else {
jQuery(config.prev).removeClass('disabled');
}
if(config.current+config.visible >= config.items) {
jQuery(config.next).addClass('disabled');
}
else {
jQuery(config.next).removeClass('disabled');
}
}
// set pagination
if(config.pagination != false) {
container.next('.carousel-pagination').find('li').removeClass('carousel-pagination-active')
container.next('.carousel-pagination').find('li:nth-child('+(config.current+1)+')').addClass('carousel-pagination-active');
}
// fade
if(config.fade!=false) {
ul.fadeOut(config.fade, function() {
ul.css({marginLeft: -1.0*config.current*config.width});
ul.fadeIn(config.fade);
});
// slide
} else {
if(!config.vertical)
ul.animate( {marginLeft: -1.0*config.current*config.width}, config.slidespeed );
else
ul.animate( {marginTop: -1.0*config.current*config.height}, config.slidespeed );
}
if(typeof click != "undefined")
config.auto = false;
if(config.auto!=false)
setTimeout(function() {
slide('next');
}, config.auto);
}
// include pagination
if(config.pagination != false) {
container.after('');
var pagination = container.next('.carousel-pagination');
for(var i=0;i