(function ($) {

	$.fn.randomizeList = function (options) {
		function repeat(str, n) {
			return new Array( n + 1 ).join(str);
		}

		function random( min, max ) {
			if( min > max ) {
				return( -1 );
			}
			if( min == max ) {
				return( min );
			}
			return( min + parseInt( Math.random() * ( max-min+1 ) ) );
		}

		var opts = $.extend({}, $.fn.randomizeList.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});

		return this.each(function () {
			var $container = $(this);

			var $items = $container.find('li').addClass('item').wrapInner('<div class="item-content"></div>');
			var $items_display = false;
			var $items_repository = false;

			if($items.length && opts.display_items > 0 && opts.display_items <= $items.length) {
				$items_display = $container.find('> li:lt('+opts.display_items+')').addClass('item-display').show();
				$items_repository = $container.find('> li:not(.item-display)').addClass('item-exchange').hide();
			}

			var autoSwap = window.setInterval(function() {
				var target_idx = random(0, $items_display.length-1);
				var source_idx = random(0, $items_repository.length-1);
				if(target_idx >= 0 && source_idx >= 0) {
					var $target = $items_display.get(target_idx);
					var $source = $items_repository.get(source_idx);
					var $target_html = $($target).html();
					var $source_html = $($source).html();
					//exchange content
					$($target).fadeOut(function() {$(this).html($source_html).fadeIn()});
					$($source).html($target_html);
				}
			}, opts.swap_intervall);

		});
	};

	$.fn.randomizeList.defaults = {
		display_items: 5,
		swap_intervall: 2500
	}
})(jQuery);
