/** * Copyright (c) 2006-2015, JGraph Ltd * Copyright (c) 2006-2015, Gaudenz Alder */ /** * Class: mxDivResizer * * Maintains the size of a div element in Internet Explorer. This is a * workaround for the right and bottom style being ignored in IE. * * If you need a div to cover the scrollwidth and -height of a document, * then you can use this class as follows: * * (code) * var resizer = new mxDivResizer(background); * resizer.getDocumentHeight = function() * { * return document.body.scrollHeight; * } * resizer.getDocumentWidth = function() * { * return document.body.scrollWidth; * } * resizer.resize(); * (end) * * Constructor: mxDivResizer * * Constructs an object that maintains the size of a div * element when the window is being resized. This is only * required for Internet Explorer as it ignores the respective * stylesheet information for DIV elements. * * Parameters: * * div - Reference to the DOM node whose size should be maintained. * container - Optional Container that contains the div. Default is the * window. */ function mxDivResizer(div, container) { if (div.nodeName.toLowerCase() == 'div') { if (container == null) { container = window; } this.div = div; var style = mxUtils.getCurrentStyle(div); if (style != null) { this.resizeWidth = style.width == 'auto'; this.resizeHeight = style.height == 'auto'; } mxEvent.addListener(container, 'resize', mxUtils.bind(this, function(evt) { if (!this.handlingResize) { this.handlingResize = true; this.resize(); this.handlingResize = false; } }) ); this.resize(); } }; /** * Function: resizeWidth * * Boolean specifying if the width should be updated. */ mxDivResizer.prototype.resizeWidth = true; /** * Function: resizeHeight * * Boolean specifying if the height should be updated. */ mxDivResizer.prototype.resizeHeight = true; /** * Function: handlingResize * * Boolean specifying if the width should be updated. */ mxDivResizer.prototype.handlingResize = false; /** * Function: resize * * Updates the style of the DIV after the window has been resized. */ mxDivResizer.prototype.resize = function() { var w = this.getDocumentWidth(); var h = this.getDocumentHeight(); var l = parseInt(this.div.style.left); var r = parseInt(this.div.style.right); var t = parseInt(this.div.style.top); var b = parseInt(this.div.style.bottom); if (this.resizeWidth && !isNaN(l) && !isNaN(r) && l >= 0 && r >= 0 && w - r - l > 0) { this.div.style.width = (w - r - l)+'px'; } if (this.resizeHeight && !isNaN(t) && !isNaN(b) && t >= 0 && b >= 0 && h - t - b > 0) { this.div.style.height = (h - t - b)+'px'; } }; /** * Function: getDocumentWidth * * Hook for subclassers to return the width of the document (without * scrollbars). */ mxDivResizer.prototype.getDocumentWidth = function() { return document.body.clientWidth; }; /** * Function: getDocumentHeight * * Hook for subclassers to return the height of the document (without * scrollbars). */ mxDivResizer.prototype.getDocumentHeight = function() { return document.body.clientHeight; };