/*
bxCarousel v1.0
Plugin developed by: Steven Wanderski
http://bxcarousel.com
http://stevenwanderski.com
Released under the GPL license:
http://www.gnu.org/licenses/gpl.html
*/
(function($){
$.fn.bxCarousel = function(options){
var defaults = {
move: 4,
display_num: 4,
speed: 500,
margin:0,
auto: false,
auto_interval: 2000,
auto_dir: 'next',
auto_hover: false,
next_text: 'next',
next_image: '',
prev_text: 'prev',
prev_image: '',
controls: true
};
var options = $.extend(defaults, options);
return this.each(function() {
var $this = $(this);
var li = $this.find('li');
var first = 0;
var fe = 0;
var last = options.display_num-1;
var le = options.display_num-1;
var is_working = false;
var j = '';
var clicked = false;
li.css({'float':'left','listStyle':'none', 'marginRight':options.margin});
var ow = li.outerWidth(true);
wrap_width = (ow*options.display_num) - options.margin;
var seg = ow*options.move;
$this.wrap('
').width(999999);
if(options.controls){
if(options.next_image != '' || options.prev_image != ''){var controls = '
';}
else{var controls = ''+options.prev_text+''+options.next_text+'';}
}
$this.parent('.bx_container').wrap('').css({'position':'relative', 'width':wrap_width,'overflow':'hidden'}).before(controls);
var w = li.slice(0, options.display_num).clone();
var last_appended = (options.display_num+options.move)-1;
$this.empty().append(w);
get_p();
get_a();
$this.css({'position':'relative', 'left':-(seg)});
$this.parent().siblings('.next').click(function(){
slide_next();
clearInterval(j);
clicked = true;
return false;
});
$this.parent().siblings('.prev').click(function(){
slide_prev();
clearInterval(j);
clicked = true;
return false;
});
if(options.auto){
start_slide();
if(options.auto_hover && clicked != true){
$this.find('li').live('mouseenter', function(){
if(!clicked){clearInterval(j);}
});
$this.find('li').live('mouseleave', function(){
if(!clicked){start_slide();}
});
}
}
function start_slide(){
if(options.auto_dir == 'next'){
j = setInterval(function(){slide_next()}, options.auto_interval);
}else{
j = setInterval(function(){slide_prev()}, options.auto_interval);
}
}
function slide_next(){
if(!is_working){
is_working = true;
set_pos('next');
$this.animate({left:'-='+seg}, options.speed, function(){
$this.find('li').slice(0, options.move).remove();
$this.css('left',-(seg));
get_a();
is_working = false;
});
}
}
function slide_prev(){
if(!is_working){
is_working = true;
set_pos('prev');
$this.animate({left:'+='+seg}, options.speed, function(){
$this.find('li').slice(-options.move).remove();
$this.css('left',-(seg));
get_p();
is_working = false;
});
}
}
function get_a(){
var str = new Array();
var lix = li.clone();
le = last;
for(i=0;i= li.length) {
first = first % li.length;
}
last += options.move;
if (last >= li.length){
last = last % li.length;
}
}else if (dir == 'prev'){
first -= options.move;
if (first < 0){
first = li.length + first;
}
last -= options.move;
if (last < 0){
last = li.length + last;
}
}
}
});
}
})(jQuery);