/*
News ticker plugin (BBC news style)
Bryan Gullan,2007-2009
version 1.2.2
updated 2009-02-15
http://www.makemineatriple.com/jquery
Use and distrubute freely with this header

Options (defaults shown):
newsList: "#news" 	// assumes unordered list; specify the ul holding the news items
tickerRate: 80 		// time gap between display of each letter (ms)
startDelay: 100 	// delay before first run of the ticker (ms)
loopDelay: 3000 	// time for which full text of each item is shown at end of print-out (ms)
placeHolder1: " |"	// character placeholder shown on even loops
placeHolder2: "_"	// character placeholder shown on odd loops

Sample usage:
$(document).ready(function() {
	var options = {
  		newsList: "#news",
 		startDelay: 10,
 		placeHolder1: " []"
	}
	$().newsTicker(options);
});

for markup as follows:

<ul id="news">
<li><a href="http://www.makemineatriple.com">MakeMineATriple.com</a></li>
<li><a href="http://www.jquery.com">jQuery</a></li>
</ul>

Underline text decoration on the link is not recommended! :-)

*/

					
	var t;
	var set;
	var tickerText1;
	var paused = 0;
	
	function ticker_start() {
//	$('#news li a').bind("click",function() { alert('sdd'); });
		if (paused == 0)
			t=setTimeout(function(){runTicker(set, 1, 0); set = null;}, 1000);
	}
	
	$(document).ready(function(){
		$('#pause_play').click(function() {
			if (paused == 0) {
				paused = 1;
				$("#pause_play").attr("src","assets/images/scroll/play.jpg");
				$('#news li a').text(tickerText1);
				clearTimeout(t);
			} else {
				paused = 0;
				$("#pause_play").attr("src","assets/images/scroll/pause.jpg");
				clearTimeout(t);
				t=setTimeout(function(){runTicker(set, 1, 0); set = null;}, 1000);
			}
		});
	});
	
	function next_news() {
		clearTimeout(t);
		t=setTimeout(function(){runTicker(set, 1, 0); set = null;}, 0);
	}
	
	function prev_news() {
		clearTimeout(t);
		t=setTimeout(function(){runTicker(set, 0, 1); set = null;}, 0);
	}
					
	function stop_ticker(tickerText) {
		$('#news li a').text(tickerText);
		clearTimeout(t);
	}
	
	function runTicker(settings, next, prev) {
		set = settings;
		if(settings.firstRun == 1){
			currentLength = settings.currentLength;
			currentItem = settings.currentItem;
			settings.firstRun = 0;
		}
		
		if (next == 1) {
			currentLength = 0;
			currentItem++;
		}
		
		if (prev == 1) {
			currentLength = 0;
			currentItem--;
		}
		
		if(currentItem == -1){
			currentItem = settings.newsItemCounter;
		}
		
		if(currentItem == settings.newsItemCounter + 1){
			currentItem = 0;
		}
		
		tickerText1 = settings.newsItems[currentItem];
		if(currentLength == 0) {
			if(settings.newsLinks[currentItem].length > 0) {
				if (settings.newsItemsSpan[currentItem].length > 0) {
					if (settings.newsPromoted[currentItem] == "1") {
						$("#scroll .content_scroll").css("background", "yellow");
					} else {
						$("#scroll .content_scroll").css("background", "#FFF");
					}
					
					$(settings.newsList).empty().append('<li onmouseover="stop_ticker(\''+tickerText1+'\')" onmouseout="ticker_start();"><span class="scroll_category_name">'+ settings.newsItemsSpan[currentItem] +'</span><a href="'+ settings.newsLinks[currentItem] +'"></a></li>');
				}
			}
			else {
				$(settings.newsList).empty().append('<li onmouseover="stop_ticker(\''+tickerText1+'\')" onmouseout="ticker_start();"></li>');
			}
		}
		if( currentLength % 2 == 0) {
				placeHolder = settings.placeHolder1;
		}
		else {
			placeHolder = settings.placeHolder2;
		}

		if( currentLength <= settings.newsItems[currentItem].length + 1) {
			var tickerText = settings.newsItems[currentItem].substring(0,currentLength);
			if(settings.newsLinks[currentItem].length > 0) {
				$(settings.newsList + ' li a').text(tickerText + placeHolder);
			}
			else {
				$(settings.newsList + ' li').text(tickerText + placeHolder);
			}
			currentLength ++;
			t = setTimeout(function(){runTicker(settings, 0, 0); settings = null;},settings.tickerRate);
		}
		else {
			if(settings.newsLinks[currentItem].length > 0) {
				$(settings.newsList + ' li a').text(settings.newsItems[currentItem]);
			}
			else {
				$(settings.newsList + ' li').text(settings.newsItems[currentItem]);
			}
			currentLength = 0;
			currentItem ++;
			
			t=setTimeout(function(){runTicker(settings, 0, 0); settings = null;},settings.loopDelay);	
			
//			clearTimeout(t);
		}
		
		
		
	}
	
	$.fn.extend({
		newsTicker: function(settings) {
			settings = jQuery.extend({
		 	  	newsList: "#news",
		   		tickerRate: 80,
		    	startDelay: 100,
		    	loopDelay: 3000,
		    	placeHolder1: " |",
		    	placeHolder2: "_"
			}, settings);

			var newsItems = new Array();
			var newsItemsSpan = new Array();
			var newsLinks = new Array();
			var newsPromoted = new Array();
			var newsItemCounter = 0;
			
			$(settings.newsList + ' li').hide();
			
			$(settings.newsList + ' li').each(function(){
				if($(this).children('span').length) {
					newsItemsSpan[newsItemCounter] = $(this).children('span').text();
				}
				else {
					newsItemsSpan[newsItemCounter] = $(this).text();
				}
				if($(this).children('a').length) {
					newsItems[newsItemCounter] = $(this).children('a').text();
					newsLinks[newsItemCounter] = $(this).children('a').attr('href');
					newsPromoted[newsItemCounter] = $(this).children('a').attr('promoted');
				}
				else {
					newsItems[newsItemCounter] = $(this).text();
					newsLinks[newsItemCounter] = '';
					newsPromoted[newsItemCounter] = 0;
				}
				newsItemCounter ++;
			});

			settings = jQuery.extend(settings,{
				newsItemsSpan: newsItemsSpan,
				newsItems: newsItems,
				newsLinks: newsLinks,
				newsPromoted: newsPromoted,
				newsItemCounter: newsItemCounter - 1,
				currentItem: 0,
				currentLength: 0,
				firstRun:1
			});
			
			setTimeout(function(){runTicker(settings, 0, 0); settings = null;},settings.startDelay);
		}
	
	});
