0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
3.2.0-5
/
standard
/
htdocs
/
lib
/
slideshow
/
js
/
[
Home
]
File: slideshow.kenburns.js
/** 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/). Dependencies: Slideshow. */ Slideshow.KenBurns = new Class({ Extends: Slideshow, options: { pan: [100, 100], zoom: [50, 50] }, /** Constructor: initialize Creates an instance of the Slideshow class. Arguments: element - (element) The wrapper element. data - (array or object) The images and optional thumbnails, captions and links for the show. options - (object) The options below. Syntax: var myShow = new Slideshow.KenBurns(element, data, options); */ 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); }, /** Private method: show Does the slideshow effect. */ _show: function(fast){ if (!this.image.retrieve('morph')){ ['a', 'b'].each(function(image){ this[image].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 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); var paused = (this.firstrun && this.options.paused); if (fast || paused){ this._center(this.image); this.image.get('morph').cancel(); if (paused) this.image.get('tween').cancel().set(0).start(1); else this.image.get('tween').cancel().set(1); } else{ this.image.get('morph').start(values); this.image.get('tween').set(0).start(1); } } });