-------------------------------------------------------------------------------
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

-------------------------------------------------------------------------------
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)

-------------------------------------------------------------------------------
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. 
	
-------------------------------------------------------------------------------
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>
