// JavaScript Document

(function($) {
	
	function runTicker(settings) {
		
		if(settings.firstRun == 1){
			currentLength = settings.currentLength;
			currentItem = settings.currentItem;
			settings.firstRun = 0;
			pauseFlag	=	settings.pauseFlag;
			settings2	=	settings;
		}
		
		if(currentItem == settings.newsItemCounter + 1){
			currentItem = 0;
		}
		
		if(currentItem == -1)
		{
			currentItem	=	settings.newsItemCounter;
		}
		
		if(currentLength == 0) {
			
			if(settings.newsLinks[currentItem].length > 0) {
				$(settings.newsList).empty().append('<li class="news"><a href="'+ settings.newsLinks[currentItem] +'"></a></li>');
			}
			else {
				$(settings.newsList).empty().append('<li class="news"></li>');
			}
		}
		
		placeHolder = "_";
		
		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 ++;
			if(pauseFlag == false)
			{
				setTimeout(function(){runTicker(settings); settings = null;},settings.tickerRate);
			}
			else {
				$(settings.newsList + ' li a').text(settings.newsItems[currentItem]);
				currentLength = 0;
				currentItem ++;
			}
		}
		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 ++;
			if(pauseFlag == false)
			{
				setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);
			}
			else {
				$(settings.newsList + ' li').text(settings.newsLinks[currentItem]);
			}
		}
	}
	
	function resume(settings, clicked)
	{
		if($(settings.pauseButton).css("display")=="block" || clicked==true)
		{
			pauseFlag = false; 
			setTimeout(function(){
			settings.firstRun		=	0;
			runTicker(settings);
			},	5000);
		}
		
	}
	
	$.fn.extend({
		newsTicker: function(settings) {
			settings = jQuery.extend({
		 	  	newsList: "#news",
		   	tickerRate: 80,
		    	startDelay: 100,
		    	loopDelay: 3000,
		    	placeHolder1: "_",
		    	placeHolder2: "_",
				pauseFlag: false
			}, settings);
			
			newsItems = new Array();
			newsLinks = new Array();
			newsItemCounter = 0;
			
			$(settings.newsList + ' li').hide();
			
			$(settings.newsList + ' li').each(function(){
				
				if($(this).children('a').length) {
					newsItems[newsItemCounter] = $(this).children('a').text();
					newsLinks[newsItemCounter] = $(this).children('a').attr('href');
				}
				else {
					newsItems[newsItemCounter] = $(this).text();
					newsLinks[newsItemCounter] = '';
				}
				newsItemCounter ++;
			});
			
			
			settings = jQuery.extend(settings,{
				newsItems: newsItems,
				newsLinks: newsLinks,
				newsItemCounter: newsItemCounter - 1,
				currentItem: 0,
				currentLength: 0,
				firstRun:1
			});
			
			$(settings.newsList).hover(
						function() { pauseFlag = true; }, 
						function(settings, newsItems, newsLinks) { resume(settings2, false);  } 
			)
			
			$(settings.pauseButton).click(
					function() { pauseFlag = true; $(settings.pauseButton).css("display", "none"); $(settings.playButton).css("display", "block"); }
			)
			
			$(settings.prevButton).click(
					function() { 
							if(currentItem==0) { currentItem = newsItemCounter-2; } 
							else	{	currentItem = currentItem -2; }
							pauseFlag = true;
							settings2.firstRun		=	0;
							$(settings.pauseButton).css("display", "none"); $(settings.playButton).css("display", "block");
							runTicker(settings2); 
					}
			)
			
			$(settings.nextButton).click(
					function() { pauseFlag = true; runTicker(settings); $(settings.pauseButton).css("display", "none"); $(settings.playButton).css("display", "block");  }
			)
			
			$(settings.playButton).click (function() { resume(settings2, true); $(settings.pauseButton).css("display", "block"); $(settings.playButton).css("display", "none"); })

			setTimeout(function(){
					runTicker(settings); 
			},settings.startDelay);
		}
	
	});
	

})(jQuery);
