-------------------------------------------------------------------------------
dojox.layout Experimental and Extended Layout Widgets
-------------------------------------------------------------------------------
Version 1.0
Release date: 10/31/2007
-------------------------------------------------------------------------------
Project state:

[BorderContainer] deprecated, use dijit.layout.BorderContainer
[ContentPane]	beta
[DragPane]	experimental
[ExpandoPane] experimental
[FloatingPane] sub-experimental
[GridContainer] experimental
[RadioGroup] experimental
[RadioGroupFade/Slide] experimental
[ResizeHandle] experimental
[RotatorContainer] beta
[ScrollPane] experimental
[TableContainer] experimental

-------------------------------------------------------------------------------
Credits

[BorderContainer] Adam Peller (peller)
[ContentPane]	Fredrik Johansson (mumme)
[DragPane]	Peter Higgins (dante)
[ExpandoPane] Peter Higgins (dante)
[FloatingPane] Peter Higgins (dante)
[GridContainer] Juff Cunat (jfcunat), Peter Higgins (dante)
[RadioGroup/Fade/Slide] Peter Higgins (dante) 
[ResizeHandle] Peter Higgins (dante)
[RotatorContainer] Chris Barber (cb1)
[ScrollPane] Peter Higgins (dante), Shane O'Sullivan (sos)
[TableContainer] Shane O'Sullivan (sos)

-------------------------------------------------------------------------------
Project description

	placeholder for dijit.layout extensions. Currently only:

	dojo.layout.BorderContainer - deprecated, simple replacement at dijit.layout.BorderContainer

	dojox.layout.ContentPane - an extension on dijit ContentPane.
	Supports inline scripts, inline styles, relative path adjustments
	and having a table tag as domNode.

	dojox.layout.DragPane - an experimental start of a simple Dragable pane 
	(drag larger content around inside of a sized pane) Does not support borderContainer
	LayoutContainer resizing yet. 

	dojox.layout.ExpandoPane - Intended only as a child of BorderContainer, provides an
	experimental layout region (top/left/right/bottom) that collapses when toggled, hiding
	the layout children contained within.
	
	dojox.layout.FloatingPane - an extension on TitlePane for drag/drop
	operation, "docking" [minimize/maximize], and resizing. HIGHLY experimental.
	
	dojox.layout.GridContainer - displays children in a definable grid-layout,
	allowing children to optionally be repositioned with DnD

	dojox.layout.RadioGroup - a stack container with sliding or fading transitions
	(and an internal button set to mimic a tab container, but fires on hover)
		- RadioGroupFade - fade transitions
		- RadioGroupSlide - slide transitions

	dojox.layout.ResizeHandle - resize handle to attach to a domNode.
	works well on normal domNodes, but will require adding a resizeTo(w,h)
	method to any widget you wish to use it on. [experimental]

	dojox.layout.RotatorContainer - similar to a RadioGroup, but provides advanced button's and
	control. 

	dojox.layout.ScrollPane - a dynamically scrolling pane. Adjusts naturally sized content
	to a "viewport" and scrolls based on relative mouse position. 
	
	dojox.layout.TableContainer - A container widget that lays out child widgets using a
	Table element. It can create labels for each widget, placed either above or
	beside the widgets.
	
-------------------------------------------------------------------------------
Dependencies

	require Dojo Core, Dojo Base (fx), and Dijit

-------------------------------------------------------------------------------
Installation:

	checkout:

	http://svn.dojotoolkit.org/src/dojox/trunk/layout/
	http://svn.dojotoolkit.org/src/dijit/trunk/

	and require via:
		dojo.require("dojox.layout.FloatingPane");
	or:
		dojo.require("dojox.layout.ContentPane");
	etc ...

	Each component has a required CSS File with a similar name, contained within the
	/resources folder. Include that file in your page. For instance, if using
	the dojox.layout.ExpandoPane:
	
	<link rel="stylesheet" href="dojo-tree/dojox/layout/resources/ExpandoPane.css" />

-------------------------------------------------------------------------------
Basic Usage:

	<div dojoType="dojox.layout.FloatingPane" title="my title">
		Content To be Floated
	</div>

	<div dojoType="dojox.layout.ContentPane"
		 adjustPaths="true"
		 renderStyles="true"
		 executeScripts="true"
		 href="my/page/containing/scripts/and/styles/in/a/sub/folder.html"
	>
		Initial content, will be replace by href.
		paths in folder.html will be adjusted to match this page
	</div>
