var currentIndex;
var obj;
var t;
var sliding = null;
var settings = null;

jQuery.fn.slider = function(options) {

		if (!options.slideClass || options.slideClass == "") {
				var error = new Error();
				error.message = "No slide class has been supplied";
		}

		settings = options;

		if (!options.slideDuration || !parseInt(options.slideDuration)) {
				options.slideDuration = 4000;
		}

		if (!options.slideOffet || !parseInt(options.slideOffet)) {
				options.slideOffet = '500px';
		}

		if (!options.fadeOutDuration || !parseInt(options.fadeOutDuration)) {
				options.fadeOutDuration = 4000;
		}

		if (!options.fadeInDuration || !parseInt(options.fadeInDuration)) {
				options.fadeInDuration = 4000;
		}

		return this.each(function() {
				$(options.slideClass, this).css('z-index', -3);
				$(options.slideClass, this).css('margin-left', settings.slideOffet);
				$(options.slideClass + ":eq(0)", this).css('z-index', 1);
				$(options.slideClass + ":eq(0)", this).css('margin-left', '0px');
				currentIndex = 0;
				obj = this;
				t = setTimeout(function(){ slide(); }, settings.slideDuration);
		});
};

function slide(speed)
{
		clearTimeout(t);
		if(!sliding) {
				sliding = true;
				var current = $(settings.slideClass + ":eq(" + currentIndex + ")", obj);
				current.css('z-index', -1);
				currentIndex++;
				if (currentIndex > $(settings.slideClass, obj).size() - 1) {
						currentIndex = 0;
				}
				$(settings.slideClass + ":eq(" + currentIndex + ")", obj).css('z-index', -2);
				$(settings.slideClass + ":eq(" + currentIndex + ")", obj).css('margin', 0);

				current.animate({marginLeft:settings.slideOffet}, settings.fadeOutDuration, 'easeInBack' ,function(){
						sliding = false;
						t = setTimeout(function(){ slide(settings.fadeOutDuration); }, settings.slideDuration);
						$(settings.slideClass + ":eq(" + currentIndex + ")", obj).css('z-index', 1);
				});
		}
}
