4 This is a part of mkgallery.pl suite
5 http://www.average.org/mkgallery/
7 Uses mootools (1.2) http://www.mootools.net/
8 Inspired by slideshow http://www.phatfusion.net/slideshow/
14 - On show image: find this and next urls; put in place
15 those that are already here; free unneeded; initiate download of
16 the rest; if needed image is ready then initiate "transitioning", else
18 - On load complete: if this is the target image, initiate "transitioning".
19 - On "loading": show "loading" image
20 - On "transitioning": hide "loading" image; initiate FX animation to the
22 - On animation complete: blank previous image; if "playing" then schedule
23 autoswitch to next image in the future.
24 - On autoswitch to next image: if "playing" then switch to next image.
25 - On switch to next image: if next exists, show next image, else show
27 - On switch to prev image: if prev exists, show prev image, else show
28 "first image" message.
29 - On "play": make "playing"; switch to next image.
30 - On "stop": if "playing" cancel autoswitch; break "playing".
31 - On "start show": set up things; set "playing" state; show needed image.
32 - On "stop show": cancel any schedules, hide things.
33 - On resize: recalculate existing image size and position; determine
34 what image is needed; if it is not the one on display then request
35 "show image" for the new image.
38 var Show = new Class({
40 getOptions: function(){
42 cbStart: function(){ alert('show start undefined'); },
43 cbExit: function(){ alert('show exit undefined'); },
47 initialize: function(vimgs, container, controls, options){
48 this.setOptions(this.getOptions(), options);
50 this.container = $(container);
51 this.controls = controls;
52 this.controls.registershow(this);
54 window.addEvent('resize', this.resizer.bind(this))
57 /* event handler for window resize */
60 alert('show.resizer called');
63 /* prev, play, stop, next, exit, comm are methods for button presses */
66 this.controls.info(-1,this.vimgs.length,
67 '<ref>','prev called');
71 this.controls.info(0,this.vimgs.length,
72 '<ref>','stop called');
73 this.controls.running(0);
77 this.controls.info(999,this.vimgs.length,
78 '<ref>','play called');
79 this.controls.running(1);
83 this.controls.info(1,this.vimgs.length,
84 '<ref>','next called');
88 this.options.cbExit();
92 /* alert('show.comm called, do nothing'); */
95 /* Entry point: called to start doing things */
97 start: function(id, play){
98 this.options.cbStart();
99 alert('starting at '+id+', play='+play);
101 return false; /* to make it usable from href links */
104 /* "Private" methods to do the real job */
107 Show.implement(new Options);
108 Show.implement(new Events);