(function($) {
	jQuery.fn.slide = function() {
		var t = 500; // transition time, in microsecond
		var p = 3000; // pause time, in microsecond
		var r = 0;    // random? 0 = no, 1 = yes
		var s = this;
		var mOver=false;
		s.append('<ul class="slide-num"></ul>');
		$(this).mouseover(function(){
		  mOver=true;
		}).mouseout(function(){
		  mOver=false;
		});
		var num = 0;
		s.find('li').each(function() {
			num++;
			s.find('ul.slide-num').append('<li>'+num+'</li>');
			});
		s.find('li:first-child').addClass('active');
		s.find('ul.slide-num li').click(function() {
			var cid = $(this).text() - 1;
			s.find('li').removeClass('active');
			s.find('li').removeClass('last-active');
			s.find('li:eq('+cid+')').addClass('active');
			$(this).addClass('active');
			});
		setInterval(function(){
		if(!mOver){							 
			var $active = s.find('li.active');
			if($active.length == 0) {
				$active = s.find('li:last-child');
				}
			if(!r) {
				var $next = $active.next().length ? $active.next() : s.find('li:first-child');
				}
			else {
				var $sibs  = $active.siblings();
				var rndNum = Math.floor(Math.random() * $sibs.length );
				var $next  = $($sibs[rndNum]);
				}
			$active.addClass('last-active');
			$active.removeClass('active');
			$next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, t, function() {
				$active.removeClass('last-active');
				});
		}}, t + p);
		};
	})(jQuery);