(function($){
	 jQuery.fn.news_roller = function(news, all_url, all_text) {
		return this.each(function() {
			var pdiv = $(this).attr('view', '-1');
			var pnews = $('<ul class="body"/>').appendTo(pdiv);
			var pmenu = $('<ul class="menu"/>').addClass('flat-list').appendTo(pdiv);
			var n_total = news.length;
			var n_cur = -1;
			var h_timer = 'undefined';
			
			// Construct DOM
			$.each(news, function(id) {
				var li = $('<li/>').prependTo(pnews).attr('id', 'news-'+id).css('display', 'none');
				li.append($('<span class="news-date"/>').text(this.date))
					.append($('<a class="news-title"/>').text(this.title).attr('href', this.url))
					.append($('<p class="news-body"/>').text(this.text).prepend($('<img/>').attr('src', this.img)));
				li.hover(
					function(){	stop_timer();  },
					function(){ start_timer(); }
				);

				$('<li/>').attr('id', 'news-' + id).text(id + 1).hover(
					function(){
						stop_timer();switch_news(id);
					},
					function(){ start_timer(); }
				).appendTo(pmenu);

			});
			$('<li/>').append($('<a/>').text(all_text).attr('href', all_url)).appendTo(pmenu);

			switch_news = function(new_id)
			{	if ((n_cur >= 0) && (n_cur < n_total)){	
					pdiv.find('.body li#news-'+String(n_cur)).fadeOut(250);
					pdiv.find('.menu li#news-'+String(n_cur)).removeClass('selected');
				}
				n_cur = new_id;
				if (new_id >= n_total)
					n_cur = 0;

				pdiv.find('.body li#news-' + String(n_cur)).fadeIn(250);
				pdiv.find('.menu li#news-'+String(n_cur)).addClass('selected');
			}
			
			stop_timer = function()
			{	if (h_timer != 'undefined')
				{	clearInterval(h_timer); h_timer = 'undefined';	}
			}
			
			start_timer = function()
			{	stop_timer();
				if (news.length > 1)
					h_timer = setInterval(function(){ switch_news(n_cur+1) }, 3000);
			}
				
			// Show first
			if (n_total > 0) 
				switch_news(0);
			
			// Set timer
			start_timer();
		});
	};
})(jQuery);


