www
[scribo] / www / themes / fullscreen / galleria.fullscreen.js
diff --git a/www/themes/fullscreen/galleria.fullscreen.js b/www/themes/fullscreen/galleria.fullscreen.js
new file mode 100644 (file)
index 0000000..a4deb5b
--- /dev/null
@@ -0,0 +1,149 @@
+/*!
+ * Galleria Fullscreen Theme
+ * http://galleria.aino.se
+ *
+ * Copyright (c) 2010, Aino
+ * Licensed under the MIT license.
+ */
+
+(function($) {
+
+Galleria.addTheme({
+    name: 'fullscreen',
+    author: 'Galleria',
+    version: '2.0',
+    css: 'galleria.fullscreen.css',
+    defaults: {
+        transition: 'none',
+        image_crop: true,
+        thumb_crop: 'height'
+    },
+    init: function(options) {
+        
+        this.addElement('thumbnails-tab');
+        this.appendChild('thumbnails-container','thumbnails-tab');
+        
+        var tab = this.$('thumbnails-tab');
+        var loader = this.$('loader');
+        var thumbs = this.$('thumbnails-container');
+        var list = this.$('thumbnails-list');
+        var infotext = this.$('info-text');
+        var info = this.$('info');
+        
+        var OPEN = false;
+        var POS = 0;
+
+        if (Galleria.IE) {
+            this.addElement('iefix');
+            this.appendChild('container','iefix');
+            this.setStyle(this.get('iefix'), {
+                zIndex:3,
+                position:'absolute',
+                backgroundColor: '#000',
+                opacity:.4
+            })
+        }
+        
+        if (options.thumbnails === false) {
+            thumbs.hide();
+        }
+        
+        var fixCaption = this.proxy(function(img) {
+            if (!(img || img.width)) {
+                return;
+            }
+            var w = Math.min(img.width, $(window).width());
+            infotext.width(w-40);
+            if (Galleria.IE && this.options.show_caption) {
+                this.$('iefix').width(info.outerWidth()).height(info.outerHeight());
+            }
+        });
+        
+        this.bind(Galleria.RESCALE, function() {
+            POS = this.stageHeight - tab.height()-2;
+            thumbs.css('top', OPEN ? POS - list.outerHeight() + 2 : POS);
+            var img = this.getActiveImage();
+            if (img) {
+                fixCaption(img);
+            }
+        });
+        
+        this.bind(Galleria.LOADSTART, function(e) {
+            if (!e.cached) {
+                loader.show().fadeTo(100, 1);
+            }
+            $(e.thumbTarget).css('opacity',1).parent().siblings('.active').children().css('opacity',.5);
+        });
+
+        this.bind(Galleria.LOADFINISH, function(e) {
+            loader.fadeOut(300);
+            this.$('info,iefix').toggle(this.hasInfo());
+        });
+        
+        this.bind(Galleria.IMAGE, function(e) {
+            fixCaption(e.imageTarget);
+        });
+        
+        this.bind(Galleria.THUMBNAIL, function(e) {
+            $(e.thumbTarget).click(function() {
+                if (OPEN) {
+                    tab.click();
+                }
+            });
+        });
+        
+        this.trigger(Galleria.RESCALE);
+        
+        this.addIdleState(thumbs, { opacity:0 });
+        this.addIdleState(this.get('info'), { opacity:0 });
+        
+        if (Galleria.IE) {
+            this.addIdleState(this.get('iefix'), { opacity:0 });
+        }
+        
+        this.attachKeyboard({
+            up: function(e) {
+                if (!OPEN) {
+                    tab.click();
+                }
+                e.preventDefault();
+            },
+            down: function(e) {
+                if (OPEN) {
+                    tab.click();
+                }
+                e.preventDefault();
+            }
+        });
+        
+        this.$('image-nav-left, image-nav-right').css('opacity',0.01).hover(function() {
+            $(this).animate({opacity:1},100);
+        }, function() {
+            $(this).animate({opacity:0});
+        }).show();
+        
+        tab.click(this.proxy(function() {
+            tab.toggleClass('open', !OPEN);
+            if (!OPEN) {
+                thumbs.animate({
+                    top: POS - list.outerHeight() + 2
+                },400,'galleria');
+            } else {
+                thumbs.animate({
+                    top: POS
+                },400,'galleria');
+            }
+            OPEN = !OPEN;
+        }));
+        
+        this.$('thumbnails').children().hover(function() {
+            $(this).not('.active').children().css('opacity', 1);
+        }, function() {
+            $(this).not('.active').children().fadeTo(200, .5);
+        }).children().css('opacity',.5)
+        
+        this.enterFullscreen();
+    }
+});
+
+})(jQuery);
\ No newline at end of file