dynatreeDragNDrop

by ksevksev

HTML

<div>Tree begins below:</div>
<div id="tree"></div>

CSS

/*******************************************************************************
 * Tree container
 */
ul.dynatree-container
{
	font-family: tahoma, arial, helvetica;
	font-size: 9pt; /* font size should not be too big */
	white-space: nowrap;
	padding: 3px;

	background-color: white;
	border: 1px dotted gray;

	overflow: auto;
}

ul.dynatree-container ul
{
	padding: 0 0 0 16px;
	margin: 0;
}

ul.dynatree-container li
{
	list-style-image: none;
	list-style-position: outside;
	list-style-type: none;
	-moz-background-clip:border;
	-moz-background-inline-policy: continuous;
	-moz-background-origin: padding;
	background-attachment: scroll;
	background-color: transparent;
	background-repeat: repeat-y;
	background-image: url("vline.gif");
	background-position: 0 0;
	/*
	background-image: url("icons_96x256.gif");
	background-position: -80px -64px;
	*/
	margin: 0;
	padding: 1px 0 0 0;
}
/* Suppress lines for last child node */
ul.dynatree-container li.dynatree-lastsib
{
	background-image: none;
}
/* Suppress lines if level is fixed expanded (option minExpandLevel) */
ul.dynatree-no-connector > li
{
	background-image: none;
}

/* Style, when control is disabled */
.ui-dynatree-disabled ul.dynatree-container
{
	opacity: 0.5;
/*	filter: alpha(opacity=50); /* Yields a css warning */
	background-color: silver;
}

/*******************************************************************************
 * Common icon definitions
 */
span.dynatree-empty,
span.dynatree-vline,
span.dynatree-connector,
span.dynatree-expander,
span.dynatree-icon,
span.dynatree-checkbox,
span.dynatree-radio,
span.dynatree-drag-helper-img,
#dynatree-drop-marker
{
	width: 16px;
	height: 16px;
	display: -moz-inline-box; /* @ FF 1+2 */
	display: inline-block; /* Required to make a span sizeable */
	vertical-align: top;
	background-repeat: no-repeat;
	background-position: left;
	background-image: url("icons.gif");
	background-position: 0 0;
}

/** Used by 'icon' node option: */
ul.dynatree-container img
{
	width:...

JavaScript

jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
      ...