(function($) {
$.fn.jSlideShow = function(o) {
    var o = $.extend({
        btnPrev: null,
        btnNext: null,
        activeClass: 'active',
        container: null,
        block: null,
        speed: 200,
        start: 0,
        scroll: 1,
		navigationClass: 'hs_dot',
        navigationActiveClass: 'hs_dot_active'
    }, o || {});

    return this.each(function() {
        var running = false;

        var obj = $(this);
        var curr = 0;
        var block = $(o.block, obj);
        var blockCount = block.size();
        var timer = null;

        if (blockCount < 2)
        	return;

        var navigation = $('<div>').appendTo(obj);
        navigation.addClass('navigation');

        /*var prev_but = $('<div>').appendTo(navigation);
        prev_but.addClass('prev');

        var next_but = $('<div>').appendTo(navigation);
        next_but.addClass('next');*/

        var dots = new Array(blockCount);

        for (var n = blockCount - 1; n >= 0; n--) {
			dots[n] = $('<span>').addClass(o.navigationClass).prependTo(navigation);

			if (n == curr)
				dots[n].addClass(o.navigationActiveClass);

			dots[n].bind('mouseover', {num: n}, function(event) {if (event.data.num != curr) $(this).addClass(o.navigationActiveClass)});
			dots[n].bind('mouseout', {num: n}, function(event) {if (event.data.num != curr) $(this).removeClass(o.navigationActiveClass)});

			dots[n].bind('click', {num: n}, function (event) {
				show(event.data.num);
			});
		}

        for (var n = 1; n < blockCount; n++)
        	block.eq(n).css({'display': 'none'});

		scrollNext(curr + 1);

        function scrollNext(_pos) {
			timer = setTimeout(function() {
				show(_pos);
				scrollNext(curr + 1);
			}, 3000);
        }

        function show(_pos) {
        	block.eq(curr).css({'display': 'none'});

        	if (_pos > blockCount - 1)
				_pos = 0;
			else if (_pos < 0)
				_pos = blockCount - 1;

			dots[curr].removeClass(o.navigationActiveClass);
			dots[_pos].addClass(o.navigationActiveClass);

			block.eq(_pos).fadeIn();
			curr = _pos;
        }

      /*  prev_but.bind('mouseover', function (event) {
        	clearTimeout(timer);
        });

        next_but.bind('mouseover', function (event) {
        	clearTimeout(timer);
        });

		prev_but.bind('mouseout', function (event) {
			scrollNext(curr + 1);
		});

		next_but.bind('mouseout', function (event) {
			scrollNext(curr + 1);
		});*/

		obj.bind('mouseover', function (event) {
        	clearTimeout(timer);
        });

		obj.bind('mouseout', function (event) {
			scrollNext(curr + 1);
		});

		/*next_but.bind('mouseup', function (event) {
			show(curr + 1);
		});

		prev_but.bind('mouseup', function (event) {
			show(curr - 1);
		});*/
    });
};
})(jQuery);
