/**
Script: Slideshow.KenBurns.js
	Slideshow.KenBurns - KenBurns extension for Slideshow, includes zooming and panning effects.

License:
	MIT-style license.

Copyright:
	Copyright (c) 2008 [Aeron Glemann](http://www.electricprism.com/aeron/).
*/

  Slideshow.KenBurns= new Class({Extends:Slideshow,
                        initialize:function(B,C,A){
                          A.overlap=true;
                          A.resize=true;
                          ["pan","zoom"].each(function(D){
                            if($chk(this[D])){
                              if($type(this[D])!="array"){this[D]=[this[D],this[D]]}
                              this[D].map(function(E){return(E.toInt()||0).limit(0,100)})
                            }
                          },A);
                          this.parent(B,C,A)
                         },
                        _show:function(B){
                          if(!this.image.retrieve("morph")){
                            ["a","b"].each(function(G){
                              this[G].set("tween",{
                                duration:this.options.duration,link:"cancel",
                                onStart:this._start.bind(this),
                                onComplete:this._complete.bind(this),
                                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 D=["top left","top right","bottom left","bottom right"][this.counter%4].split(" ");
                          D.each(function(G){this.image.setStyle(G,0)},this);
                          dh=this.height/this.preloader.height;
                          dw=this.width/this.preloader.width;
                          delta=(dw>dh)?dw:dh;
                          var A={};
                          var E=($random.run(this.options.zoom)/100)+1;
                          var F=Math.abs(($random.run(this.options.pan)/100)-1);
                          ["height","width"].each(function(J,G){
                            var I=Math.ceil(this.preloader[J]*delta);
                            var H=(I*E).toInt();
                            A[J]=[H,I];
                            if(dw>dh||G){
                              I=(this[J]-this.image[J]);
                              H=(I*F).toInt();
                              A[D[G]]=[H,I]
                            }
                          },this);
                          var C=(this.firstrun&&this.options.paused);
                          if(B||C){
                            this._center(this.image);
                            this.image.get("morph").cancel();
                            if(C){
                              this.image.get("tween").cancel().set(0).start(1)
                            }else{
                              this.image.get("tween").cancel().set(1)
                            }
                          }else{
                            this.image.get("morph").start(A);
                            this.image.get("tween").set(0).start(1)
                          }
                        }
                      });