/**
 * Layer
 * 
 * @require     MooTools
 * 
 * @author      Steffen Maechtel <s.maechtel@netzbewegung.com>
 * @version     1.00 alpha
 */

Nb_Layer = new Class({
    Implements: Events,
    initialize: function()
    {
        this.element = null;
    },
    updateContent: function(content)
    {
        this.element.getElements('.layer-body')[0].innerHTML = content;    
    },
    setStyle: function(style, value)
    {
        this.element.setStyle(style, value);
    },
    setStyles: function(styles)
    {
        this.element.setStyles(styles);
    },
    generateAndShow: function(target, direction)
    {
        this.generate(target, direction);
        this.show();  
    },
    hideAndDestroy: function()
    {
        this.hide();
        this.destroy();  
    },
    create: function(content, target, direction, defaultEvent)
    {
        direction    = direction || 'bottom';
        target       = target    || $$('body')[0];
        
        defaultEvent = defaultEvent || true;
        
        var layer = new Element('div', {
            'class': 'layer',
            html: this.getHtml(content)
        });
 
        this.element = layer;
        
        target.grab(this.element, direction);
        
        if (defaultEvent)
        {
            this.element.getElements('.layer-close')[0].addEvent('click', this.hideAndDestroy.bind(this));
        }
    },
    show: function()
    {
        this.element.setStyle('display', 'block');
        this.fireEvent('visible');
    },
    hide: function()
    {
        this.element.setStyle('display', 'none');
        this.fireEvent('invisible');
    },
    destroy: function()
    {
        this.element.destroy();
    },
    getHtml: function(content)
    {
        return '<div class="layer-close"></div><div class="layer-content"><div class="layer-body">' + content + '</div></div>';
    }
    
});

