/*
 * fmSlider 1.0
 *
 * http://www.slyks.pl
 *
 * Copyrights 2011 Pawel Kargol (www.slyks.pl)
 * 
 */

(function($) {
	$.fn.fmSlider = function(o) {
		return this.each(function() {
			new $.fmSlider(this, o);
		});
	};
	var defaults = {
		speed : 200
	};
	$.fmSlider = function(el, o) {
		var self = this;
		this.o = $.extend( {}, defaults, o || {});
		this.$list = $(el);
		
		$(window).load(function() {
			self.init();
		});
	};
	$.fmSlider.fn = $.fmSlider.prototype = {};
	$.fmSlider.fn.extend = $.fmSlider.extend = $.extend;
	$.fmSlider.fn
			.extend( {
				init : function() {
					this.$items = this.$list.children();
					this.$clip = this.$list.parent().parent().parent();
					this.$container = this.$clip.parent();
					
					this.itemMax = this.$items.eq(0).outerWidth(true);
					this.clipMax = this.$clip.width();
					this.dimension = 'width';

					this.pos = 0;
					this.posMax = this.$items.length * this.itemMax;
					this.$list.css(this.dimension, this.posMax + 'px');

					var addItems = Math.ceil(this.clipMax / this.itemMax);
					for(var i=0; i<5; i++) {
						this.$items.slice(0, addItems-1).clone(true).appendTo(this.$list);
						this.posMax = parseInt(this.$list.css(this.dimension), 10);
						this.$list.css(this.dimension, this.posMax + (this.itemMax * addItems) + 'px');
					}
					
					var self = this;
					this.funcMoveBack = function() { self.moveBack(); };
					this.funcMoveForward = function() { self.moveForward(); };
					this.$btnBack = $('.btnLatestLeft',this.$container).addClass('disabled').click(this.funcMoveBack);
					this.$btnForward = $('.btnLatestRight',this.$container).click(this.funcMoveForward);
				},
				moveForward : function() {
					this.pos -= 1;
					if(this.pos <= -this.$items.length*4.2)
						this.pos = 0;
					this.$list.animate({left: this.pos*this.itemMax}, this.o.speed);

				},
				moveBack : function() {
					if(this.pos < 0) {
						this.pos += 1;
						this.$list.animate({left: this.pos*this.itemMax}, this.o.speed);
					}
				}
			});
})(jQuery);


