/*
News ticker plugin (BBC news style)
Bryan Gullan,2007
version 1.1.1
http://www.makemineatriple.com/jquery
Use and distrubute freely with this header
Thanks for Hs.fi
Modified for conditio.fi use
*/

(function($) {
	
	function runTicker(settings) {
		if (settings.firstRun == 1){
			currentLength = settings.currentLength;
			currentItem = settings.currentItem;
//			settings.firstRun = 0;
		}
		if (currentItem == settings.newsItemCounter + 1){
			currentItem = 0;
		}

		var hasLink = true;
		if (settings.newsLinks[currentItem] == undefined)
		{
			hasLink = false;
		}
		
		if (currentLength == 0) {
			if (hasLink) {
				$(settings.newsList).empty().append('<li><a href="'+ settings.newsLinks[currentItem] +'" target="_top"></a></li>');
			}
			else {
				$(settings.newsList).empty().append('<li><span class="spanTitle"></span></li>');
			}
		}
		
		if (currentLength % 2 == 0) {
				placeHolder = settings.placeHolder1;
		}
		else {
			placeHolder = settings.placeHolder2;
		}
		
		if (currentLength <= settings.newsItems[currentItem].length + 1  && settings.firstRun == 0) {
			var tickerText = settings.newsItems[currentItem].substring(0,currentLength);
			if (hasLink) {
				$(settings.newsList + ' li a').text(tickerText + placeHolder);
			}
			else {
				$(settings.newsList + ' li span').text(tickerText + placeHolder);
			}
			currentLength ++;
			setTimeout(function(){runTicker(settings); settings = null;},settings.tickerRate);
		}
		else {

			if(settings.firstRun == 1)
			{
				var block = settings.newsList + ' li a';
				if (hasLink) {
					block = settings.newsList + ' li a';
				}
				else {
					block = settings.newsList + ' li span';
				}
				
				/*
				$(block).hide().text(settings.newsItems[currentItem]).fadeIn(function(){
					setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);
				});
				*/
				$(block).text(settings.newsItems[currentItem]);
				$(settings.tickerElement).fadeIn("fast", function(){
					setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);
				});
			}
			else
			{
				if (hasLink) {
					$(settings.newsList + ' li a').text(settings.newsItems[currentItem]);
				}
				else {
					$(settings.newsList + ' li span').text(settings.newsItems[currentItem]);
				}
				
				setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);
			}
			
			currentLength = 0;
			currentItem ++;	
		}
		
		if (settings.firstRun == 1){
			settings.firstRun = 0;
		}
	}
	
	$.fn.extend({
		newsTicker: function(settings) {
			settings = jQuery.extend({
		 	  	newsList: "#news",
		 	  	tickerElement: "#tickerItems",
		   		tickerRate: 80,
		    	startDelay: 100,
		    	loopDelay: 3000,
		    	placeHolder1: " |",
		    	placeHolder2: "_"
			}, settings);
			
			var newsItems = new Array();
			var newsLinks = new Array();
			var newsItemCounter = 0;
			
			$(settings.newsList + ' li').each(function(){
				newsItems[newsItemCounter] = $(this).text();
				newsLinks[newsItemCounter] = $(this).find('a').attr('href');

				newsItemCounter ++;
			});
			
			settings = jQuery.extend(settings,{
				newsItems: newsItems,
				newsLinks: newsLinks,
				newsItemCounter: newsItemCounter - 1,
				currentItem: 0,
				currentLength: 0,
				firstRun:1
			});
			
			setTimeout(function(){runTicker(settings); settings = null;},settings.startDelay);
		}
	
	});

})(jQuery);