/*
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

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! :-)

									*/

									(function($) {
										
											function runTicker(settings) {
													if(settings.firstRun == 1){
																currentLength = settings.currentLength;
																			currentItem = settings.currentItem;
																						settings.firstRun = 0;
																								}
																										if(currentItem == settings.newsItemCounter + 1){
																													currentItem = 0;
																															}
																																	
																																			if(currentLength == 0) {
																																						$(settings.newsList).empty().append('<li><a href="'+ settings.newsLinks[currentItem] +'"></a></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);
																																																																			$(settings.newsList + ' li a').text(tickerText + placeHolder);
																																																																						currentLength ++;
																																																																									setTimeout(function(){runTicker(settings); settings = null;},settings.tickerRate);
																																																																											}
																																																																													else {
																																																																																$(settings.newsList + ' li a').text(settings.newsItems[currentItem]);
																																																																																			currentLength = 0;
																																																																																						currentItem ++;
																																																																																									setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);	
																																																																																											}	
																																																																																												}
																																																																																													
																																																																																														$.fn.extend({
																																																																																																newsTicker: function(settings) {
																																																																																																			settings = jQuery.extend({
																																																																																																					 	  	newsList: "#news",
																																																																																																									   		tickerRate: 80,
																																																																																																													    	startDelay: 100,
																																																																																																																    	loopDelay: 3000,
																																																																																																																			    	placeHolder1: " |",
																																																																																																																						    	placeHolder2: "_"
																																																																																																																										}, settings);
																																																																																																																													
																																																																																																																																var newsItems = new Array();
																																																																																																																																			var newsLinks = new Array();
																																																																																																																																						var newsItemCounter = 0;
																																																																																																																																									
																																																																																																																																												$(settings.newsList + ' li a').each(function(){
																																																																																																																																																newsItems[newsItemCounter] = $(this).text();
																																																																																																																																																				newsLinks[newsItemCounter] = $(this).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);
