function Gallery(pic, imgs, dir, panel){
  var fade_level=0;
  var fade_timer, slideshow_timer;
  var hidden_img=2;
  var image_index=2;
  var images=imgs;
  var main_dir=dir;
   
  this.slideShowStart = function(){
      if(!slideshow_timer)
          slideshow_timer=window.setInterval(this.changeImage, 4000);
  }
    
  this.slideShowStop = function(){
      window.clearInterval(slideshow_timer);
      slideshow_timer=null;
  }
    
  this.changeImage = function (){
      if(!fade_timer)
            fade_timer=window.setInterval(fade, 150);
  }
  
  this.goImageAtIndex = function(image){
      image_index=image;
      document.getElementById(pic+hidden_img).src=main_dir+images[image_index];
      //alert(document.getElementById(pic+hidden_img).src);
      if(!fade_timer)
          fade_timer=window.setInterval(fade, 150);
  }
        
  function fade(){
      if(hidden_img == 2){
          document.getElementById(pic+'1').style.opacity=1-fade_level;
          document.getElementById(pic+'1').style.filter="alpha(opacity="+(100-fade_level*100)+")";
      }else{
          document.getElementById(pic+'2').style.opacity=1-fade_level;
          document.getElementById(pic+'2').style.filter="alpha(opacity="+(100-fade_level*100)+")";
      }
      document.getElementById(pic+hidden_img).style.opacity=fade_level;
      document.getElementById(pic+hidden_img).style.filter="alpha(opacity="+(fade_level*100)+")";
      fade_level=fade_level+0.1;
      if(fade_level>1){
          fade_level=0;
          window.clearInterval(fade_timer);
          fade_timer=null;
          if(hidden_img == 2) hidden_img=1; else hidden_img=2;
          image_index++;
          if(image_index>=images.length) image_index=0; 
          //if(fade_level==0) alert(main_dir+images[image_index]);
          document.getElementById(pic+hidden_img).src=main_dir+images[image_index];
          document.getElementById(pic+hidden_img).style.opacity=0;
          document.getElementById(pic+hidden_img).style.filter="alpha(opacity=0)";
      }
  }
  
  var _isMouseOverLeft=false;
  var _isMouseOverRight=false;
  var panel_width = 750;      // sirka scroll panelu
  var move_step = 20;         // dlzka kroku pri posune v px
  var delay = 100;            // rychlost posunu v ms
  
  this.showCatalogScrollbars = function (){
    if(document.getElementById(panel) != null){
      if(document.getElementById(panel).scrollWidth > document.getElementById(panel).offsetWidth){ 
        window.setInterval(scrollPanel, delay);
      }
    }
  }
  
  this.onScrollRight = function (){
    if(document.getElementById(panel) != null){
      document.getElementById(panel).scrollLeft += move_step;
    }
  }

  this.onScrollLeft = function (){
    if(document.getElementById(panel) != null){
      document.getElementById(panel).scrollLeft -= move_step;
    }
  }

  function scrollPanel (){
    if(document.getElementById(panel) != null){
      if(_isMouseOverRight){
        document.getElementById(panel).scrollLeft += move_step;
      }
      if(_isMouseOverLeft){
        document.getElementById(panel).scrollLeft -= move_step;
      }
    }
  }

  this.onAutoScrollRight = function (){
    _isMouseOverRight=true;
  }

  this.onAutoScrollLeft = function (){
    _isMouseOverLeft=true;
  }

  this.onAutoScrollFinish = function (){
    _isMouseOverLeft=false;
    _isMouseOverRight=false;
  }
}
