/*********************************************************
 * Page layer function
 * Copyright © 2008 by Janek Bevendorff
 * 
 * This Code is free to use but it would be nice if
 * you leave this comment in your projects.
 * For more Tutorials visit <http://www.openwebboard.org>
 * http://www.openwebboard.org/Tutorials/JavaScript/Seite_abblenden_1.html?1235363964
 **********************************************************/

var pageLayer = {
    layerElement    : null,
    maxLayerOpacity : 0.5,
    
    addRemoveLayer : function() {
        if (this.layerElement == null) {
            // create layer element
            this.layerElement = document.createElement('div');
            
            // attach event
            this.layerElement.onmousedown = function() {
//                pageLayer.fadeLayer(-0.1, pageLayer.maxLayerOpacity);
            }
            
            // set styles of layer element
            this.layerElement.style.position        = 'absolute';
            this.layerElement.style.top             = '0px';
            this.layerElement.style.left            = '0px';
            this.layerElement.style.width           = '100%';
            this.layerElement.style.height          = document.documentElement.scrollHeight + 'px';
            this.layerElement.style.minHeight       = '100%';    // for IE
            this.layerElement.style.backgroundColor = '#000';
            document.documentElement.style.overflow = 'hidden';
            
            // add layer to body
            document.getElementsByTagName('body')[0].appendChild(this.layerElement);
        } else {
            // remove layer and make document scrollable
            document.getElementsByTagName('body')[0].removeChild(this.layerElement);
            document.documentElement.style.overflow = 'visible';
            this.layerElement = null;
        }
    },
    
    fadeLayer : function(addend) {
        var opacity;
        
        // if not called by timeout
        if (arguments[1] == null) {
            // add layer
            this.addRemoveLayer();
            
            if (addend > 0) {
                opacity = 0;
            } else if (addend < 0) {
                opacity = this.maxLayerOpacity;
            } else {
                return;
            }
        } else {
            opacity = arguments[1];
        }
        
        opacity += addend;
        
        // prevent rounding errors
        opacity = Math.round(opacity * 10) / 10;
        
        // if maximum or minimum is exceeded
        if (opacity > this.maxLayerOpacity) {
            return;
        } else if (opacity < 0) {
            // remove layer before exit
            this.addRemoveLayer();
            return;
        }
        
        // check for Internet Explorer
        if (navigator.userAgent.indexOf('MSIE') > -1) {
            this.layerElement.style.filter = 'Alpha(opacity=' + (opacity * 100) + ')';
        } else {
            this.layerElement.style.opacity = opacity;
        }
        
        setTimeout('pageLayer.fadeLayer(' + addend + ', ' + opacity + ');', 20);
    }
}; 
 
