]> www.average.org Git - mkgallery.git/blobdiff - include/show.js
remove creation of the rss/atom feeds - it does not work anyway
[mkgallery.git] / include / show.js
index 6f6b301e33a0a4fc783789bf504f903bfb2a6fec..2d5f5b168255cd2bd0cfe0de0b11a9065d76da3a 100644 (file)
@@ -43,7 +43,7 @@ var Show = new Class({
                        cbExit: function(){ alert('show exit undefined'); },
                        percentage: 98,
                        delay: 5000,
-                       fxduration: 200,
+                       fxduration: 200
                }
        },
 
@@ -58,15 +58,24 @@ var Show = new Class({
                this.cache = {
                        prev: {},
                        curr: {},
-                       next: {},
+                       next: {}
                };
+/*
+ *  thescripts.com/forum/thread170365.html
+ */
+               var hashpos = document.URL.search(/#/);
+               if (hashpos > 0) {
+                       this.baseurl = document.URL.slice(0,hashpos);
+               } else {
+                       this.baseurl = document.URL
+               }
+
                this.updatecoords();
                this.prevdisplay = new Element('img').
-                       setStyle('opacity', 0).
-                       injectInside(this.container.container);
-               this.ondisplay = new Element('img').
-                       setStyle('opacity', 0).
-                       injectInside(this.container.container);
+                       setStyle('opacity', 0);
+               this.container.grab(this.prevdisplay);
+               this.ondisplay = this.prevdisplay.clone();
+               this.container.grab(this.ondisplay);
                this.loadingdiv = new Element('div').
                addClass('loading').setStyles({
                        position: 'absolute',
@@ -75,8 +84,9 @@ var Show = new Class({
                        zIndex: 4,
                        display: 'none',
                        width: this.coords.width,
-                       height: this.coords.height,
-               }).injectInside(this.container.container);
+                       height: this.coords.height
+               });
+               this.container.grab(this.loadingdiv);
 
                window.addEvent('resize', this.resizer.bind(this))
        },
@@ -93,6 +103,8 @@ var Show = new Class({
        /* prev, play, stop, next, exit, comm are methods for button presses */
 
        prev: function(){
+               this.cleartimer();
+               this.stopfx();
                if (this.currentid > 0) {
                        this.show(this.currentid-1);
                } else {
@@ -101,9 +113,8 @@ var Show = new Class({
        },
 
        stop: function(){
-               if (this.isplaying) { $clear(this.timer); }
+               this.cleartimer()
                this.isplaying = false;
-               $clear(this.timer);
                this.controls.running(0);
        },
 
@@ -119,6 +130,8 @@ var Show = new Class({
        },
 
        next: function(){
+               this.cleartimer();
+               this.stopfx();
                if (this.currentid < this.vimgs.length-1) {
                        this.show(this.currentid+1);
                } else {
@@ -127,10 +140,11 @@ var Show = new Class({
        },
 
        exit: function(){
-               if (this.isplaying) { $clear(this.timer); }
+               this.cleartimer();
+               this.stopfx();
                this.prevdisplay.setStyle('display', 'none');
                this.ondisplay.setStyle('display', 'none');
-               this.stopfx();
+               document.location.href = this.baseurl;
                this.options.cbExit();
        },
 
@@ -157,7 +171,7 @@ var Show = new Class({
                var newcache = {
                        prev: (id > 0)?this.prepare(id-1):{},
                        curr: this.prepare(id),
-                       next: (id < (this.vimgs.length-1))?this.prepare(id+1):{},
+                       next: (id < (this.vimgs.length-1))?this.prepare(id+1):{}
                };
                delete this.cache;
                this.cache = newcache;
@@ -167,6 +181,7 @@ var Show = new Class({
                        this.pendingload = true;
                        this.showloading();
                }
+               document.location.href = this.baseurl+'#'+this.vimgs[id][0];
                this.controls.info(id,this.vimgs.length,
                                '#'+this.vimgs[id][0],
                                this.vimgs[id][1]);
@@ -196,7 +211,7 @@ var Show = new Class({
                                id: id,
                                vi: vi,
                                ready: false,
-                               url: this.vimgs[id][2][vi][2],
+                               url: this.vimgs[id][2][vi][2]
                        };
                        cachel.img = this.bgload(cachel);
                }
@@ -209,7 +224,7 @@ var Show = new Class({
                return new Asset.image(this.vimgs[cachel.id][2][cachel.vi][2],{
                        id: this.vimgs[cachel.id][0],
                        title: this.vimgs[cachel.id][1],
-                       onload: this.loadcomplete.bind(this,[cachel]),
+                       onload: this.loadcomplete.bind(this,[cachel])
                });
        },
 
@@ -226,24 +241,26 @@ var Show = new Class({
        },
 
        display: function(cachel){
-               var newstyle = this.calcsize(cachel);
-               var newimg = cachel.img.clone();
-               newimg.setStyles(newstyle);
-               newimg.setStyles({
+               var newimg = cachel.img.clone().
+               set('class', 'mainformat').
+               setProperty('alt', 'Current Image').
+               setStyles(this.calcsize(cachel)).
+               setStyles({
                        zIndex: 3,
-                       opacity: 0,
+                       opacity: 0
                });
-               this.prevdisplay.dispose();
-               this.prevdisplay = this.ondisplay.clone().
-               setStyle('zIndex', 2).injectInside(this.container.container);
-               newimg.replaces(this.ondisplay);
+               this.ondisplay.replaces(this.prevdisplay).
+               setProperty('alt', 'Previous Image').
+               setStyle('zIndex', 2);
+               this.prevdisplay = this.ondisplay;
                this.ondisplay = newimg;
+               this.container.grab(this.ondisplay);
                this.effect();
        },
 
        effect: function(){
                this.fx = new Fx.Tween(this.ondisplay, {
-                       duration: this.options.fxduration,
+                       duration: this.options.fxduration
                });
                this.fx.addEvent('complete',this.displaycomplete.bind(this));
                this.fx.start('opacity', 0, 1);
@@ -267,6 +284,15 @@ var Show = new Class({
        },
 
        calcsize: function(cachel){
+               if (! cachel.url) {
+                       return {
+                               position: 'absolute',
+                               top: 0+'px',
+                               left: 0+'px',
+                               width: this.coords.width,
+                               height: this.coords.height
+                       };
+               }
                var factor = 1;
                var candidate;
                candidate = this.target.width /
@@ -287,18 +313,26 @@ var Show = new Class({
                        top: t+'px',
                        left: l+'px',
                        width: w,
-                       height: h,
+                       height: h
                };
        },
 
        showloading: function(){
-               this.loadingdiv.setStyle('display', 'block');
+               this.loadingdiv.setStyles({
+                       display: 'block',
+                       width: this.coords.width,
+                       height: this.coords.height
+               });
        },
 
        hideloading: function(){
                this.loadingdiv.setStyle('display', 'none');
        },
 
+       cleartimer: function(){
+               if (this.isplaying) { $clear(this.timer); }
+       },
+
        stopfx: function(){
                if (this.fx) this.fx.cancel();
        },
@@ -309,13 +343,14 @@ var Show = new Class({
                        width: Math.round(this.coords.width *
                                                this.options.percentage / 100),
                        height: Math.round(this.coords.height *
-                                               this.options.percentage / 100),
+                                               this.options.percentage / 100)
                };
                /* alert('coords: '+this.coords.width+'x'+this.coords.height+
                     ', target: '+this.target.width+'x'+this.target.height); */
-       },
+       }
 
 });
+
 Show.implement(new Options);
 Show.implement(new Events);