$.fn.slider = function (options){
	return $(this).each(function () {
		var silder = new Slider($(this), options);
		silder.constructor();
	});
};


var Slider = function (object, options)
{
	var defaults = {
		speed : 5000,
		play : true,
		effect : 'blind'
	};
	var self = this;
	var target = object;
	var images;
	var banners = {
		current : 0,
		size : 0
	};

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

	this.constructor = function () {
		this.buildWrapper();
		this.parseImages();
		this.play();
	}

	this.buildWrapper = function () {
		var html = $('<div class="banner-wrapper"><div class="links-wrapper"><div class="links"></div></div><div class="banners">' + target.html() + '</div></div>');
		images = $('img', html);
		target.html(html);
	}

	this.parseImages = function () {
		banners.size = images.length;

		var linkPanel = $('.links', target);

		for(var i = 0; i < banners.size; i++)
		{
			if (i > 0)
				images.eq(i).hide();

			var button = $('<a href="javascript:;" id="banner-link-' + i + '" class="button" imgno="' + i + '">' + (i+1) + '</a>');
			linkPanel.append(button);
			button.data('no', i);
			button.click(function () {
				$('.banner-selected').removeClass('banner-selected');
				this.className = 'banner-selected';
				var no = $(this).data('no');
				settings.play = false;
				images.eq(banners.current).hide(settings.effect, 500);
				images.eq(no).show(settings.effect, 500);
				banners.current = no;
				this.blur();
			});
		}

		$('#banner-link-0')[0].className = 'banner-selected';
	}

	this.play = function () {
		setTimeout( function () {self.showNext();}, settings.speed);
	}

	this.showNext = function () {
		if (settings.play)
		{
			$('.banner-selected').removeClass('banner-selected');
			var nextId = (banners.current == (banners.size - 1)) ? 0 : (banners.current + 1)

			images.eq(banners.current).hide(settings.effect, 500);

			images.eq(nextId).show(settings.effect, 500);
			banners.current = nextId;

			$('#banner-link-'+nextId)[0].className = 'banner-selected';

			setTimeout( function () {self.showNext();}, settings.speed);
		}
	}
}

$(function () {
	$('#slider').slider({});
});
