/* LOCKED */
.tree-themeroller .locked li a { color:gray; }
/* DOTS */
.tree-themeroller ul { background-position:6px 1px; background-repeat:repeat-y; background-image:url(data:image/gif;base64,R0lGODlhAgACAIAAAB4dGf///yH5BAEAAAEALAAAAAACAAIAAAICRF4AOw==); _background-image:url("dot_for_ie.gif"); *background-image:url("dot_for_ie.gif"); }
.tree-themeroller li { background-position:-64px -16px; background-repeat:no-repeat; background-image:url("icons.png"); }
/* NO DOTS */
.tree-themeroller .no_dots, .tree-themeroller .no_dots ul { background:transparent; }
.tree-themeroller .no_dots li.leaf { background-image:none; background-color:transparent; }
/* OPEN or CLOSED */
.tree-themeroller li.open { background:url("icons.png") -32px -48px no-repeat; }
.tree-themeroller li.closed, #jstree-dragged.tree-themeroller li li.open { background:url("icons.png") -48px -32px no-repeat; }
#jstree-marker { background-image:url("icons.png"); }

.tree-themeroller li, .tree-themeroller li a, .tree-themeroller li a ins { line-height:16px !important; }
.tree-themeroller li a .ui-icon { overflow:visible; }

/* DEFAULT, HOVER, CLICKED, LOADING STATES 
.tree-themeroller li a, .tree-themeroller li span { border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; }
.tree-themeroller li a:hover, .tree-themeroller li a.hover, .tree-themeroller li span { background: #e7f4f9; border:1px solid #d8f0fa; padding:0px 3px 0px 3px; }
.tree-themeroller li a.clicked, .tree-themeroller li a.clicked:hover, .tree-themeroller li span.clicked { background: #beebff; border:1px solid #99defd; padding:0px 3px 0px 3px; }
*/
/* ICONS */
.tree-themeroller ul li a.loading ins { background-image:url("throbber.gif") !important; background-position:0 0 !important; } /* UL is added to make selector stronger */
/*
.tree-themeroller ins { background-image:url("icons.png"); background-position:0 0; background-repeat:no-repeat; }
.tree-themeroller li a ins.forbidden { background-position:-16px -16px; }
.tree-themeroller .locked li a ins { background-position:0 -48px; }
.tree-themeroller li span ins { background-position:-16px 0; }
*/

#jstree-dragged.tree-themeroller ins { background:url("icons.png") -16px -32px no-repeat; }
#jstree-dragged.tree-themeroller ins.forbidden { background:url("icons.png") -16px -16px no-repeat; }

/* CONTEXT MENU 
.tree-themeroller-context a ins { background-image:url("icons.png"); background-repeat:no-repeat; background-position:-64px -64px; }
.tree-themeroller-context a ins.create { background-position:0 -16px; }
.tree-themeroller-context a ins.rename { background-position:-16px 0px; }
.tree-themeroller-context a ins.remove { background-position:0 -32px; }
*/