function ToggleManager() {
    Observable.call(this);

    this.elementMap = {};
    this.initEvent("toggle");
}
ToggleManager.prototype = new Observable();
ToggleManager.prototype.register = function(elementId, collapsedSize, expandedSize, collapsed) {
    if (this.elementMap[elementId]) {
        throw new Error("Element with id '" + elementId + "' is already registered!");
    }
    this.elementMap[elementId] = {
        elementId: elementId,
        collapsedSize: collapsedSize,
        expandedSize: expandedSize,
        collapsed: collapsed
    }
};
ToggleManager.prototype.toggle = function(elementId) {
    var el = this.elementMap[elementId];
    if (!el) {
        throw new Error("Element with id '" + elementId + "' is not registered!");
    }
    var height = el.collapsed ? el.expandedSize : el.collapsedSize;
    document.getElementById(el.elementId).style.height = height + 'px';
    el.collapsed = !el.collapsed;
    this.fireEvent("toggle", elementId, el.collapsed);
};
