custom slider
by satantx
JavaScript
(function($){
$.fn.slider = function(options)
{
var
options = $.extend(
{
slides: 'slide',
startIndex: 0,
prev: 'prev',
next: 'next',
prev_hidden: 'prev_hidden',
next_hidden: 'next_hidden',
progress: 'progress',
time: 1000,
},
options),
width = 0,
index = 0,
slides_cnt = 0,
slide_active = null,
slides_objs = null,
prev_obj = null,
next_obj = null,
bar = null,
timer = null
methods = {
init: function(object)
{
slides_objs = $('.' + options.slides, object);
progress_objs = $('.' + options.progress, object);
prev_obj = $('.' + options.prev, object);
next_obj = $('.' + options.next, object);
bar = $('.' + options.progress + ' div');
width = object.width();
slides_cnt = slides_objs.length;
methods.set_active();
methods.start();
prev_obj.click(function()
{
methods.stop();
methods.prev();
methods.start();
return false;
});
next_obj.click(function()
{
methods.stop();
methods.next();
methods.start();
return false;
});
},
set_active: function()
{
slides_objs.removeClass('active');
slide_active = slides_objs.eq(index);
slide_active.addClass('active');
var
prev = $('.' + options.prev_hidden, slide_active),
next = $('.' + options.next_hidden, slide_active);
bar.width(0);
bar.stop().animate({'width': '+=' + width}, options.time);
prev_obj.html(prev.html());
next_obj.html(next.html());
},
prev: function()
{
var new_index = index - 1;
if(new_index < 0) index = slides_cnt - Math.abs(new_index);
else index = new_index;
methods.set_active();
},
next: function()
{
var new_index = index + 1;
if(new_index > slides_cnt - 1) index = new_index - slides_cnt;
else index = new_index;
methods.set_active();
},
start: function()
{
timer =...