/*
 *
 * Copyright (c) 2006/2007 Sam Collett (http://www.texotela.co.uk)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Version 2.0
 * Demo: http://www.texotela.co.uk/code/jquery/newsticker/
 *
 * $LastChangedDate$
 * $Rev$
 *
 */
 
(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, startElem)
{
	delay = 8000;
  startElem = startElem || 0;
      
	initTicker = function(el)
	{
		stopTicker(el);
		el.items = $("li", el);
    
    /////////////////////// EDIT ////////////////////////
    // add to news index
    // this is the div that holds the squares
    var sl_index_div = document.getElementById('news_index'); 
    // reset 
    sl_index_div.innerHTML = '';   
    for (var i=0; i<el.items.length; i++) {
    	// add the squares
      var sl_div = document.createElement('div');
      sl_div.style.width = '14px';
      sl_div.style.height = '14px';
      // sl_div.style.border = '1px solid red';
      sl_div.style.cssFloat = 'left';
      sl_div.style.styleFloat = 'left';
      sl_div.style.cursor = 'pointer';
      sl_div.style.backgroundColor = '#333';
      sl_div.style.marginRight = '4px';
      sl_div.setAttribute('id', i);
      sl_div.id = i;
      var is_ie = navigator.userAgent.toLowerCase().indexOf('msie') > 0 ? 1 : 0;
      //alert(is_ie);
      if (!is_ie) sl_div.setAttribute('onclick', '$("#news").find("ul").newsTicker(' + delay + ', ' + i + ');');
      else {
        window.curr_delay = delay;
        var functionO = '';
      	sl_div.onclick = function() {$("#news").find("ul").newsTicker(window.curr_delay, this.getAttribute('id'));}
      }
      sl_index_div.appendChild(sl_div);           
    }
    /////////////////////////////////////////////////////
    
		// hide all items (except first one)
		for (var i=0; i<el.items.length; i++) {
          $(el.items[i]).show();
    	if (i != startElem) {
      // alert('i: ' + i + ', startElem: ' + startElem);
      // alert('hide');
      $(el.items[i]).hide();
      }
    }
    
		// current item
		el.currentitem = startElem;
    
    /////////////////////// EDIT ////////////////////////
    // highlight first square      
    var sl_squares = document.getElementById('news_index').getElementsByTagName('div'); 
    sl_squares[startElem].style.backgroundColor = '#e53389';
    /////////////////////////////////////////////////////          
		startTicker(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)
	{
		// don't run if paused
		if(el.pause) return;
		// pause until animation has finished
		el.pause = true;
    
    

    
    // hide current item
    /////////////////////// EDIT ////////////////////////
    //hide old square
    var sl_squares = document.getElementById('news_index').getElementsByTagName('div');  
    sl_squares[el.currentitem].style.backgroundColor = '#333';
    /////////////////////////////////////////////////////
		$(el.items[el.currentitem]).fadeOut("slow",
			function()
			{
				$(this).hide();
				// move to next item and show
				el.currentitem = el.currentitem+1 == el.items.length ? 0 : el.currentitem+1;
        /////////////////////// EDIT ////////////////////////
        // go to the next one       
        var sl_squares = document.getElementById('news_index').getElementsByTagName('div'); sl_squares[el.currentitem].style.backgroundColor = '#e53389';
        /////////////////////////////////////////////////////        
				$(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);