function SliderPosition()
{
  return this.m_imgSliderBar_width+this.m_imgSliderPlus_width+eval(this.m_Slider_id).style.pixelLeft;
}

function SliderSetPosition(nPosition)
{
  if (nPosition>this.m_imgSliderBar_width-this.m_imgSlider_width)
  {
     nPosition=this.m_imgSliderBar_width-this.m_imgSlider_width;
  }
  eval(this.m_Slider_id).style.left=(-this.m_imgSliderBar_width-this.m_imgSliderPlus_width+nPosition)+"px";
  eval(this.m_Slider_id).title=eval(this.m_fnTitle)(this);
  eval(this.m_fnUpdate)(this);
}

function SliderReset()
{
 eval(this.m_fnReset)(this);
}

function SliderMove(nDelta)
{
  if ( (this.m_imgSliderBar_width+this.m_imgSliderPlus_width+eval(this.m_Slider_id).style.pixelLeft+nDelta>=0) &&
       (this.m_imgSliderPlus_width+eval(this.m_Slider_id).style.pixelLeft+this.m_imgSlider_width+nDelta<=0) )
  {
    eval(this.m_Slider_id).style.left=(eval(this.m_Slider_id).style.pixelLeft+nDelta)+"px";
  }
  else if (nDelta>0) 
  {
    eval(this.m_Slider_id).style.left=(-this.m_imgSliderPlus_width-this.m_imgSlider_width)+"px";
  }
  else
  {
    eval(this.m_Slider_id).style.left=(-this.m_imgSliderBar_width-this.m_imgSliderPlus_width)+"px";
  }
  eval(this.m_Slider_id).title=eval(this.m_fnTitle)(this);
  eval(this.m_fnUpdate)(this);
}

function SliderActivate()
{
  this.m_bSliderActive=true;
  eval(this.m_Slider_id).setCapture();
}

function SliderDeactivate()
{
  this.m_bSliderActive=false;
  eval(this.m_Slider_id).releaseCapture();
}

function SliderMouseMove(offsetX, id)
{
  if(this.m_bSliderActive)
  {
    if (id==this.m_Slider_id)
    {
      this.Move(offsetX);
    }
    else if (id==this.m_SliderBar_id)
    {
      this.SetPosition(offsetX);
    }
  }
}

// construct "class" SliderClass
function SliderClass(nPosition, SliderBar, Slider, Identity, fnUpdate, fnReset, fnTitle)
{
  this.m_nPosition=nPosition;
  this.m_imgSliderBar_width=105;
  this.m_imgSlider_width=5;
  this.m_imgSliderPlus_width=9;
  this.m_SliderBar_id=SliderBar;
  this.m_Slider_id=Slider;
  this.m_bSliderActive=false;
  this.m_Identity=Identity;
  this.m_fnUpdate=fnUpdate;
  this.m_fnTitle=fnTitle;
  this.m_fnReset=fnReset;
  this.SetPosition(nPosition);
}
SliderClass.prototype.Position=SliderPosition;
SliderClass.prototype.SetPosition=SliderSetPosition;
SliderClass.prototype.Move=SliderMove;
SliderClass.prototype.MouseMove=SliderMouseMove;
SliderClass.prototype.Activate=SliderActivate;
SliderClass.prototype.Deactivate=SliderDeactivate;
SliderClass.prototype.Reset=SliderReset;

// handlers
function OnClickSliderMove(obj, nDelta)
{
  eval(obj.sliderObj).Move(nDelta);
}

function OnClickSliderBar(obj)
{
  eval(obj.sliderObj).SetPosition(event.offsetX);
}

function onMouseDownSlider(obj)
{
  eval(obj.sliderObj).Activate();
}

function onMouseUpSlider(obj)
{
  eval(obj.sliderObj).Deactivate();
}

function onMouseMoveSlider(obj)
{
  eval(obj.sliderObj).MouseMove(event.offsetX, event.srcElement.id);
}