if (typeof _H !== 'object') var _H = {};

_H.Layers = function(id) {

    var _layers     = new _H.DOM();
    var _html       = document.getElementsByTagName('html')[0];
    var _body       = document.getElementsByTagName('body')[0];
        
    var _node       = {
        "container" : [id, '_container'].join(''),
        "layer"     : [id, '_layer'].join(''),
        "close"     : [id, '_close'].join('')
    }
        
    var _IE6 = (_H.IE && !window.XMLHttpRequest);
    var _Mootools = (typeof MooTools === 'object');
    
        
            
    return {
            
        create  : function() {        
                
            if (!_H.$(id)) return;
            
            // Append Background and Content Layer 
            if (!_H.$('h_overlayer')) {
                _layers.create({ 
                    "div" : { 
                        "id"    : "h_overlayer", 
                        "class" : "closed" 
                    }
                }).append('into', document.body);
            } else {
				document.getElementById('h_overlayer').style.display='inline';
			};
            
            if (!_H.$(_node['layer'])) {
                _layers.create({ 
                    "div" : { 
                        "id"    : _node['layer'], 
                        "class" : "layer closed" 
                    }
                }).append('into', document.body);
            }
                    
            var self = this;
            _layers.create({ 
                "a" : { 
                    "id"      : _node['close'],
                    "href"    : "#", 
                    "class"   : "closelayer",
                    "text"    : "Close",
                    "onclick" : function() { self.close(); return false; }
                }
            }).append('into', id);
                
            return this;
        },
            
        open    : function() {
                
            this.create();
			
            if (_H.$("h_overlayer") && _H.$(_node['layer'])) { 
                    
                _html.style.height = "100%";
                _body.style.height = "100%";
                
                if (_IE6) {
                    _body.style.overflow = "hidden";
                    _H.$(_node['layer']).style.position = 'absolute';
                    _H.$(_node['layer']).style.top = [document.documentElement.scrollTop, 'px'].join('');
                }
                
                if (_Mootools) { 
                    _H.$("h_overlayer").style.opacity   = '0'; 
                    _H.$("h_overlayer").style.filter    = 'alpha(opacity="0")'; 
                };
                    
                _H.$("h_overlayer").style.height = [_html.scrollHeight, 'px'].join('');
				_H.$("h_overlayer").style.width = [_html.scrollWidth, 'px'].join('');
                _H.$(_node['layer']).appendChild(_H.$(id));
                _H.removeClass(_H.$("h_overlayer"), 'closed');
				
              
                if (_Mootools) {
                    var myEffect = new Fx.Morph(_H.$("h_overlayer"), {duration: '300', transition: Fx.Transitions.Sine.easeOut});                     
                    myEffect.start({'opacity': [0, 0.8]}).chain(function() { _H.removeClass(_H.$(_node['layer']), 'closed'); });
                }
                else {
                   _H.removeClass(_H.$(_node['layer']), 'closed');
                }
            }
            return false;
        },
            
        close   : function() {
            if (_H.$("h_overlayer") && _H.$(_node['layer'])) { 
                
                if (_H.$(_node['close'])) {
                    _layers.remove(_H.$(_node['close']), true);
                }
                
                _html.style.height = "auto";
                _body.style.height = "auto";                   
                if (_IE6) { _body.style.overflow = "auto"; };
                
                _H.$(_node['container']).appendChild(_H.$(id));
                _H.addClass(_H.$(_node['layer']), 'closed');

                if (_Mootools) {
                    var myEffect = new Fx.Morph(_H.$("h_overlayer"), {duration: '300', transition: Fx.Transitions.Sine.easeOut});                     
                    myEffect.start({'opacity': [0.8, 0]}).chain(function() { _H.addClass(_H.$("h_overlayer"), 'closed'); });
                }
                else {
                    _H.addClass(_H.$("h_overlayer"), 'closed');
                }
            }
            return false;
        }
        
    }
};
