jQuery.fn.Slider = function(options) {

	var settings = {
		duration: 500,
		width: $(this).width(),
		sliderID: '#' + $(this).attr("id"),
		Mask: '#slider',
		ItemContainer: '#slider-settings.Item-container',
		Item: '.settings.Item',
		LeftArrow: '#slider-left',
		RightArrow: '#slider-right',
		AutoSlide: 'on',
		AutoSlideTime: 4000,
		Direction: 'right',
		Reverse: 'off',
		LastItemCount: 0,
		EffectEasing: 'easeOutCubic'
	};
		
	settings = jQuery.extend(settings, options || {});
	
	var size = $(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).size() - 1;
	var active = 0;
	var direct;
	settings.width *= -1; 
	if($(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children("img").length > 1){
		$(settings.sliderID).parent().children("div.rolling").before('<div class="sliderControl"></div>');
	};
	
	if($(settings.sliderID).parent().children("div.rolling").length == 1){
		$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children("img").each(function(i){
			if(i == 0){
				$(settings.sliderID).parent().children("div.rolling").append($("<a>").attr({href: "#"}).html(i).addClass("active"));
			}
			else{
				$(settings.sliderID).parent().children("div.rolling").append($("<a>").attr({href: "#"}).html(i));
			}
		});
		
	};
	
	if($(settings.sliderID).parent().children("div.sliderControl").length == 1){
		if(settings.AutoSlide == "on"){
			$(settings.sliderID).parent().children("div.sliderControl").append($("<a>").attr({href: "#"}).html("pause").addClass("pause"));
		}else{
			$(settings.sliderID).parent().children("div.sliderControl").append($("<a>").attr({href: "#"}).html("play").addClass("play"));
		};
	};
	
	
	if(settings.Direction == "right"){
		direct = "marginLeft";
	}
	else{
		direct = "marginTop";
	};
	
	var findActive = function(){
		$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).each(function(){
			if($(this).hasClass("active")){
				active = $(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).index($(this));
				}
			});
	};
	
	var resetInterval = function(){
		clearInterval(sliderInterval);
		//sliderInterval = setInterval(function(){$(settings.RightArrow).trigger('click');},settings.AutoSlideTime);
		sliderInterval = setInterval(Next,settings.AutoSlideTime);
	}
	
	jQuery.fn.delay = function(time,func){
		this.each(function(){
			setTimeout(func,time);
		});
		return this;
	};
	var Next = function(){
		findActive();
		if(active == size - settings.LastItemCount){
			if(settings.Reverse == "on"){
				$(".sldi img").eq(0).clone().appendTo($(".sldi img.active").parent());
				$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(size - settings.LastItemCount).removeClass("active");
				eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate({' + direct + ': settings.width * (active + 1) + "px" },settings.duration, settings.EffectEasing,function(){$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(0).addClass("active");$(settings.sliderID).parent().children("div.rolling").children("a").removeClass("active").eq(0).addClass("active");eval("$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().css({' + direct + ': 0 });");$(".sldi img:last").remove();})');
				$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active + 1).addClass("active");
				$(settings.sliderID).parent().children("div.rolling").children("a").removeClass("active").eq(0).addClass("active");
			}
			else{
				$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(size - settings.LastItemCount).removeClass("active");
				eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate({' + direct + ': "0px" },settings.duration, settings.EffectEasing);');
				$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(0).addClass("active");
				$(settings.sliderID).parent().children("div.rolling").children("a").removeClass("active").eq(0).addClass("active");
			};
		}
		else{
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active).removeClass("active");	
			eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate({' + direct + ': settings.width * (active + 1) + "px" },settings.duration, settings.EffectEasing)');
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active + 1).addClass("active");
			$(settings.sliderID).parent().children("div.rolling").children("a").removeClass("active").eq(active+1).addClass("active");
		}
	};
	
	var Previous = function(){
		findActive();
		if(active == 0){
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(0).removeClass("active");
			eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate( { ' + direct +': settings.width * (size - settings.LastItemCount) + "px" },settings.duration, settings.EffectEasing);');
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(size - settings.LastItemCount).addClass("active");
		}
		else{
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active).removeClass("active");
			eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate( { ' + direct +': settings.width * (active - 1) + "px" },settings.duration, settings.EffectEasing);');
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active - 1).addClass("active");
		}
	};
	
	var goTo = function(e){
		findActive();
		if(active == e){ return false; }
		else{
			resetInterval();
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(active).removeClass("active");
			eval('$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).stop().animate( { ' + direct +': settings.width * (active - (active - e)) + "px" },settings.duration, settings.EffectEasing);');
			$(settings.sliderID).children(settings.Mask).children(settings.ItemContainer).children(settings.Item).eq(e).addClass("active");
		}
	};
	
	$(settings.RightArrow).click(function(){
		Next();
		if(settings.AutoSlide == "on"){
			resetInterval();
		}
		return false;
	});
	
	$(settings.LeftArrow).click(function(){
		Previous();
		if(settings.AutoSlide == "on"){
			resetInterval();
		}
		return false;
	});
	$(settings.sliderID).parent().children("div.rolling").children("a").click(function(){
		$(this).parent("div.rolling").children("a").each(function(){
			if($(this).hasClass("active")){
				$(this).removeClass("active");
			}
		});
		$(this).addClass("active");
		goTo($(settings.sliderID).parent().children("div.rolling").children("a").index($(this)));
		settings.AutoSlide = "off";
		clearInterval(sliderInterval);
		$(settings.sliderID).parent().children("div.sliderControl").children("a").removeClass("pause").eq(0).addClass("play");
		return false;
	});
	
	$(settings.sliderID).parent().children("div.sliderControl").children("a").click(function(){
		if($(settings.sliderID).parent().children("div.sliderControl").children("a").hasClass("play")){
			settings.AutoSlide = "on";
			resetInterval();
			$(settings.sliderID).parent().children("div.sliderControl").children("a").removeClass("play").eq(0).addClass("pause");
		}
		else{
			settings.AutoSlide = "off";
			clearInterval(sliderInterval);
			$(settings.sliderID).parent().children("div.sliderControl").children("a").removeClass("pause").eq(0).addClass("play");
		};		
		return false;
	});	
	
	
	if(settings.AutoSlide == "on"){
		var sliderInterval;
		sliderInterval = setInterval(Next,settings.AutoSlideTime);
	};
	
	
};
