/*
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);
*/
(function($) { 
/* 
* A basic news ticker. 
* 
* @name     newsticker (or newsTicker) 
* @param    delay      Delay (in milliseconds) between iterations. Default 4 seconds (4000ms) 
* @author   Sam Collett (http://www.texotela.co.uk) 
* @example  $("#news").newsticker(); // or $("#news").newsTicker(5000); 
* 
*/ 
$.fn.newsTicker = $.fn.newsticker = function(delay) 
{ 
delay = delay || 4000; 
initTicker = function(el) 
{ 
	stopTicker(el); 
	el.items = $("li", el); 
	// hide all items (except first one) 
	 el.items.not(":eq(0)").hide().end(); 
	// current item 
	el.currentitem = 0; 
	startTicker(el); 
	//stopTicker(el);
} 
	startTicker = function(el) 
	{ 
		el.tickfn = setInterval(function() { doTick(el) }, delay) 
	} 
	stopTicker = function(el) 
	{ 
		clearInterval(el.tickfn); 
	} 
	pauseTicker = function(el) 
	{ 
		el.pause = true; 
	} 
	resumeTicker = function(el) 
	{ 
	 el.pause = false; 
	} 
	doTick = function(el) 
	{ 
	//alert(el.id);
	// don't run if paused 
	if(el.pause) return; 
     // pause until animation has finished 
    el.pause = true; 
    // hide current item 
    $(el.items[el.currentitem]).fadeOut("slow", 
    function() 
    { 
        
        $(this).hide(); 
        // move to next item and show 
        el.currentitem = ++el.currentitem % (el.items.size()); 
        $(el.items[el.currentitem]).fadeIn("slow", 
        function() 
        { 
            el.pause = false; 
        } 
    ); 
    } 
    ); 
} 
this.each( 
function() 
{ 
    if(this.nodeName.toLowerCase()!= "ul") return; 
    initTicker(this); 
} 
) 
.addClass("newsticker") 
.hover( 
function() 
{ 
    // pause if hovered over 
   // pauseTicker(this); 
}, 
function() 
{ 
    // resume when not hovered over 
   // resumeTicker(this); 
} 
); 
return this; 
} 

})(jQuery); 

