BUGS/FEATURES:
   E: scroll_spd enhancement - accelerate/deccelerate
   E: more programmatic move/create (without opening the parents)
   E: PLUGIN: context menu plugin - slight flicker on two consecutive right clicks
   E: DOCS: show how to build a datastore/plugin

   ************ FOR LATER OR NO WAY TO FIX/TEST *****************
   E: option to show loading as an icon - not below the node
   B: horizontal scroll in Opera may be a bit too short
   E: refresh X levels deep
   E: multiple move callback to fire only once (or set a parameter if it is final)
   E: finish RTL plugin
   B: max_depth check - how about async?
   B: on dump check for loading nodes and skip them
   B: initial drag'n'drop does not work on OS X
   E: preloading content (open_all)
   E: native undo using rollback (maybe plugin)
   E: whole row selection & columns

CHANGELOG:
 v.0.9.9a
   fixed bug with creating root nodes
 v.0.9.9
   added use_max_children and use_max_depth settings
   fixed small bug in get methods in all datastores (now classes like "my-last" are returned correctly)
   drag_start, drag, drag_end callbacks
   can now specify icons (even if using a sprite) for each node type
   added tree_component.drag_drop.dragged variable to speed things up and to solve misterious bug :)
   switched from DOM cloneNode to jQuery clone for drag_help (may cause slowdown) but is data() safe
   sprites in all themes
   themeroller theme + plugin BETA!
   checkbox theme + plugin
   delete function correctly resets selected variable
   fixed refresh on a node, when async is not used
   added a get function that expects data format and an object
   fixed ctrl+click in IE7/IE8Compatibility
   fixed context menu positioning if near edge
   create stylesheet improvement
   ondestroy callback
   context menu css cleanup
   onparentclose option
   json get method fixed if tree is empty
   reference function upgraded
   fixed async reopening with cookies bug
   fixed bug with moved function opening/closing nodes
   search function now accepts a second optional argument (defaults to contains) so if you extend jQuery[:] with any case insensitive method - quote it there
   onsearch callback
   ondata and onparse - data is chained through all plugins
   ondata and onparse - now called in create method
   fixed datastores "get" functions (toString() on val)
   fixed default theme using inline image and sprites (IE6 will no longer look nice - UPGRADE)
   themeroller theme and plugin
   checkbox theme & plugin
   no more multiple inclusions of the same theme
   can cut, copy, paste from one tree to another
   better multitree - all, none or [ids] to accept from
   multiple drag now max_children is correctly checked
   drop just before loading -> node disappears bug FIXED
   added get_text method
   context menu as plugin
   added onhover callback
   keyboard navigation plugin (lost all the get_* functions and hover_mode setting)
   metadata as plugin
   beginning of a plugin system
   oninit callback (mainly for plugins)
   cookie is now plugin
   fixed cookies with / in them (jQuery selector escaping issue)
   added check move callback
   restrict move to same parent - demo with function
   added drop_mode function (jqueryUI connecting point?)
   cookies changed
   types rework - type_attr - meta_attr - meta_data - boolean
   onrename LANG param removed (added tree.get_lang())
   removed cycle_lang, improved show_lang
   added CSS inside tree itself
   plugin compatible (changed names)
   no need to include stylesheet - will include itself (if you change the path - include it yourself and pass the $.tree.path)
   flat & nested XSLs - merged into datasource itself
   removed path setting in favour of global $.tree.path
   no longer dependant on CSS.js and jquery.xslt.js
   enabled datastore plugins + 4 data stores - JSON, HTML, XML_FLAT, XML_NESTED - all support async + fixed
   defaults moved to $.tree - you can now modify all future tree's defaults
   create, focused, rollback - become children of $.tree (no more polluting the jQuery object)
   rename method accepts a string
   onJSONdata becomes ondata callback - you get what the server returned before jsTree displays it
   async_data becomes beforedata callback
 v.0.9.8
   fixed context menu icon wobble in IE
   better error handling (no more infinite loading icon - now marks the node as closed again)
   added TREE_OBJ as parameter to async_data
   can now copy a node inside itself
   when called on a node refresh() no longer reselects all selected nodes
   onload was called multiple times in some occasions
   CSS fixes, container can once more correctly autosize if overflow:hidden and zoom:1;
   RTL improvements (Chrome nightly is OK, in RTL dots in IE7 will brake, still no horizontal scrollbar in Opera in RTL)
   fixed Opera horizontal scrollbar (right-to-left mode still has problems)
   themes redesign
   destroy method die() part had to be rewritten
   container can once more have position:relative
   nested xml theme fix (was set on every ul)
   fixed create function not to selected the newly created node if it will not be renamed
   fixed create function to be able to pass children too
   fixed create function not to modify the object passed to it
   implemented next/prev/parent/children methods
   can drag nodes onto an empty tree
   can now paste root nodes
   Opera xml_flat XSL bug workaround
   jsTree should now be "immune" to object & array extending (prototype problem)
   minor changes in create & paste functions (when before or after passed as position)
   onJSONdata added (so that you can process any JSON to the required structure of jsTree)
 v.0.9.7
   can now create root nodes with 'create' function
   create & paste functions rewritten
   check stylesheet - fallback
   disabled collapse when clicking below the arrow
   numerous bugfixes
   context menu is now appended to the body
   bringing up the context menu does not change selection
   tree can be created in a not yet appended node
   refresh node bug
   apple theme now works with dots (on/off)
   added themeroller support - you can pass the classes in every data type (icons too), the active, hover & highlight classes are automatic
   function to get a tree reference by ID
   ondelete, oncreate, onmove, oncopy, onrename callbacks now receive additional rollback parameter
   added getXML function to get the tree as XML (same as getJSON)
   fixed default theme being included multiple times when more than 1 tree is used
   fixed rename bug when html entities are used
   added ability to pass an xml string as data source
   added position argument in create function
   option to which button initiates drag'n'drop
   added 5px threshold for dragging
   Chrome clear float
   Fixed scrollbars (issue remains in ff - multiple root elements are not connected with dots)
   small bug fixes in classic theme & apple theme
 v.0.9.6
   smarter drop location calculation (now if hovering a node where the before & after drops are not allowed, the whole node becomes a "inside" drop target)
   open_all callback
   no more hardcoded background - can now specify container background image
   added checkbox theme (with optional onchange callback for tri-state checkboxes)
   added apple theme with alternating background (!not compatible with dots)
   can now disable a specific cookie type by setting settings.cookies._type_here_ : false
   rightclick while dragging cancels drag'n'drop (by ali1024)
   CSS rewrite for inline-block, instead of float - speed gain and drag&drop fixes
   $.tree_focused() replaces tree_component.focusInst()
   $.tree_create() replaces new tree_component(). No more leakage to the global name space. (by Johan "Spocke" Sörlin)
   leakage of i and j variables fixed. (by Johan "Spocke" Sörlin)
   wrapped in anonymous function (by Johan "Spocke" Sörlin)
   added onselect, ondeselect callbacks
   context menu in FF3 (linux) fixed (by KasperNyboHansen)
   if theme_name is false, no CSS file is included, only images are looked up in theme_path (by groogs)
   context menu Create & Delete functions fix for multiselect
   reselect bug (by JensGabe)
   fixed multiselector bug ($(".demo,#demo").tree...)
   rewritten drag events (speed improvements, bug fixes)
   now uses jQuery's native live instead of listen plugin
   beforeopen and beforeclose callbacks added (by starmonkey)
   context menu fix when refreshing (by airbedman)
   can now use Dean Edward's packer (by Hafeyang)
   create bug fixed (by dantan)
   drag_copy bug fixed (by dantan)
   theme background bug fixed (by JensGabe)
 v.0.9.5
   context menu items can be hidden or DISABLED (using the visible function)
   fixed theme including on Mac OS (FF, Safari) (by alvin.schur)
   fixed async JSON bug when server returned empty result (by JensGabe)
   loading icon is now part of the theme
   native context menu (by damir.secki)
   multiple typeO (by JensGabe)
   can now specify attributes for the nested <a> nodes (href, etc) - updated json format
   event optimization (fixed bug where beforemove/copy/etc where called from the origin tree)
   added scroll_spd setting (the speed at which the container scrolls if dragging near the edge)
   fixed scoll while drag & drop
   Safari & Chrome drag & drop fix
   close_all - no animation
   xml_flat and async bug fixed (by Alain)
   can supply id in create function (by ludo)
   more "IE8 compatible" :)
   added support for themes (+2 themes) (by j9850s) - in any data type if icon does not contain a "/" it is loaded form the theme folder
   fixed opening leaf nodes (by Limor.Schweitzer)
   dragging bug (by ignoranceisbliss0)
   added search functionality (opens all parents and adds class "search" to results) - if async - a request is made to the server with a GET parameter, that should return commaseparated id's of nodes to be opened
   jQuery plugin mode - $().tree({opts})
 v.0.9.2
   async_data function fixed (by Alvin Schur)
   remove enhancement and event order fix (by j9850s)
   create bug fixed (by j9850s)
   borderTopWidth bug in IE fixed (by me.khaled)
   !NO MORE settings.dflt - now settings.selected - false, string or array & settings.opened - array
   selected cookie is now CSV (if multiple is on)
   getJSON attrib bug fixed (by eddie.con.carne)
   negation dragrules - begin with "!" (order is respected)
   drag various nodes on the tree (settings.rules.droppable)
   jQuery compatible mode (all $ are now jQuery)
   fixed remove bug when a node appears as selected but isn't (by nomen)
   fixed create bug when passing a name for the new node and the parent node is closed (by Oliver)
   async_data added in settings.data - a function to return an object that will be passed to the server in async mode
   method added in settings.data - set all requests to GET or POST
 v.0.9.1
   various minor bugs fixed & optimizations
   create function now accepts value & icon for the newly created node
 v.0.9
   multitree drag & drop - now the receiving tree's dragrules are respected
   multitree language cleanup
   added instance manager & focusInst function - tree_component.inst & tree_component.focusInst()
   fixed get_left, get_right in RTL mode
 v.0.8.2 
   get_* functions receive a "force" argument that selects the node even if hover_mode is on
   create function enhancement - can pass a node to create in (by anotherhero)
   remove function enhancement - can pass a node to delete (by anotherhero)
   fixed drag position in IE (by Nuno Mota)
   fixed multitree drag rules check against origin tree (by bogdan)
   rename function fix (when ESC is used) (by bogdan)
   #marker z-index is now higher (by bogdan)
   fixed get_json function (an attrib array can now be passed, icon fix) (by bogdan)
   get_left, get_right functions fixed to match explorer functions' behavious (by bogdan)
   implemented drag-to-copy - changes the default behaviour from drag to copy
 v.0.8.1
   fixed renaming bug (by anotherhero)
   fixed #marker bug (by anotherhero)
 v.0.8
   onload callback - fired when the tree is loaded for the first time and when the tree or a node is refreshed
   * in dragrules
   refreshing a single node is possible (in async mode)
   passed json can now be an object, not an array of objects (by Marius Bratu)
   onchange called in deselect_branch (by jstreeuser)
   id is urlencoded (by Arjan Haverkamp)
 v.0.7.1
   fixed create bug in async mode (by William)
   create function returns the created node (by Nuno Mota)
   fixed bug when dropped node did not open branch in async mode (by William)
   fixed bug when passing empty array as children (by William)
   fixed async xml loading (empty array && recursion problem)
   fixed leaf bug (by Nuno Mota)
   fixed inside moving to respect the createat rule
 v.0.7
   native async loading
   added lock() function to lock/unlock the tree
   added language customization for standard strings
   hover_mode option added (for changing hover state with keyboard)
   options object refactoring
   fixed bug with closing parent of selected if parent is selected (multiple - on)
   multiple added (can now be always on - no need for holding Ctrl)
   onrgtclk callback added (See commented code on how to prevent default)
   fixed bug where Ctrl+clicking selected node did not deselect the node
   removed optional XML structure for single language
   Google Code issues (typos) (by peter.kalvin)
 v.0.6.5
   tree now allows for some node sizing (see demo)
   fixed bug when created nodes did not have the leaf class (by addwin)
   optimized rtl position and images
   can now change
   fixed changing focus when closing focused node (by Karf)
   fixed before- callbacks parameters (by Colin)
   fixed dragging position (by Karf)
   returned optional path parameter (by Karf)
   added ondblclk callback, which defaults to toggle and then select node (by Arno)
   tree object is passed as final argument in every callback
 v.0.6.0.1
   removed bug with switched beforemove/beforecreate callbacks (by Colin)
   fixed mistake with mov / TYPE (by newuni)
 v.0.6
   added drag & drop between trees with correct marker placement
   optimized jQuery selectors
   added cut/copy/paste + oncopy callback
   added error callback - attach custom function to errors
   added multiple selection with move & delete
   added getJSON - return the tree as an object
   added before handlers
   optimized css, added 'leaf' class
   added basic rtl support (user opinions?)
   added cookie support with definable prefix and options - default is false
   added if selected node is within closed parent - select parent
   added CSS solution when dragging large sets - all inner nodes are closed while dragging
   added solid background color option (not white) - set background color on "li.last", ".tree"
   added animation support (slideUp/slideDown) - specify duration (disabled for msie 6 - slow)
   updated listen plugin
   updated sarissa
   added insertAt option for creating nodes ('top' or 'bottom')
 v.0.5
   current language is passed when renaming
   added onbeforechange callback
   'data' can be JSON and none (only events attached to structure)
   Opera comaptible
   scroll node into view when node selected
   scroll container while dragging and mouse is near the edge
   'remove' function 
   rules and rule checking reinvented (added inline_rules, max_depth, max_children, valid_children, renameable)
   dots are optional ('toggleDots' function, '.no_dots' classname)
   various optimizations