jQuery.fn.liScroll = function(settings) {
		settings = $.extend({
				travelocity: 0.07
		}, settings);

		return this.each(function(){
				var strip = $(this);

				firstItem = $('li:first', strip);

				strip.addClass('newsticker');

				var mask = strip.wrap('<div class="mask"></div>');
				var tickercontainer = strip.parent().wrap('<div class="tickercontainer"></div>');
				var firstItemWidth = firstItem.outerWidth();
				var containerWidth = strip.parent().parent().width();

				var stripWidth = 0;
				strip.find('li').each(function(i) {
						stripWidth += $(this, i).outerWidth(true);
				});
				strip.width(stripWidth);

				var defTiming = (firstItemWidth + containerWidth) / settings.travelocity;

				var copies = 1;
				if (containerWidth > stripWidth) {
					copies = containerWidth / stripWidth;
					copies = Math.ceil(copies);
				}

				var stripcontent = strip.html();

				while (copies > 0) {
					strip.append(stripcontent);
					copies--;
				}

				var stripWidth = 0;
				strip.find('li').each(function(i) {
						stripWidth += $(this, i).outerWidth(true);
				});
				strip.width(stripWidth);

				function scrollnews(offset, tempo) {
					offset = 0 - offset;

					strip.animate(
						{left: offset},
						{
							duration: tempo,
							easing: 'linear',
							complete: function() {
								firstItem.detach();
								strip.append(firstItem);

								firstItem = $('li:first', strip);
								var firstItemWidth = firstItem.outerWidth();

								var defTiming = firstItemWidth / settings.travelocity;

								strip.css('left', 0);
								scrollnews(firstItemWidth, defTiming);
							}
						}
					);
				}

				scrollnews(firstItemWidth, defTiming);

				strip.hover(
					function(){
						$(this).stop();
					},

					function(){
						var offset = $(this).offset();
						var residualSpace = offset.left + stripWidth;
						var residualTime = residualSpace / settings.travelocity;
						scrollnews(residualSpace, residualTime);
					}
				);
		});
};

