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 =...