var gySlideshow =
{
  urls:[],
  index:1,
  effect:'hideshow',
  panel:false,
  timed:true,
  delay:5000,
  slides:[],
  thumbs:[],
  texts:[],
  stop:false,
  initialised:false,

  init:function()
  {
    var index = 0;
    $$('.gy_url').each(function(element) { gySlideshow.urls[index++] = element.innerHTML });
    index = 0;
    $$('.gy_slide').each(function(element) { gySlideshow.slides[index++] = element });
    index = 0;
    $$('.gy_thumb').each(function(element) { gySlideshow.thumbs[index++] = element });
    
    gySlideshow.effect = $('gy_effect').innerHTML;
    gySlideshow.panel  = Boolean(parseInt($('gy_panel').innerHTML));
    gySlideshow.timed  = Boolean(parseInt($('gy_timed').innerHTML));
    gySlideshow.delay  = parseInt($('gy_delay').innerHTML);

    if (gySlideshow.panel)
    {
      index = 0;
      $$('.gy_slide_text').each(function(element) { gySlideshow.texts[index++] = element });
    }
    
    gySlideshow.initialised = true;
    
    if (gySlideshow.slides.length > 1 && gySlideshow.timed)
    {
      gySlideshow.doSlideshow();
    }
  },
  
  doSlideshow:function()
  {
    new PeriodicalExecuter(
      function()
      {
        if (gySlideshow.stop)
        {
          return;
        }
        
        switch (gySlideshow.effect)
        {
          case 'hideshow':
            gySlideshow.slides[gySlideshow.getPrevIndex()].style.display = 'none';
            gySlideshow.slides[gySlideshow.index].style.display = 'block';
            break;
          case 'fadeappear':
            Effect.Fade(gySlideshow.slides[gySlideshow.getPrevIndex()]);
            Effect.Appear(gySlideshow.slides[gySlideshow.index]);
            break;
        }
        
        $('gy_anchor').href = gySlideshow.urls[gySlideshow.index];
        
        if (gySlideshow.panel)
        {
          //gySlideshow.thumbs[gySlideshow.getPrevIndex()].removeClassName('gy_thumb_current');
          //gySlideshow.thumbs[gySlideshow.index].addClassName('gy_thumb_current');
          gySlideshow.texts[gySlideshow.getPrevIndex()].toggle();
          gySlideshow.texts[gySlideshow.index].toggle();
        }
        
        if (gySlideshow.index == gySlideshow.slides.length - 1)
        {
          gySlideshow.index = 0;
        }
        else
        {
          gySlideshow.index++;
        }        

      }, gySlideshow.delay / 1000);
  },
  
  getNextIndex:function()
  {
    var nextIndex;
    if (gySlideshow.index == gySlideshow.slides.length - 1)
    {
      nextIndex = 0;
    }
    else
    {
      nextIndex = gySlideshow.index + 1;
    }
    
    return nextIndex;
  },
  
  getPrevIndex:function()
  {
    var prevIndex;
    if (gySlideshow.index == 0)
    {
      prevIndex = gySlideshow.slides.length - 1;
    }
    else
    {
      prevIndex = gySlideshow.index - 1;
    }
    
    return prevIndex;
  },

  
  turnSlide:function(index)
  {
    if (!gySlideshow.initialised)
    {
      return;
    }
    gySlideshow.stop = true;
    //gySlideshow.thumbs.each(function(element) { element.removeClassName('gy_thumb_current') });
    gySlideshow.texts.each(function(element) { element.style.display = 'none' });
    gySlideshow.texts[index].style.display = 'block';
    //gySlideshow.thumbs[index].addClassName('gy_thumb_current');
    gySlideshow.slides.each(function(element) { element.style.display = 'none' });
    gySlideshow.slides[index].style.display = 'block';
    $('gy_anchor').href = gySlideshow.urls[gySlideshow.index];
  }
}

window.onload = gySlideshow.init;