(function($) {
	$.fn.shuffle= function() {
		return this.each(function() {
			var items=$(this).children();
			return (items.length) ? $(this).html($.shuffle(items)) : this;
		});
	}

	$.shuffle= function(arr) {
		for(var j, x, i=arr.length; i; j=parseInt(Math.random() * i), x=arr[--i], arr[i]=arr[j], arr[j]=x);
		return arr;
	}
})(jQuery);

(function($) {
	$.fn.topslider = function(s) {
		var s = $.extend({
			delay: 350
		}, s);
		
		
		var c = {
			it: null,
			select: null,
			count: 0,
			start:0,
			auto: null,
			current:0,
			
			autoplay:true,
			interval: null
		};

		return this.each(function(i, e) {
			c.it = $(this).find('.banners');
			c.it.find('.item').shuffle();
			c.count = c.it.find('.item').size();
			if (c.count == 1) return false;
			
			c.select = $('<div class="select"></div>');
			c.it.find('.item').each(function(i,e){
				var a = $('<a class="s" href="#"></a>');
				a.attr('data-set', i);
				$(e).attr('id', 'topbanner-'+i);
				
				
				a.click(_setme);
				c.select.append(a);
				
				
				if (c.start == i)
					a.addClass('active');
				else
					$(e).hide();
			});
			
			c.select.css({width:9*c.count + 10});
			
			c.auto = $('<a class="auto" href="#"></a>');
			c.auto.click(_toggle_autoplay);
			c.select.append(c.auto);
			
			c.it.append(c.select);
			
			c.interval = setInterval(_auto_next, 6000);
		});
		
		function _setme(){
			if ($(this).attr('data-set') == c.current) return false;
			
			c.it.find('#topbanner-'+c.current).fadeOut(s.delay*2);
			c.it.find('#topbanner-'+$(this).attr('data-set')).fadeIn(s.delay);
			
			c.current = $(this).attr('data-set');
			
			c.select.find('.active').removeClass('active');
			$(this).addClass('active');
			
			c.autoplay = false;
			c.auto.addClass('play');
			
			return false;
		}
		
		function _toggle_autoplay(){
			c.autoplay = !c.autoplay;
			
			if (c.autoplay) c.auto.removeClass('play'); else c.auto.addClass('play');
			
			return false;
		}
		
		function _auto_next(){
			if (!c.autoplay) return false;
			
			c.it.find('#topbanner-'+c.current).fadeOut(s.delay*2);
			c.current++;
			if (c.current > c.count-1) c.current=0;
			
			c.it.find('#topbanner-'+c.current).fadeIn(s.delay);
			
			c.select.find('.active').removeClass('active');
			c.select.find('.s[data-set="'+c.current+'"]').addClass('active');
		}
	}
})(jQuery);

