Slideshow.KenBurns=new Class({Extends: Slideshow,
options:{pan: [100, 100],
zoom: [50, 50]
},
initialize: function(el, data, options){options.overlap=true;
options.resize=true;
['pan', 'zoom'].each(function(p){if ($chk(this[p])){if ($type(this[p]) !='array') this[p]=[this[p], this[p]];
this[p].map(function(n){return (n.toInt() || 0).limit(0, 100);});}}, options);
this.parent(el, data, options);},
_show: function(fast){if (!this.image.retrieve('morph')){['a', 'b'].each(function(image){this[image].set('tween',{'duration': this.options.duration, 'link':'cancel', 'property':'opacity'}
).get('morph',{'duration': (this.options.delay+this.options.duration * 2), 'link':'cancel', 'transition': $arguments(0)}
);}, this);}
this.image.set('styles',{'bottom':'auto', 'left':'auto', 'right':'auto', 'top':'auto'});
var props=['top left', 'top right', 'bottom left', 'bottom right'][this.counter % 4].split(' ');
props.each(function(prop){this.image.setStyle(prop, 0);}, this);
dh=this.height / this.preloader.height;
dw=this.width / this.preloader.width;
delta=(dw > dh) ? dw : dh;
var values={};
var zoom=($random.run(this.options.zoom) / 100.0)+1;
var pan=Math.abs(($random.run(this.options.pan) / 100.0) - 1);
['height', 'width'].each(function(prop, i){var e=Math.ceil(this.preloader[prop] * delta);
var s=(e * zoom).toInt();
values[prop]=[s, e];
if (dw > dh || i){e=(this[prop] - this.image[prop]);
s=(e * pan).toInt();
values[props[i]]=[s, e];}}, this);
if (fast){this._center(this.image);
this.image.get('morph').cancel();
this.image.get('tween').cancel().set(1);}
else{this.image.get('morph').start(values);
this.image.get('tween').set(0).start(1);}}});
