(function($){
	$.fn.zwoSlideshow = function(options) {
		// Settings
		var settings = {
			"container"			: this,
			"buttonOpacity"		: 0.3,
			"scrollSpeed"		: 500,

			"left"				: this.children(".slideLeft"),
			"right"				: this.children(".slideRight"),

			"width"				: 898,
			"height"			: 243,

			"elementsWidth"		: 0,
			"elementsAct"		: 0,
			"elementsScroll"	: 1,
			"elementsNum"		: $("> div div div",this).length
		};
		if(options){
			$.extend(settings, options);
		};

		// Element width
		settings.elementsWidth = settings.width - (settings.left.width() + settings.right.width());
		//alert(settings.elementsWidth);
		if(settings.elementsScroll > 1)
			settings.elementsWidth = settings.elementsWidth / settings.elementsScroll;

		// CSS
		settings.container.css("width", settings.width);
		$("> div",settings.container).css({"width":settings.elementsWidth*settings.elementsScroll,"height":settings.height-2,"overflow":"hidden","border-top":"1px solid #d8dadc","border-bottom":"1px solid #d8dadc"});
		$("> div div",settings.container).css({"position":"relative","width":settings.elementsWidth*settings.elementsNum,"height":settings.height});
		$("> div div div",settings.container).css({"float":"left","width":settings.elementsWidth,"height":settings.height});
		settings.left.css({"float":"left","cursor":"auto"});
		settings.right.css({"float":"right","cursor":"pointer"});

		// Fade left button
		settings.left.animate({opacity:settings.buttonOpacity},100);

		// Left button
		function leftScroll(pointer)
		{
			if(settings.elementsAct > 0 && $("> div div",settings.container).queue().length == 0)
			{
				$("> div div",settings.container).animate({
						left:'+='+settings.elementsWidth
					},settings.scrollSpeed);

				settings.elementsAct--;
				settings.right.animate({opacity:1},100);
				settings.right.css({"cursor":"pointer"});
			}
			if(settings.elementsAct == 0)
			{
				pointer.animate({opacity:settings.buttonOpacity},100);
				pointer.css({"cursor":"auto"});
			}
		}

		settings.left.mousedown( function() {
			leftScroll($(this));
		});


		// Right button
		function rightScroll(pointer)
		{
			if(settings.elementsAct < settings.elementsNum-settings.elementsScroll && $("> div div",settings.container).queue().length == 0)
			{
				$("> div div",settings.container).animate({
						left:'-='+settings.elementsWidth
					},settings.scrollSpeed);

				settings.elementsAct++;
				settings.left.animate({opacity:1},100);
				settings.left.css({"cursor":"pointer"});
			}

			if(settings.elementsAct == settings.elementsNum-settings.elementsScroll)
			{
				pointer.animate({opacity:settings.buttonOpacity},100);
				pointer.css({"cursor":"auto"});
			}
		}

		settings.right.mousedown(function(){
			rightScroll($(this));
		});
	};
})(jQuery);
