jQuery.fn.preview = function() {
  return this.bind("mouseenter", function() {
    var img = jQuery(this);
    var img_src = img.attr('src');
    var img_preview = img.attr('preview');
    var img_large = img.attr('large');
    
    var pi = jQuery('#preview img:last');
    var ps = jQuery('#preview img#sub');
    var ai = jQuery('#preview a.preview');

    if (pi.attr('src') != img_preview) {
      pi.queue(function() {
        ps.attr('src', img_src);
        pi.dequeue();
      });

      pi.fadeOut();
      pi.queue(function() {
        pi.attr('src', img_src);
        pi.dequeue();
      });
      pi.fadeIn(10);
      pi.queue(function() {
        pi.attr('src', img_preview);
        ai.attr('href', img_large);
        pi.dequeue();
      });
    }
  });
};