// Extensions to the Element class from prototype.js
Object.extend(Element, {
  removeDimensions: function(element){
    element = $(element);
    element.style.width = '';
    element.style.height = '';
  },
  removeOnclick: function(element){
      element = $(element);
      element.onclick = function(){}
  },
  setCursor: function(element, cursor){
    element = $(element);
    element.style.cursor = cursor;
  },
  setTop: function(element,t) {
      element = $(element);
      element.style.top = t +"px";
  },
  setLeft: function(element,l) {
      element = $(element);
      element.style.left = l +"px";
  }
});

/* DÃ©claration de l'objet viewer */
var FotoramaViewer  = Class.create();
FotoramaViewer.prototype  = {
  /* Privte var */
  Version : '0.5.20071214',

  thumbLeft : 'viewer_thumb_left',
  CenterLeft  : 'viewer_thumb_center_left',
  thumbCenter : 'viewer_thumb_center',
  thumbRight  : 'viewer_thumb_right',
  CenterRight : 'viewer_thumb_center_right',

  thumbLeftPos  : '0',
  CenterLeftPos : '0',
  thumbCenterPos  : '0',
  thumbRightPos : '0',
  CenterRightPos  : '0',

  /* Public var */
  _liste_photos : new Array(),
  _img_dir : 'minis',
  _indice : '0',
  _container : '',

  /* init */
  initialize  : function ( parametres ) {

    thumbLeftPos = Position.positionedOffset(thumbLeft);
    CenterLeftPos = Position.positionedOffset(CenterLeft);
    thumbCenterPos  = Position.positionedOffset(thumbCenter);
    thumbRightPos = Position.positionedOffset(thumbRight);
    CenterRightPos  = Position.positionedOffset(CenterRight);

    /* arguments */
    this._liste_photos = parametres["liste_imgs"];
    this._indice = 0;
    this._img_dir =  parametres["img_dir"];
    this._container = $('diapo_viewer');

    this.setCenterImage();
  },

  setCenterImage : function ()
  {
    this.dropOldViewer();
    //creation de la div right
    var rightContainer = document.createElement("div");
    rightContainer.setAttribute('id','viewer_thumb_right');

    var rightImg = document.createElement("img");
    rightImg.src = this._img_dir + this._liste_photos[ 2 ];

    rightContainer.appendChild(rightImg);
    rightContainer.setAttribute('onclick','javascript:viewer.next();');
    this._container.appendChild(rightContainer);

     //creation de la div center_right
    var centerRightContainer = document.createElement("div");
    centerRightContainer.setAttribute('id','viewer_thumb_center_right');

    var centerRightImg = document.createElement("img");
    centerRightImg.src = this._img_dir + this._liste_photos[ 1 ];

    centerRightContainer.appendChild(centerRightImg);
    centerRightContainer.setAttribute('onclick','javascript:viewer.next();');
    this._container.appendChild(centerRightContainer);

     //creation de la div center
    var centerContainer = document.createElement("div");
    centerContainer.setAttribute('id','viewer_thumb_center');

    var centerImg = document.createElement("img");
    centerImg.src = this._img_dir + this._liste_photos[ 0 ];

    centerContainer.appendChild(centerImg);
    this._container.appendChild(centerContainer);
  },

  dropOldViewer : function ()
  {
    if( $('viewer_thumb_left') ) this._container.removeChild( $("viewer_thumb_left") );
    if( $('viewer_thumb_center_left') ) this._container.removeChild( $("viewer_thumb_center_left") );
    if( $('viewer_thumb_center_right') ) this._container.removeChild( $("viewer_thumb_center_right") );
    if( $('viewer_thumb_right') ) this._container.removeChild( $("viewer_thumb_right") );
    if( $('viewer_thumb_center') ) this._container.removeChild( $("viewer_thumb_center") );
  },

  next : function () {
    //si l'indice est au moins de 2 alors il ya un left
    if( this._indice > 1 )
    {
      //new Effect.Fade("viewer_thumb_left",{duration:0.2 });
      //$("viewer_thumb_left").removeChild( $("img_thumb_left") );
      this._container.removeChild( $("viewer_thumb_left") );
    }

    //si l'indice est au moins de 1 alors il ya un center_left
    if( this._indice > 0 )
    {
      $('viewer_thumb_center_left').setAttribute('id','viewer_thumb_left');
    }

    $('viewer_thumb_center').setAttribute('onclick','javascript:viewer.previous();');
    $('viewer_thumb_center').setAttribute('id','viewer_thumb_center_left');
    $('viewer_thumb_center_right').setAttribute('onclick', 'javascript:void(0);');
    $('viewer_thumb_center_right').setAttribute('id','viewer_thumb_center');


    if( this._indice + 2 < this._liste_photos.size() )
    {
      $('viewer_thumb_right').setAttribute('id','viewer_thumb_center_right');
    }

    if( this._indice + 3 < this._liste_photos.size() )
    {
      //creation de la nouvelle div right
      var rightContainer = document.createElement("div");
      rightContainer.setAttribute('id','viewer_thumb_right');
      rightContainer.setAttribute('onclick','javascript:viewer.next();');

      //creation de la nouvelle image right
      var nextImg = document.createElement("img");
      nextImg.src = this._img_dir + this._liste_photos[this._indice +3];

      rightContainer.appendChild(nextImg);

      this._container.appendChild(rightContainer);

      //pre-chargement de l'image Ã  venir
      imgPreloader = new Image();
      imgPreloader.setAttribute('src', this._img_dir + this._liste_photos[this._indice +4] );
    }
    this._indice = this._indice + 1;
    //alert(this._indice);
  },

  previous : function () {
    if( this._indice + 2 < this._liste_photos.size() )
    {
      this._container.removeChild( $("viewer_thumb_right") );
    }

    if( this._indice + 1 < this._liste_photos.size() )
    {
      $('viewer_thumb_center_right').setAttribute('id','viewer_thumb_right');
    }

    $('viewer_thumb_center').setAttribute('onclick','javascript:viewer.next();');
    $('viewer_thumb_center').setAttribute('id','viewer_thumb_center_right');
    $('viewer_thumb_center_left').removeAttribute('onclick');
    $('viewer_thumb_center_left').setAttribute('id','viewer_thumb_center');


    if( this._indice  > 1 )
    {
      $('viewer_thumb_left').setAttribute('id','viewer_thumb_center_left');
    }

    if( this._indice > 2 )
    {
      //creation de la nouvelle div right
      var leftContainer = document.createElement("div");
      leftContainer.setAttribute('id','viewer_thumb_left');
      leftContainer.setAttribute('onclick','javascript:viewer.previous();');

      //creation de la nouvelle image right
      var prevImg = document.createElement("img");
      prevImg.src = this._img_dir + this._liste_photos[this._indice -3];

      leftContainer.appendChild(prevImg);

      this._container.appendChild(leftContainer);

      //pre-chargement de l'image Ã  venir
      imgPreloader = new Image();
      imgPreloader.setAttribute('src', this._img_dir + this._liste_photos[this._indice -4] );
    }
    this._indice = this._indice - 1;
    //alert(this._indice);
  }
}

/* DÃ©claration de l'objet Fotorama */
Fotorama  = Class.create();
Fotorama.prototype  = {
  /* Privte var */
  Version         : '0.5.20071214',
  ActualShow      : '',  //version de l'affichage utilisÃ©e actuellement
  ActualAlbum     : 0,  //album affichÃ© actuellement
  MsgAlbumList    : 'Récupération de la liste des albums en cours.',
  MsgAlbumDetail  : 'Récupération des photos de l\'album en cours.',

  /* Public var */
  _liste_photos   : new Array(),
  _liste_albums   : new Array(),
  _mini_dir       : 'petit_format',
  _imgs_dir       : '',
  _ajax_method    : 'POST',
  _nb_mozaic_cols : 2,
  _nb_grid_cols   : 5,

  /* init */
  initialize : function ( parametres )
  {
    /* arguments */
    if ( typeof(parametres["ajax_method"]) != 'undefined' )
      this._ajax_method =  parametres["ajax_method"];
    if ( typeof(parametres["nb_mozaic_cols"]) != 'undefined' )
      this._nb_mozaic_cols =  parametres["nb_mozaic_cols"];
    if ( typeof(parametres["nb_grid_cols"]) != 'undefined' )
      this._nb_grid_cols =  parametres["nb_grid_cols"];
    if ( typeof(parametres["album"]) != 'undefined' )
      this.ActualAlbum =  parametres["album"];

    this.getAlbumsList();
  },

  getAlbumsList : function ()
  {
    this.ask_server('./ajax/_getAlbumsList.php', 'gestionListAlbums', this.MsgAlbumList);
  },

  gestionListAlbums : function (xhr)
  {
    albums = eval(xhr.responseText);
    var str = '<select id="i_choix_album" onchange="javascript:fotorama.getAlbumDetail(this.value);"><option></option>\n';
    albums.each
    (
      function (album)
      {
          _self._liste_albums[album.id] = album ;
          str += '<option value="' + album.id+ '">' + album.titre + ' (' + album.nbphotos + ' photos)</option>\n';
      }
    );
    str += '</select>';
    $('header_bot_album').update(str);
    this.ActualShow = 'select_album';
    new Effect.Fade('fotorama_loading', {duration:0.1, afterFinish: this.selectAlbum() });
  },

  selectAlbum : function ()
  {
    if( this.ActualAlbum != 0 ) this.getAlbumDetail( this.ActualAlbum );
    else Element.show('select_album');
  },

  getAlbumDetail : function ( album )
  {
    this.ActualAlbum = album;
    this.ask_server('./ajax/_getAlbumsList.php', 'gestionDetailsAlbums', this.MsgAlbumDetail);
  },

  gestionDetailsAlbums : function (xhr)
  {
    photos = eval(xhr.responseText);
    var listeMinis = '';
    var liste_imgs = new Array();
    var table_grid = '<table><tr>';
    var table_mini = '<table><tr>';
    var indice = 0;
    photos.each
    (
      function (image)
      {
        //creation de la table de grid
        table_grid += '<td><a href="' + image.chemin_imgs + image.fichier + '" rel="lightbox[fotorama]"><img src="' + image.chemin_mini + image.fichier + '"/></a></td>';
        if( (indice+1) % _self._nb_grid_cols == 0)table_grid += '</tr></td>';

        //creation de la liste de mozaic
        table_mini += '<td><a href="javascript:fotorama.mosa_shows( \'' + image.fichier + '\', \'' + image.chemin_imgs + '\' );"><img src="' + image.chemin_mini + image.fichier + '"/></a></td>\n';
        if( (indice+1) % _self._nb_mozaic_cols == 0)table_mini += '</tr></td>';

        //creation de la liste de viewer
        _self._liste_photos[image.id] = image;
        liste_imgs[indice] = image.fichier;
        indice = indice +1;
      }
    );

    table_grid += '</tr></table>';
    table_mini += '</tr></table>';

    this._imgs_dir = photos[0].chemin_imgs;
    this._mini_dir = photos[0].chemin_mini;
	alert(table_grid);
    //mise en place du grid
    $('diapo_grid').update(table_grid);
   // initLightbox();
   
   
	alert(table_mini);
    //mise en place de mozaic
    $('mosa_minis').update(table_mini);
	$('diapo_grid').setAttribute("style", "");
    $('select_album').show();
    $('fotorama_loading').show();
    
    
    //dÃ©claration de l'objet viewer
    viewer  = new FotoramaViewer
    ({
    liste_imgs : liste_imgs,
    img_dir : this._imgs_dir
    });

    $('album_title').update( _self._liste_albums[this.ActualAlbum].titre);
    this.ActualShow = 'nouvel_album';
    $('lienComAlbum').setAttribute('href','http://www.atlza.com/index.php?sec=' + this.ActualAlbum);
    $('lienComAlbum').show();
    new Effect.Fade('fotorama_loading', {duration:0.1, afterFinish: this.show_diapo( 'diapo_grid' ) });
  },

  show_diapo : function ( toOpen )
  {
    if( this.ActualShow != toOpen &&  this.ActualShow != 'select_album'  && this.ActualShow != 'fotorama_loading')
    {
      this.ActualShow = toOpen;
      this.hideAll();
      Effect.SlideDown(toOpen, {duration:0.5});
    }
  },

  mosa_shows : function ( image, dossier )
  {
    new Effect.Fade('mosa_show',{duration:0.5, afterFinish: function(){ mosa_hide(); } });
    function mosa_hide()
    {
      $('mosa_show_img').src = './imgs/8-1.gif';
      new Effect.Appear('mosa_show',{duration:1});

      imgPreloader = new Image();
      imgPreloader.onload=function()
      {
        $('mosa_show_img').src = dossier + image;
        imgPreloader.onload=function(){};
      }
      imgPreloader.src = dossier + image;
    }
  },

  ask_server : function (url, CallBackFunction, message )
  {
    _self = this;
    var _dede = this;
    var myAjax = new Ajax.Request
    (
      url,
      {
        method: this._ajax_method,
        onLoading: function (xhr)
        {
          _self.hideAll();
          $('loading_explain').update( message );
          $('fotorama_loading').show();
          this.ActualShow = 'fotorama_loading';
        },

        //onSuccess: function(transport)
        //{
          //alert('_self.'+CallBackFunction+'(transport)');
          //eval('_self.'+CallBackFunction+'(transport)');
          //eval('this.'+CallBackFunction+'(transport)');
        //},

        onComplete:function(transport)
        {
          eval('_self.'+CallBackFunction+'(transport)');
        },

        parameters:
        {
          album_id: this.ActualAlbum
        }
      }
    );
  },

  hideAll : function ()
  {
    $('diapo_mosa').hide();
    $('diapo_viewer').hide();
    $('diapo_grid').hide();
    $('select_album').hide();
    $('fotorama_loading').hide();
  }
}
