component['frgSlideShow'] = Class.create({

  THREAD_ID: null,
  EXEC_UID: null,
  arrParams:  null,

  initialize: function(arrInstVars, arrParams, arrLang)
  {
    this.THREAD_ID    = arrInstVars.THREAD_ID;
    this.EXEC_UID     = arrInstVars.EXEC_UID;
    
    $(document.body).insert({top: $F('slideShowCode')});
    
    $(this.EXEC_UID+'-close').observe('click', this._close);
    
    $(document).observe('slideShow:start', this._start.bind(this));

    $('previousImage').observe('click', this._previous.bind(this));
    $('nextImage').observe('click', this._next.bind(this));
  },
  
  _previous: function(evt)
  {
    if(this.isLock) return;
    this.isLock=true;
    new Effect.Opacity('pic', 
    { 
      duration: 0.6,  
      from: 1, 
      to: 0,
      afterFinish: function()
      {
        $('pic').replace('<img id="pic" src='+this.arrImages[--this.intActiveImgNum].getAttribute('_big')+' style="display:none;" />');
        $('pic').setStyle({opacity: 0}).show();
        (function(){
        new Effect.Opacity('pic', { duration: 0.6, from: 0, to: 1, afterFinish: function(){this._checkStatus();this.isLock = false;}.bind(this)});
        }.bind(this)).defer();        
      }.bind(this) 
    });  
    
  },
  
  _next: function(evt)
  {
    if(this.isLock) return;
    this.isLock=true;
    
    new Effect.Opacity('pic', 
    { 
      duration: 0.6,
      from: 1, 
      to: 0,
      afterFinish: function()
      {
        $('pic').replace('<img id="pic" src='+this.arrImages[++this.intActiveImgNum].getAttribute('_big')+' style="display:none;" />');
        $('pic').setStyle({opacity: 0}).show();
        (function(){
        new Effect.Opacity('pic', { duration: 0.6, from: 0, to: 1, afterFinish: function(){this._checkStatus();this.isLock = false;}.bind(this)});
        }.bind(this)).defer();
      }.bind(this) 
    });
  },
  
  _start: function(evt)
  {
    this.arrImages = evt.memo.arrImagesElements;
    this.intActiveImgNum = parseInt(evt.memo.intStartImgNum);
    
    $('pic').replace('<img id="pic" src='+this.arrImages[this.intActiveImgNum].getAttribute('_big')+' />');
    this._checkStatus();
    $$('[_name="slideShowCntr"]').invoke('show');
  },
  _close: function(evt)
  {
    $$('[_name="slideShowCntr"]').invoke('hide');
    evt.stop();
  },
  _checkStatus: function()
  {
    if(this.intActiveImgNum==0)
    {
        $('previousImage').hide();
    }    
    else
    {    
        $('previousImage').show();
    }    

    if(this.intActiveImgNum+1==this.arrImages.length)
    {
        $('nextImage').hide();
    }    
    else
    {    
        $('nextImage').show();
    }    
  }
});
arrJsLoaded['component.frgSlideShow.js']=true;init.jsLoaded("component.frgSlideShow.js");