(function($){
 	$.fn.extend({ 
 		imageslider: function(options) {
			
			var defaults = {
				viewLength: 3 
			};
			
			var options =  $.extend(defaults, options);
		
			return this.each(function() 
			{
				
				var o = options;
				
				var sliderContainer = $(this)
				var maskElement = sliderContainer.find(".mask");
				var slidingElement = maskElement.find(".slider");
				var slidingElementChildren = slidingElement.children();
				var childElementWidth = slidingElementChildren.outerWidth(true);
				var nextButton = sliderContainer.find(".next");
				var previousButton = sliderContainer.find(".previous");
				
				slidingElement.width(slidingElementChildren.length*childElementWidth)
				
				slidingElement.css({"marginLeft": 0})
				
				previousButton.addClass("disabled")
				
				if (slidingElementChildren.length <= o.viewLength)
				{
					nextButton.addClass("disabled")
				} 
				else if (nextButton.hasClass("disabled"))
				{
					nextButton.removeClass("disabled")
				}
				
				nextButton.unbind("click");
				previousButton.unbind("click");
				
				nextButton.bind("click", nextSlide);
				previousButton.bind("click", previousSlide);
				
				function nextSlide() {
					var leftMargin = parseInt(slidingElement.css("marginLeft"));
					if (!slidingElement.is(":animated")) {
						if (leftMargin <= 0 - slidingElement.width() + (childElementWidth*o.viewLength)) {
						//do nothing
						} else {
							previousButton.removeClass("disabled")
							leftMargin = leftMargin-childElementWidth;
							if (leftMargin <= 0 - slidingElement.width() + (childElementWidth*o.viewLength)) {
								nextButton.addClass("disabled")
							}
							slidingElement.animate({"marginLeft": leftMargin},350)
						}
					}
				}
				
				function previousSlide() {
					var leftMargin = parseInt(slidingElement.css("marginLeft"));
					if (!slidingElement.is(":animated")) {
						if (leftMargin >= 0) {
						//do nothing
						} else {
							nextButton.removeClass("disabled")
							leftMargin = leftMargin+childElementWidth;
							if (leftMargin >= 0) {
								previousButton.addClass("disabled")
							}
							slidingElement.animate({"marginLeft": leftMargin},350)
						}
					}
				}
			});
		}
	});
})(jQuery);