;(function(jQuery){

	$.fn.newsScroller = function(method) {
		this.methods = { 
			init: function(options)
			{
				settings.currentItem = 0;
				settings.items = new Array();
				settings.container = '#'+this.attr('id');
				settings.marginTop = 0;
				settings.totalItems = $(settings.container).find('ul li').size();
				settings.waitInterval = Number(settings.waitInterval + settings.animationTime);
				
				if (settings.totalItems > 1) {
					$(settings.container).find('li:last').after( '<li>'+$(settings.container).find('li:first').html()+'</li>');
					settings.timer = setInterval(function() { settings.methods.goToNextItem() }, settings.waitInterval);
				}
			},
			goToNextItem: function() {
				settings.methods.animateItem();
			},
			calculatePosition: function() {
				return (Number(settings.currentItem+1) * settings.containerHeight) * -1;
			},
			setNextItem: function() {
				if (settings.currentItem < settings.totalItems) {
					settings.currentItem++;	
				} else {
					settings.currentItem = 0;
				}
			},
			animateItem: function() {
				if (settings.currentItem == settings.totalItems) {
					$(settings.container).find('ul').css({ 'margin-top' : '0px' });
					settings.currentItem = 0;
				}
				
				$(settings.container).find('ul').animate({ 'margin-top': settings.methods.calculatePosition()+'px' }, settings.animationTime, 
					function() { 
						settings.methods.setNextItem();
					} 
				);
			}
		};
		// Method calling logic
		if ( this.methods[method] )
		{
			return this.methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		}
		else if
		( typeof method === 'object' || ! method )
		{
			var settings = {
				waitInterval: 8000,
				animationTime: 1000,
				containerHeight: 32
			};

			$.extend( settings, method, this  );
			
			return this.methods.init.apply( this, arguments );
		}
		else
		{
			$.error( 'Method ' +  method + ' does not exist on jQuery.galleryWithCaptions' );
		}
		
		return this.each(function()
		{
			if(options)
			{
				$.extend( this.settings, options );
			}
		});
	};
})( jQuery );



