/*******************************************************************************
 * Copyright (c) 2008 Wotif.com Holdings Ltd. All Rights Reserved.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 ******************************************************************************/

var Thumbnail = new Class ({
  initialize: function(gallery,width,height,errorimg) {
    this.gallery = gallery;
    this.width = width;
    this.height = height;
    this.errorimg = errorimg;
    
    $ES('img',gallery).each((function(img) {     
      if (img.complete) {
        if (img.getSize()['size']['y'] == 0) {
          img.src = this.errorimg;      
        } else {
          this.resize(img);
        }
        return;
      }
      
      img.addEvent('error', (function(img) {
        img.removeEvent('load');
        img.src = this.errorimg;
      }).pass([img],this));
      
      img.addEvent('abort', (function(img) {
        //img.src = base + '/img/noimgavail.gif';
        //img.removeEvent('load');
      }).pass([img],this));
      
      img.addEvent('load', (function(img) {
        this.resize(img);
      }).pass([img],this));
    }).bind(this));
  },
  
  resize: function(img) {
    origwidth = img.getSize()['size']['x'];
    origheight = img.getSize()['size']['y'];
    
    if (origheight < origwidth) {
      (new Fx.Style(img, 'height', {duration:500})).set(this.height);
      newwidth = img.getSize()['size']['x'];
      marginleft = (newwidth-this.width) / 2; 
      img.setStyle('margin-left', -marginleft);
    } else {
      (new Fx.Style(img, 'width', {duration:500})).set(this.width);
      newheight = img.getSize()['size']['y'];
      margintop = (newheight-this.height) / 2; 
      img.setStyle('margin-top', -margintop);
    }
  }
})