
var VPHPThumbGallery = Class.create(VGallery,
{
  phpthumbUrl: null,
  phpthumbAppendToThumb: null,

  lightboxWidth: null,
  lightboxHeight: null,

  cols: null,

  _data: [  ],

  initialize: function($super, gallery, data, options) {
    this.phpthumbUrl = options.phpthumbUrl || 'phpThumb/phpThumb.php?src=%src%&w=%w%&h=%h%';
    this.phpthumbAppendToThumb = options.phpthumbAppendToThumb || '';
    this.lightboxWidth = options.lightboxWidth || null;
    this.lightboxHeight = options.lightboxHeight || null;

    this.cols = options.cols || 2;

    initLightbox();

    $super(gallery, data, options);
  },

  sizeThumbs: function() {
    var thumbSize = (this.getThumbsContainerAvailableWidth() - (this.thumbsSpacing * this.cols)) / this.cols;
    this.options.thumbWidth = thumbSize;
    this.options.thumbHeight = thumbSize * 0.7;
    this.data = this.parseData(data);
  },

  parseData: function(data) {
    this._data = [];

    data.each(
      function(item) {
        var _item = {
          src: this.getUrl(item, this.options.thumbWidth, this.options.thumbHeight, this.phpthumbAppendToThumb),
          href: item
        };
        this._data.push(_item);
      }.bind(this)
    );

    return this._data;
  },

  createPreview: function($super, data) {
    var src = this.getCurrent().href;

    data.src = this.getUrl(src, this._previewContainerMetrics.width,
      this._previewContainerMetrics.height) + this.noCache();

    if (this.lightboxWidth && this.lightboxHeight) {
      data.href = src;
    }

    $super(data);

    if (this.lightboxWidth && this.lightboxHeight) {
      this._preview.link.href = this.getUrl(this._preview.href, this.lightboxWidth, this.lightboxHeight);
      this._preview.link.writeAttribute('rel', 'lightbox[group]');
      this._preview.image.writeAttribute('alt', 'Clique para ampliar');

      myLightbox.updateElementList();
    }
  },

  getUrl: function(src, w, h, append) {
    var url = this.phpthumbUrl;
    url = url.sub('%src%', src);
    url = url.sub('%w%', w);
    url = url.sub('%h%', h);
    if (append) {
      url = url + '' + append;
    }
    return url;
  }
});
