(function($){
	$.fn.infiniteCarousel = function(params) {
		var defaults = {
			data : false,
			itemWidth : 261,
			itemHeight : 85,
			speed:50,
			increment:1
		};
		var options = $.extend(defaults, params);
		var data = [];
		var paused = false;
		
		if (options.data) {
			$.ajax({
				type : 'GET',
				url : options.data,
				dataType : 'json',
				async : false,
				success : function(response) {
					data = response;
				}
			});	
		}
		
		if (!data.length) {
			return;
		}	
		
		return $(this).each(function(){
			var carouselWidth = $(this).width();
			var itemCount = data.length;
			var contentWidth = itemCount * options.itemWidth;
			var carousel = $(this);
			
			carousel.css({
				overflow:'hidden',
				position:'relative',
				height : options.itemHeight + 'px'
			});
			for (i in data) {
				var item = data[i];
				var itemStyles = {
					float:'left', 
					width:options.itemWidth+'px', 
					'list-style':'none', 
					height:options.itemHeight+'px',
					'position':'absolute',
					top:0,
					'left': i * options.itemWidth + 'px',
					'background' : 'url("'+item.pic+'")',
					'cursor':'pointer'
				};
				carousel.append($('<li/>').css(itemStyles).click(function(){
					document.location.href=item.url
				}).hover(function(){
					paused=true;
					carousel.find('li').not($(this)).css('opacity',0.5);
				},function(){
					paused=false;
					carousel.find('li').not($(this)).css('opacity',1);
				}));
			}	
			
			// Pievienojam trūkstošos
			var missing=0;
			if (contentWidth < carouselWidth) {
				missing = Math.ceil((carouselWidth - contentWidth) / options.itemWidth);
				
				for (i=0;i<missing;i++) {
					var c = carousel.find('li').eq(i).clone();
					c.css({left:(itemCount+i)*options.itemWidth+'px'});
					carousel.append(c);
				}
				itemCount += missing;
			}
			
			//Pievienojam vienu priekš animācijas
			var index = missing + 1;
			var c = carousel.find('li').eq(index).clone();
			c.css({left:((itemCount)*options.itemWidth)+'px'});
			carousel.append(c);
			itemCount++;
			
			/*
			var animateOptions = {left:'-='+options.itemWidth};
			var slider = function() {
				carousel.find('li').animate(animateOptions, options.speed, 'linear', function(){
					if (carousel.find("li:animated").length === 1) {
						var first = carousel.find('li:first');
						carousel.append(first);
						first.css({left:(itemCount-1)*options.itemWidth+'px'});
						slider();
					}
				});	
			}
			slider();
			*/
			var ticker = setInterval(function(){
				if (!paused) {
					carousel.find('li').each(function(){
						var l = $(this).position();
						$(this).css({left:(l.left-options.increment)+'px'});
					});
					var f = carousel.find('li:first');
					var pos = f.position();
					
					if (pos.left < - (options.itemWidth)) {
						carousel.append(f);
						f.css({left:(itemCount-1)*options.itemWidth+'px'});
					}
				}
			}, options.speed);
			
		
		});	
	}
})(jQuery);
