  function updateProgress(percent)
  {
    $("#photos3d_progress_bar").css("width", Math.round(percent)*4);
    $("#photos3d_progress_bar").text(Math.round(percent) + "%");
  }
  
  function preloadingFinished()
  {
    $("#photos3d_progress_div").fadeOut();
    $("#photos3d_img").attr("src", myPreloader.imgFiles[0].src);
    $("#photos3d_img").fadeIn(function()
    {
      var initW = parseInt($("#nyroModalWrapper").css("width"));
      var initH = parseInt($("#nyroModalWrapper").css("height"));
      var imgW  = parseInt($("#photos3d_img").width());
      var imgH  = parseInt($("#photos3d_img").height());
      var mTop  = parseInt($("#nyroModalWrapper").css("margin-top"));
      var mLeft = parseInt($("#nyroModalWrapper").css("margin-left"));
      
      // marginesy zmniejszane o polowe roznicy pomiedzy szerokoscia okna a szerokoscia obrazu
      $("#nyroModalWrapper").css("margin-top",  (mTop  - (Math.abs(initH - imgH)/2)));
      $("#nyroModalWrapper").css("margin-left", (mLeft - (Math.abs(initW - imgW)/2)));
     
      $("#nyroModalWrapper").css("width",  imgW + 20 + "px");
      $("#nyroModalWrapper").css("height", imgH + 10 + "px");
      $("#nyroModalContent").css("width",  imgW + 10 + "px");
      $("#nyroModalContent").css("height", imgH + 10 + "px");
      
//      $("#photos3d_descr").css("width", imgW + "px");
      $("#photos3d_descr").show();
    });
  }
  
  function Preloader(fileNames, fileLoaded, loadingFinished)
  {
    this.Refresh = fileLoaded;
    this.Finish  = loadingFinished;
    
    // inicjalizacja zmiennych
    this.overall  = fileNames.length;
    this.loaded   = 0;
    this.imgFiles = new Array;
    
    // ladowanie plikow`
    for(var a = 0, m = fileNames.length; a < m; a++)
    {
      this.Preload(fileNames[a]);
    }
  }
  
  Preloader.prototype.Preload = function(fileName)
  {
    var myImage = new Image();
    myImage.onload  = Preloader.prototype.anotherLoaded;
    myImage.onerror = Preloader.prototype.gotError;
    myImage.onabort = Preloader.prototype.gotCancelled;
    myImage.preload = this; // wskazanie obiektowi klasy Image obiektu klasy Preloader
    myImage.src = fileName;
    this.imgFiles.push(myImage);    
  }

  Preloader.prototype.anotherLoaded = function()
  {    
    // "this" wskazuje na obiekt klasy Image, stad utworzenie ".preload"
    this.preload.Refresh((++this.preload.loaded/this.preload.overall)*100);
    if(this.preload.loaded == this.preload.overall)
      this.preload.Finish();
  }

  
  Preloader.prototype.gotCancelled = function()
  {
    alert("aborted");
  }
  
  Preloader.prototype.gotError = function()
  {
    alert("error: " + myPreloader.imgFiles[myPreloader.loaded].src);
  }

  $().ready(function()
  {
    initialX  = 0;
    actualX   = 0;
    actualKey = false;
    actualImg = 0;

    $("#photos3d_show").click(function()
    {
      $.nyroModalManual(
      { 
        url: '#photos3d_div', 
        bgColor: '#00305A', 
        title: windowtitle,
        endRemove: function()
        {
/**/
        }
      });
      return false;
    });

    $("#photos3d_img").mousedown(function()
    {
      actualKey = true;
      initialX = actualX;
      return false;
    });

    $("#photos3d_img").mouseup(function()
    {
      actualKey = false;
      return false;
    });

    $("#photos3d_img").mouseout(function()
    {
      actualKey = false;
      return false;
    });
    
    
    $("#photos3d_img").mousemove(function(e)
    {
      actualX = e.clientX;

      if(actualKey)
      {
        if(actualX > (initialX + 20))
        {
          // przesuniecie w prawo
          if(actualImg == myPreloader.imgFiles.length - 1)
            actualImg = 0;
          else
            actualImg++;
          $("#photos3d_img").attr("src", myPreloader.imgFiles[actualImg].src);          
          initialX = actualX;
        }
        if(actualX < (initialX - 20))
        {                
          // przesuniecie w lewo
          if(actualImg == 0)
            actualImg = myPreloader.imgFiles.length - 1;
          else
            actualImg--;
          $("#photos3d_img").attr("src", myPreloader.imgFiles[actualImg].src);
          initialX = actualX;
        }
      } 
    });        

    myPreloader = new Preloader(imgs, updateProgress, preloadingFinished);
  });

