function rangeSlider()
{
	var self = this;
	
	self.slider_step_cur = 1;
	self.slider_step_max = 0;
	self.slider_step_pixel = 100;
	self.slider_item_count = 5;
	self.slider_item_show_count = 5;
	self.moveDirection = 'left';
	self.linkForward = 'linkForwardSlider';
	self.linkBack = 'linkBackSlider';
	self.posStart = 0;
	self.posEnd = 1;
	self.itemClass = 'item'
	self.outerBox = 'sliderOuterBox';
	self.innerBox = 'sliderInnerBox';	
	self.sliderWidth = 0;
	self.itemCollection = {};
	
	this.setup = function(selfParams)
	{
		self.slider_step_cur = selfParams.slider_step_cur || 1;
		self.slider_step_max = selfParams.slider_step_max || 0;
		self.slider_step_pixel = selfParams.slider_step_pixel || 100;
		self.slider_item_count = selfParams.slider_item_count || 5;
		self.slider_item_show_count = selfParams.slider_item_show_count || 0;
		self.moveDirection = selfParams.moveDirection || 'left';
		self.linkForward = selfParams.linkForward || 'linkForwardSlider';
		self.linkBack = selfParams.linkBack || 'linkBackSlider';
		self.itemClass = selfParams.itemClass || 'item';
		self.outerBox = selfParams.outerBox || 'sliderOuterBox';
		self.innerBox = selfParams.innerBox || 'sliderInnerBox';	
	}
	
	this.start = function()
	{
		if ($(self.linkForward)) $(self.linkForward).addClass('disable');
		if ($(self.linkBack)) $(self.linkBack).addClass('disable');
		self.itemCollection = $$('#'+self.outerBox+' .'+self.itemClass);		
		if (self.slider_item_show_count!=0)
		{
			if (self.itemCollection.length>self.slider_item_show_count)
			{
				self.slider_step_max = self.itemCollection.length - self.slider_item_show_count + 1;
			}
			else
			{
				self.slider_step_max = 0;
			}
		}
		else
		{
			self.slider_step_max = (self.itemCollection.length>self.slider_item_count)?Math.ceil(self.itemCollection.length/self.slider_item_count):0;
		}
		self.sliderWidth = self.slider_step_pixel*self.slider_step_max+self.slider_step_pixel+self.slider_step_pixel;
		if ($(self.innerBox)) $(self.innerBox).set('styles', { 'height' : self.sliderWidth });
		if (self.itemCollection.length>self.slider_item_count) $(self.linkForward).removeClass('disable');
		if($(self.linkBack)) $(self.linkBack).addEvent('click', this.moveBack);
		if($(self.linkForward)) $(self.linkForward).addEvent('click', this.moveForward);
	}
	
	this.sliderMove = function(selfForward)
	{
		var myFx = new Fx.Tween(self.innerBox);
		myFx.start(self.moveDirection, self.posStart, self.posEnd);
		if (selfForward==1)
		{
			self.slider_step_cur++;
		}
		else
		{
			self.slider_step_cur--;
		}
	}
	
	this.moveForward = function()
	{
		self.posStart = -((self.slider_step_cur-1)*self.slider_step_pixel);
		self.posEnd = self.posStart - self.slider_step_pixel;
		if (self.slider_step_cur<(self.slider_step_max)) self.sliderMove(1);
		if (self.slider_step_cur>1) $(self.linkBack).removeClass('disable');
		if (self.slider_step_cur==self.slider_step_max) $(self.linkForward).addClass('disable');
	}
	
	this.moveBack = function()
	{
		self.posStart = -((self.slider_step_cur-1)*self.slider_step_pixel);
		self.posEnd = self.posStart + self.slider_step_pixel;
		if (self.slider_step_cur>1 && $(self.linkBack).hasClass('disable')==false) self.sliderMove(-1);
		if (self.slider_step_cur==1) $(self.linkBack).addClass('disable');
		if (self.slider_step_cur<self.slider_step_max) $(self.linkForward).removeClass('disable');
	}	

    this.addEvent = function(element, ev, handler) 
    {
        var doHandler = function(e) 
        {
            return handler(e||window.event);
        };
        if (element.addEventListener) 
        { 
            element.addEventListener(ev, doHandler, false); 
        } 
        else if (element.attachEvent) 
        { 
            element.attachEvent("on" + ev, doHandler); 
        }
    };    
}
