﻿Animace = function()
{
   var sName = "";
   var iCount = 0;
   var iActual = 0;
   var iTimer = 1000;
   var bRunning = false;

   var iEffectActual = 0;
   var iEffectFinal = 0;
   var iEffectInitial = 10;
   var iEffectStep = 1;
   var iEffectTimer = 10;
   var iEffectIDFrom = 0;
   var iEffectIDTo = 0;
   
   this.Name = function()
   {
      return sName;
   }
   
   this.Count = function()
   {
      return iCount
   }

   this.Actual = function()
   {
      return iActual;
   }
   
   this.Timer = function()
   {
      return iTimer;
   }

   this.SetRunning = function(bRunningPar)
   {
      bRunning = bRunningPar;
   }

   this.GetRunning = function()
   {
      return bRunning;
   }

   this.Do = function(sNamePar, iCountPar, iTimerPar)
   {
      sName = sNamePar;
      iCount = iCountPar;
      iTimer = iTimerPar;
      
      Animace.qAnimace[Animace.qAnimace.length] = this;

      if (iCount != 0)
      {
         var oSlide0 = Tygrik.System.ByID(sName + "_0");
         var oSlide1 = Tygrik.System.ByID(sName + "_1");
   
         if (oSlide0 != null && oSlide1 != null)
         {
            Tygrik.Style.Visibility(oSlide0, false);
            oSlide1.style.left = oSlide0.offsetLeft;
            oSlide1.style.top = oSlide0.offsetTop;
            if (Tygrik.Window.qWindows.length == 0)
            {
               Tygrik.Style.Visibility(oSlide1, true);
            }
            iActual = 0;
         }
      }
   }
   
   this.Slide = function(iSlide)
   {
      var iPrev = iActual;
      var iNext = iSlide;

      var oSlide0 = Tygrik.System.ByID(sName + "_0");
      var oSlidePrev = Tygrik.System.ByID(sName + "_" + Tygrik.Change.Int2String(iPrev+1));
      var oSlideNext = Tygrik.System.ByID(sName + "_" + Tygrik.Change.Int2String(iNext+1));

      if (oSlide0 != null && oSlidePrev != null && oSlideNext != null && iPrev != iNext)
      {
         var iAmountTop = 0;
         var oBox = Tygrik.System.ByID("Box");
         if (oBox != null)
         {
            iAmountTop = oBox.scrollTop;
         }
   
         oSlideNext.style.left = oSlide0.offsetLeft;
         oSlideNext.style.top = oSlide0.offsetTop - iAmountTop;
         
         iEffectActual = iEffectInitial;
         iEffectIDFrom = iPrev;
         iEffectIDTo = iNext;
         if (Tygrik.Window.qWindows.length == 0)
         {
            Tygrik.Style.Opacity(oSlideNext, 10 - iEffectActual);
         }
         Tygrik.Style.Opacity(oSlidePrev, iEffectActual);
         if (Tygrik.Window.qWindows.length == 0)
         {
            Tygrik.Style.Visibility(oSlideNext, true);
         }

         var sEffect = "Animace.onEffect('" + sName + "')";
         setTimeout(sEffect, iEffectTimer);
      }

      iActual = iSlide;
   }

   this.Effect = function()
   {
      if (Animace.bAnimace)
      {
      iEffectActual = iEffectActual - iEffectStep;
      if (iEffectActual < iEffectFinal)
      {
         iEffectActual = iEffectFinal;
      }
      else
      {
      }
      
      var iPrev = iEffectIDFrom;
      var iNext = iEffectIDTo;

      var oSlidePrev = Tygrik.System.ByID(sName + "_" + Tygrik.Change.Int2String(iPrev+1));
      var oSlideNext = Tygrik.System.ByID(sName + "_" + Tygrik.Change.Int2String(iNext+1));

      if (oSlidePrev != null && oSlideNext != null)
      {
         if (Tygrik.Window.qWindows.length == 0)
         {
            Tygrik.Style.Opacity(oSlideNext, 10 - iEffectActual);
         }
         Tygrik.Style.Opacity(oSlidePrev, iEffectActual);

         if (iEffectActual != iEffectFinal)
         {
            var sEffect = "Animace.onEffect('" + sName + "')";
            setTimeout(sEffect, iEffectTimer);
         }
         else
         {
            Tygrik.Style.Visibility(oSlidePrev, false);
            iEffectIDFrom = 0;
            iEffectIDTo = 0;
         }
      }
      }
      else
      {
         var sEffect = "Animace.onEffect('" + sName + "')";
         setTimeout(sEffect, iEffectTimer * 300);
      }
   }

   this.Pozice = function()
   {
      var oSlide0 = Tygrik.System.ByID(sName + "_0");
      var oSlideActual = Tygrik.System.ByID(sName + "_" + Tygrik.Change.Int2String(iActual+1));

      if (oSlide0 != null && oSlideActual != null)
      {
         var iAmountTop = 0;
         var oBox = Tygrik.System.ByID("Box");
         if (oBox != null)
         {
            iAmountTop = oBox.scrollTop;
         }

         oSlideActual.style.left = oSlide0.offsetLeft;
         oSlideActual.style.top = oSlide0.offsetTop - iAmountTop;
      }
   }

}

Animace.qAnimace = new Array();
Animace.bAnimace = true;

Animace.Do = function(sName, iCount, iTimer)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace == null)
   {
      oAnimace = new Animace();
      oAnimace.Do(sName, iCount, iTimer);
   }
}

Animace.Find = function(sName)
{
   var oFound = null;
   var iAnimaci = Animace.qAnimace.length;
   for (var iAnimace = 0; iAnimace < iAnimaci; iAnimace++)
   {
      var oAnimaceNow = Animace.qAnimace[iAnimace];
      if (oAnimaceNow.Name() == sName)
      {
         oFound = oAnimaceNow;
         break;
      }
   }
   return oFound;
}

Animace.Step = function(sName, iStep)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      if (oAnimace.Count() > 1)
      {
         var iCount = oAnimace.Count();

         if (iStep >= 0 && iStep < iCount)
         {
             oAnimace.Slide(iStep);
             Animace.Stop(sName);
         }
      }     
   }  
}

Animace.Next = function(sName)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      if (oAnimace.Count() > 1)
      {
         var iCount = oAnimace.Count();
         var iActual = oAnimace.Actual();

         var iSlide = (iActual < iCount - 1 ? iActual + 1 : 0);
         oAnimace.Slide(iSlide);
         Animace.Stop(sName);
      }     
   }  
}

Animace.Prev = function(sName)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      if (oAnimace.Count() > 1)
      {
         var iCount = oAnimace.Count();
         var iActual = oAnimace.Actual();

         var iSlide = (iActual > 0 ? iActual - 1 : iCount - 1);
         oAnimace.Slide(iSlide);
         Animace.Stop(sName);
      }     
   }  
}

Animace.Start = function(sName)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      if (!oAnimace.GetRunning() && oAnimace.Count() > 1)
      {
         oAnimace.SetRunning(true);

         var sTimer = "Animace.onTimer('" + sName + "')";
         setTimeout(sTimer, oAnimace.Timer());
      }     
   }
}

Animace.Stop = function(sName)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      if (oAnimace.GetRunning())
      {
         oAnimace.SetRunning(false);
      }
   }
}

Animace.onLoad = function(sName, iCount)
{
   Animace.Do(sName, iCount, 5000);
   Animace.Start(sName);
   Animace.Pozice();
   setTimeout('Animace.onTimerPozice()', 1000);  
}

Animace.onTimerPozice = function()
{
   Animace.Pozice();
   setTimeout('Animace.onTimerPozice()', 1000);
}

Animace.Pozice = function()
{
   var iAnimaci = Animace.qAnimace.length;
   for (var iAnimace = 0; iAnimace < iAnimaci; iAnimace++)
   {
      var oAnimaceNow = Animace.qAnimace[iAnimace];
      oAnimaceNow.Pozice();
   }
}

Animace.onTimer = function(sName)
{
   if (Animace.bAnimace)
   {
      var oAnimace = Animace.Find(sName);
      if (oAnimace != null)
      {
         if (oAnimace.GetRunning() && oAnimace.Count() > 1)
         {
            var iCount = oAnimace.Count();
            var iActual = oAnimace.Actual();

            var iSlide = (iActual < iCount - 1 ? iActual + 1 : 0);
            oAnimace.Slide(iSlide);

            var sTimer = "Animace.onTimer('" + sName + "')";
            setTimeout(sTimer, oAnimace.Timer());
         }     
      }
   }
   else
   {
      var sTimer = "Animace.onTimer('" + sName + "')";
      setTimeout(sTimer, 2000);
   }
}

Animace.onEffect = function(sName)
{
   var oAnimace = Animace.Find(sName);
   if (oAnimace != null)
   {
      oAnimace.Effect();
   }  
}

