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: 500,
		Direction: 'right',
		LastItemCount: 0,
		viewPortItemSize: 1
	};
	
	settings = jQuery.extend(settings, options || {});

	var active = 0;
	var direct;
	settings.width *= -1; 
	var size = $(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).size() - 1;
	if(settings.Direction == "right"){
		direct = "marginLeft";
	}
	else{
		direct = "marginTop";
	}
	
	var pageCount = Math.ceil((size + 1) / settings.viewPortItemSize);
	
	for (var pc = 0;pc < pageCount; pc++){
		$(settings.sliderID + " .roller").append('<a href="#">' + pc + '</a>');
	}
	$(settings.sliderID + " .roller a:first").addClass("active");
	
	$(settings.sliderID + " .roller a").bind("click", function(){
		if(!$(this).hasClass("active")){
			$(settings.sliderID + " .roller a.active").removeClass("active");
			$(this).addClass("active");
			goTo(($(this).text() * settings.viewPortItemSize));
			return false;
		}
		else{
			return false;
		}
	});
	
	
	var findActive = function(){
		$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).each(function(){
				if($(this).hasClass("active")){
				active = $(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).index($(this));
				}
			});
	};
	
	var resetInterval = function(){
		clearInterval(sliderInterval);
		sliderInterval = setInterval(function(){$(settings.RightArrow).trigger('click');},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.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").is(":animated")){
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(size - settings.LastItemCount).removeClass("active");
				eval('$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").stop().animate( { ' + direct +': "0px" },settings.duration);');
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(0).addClass("active");
			}
			else{
				return false;
			}
		}
		else{
			if(!$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").is(":animated")){
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(active).removeClass("active");	
				eval('$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").stop().animate( { ' + direct +': settings.width * (active + 1) + "px" },settings.duration)');
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(active + 1).addClass("active");
			}
			else{
				return false;
			}
		}
	};
	
	var Previous = function(){
		findActive();
		if(active == 0){
			if(!$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").is(":animated")){
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(0).removeClass("active");
				eval('$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").stop().animate( { ' + direct +': settings.width * (size - settings.LastItemCount) + "px" },settings.duration);');
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(size - settings.LastItemCount).addClass("active");
			}
			else{
				return false;
			}
		}
		else{
			if(!$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").is(":animated")){
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(active).removeClass("active");
				eval('$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").stop().animate( { ' + direct +': settings.width * (active - 1) + "px" },settings.duration);');
				$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(active - 1).addClass("active");
			}
			else{
				return false;
			}
		}
	};
	
	var goTo = function(e){
		findActive();
		if(active == e){ return false; }
		else{
			$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + settings.Item).eq(active).removeClass("active");
			eval('$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " ").animate( { ' + direct +': settings.width * (active - (active - e)) + "px" },settings.duration);');
			$(settings.sliderID + " " + settings.Mask + " " + settings.ItemContainer + " " + 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 + " " + " .roller .roll").click(function(){
//		goTo($(settings.sliderID + " " + " .roller .roll").index($(this)));
//		return false;
//	});
	if(settings.AutoSlide == "on"){
		var sliderInterval;
		sliderInterval = setInterval(function(){$(settings.RightArrow).trigger('click');},settings.AutoSlideTime);
	}
};
