IE compatibility
[mkgallery.git] / include / showwin.js
index daec73a234cb46fab57ffcf3ae744df6acf11a5d..dfd3714f8ec668a14cf74e7fa029c9ef236050af 100644 (file)
@@ -9,17 +9,17 @@
 */
 
 /*
-       Hidable "fullscreen" Window for Slideshow
+       Hideable "fullscreen" Window for Slideshow
 */
 
 var showWindow = new Class({
 
        getOptions: function(){
                return {
-                       embed: [],
                        zIndex: 2,
                        container: document.body,
-                       onClick: $empty,
+                       tohide: '',
+                       onClick: $empty
                }
        },
 
@@ -27,11 +27,12 @@ var showWindow = new Class({
                this.setOptions(this.getOptions(), options);
 
                this.options.container = $(this.options.container);
+               this.options.tohide = $(this.options.tohide);
 
                this.container = new Element('div').addClass(name).
                setProperties({
                        id: name,
-                       name: name,
+                       name: name
                }).setStyles({
                        position: 'absolute',
                        left: '0px',
@@ -44,28 +45,18 @@ var showWindow = new Class({
                        this.options.onClick()
                }.bind(this)).injectInside(this.options.container);
 
-               this.embedded = [];
-               this.options.embed.each(function(el){
-                       var sub = new Element('div');
-                       sub.addClass(el).setProperties({
-                               id: el,
-                               name: el,
-                       }).injectInside(this.container);
-                       this.embedded.push(sub);
-               },this);
-
-               this.position();
-
                window.addEvent('resize', this.position.bind(this));
                window.addEvent('scroll', this.position.bind(this));
        },
 
        position: function(){
                if(this.options.container == document.body){
+                       this.w = window.getWidth();
                        this.h = window.getHeight();
                        this.s = window.getScrollTop();
                }else{
                        var myCoords = this.options.container.getCoordinates();
+                       this.w = myCoords.width;
                        this.h = myCoords.height;
                        this.s = myCoords.top;
                }
@@ -75,13 +66,47 @@ var showWindow = new Class({
                })
        },
 
+       getCoordinates: function(){
+               return {
+                       width: this.w,
+                       height: this.h,
+                       top: this.s
+               };
+       },
+
        show: function(){
+               if (this.options.tohide) {
+                       this.hiddenstyles = this.options.tohide.getStyles(
+                               'display'
+                       );
+                       this.options.tohide.setStyles({
+                               display: 'none'
+                       });
+               }
+               this.bodystyles = document.body.getStyles(
+                       'overflow', 'overflow-x', 'overflow-y'
+               );
+               document.body.setStyles({
+                       overflow: 'hidden',
+                       'overflow-x': 'hidden',
+                       'overflow-y': 'hidden'
+               });
+               this.position();
                this.container.setStyle('display', 'block');
        },
 
        hide: function(){
+               if (this.options.tohide) {
+                       this.options.tohide.setStyles(this.hiddenstyles);
+               }
+               document.body.setStyles(this.bodystyles);
                this.container.setStyle('display', 'none');
+       },
+
+       grab: function(obj){
+               return this.container.grab(obj);
        }
-})
+});
+
 showWindow.implement(new Options);