text: /**
   * $Id: mxDivResizer.js,v 1.22 2010-01-02 09:45:14 gaudenz Exp $
   * Copyright (c) 2006-2010, JGraph Ltd
   */
  /**
   * 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;
  };
  