IE compatibility
[mkgallery.git] / include / showwin.js
index 3fac7f6b7de60a29bccb29fa38516cc41447cf0e..dfd3714f8ec668a14cf74e7fa029c9ef236050af 100644 (file)
@@ -9,7 +9,7 @@
 */
 
 /*
-       Hidable "fullscreen" Window for Slideshow
+       Hideable "fullscreen" Window for Slideshow
 */
 
 var showWindow = new Class({
@@ -19,7 +19,7 @@ var showWindow = new Class({
                        zIndex: 2,
                        container: document.body,
                        tohide: '',
-                       onClick: $empty,
+                       onClick: $empty
                }
        },
 
@@ -32,7 +32,7 @@ var showWindow = new Class({
                this.container = new Element('div').addClass(name).
                setProperties({
                        id: name,
-                       name: name,
+                       name: name
                }).setStyles({
                        position: 'absolute',
                        left: '0px',
@@ -45,18 +45,18 @@ var showWindow = new Class({
                        this.options.onClick()
                }.bind(this)).injectInside(this.options.container);
 
-               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;
                }
@@ -66,19 +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.options.tohide.setStyle('display', 'none');
+                       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.setStyle('display', 'block');
+                       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);