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