var layout = new Layout();
        
Browser.registerLoadEvent(layout.init);
Browser.registerResizeEvent(layout.reinit);

function Layout()
{
    var currHeight, currWidth;
    var browser = new Browser();
    
    function setupLayout()
    {
        var layoutLayers = {header:{Name:'header', Padding:0},topMenu:{Name:'topmenu', Padding:0},space:{Name:'space', Padding:0},footer:{Name:'footer', Padding:0}}
        var height = browser.getInnerHeight();
        
        for(elm in layoutLayers)
        {
            var layer = browser.getLayer(layoutLayers[elm].Name);
            
            if(layer != null)
                height -= parseInt(layer.offsetHeight);
        }
        if(height > 0)
        {
            for(var i=0;i<=Layout.Layers.length-1;i++)
            {
                var layer = browser.getLayer(Layout.Layers[i].Name);

                if(layer != null)
                {
                    var calcHeight = (height-Layout.Layers[i].Padding);
                    
                    if(calcHeight > 0)
                        layer.style.height = calcHeight +'px';
                }
            }
        }
    }
    function reinitLayout(handler)
    {
        if(currHeight != browser.getInnerHeight() || currWidth != browser.getInnerWidth())
            handler();

        currHeight = browser.getInnerHeight();
        currWidth = browser.getInnerWidth();
    }
    this.init = function()
    {
        if(typeof Layout.Layers == 'undefined')
            return;
 
        setupLayout(Layout.Layers);
    }
    this.reinit = function()
    {
        if(typeof Layout.Layers == 'undefined')
            return;

        reinitLayout(function(){
            setupLayout(Layout.Layers);
        });
    }
}
Layout.Layers = new Array();
Layout.AddLayers = function()
{
    for(var i=0;i<=arguments.length-1;i++)
    {
        for(elm in arguments[i])
        {
            Layout.Layers.push(arguments[i][elm]);
        }
    }
}