/********************************************************************
   Slider 2.11                                             2002-06-16

   Slide a div tag. HANDELSPLATSEN VERSION!
   
   // Markus Gemstad
   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_sRunOnDone = sRunOnDone;

   this.m_iSpeed           = 20;
   this.m_iCounterIncrease = 6;
   this.m_iDegrees         = 90;

   // Private variables
   this.m_oDivSlider = null;
   this.m_iObjIndex  = g_arrSliders.length;
   g_arrSliders[g_arrSliders.length] = this;

   this.m_iToHeight = 14;
   this.m_iToWidth  = 300;

   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_iHeight = null;
   this.m_iWidth  = 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;
   this.pxToInt    = SliderPxToInt;
   
   // Init values
   this.m_oDivSlider = this.getDivRef(sDivSlider);
}

function SliderPxToInt(sStr)
{
   var iNr = parseFloat(sStr.slice(0, sStr.length-2));
   return iNr;
}

function SliderGetDivRef(sDiv)
{
   var oDiv = null;
   if(sDiv != null)
      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, sRunBeforeStart)
{
   this.stopSlide();

   // Init values
   this.m_iCounter = 1;
   this.m_iToX     = iToX;
   this.m_iToY     = iToY;

   // Save the div start position
   this.m_iFromX  = this.pxToInt(this.m_oDivSlider.style.left);   // this.m_oDivSlider.offsetLeft;
   this.m_iFromY  = this.pxToInt(this.m_oDivSlider.style.top);    // this.m_oDivSlider.offsetTop;
   this.m_iHeight = this.pxToInt(this.m_oDivSlider.style.height); // this.m_oDivSlider.offsetHeight
   this.m_iWidth  = this.pxToInt(this.m_oDivSlider.style.width);  // this.m_oDivSlider.offsetWidth

   //alert(this.m_iFromX);
   
   // If div is already there
   if(this.m_iFromX == this.m_iToX && this.m_iFromY == this.m_iToY)
      this.m_iCounter = this.m_iDegrees;

   if(sRunBeforeStart != null)
      eval(sRunBeforeStart);

   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 = this.m_oDivSlider;

   oDiv.style.height = this.m_iHeight + (iInc * (this.m_iToHeight - this.m_iHeight));
   oDiv.style.width  = this.m_iWidth  + (iInc * (this.m_iToWidth  - this.m_iWidth));
   oDiv.style.left   = this.m_iFromX  + (iInc * (this.m_iToX - this.m_iFromX));
   oDiv.style.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
   {
      oDiv.style.left = this.m_iToX; 
      oDiv.style.top  = this.m_iToY;
      this.stopSlide();
   }
}