// Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.

define([
    'base/js/namespace',
    'jquery',
], function(IPython, $) {
    "use strict";

    var LayoutManager = function () {
        this.bind_events();
        this.pager = undefined;
    };

    LayoutManager.prototype.bind_events = function () {
        $(window).resize($.proxy(this.do_resize,this));
    };

    LayoutManager.prototype.app_height = function() {
        var win = $(window);
        var w = win.width();
        var h = win.height();
        var header_height;
        if ($('div#header').css('display') === 'none') {
            header_height = 0;
        } else {
            header_height = $('div#header').outerHeight(true);
        }
        var menubar_height;
        if ($('div#menubar-container').css('display') === 'none') {
            menubar_height = 0;
        } else {
            menubar_height = $('div#menubar-container').outerHeight(true);
        }
        return h-header_height-menubar_height; // content height
    };

    LayoutManager.prototype.do_resize = function () {
        var app_height = this.app_height();  // content height

        $('#ipython-main-app').height(app_height);  // content+padding+border height
        if (this.pager) {
            var pager_height = this.pager.percentage_height*app_height;
            var pager_splitter_height = $('div#pager_splitter').outerHeight(true);
            $('div#pager').outerHeight(pager_height);
            if (this.pager.expanded) {
                $('div#notebook').outerHeight(app_height-pager_height-pager_splitter_height);
            } else {
                $('div#notebook').outerHeight(app_height-pager_splitter_height);
            }    
        }
    };

    // Backwards compatability.
    IPython.LayoutManager = LayoutManager;

    return {'LayoutManager': LayoutManager};
});