jQuery.fn.scrollElements = function() {
	var speed = 100;
	var rate = 5;
	if (arguments[0]) {
		speed = arguments[0].speed;
		if (!speed) speed = 10;
		rate = arguments[0].rate;
		if (!rate) rate = speed;
	}
	var pps = rate;
	var scrollable = $(this);
	var first = $(scrollable.children()[0]);
	var distance = first.outerWidth(true);
	var travelled = 0;
	var paused = false;
	var startPos = scrollable.css('margin-left');
	var doTheScroll = function() {
		if (!paused) {
			if (pps < speed) {
				pps += rate;
				if (pps > speed) pps = speed;
			}
		} else {
			pps -= rate;
			if (pps < 0) pps = 0;
		}
		if (pps > 0) {
			scrollable.animate({marginLeft:'-=' + parseInt(pps /100)}, 0);
			travelled += parseInt(pps / 100);
			if (travelled > distance) {
				first.remove();
				scrollable.append(first);
				scrollable.animate({marginLeft: startPos}, 0);
				first = $(scrollable.children()[0]);
				distance = first.outerWidth(true);
				travelled = 0;
			}
		}
	};
	setInterval(doTheScroll, 10);
	scrollable.mouseenter(function(evt) {
		paused = true;
	});
	scrollable.mouseleave(function(evt) {
		paused = false;
	});
}
