;(function($) {

    $.newsTicker = function(el, options) {

        var defaults = {
            duration: 'auto',
			distanceToMove: null, 
			originalEl: null, 
			timeout: null,
			timer: null,
			elaspedTime: 0
        }

        var plugin = this;

        plugin.settings = {}

        var init = function() {
            plugin.settings = $.extend({}, defaults, options);
            plugin.el = el;
			plugin.settings.originalEl = el.clone();
			
			plugin.durationSpeed();
			plugin.scrollContainer();
			
			plugin.el.bind('mouseover', plugin.mouseOver);
			plugin.el.bind('mouseout', plugin.mouseOut);
        }

        plugin.scrollContainer = function() {
			var parent = plugin.el;
			var distance = 0;
			
			parent.html(parent.html() + parent.html());
 			$(parent.children()).each(function(i, el){
				$(this).css('float', "left");
				distance += $(this).outerWidth(true);
			});
			plugin.settings.distanceToMove = distance;
			
			$mask = $('<div class="mask"></div>');
			parent.wrap($mask);
			parent.css({'position': "relative"});
			$mask.css({'width':parent.width(), 'overflow': 'hidden' });
			parent.width(distance);
			
			plugin.elaspedTime();
			plugin.loopAnimation();
        }
		
		plugin.mouseOver = function(e){
			clearInterval(plugin.settings.timer);
			$(this).stop();
		}
		
		plugin.mouseOut = function(e){
			plugin.el.animate({ 'left':-(plugin.settings.distanceToMove/2) }, plugin.settings.duration - (plugin.settings.elaspedTime*1000), "linear",  function(){plugin.loopAnimation();} );
			plugin.elaspedTime();
		}
				
		plugin.loopAnimation = function(){
			plugin.settings.elaspedTime = 0;
			plugin.el.css('left', '0px');
			plugin.el.animate({ 'left':-(plugin.settings.distanceToMove/2) }, plugin.settings.duration, 'linear', function(){plugin.loopAnimation();});
		}
		
		plugin.durationSpeed = function() {
			var parent = plugin.el;
			var time = 0;
			$(parent.children()).each(function(i, el){
				time += 5000;
			});
			plugin.settings.duration = time;
		}
		
		plugin.elaspedTime = function(){
			plugin.settings.timer = setInterval (function(){ plugin.settings.elaspedTime+= 0.1; }, 100)
		}
		
		
        init();

    }

})(jQuery);
