var observer = {};

observer.nextEffect = false;
observer.onPostEffect = function(e){
 if (this.nextEffect)
 {
  var eff = this.nextEffect;
  setTimeout(function(){eff.start();}, 10);
 }

 this.nextEffect = false;
}

function myPanelsSlides(currentPanel)
{
 // The list of all the panels that need sliding
 var panels = ['slide1', 'slide2', 'slide3', 'slide4','slide5', 'slide6', 'slide7', 'slide8', 'slide9', 'slide10', 'slide11', 'slide12', 'slide13'];
 var opened = -1;

 // Let's check if we have an effect for each of these sliding panels
 if (typeof effects == 'undefined')
  effects = {};

 for (var i=0; i < panels.length; i++)
 {
  if (typeof effects[panels[i]] == 'undefined'){
   effects[panels[i]] = new Spry.Effect.Slide(panels[i], {from: '0%', to: '100%', toggle: true});
   effects[panels[i]].addObserver(observer);
  }
   
  if (effects[panels[i]].direction == Spry.forwards && currentPanel != panels[i])
   opened = i;

  //prevent too fast clicks on the buttons
  if (effects[panels[i]].direction == Spry.backwards && effects[panels[i]].isRunning)
  {
   observer.nextEffect = effects[currentPanel];
   return;
  }
 }

 if (opened != -1)
 {
  observer.nextEffect = effects[currentPanel];
  effects[panels[opened]].start();
 } 
 else if (effects[currentPanel].direction != Spry.forwards)
 {
  effects[currentPanel].start();
 }
};

