/********************************************************************
   Slider 2.13                                             2002-10-18

   Slide a div tag. Works in NS 4, NS6 and IE 4 and higher
   
   // Markus Gemstad
   gemstad@hotmail.com
   http://www.gemstad.com (references, samples etc)
********************************************************************/

// Global variables
var g_arrSliders = new Array();

// Class constructor
function Slider(sDivSlider, sRunOnDone)
{
   // Public variables (settings)
   this.m_iSpeed           = 10;
   this.m_iCounterIncrease = 2;
   this.m_iDegrees         = 90;

   // Private variables
   this.m_sRunOnDone = sRunOnDone;
   this.m_oDivSlider = null;
   this.m_iObjIndex  = g_arrSliders.length;
   g_arrSliders[g_arrSliders.length] = this;

   this.m_iToX    = null; // X value to slide to.
   this.m_iToY    = null; // Y value to slide to.
   this.m_iFromX  = null;
   this.m_iFromY  = null;

   this.m_iIntervalId = null;
   this.m_iCounter    = null;

   // Public functions
   this.startSlide = SliderStartSlide; // Call this to start the slide.
   
   // Private functions
   this.slide      = SliderSlide;
   this.stopSlide  = SliderStopSlide;
   this.getDivRef  = SliderGetDivRef;
   
   // Init values
   this.m_oDivSlider = this.getDivRef(sDivSlider);
}

function SliderGetDivRef(sDiv)
{
   var oDiv = null;
   if(sDiv != null)
   {
      if(document.layers)
         oDiv = document.layers[sDiv];
      else if(document.all)
         oDiv = document.all(sDiv);
      else if(document.getElementById)
         oDiv = document.getElementById(sDiv);
   }
   return oDiv;
}

// Stop the slide of the div
function SliderStopSlide()
{
   if(this.m_iIntervalId != null)
   {
      window.clearInterval(this.m_iIntervalId);
      this.m_iIntervalId = null;
      if(this.m_sRunOnDone != null)
         eval(this.m_sRunOnDone);
   }
}

// Start the slide of the div
function SliderStartSlide(iToX, iToY)
{
   this.stopSlide();
   this.m_iCounter = 1;

   // Save the div start position
   this.m_iFromX = (document.layers) ? this.m_oDivSlider.left : this.m_oDivSlider.offsetLeft;
   this.m_iFromY = (document.layers) ? this.m_oDivSlider.top  : this.m_oDivSlider.offsetTop;

   // Set to positions
   this.m_iToX = (iToX == null) ? this.m_iFromX : iToX;
   this.m_iToY = (iToY == null) ? this.m_iFromY : iToY;
   
   // If div is already there
   if(this.m_iFromX == this.m_iToX && this.m_iFromY == this.m_iToY)
      this.m_iCounter = this.m_iDegrees;

   this.m_iIntervalId = window.setInterval("g_arrSliders["+this.m_iObjIndex+"].slide()", this.m_iSpeed);
}

// Used internally to move div in interval
function SliderSlide()
{
   var iInc = Math.sin( (this.m_iCounter/90)*(Math.PI/2) );
   var oDiv = null;

   oDiv = this.m_oDivSlider;
   if(document.all || document.getElementById) // IE & NS6
      oDiv = this.m_oDivSlider.style;

   oDiv.left = this.m_iFromX + (iInc * (this.m_iToX - this.m_iFromX));
   oDiv.top  = this.m_iFromY + (iInc * (this.m_iToY - this.m_iFromY));

   this.m_iCounter += this.m_iCounterIncrease;

   if(this.m_iCounter < this.m_iDegrees)
      return;
   else
   {
      if(this.m_iDegrees == 90 || this.m_iDegrees == 270)
      {
         oDiv.left = this.m_iToX; 
         oDiv.top  = this.m_iToY;
      }
      else if(this.m_iDegrees == 180 || this.m_iDegrees == 360)
      {
         oDiv.left = this.m_iFromX; 
         oDiv.top  = this.m_iFromY;
      }
      this.stopSlide();
   }
}
