/* ticker - scroll inner contents of element
 * copyright iMarc, 2009
 *
 * author: craig ruksniz <craig@imarc.net>
 * author: jeff turcotte <jeff@imarc.net>
 *
 * version: 1.0
 * requires: jquery (built on 1.3.2, but 1.2.6+ should work)
 *
 * usage: see ticker.plugin.txt
 */

(function($) {

	$.ticker = function(elem, speed, offset) { 
	    var scrolling_enabled = true;

	    var container = $(elem);
	    var container_width = container.innerWidth();
	    var ticker_list = $(container).find('ul');
        var ticker_list_items = ticker_list.find('li');

        var ticker_list_width = 0;
        ticker_list_items.each(function(){
            ticker_list_width = ticker_list_width + $(this).outerWidth();
        });
        
	    var speed  = (speed)  ? speed : 10000;
	    var offset = (offset) ? offset : Math.ceil(ticker_list_width / 2);
	    
        var start_offset  = '-' + offset + 'px';
        var finish_offset = '-' + (ticker_list_width + offset) + 'px';
        
        var adjusted_ticker_list_width = ticker_list_width;
        // clone list items so there is never a break
        do {
            ticker_list.append(ticker_list_items.clone());
            adjusted_ticker_list_width = adjusted_ticker_list_width + ticker_list_width;
        } while (adjusted_ticker_list_width < (container_width * 2))
        
        //console.log(adjusted_ticker_list_width);
        
        ticker_list.css('width', (adjusted_ticker_list_width + adjusted_ticker_list_width) + 'px');
                        
        speed = 2;
        pixels = 1;
                        
        var getTickerOffset = function() {
            return parseInt(ticker_list.css('left'));
        }
                        
        container.hover(function(){
            scrolling_enabled = false;
        }, function() {
            scrolling_enabled = true;
        });
                        
        //var tick = function(start, finish, speed) {
	    //   ticker_list.animate({'left': finish_offset}, speed, 'linear', tick).css('left', start_offset);
    	//}
    	
    	// adjust speed for initial scroll to the offset
    	//var adjusted_speed = Math.floor((offset + container_width) / ticker_list_width * speed);
        //ticker_list.css('left', container_width + 'px');
        ticker_list.css('left', container_width + 'px');
        
        var finish_offset_int = parseInt(finish_offset);
                
        var ticker = setInterval(function(){
            if (scrolling_enabled) {
                var offset = getTickerOffset() - pixels;
                ticker_list.css('left', offset+'px');
                if (offset <= finish_offset_int) {

                    ticker_list.css('left', start_offset);
                }
            }
        }, speed);
        
        //ticker_list.animate({'left': start_offset}, adjusted_speed, 'linear', tick(start_offset, finish_offset, speed));
	}
	
	$.fn.ticker = function(speed, offset) {
		this.each(function() {
			new $.ticker(this, speed, offset);
		});
		return this;
	}
	
})(jQuery);




