/**
 * Creates the base structure of Tree.
 * @member Ext.tree.Panel
 */
@mixin extjs-tree {

    // Tree tables must assume either full width of the View element, or, when necessary, must overflow
    // They must not shrink wrap the width and only be as wide as their widest node's content.
    .#{$prefix}autowidth-table table.#{$prefix}grid-table {
        table-layout: auto;
        width: auto!important;
    }

    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow {
        background-color: transparent;
    }

    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow-end {
        background-color: transparent;
    }

    .#{$prefix}tree-no-lines .#{$prefix}tree-elbow-line {
        background-color: transparent;
    }

    //arrows
    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-plus {
        background: transparent no-repeat 0 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end-plus {
        background: transparent no-repeat 0 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end-minus {
        background: transparent no-repeat -16px 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-minus {
        background: transparent no-repeat -16px 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow {
        background-color: transparent !important;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-end {
        background-color: transparent !important;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-elbow-line {
        background-color: transparent !important;
    }

    //elbows
    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-plus,
    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-plus {
        background-position: -32px 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-minus,
    .#{$prefix}tree-arrows .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-minus {
        background-position: -48px 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
        background-position: -16px 0;
    }

    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-plus,
    .#{$prefix}tree-arrows .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-expander-over .#{$prefix}tree-elbow-end-plus {
        background-position: -48px 0;
    }

    .#{$prefix}tree-elbow-plus,
    .#{$prefix}tree-elbow-minus,
    .#{$prefix}tree-elbow-end-plus,
    .#{$prefix}tree-elbow-end-minus{
        cursor: pointer;
    }

    //elbows
    .#{$prefix}tree-lines {
        .#{$prefix}tree-elbow {
            background-image: theme-background-image($theme-name, 'tree/elbow.gif');
        }

        .#{$prefix}tree-elbow-end {
            background-image: theme-background-image($theme-name, 'tree/elbow-end.gif');
        }

        .#{$prefix}tree-elbow-plus {
            background-image: theme-background-image($theme-name, 'tree/elbow-plus.gif');
        }

        .#{$prefix}tree-elbow-end-plus {
            background-image: theme-background-image($theme-name, 'tree/elbow-end-plus.gif');
        }

        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus {
            background-image: theme-background-image($theme-name, 'tree/elbow-minus.gif');
        }

        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
            background-image: theme-background-image($theme-name, 'tree/elbow-end-minus.gif');
        }

        .#{$prefix}tree-elbow-line {
            background-image: theme-background-image($theme-name, 'tree/elbow-line.gif');
        }
    }

    .#{$prefix}tree-no-lines {
        .#{$prefix}tree-elbow-plus,
        .#{$prefix}tree-elbow-end-plus {
        	background-image: theme-background-image($theme-name, 'tree/elbow-plus-nl.gif');
        }

        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-plus,
        .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-elbow-end-plus {
            background-image: theme-background-image($theme-name, 'tree/elbow-end-minus-nl.gif');
        }
    }

    .#{$prefix}tree-arrows {
        .#{$prefix}tree-elbow-plus,
        .#{$prefix}tree-elbow-minus,
        .#{$prefix}tree-elbow-end-plus,
        .#{$prefix}tree-elbow-end-minus {
            background-image: theme-background-image($theme-name, 'tree/arrows.gif');
        }
    }

    .#{$prefix}tree-icon {
        margin: $tree-icon-margin-top $tree-icon-margin-right 0 0;
    }

    .#{$prefix}grid-with-row-lines .#{$prefix}tree-icon {
        margin-top: $tree-icon-margin-top - 1
    }

    .#{$prefix}tree-elbow,
    .#{$prefix}tree-elbow-end,
    .#{$prefix}tree-elbow-plus,
    .#{$prefix}tree-elbow-end-plus,
    .#{$prefix}tree-elbow-empty,
    .#{$prefix}tree-elbow-line {
        height: $tree-elbow-height;
        width: $tree-elbow-width;
    }

    .#{$prefix}grid-with-row-lines {
        .#{$prefix}tree-elbow,
        .#{$prefix}tree-elbow-end,
        .#{$prefix}tree-elbow-plus,
        .#{$prefix}tree-elbow-end-plus,
        .#{$prefix}tree-elbow-empty,
        .#{$prefix}tree-elbow-line {
            height: $tree-elbow-height - 1;
            background-position: 0 -1px;
        }
    }

    .#{$prefix}tree-icon-leaf {
        width: $tree-elbow-width;
        background-image: theme-background-image($theme-name, 'tree/leaf.gif');
    }

    .#{$prefix}tree-icon-parent {
        width: $tree-elbow-width;
        background-image: theme-background-image($theme-name, 'tree/folder.gif');
    }

    .#{$prefix}grid-tree-node-expanded .#{$prefix}tree-icon-parent {
        background-image: theme-background-image($theme-name, 'tree/folder-open.gif');
    }

    .#{$prefix}grid-rowbody {
        padding: 0;
    }

    .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
        padding: 0;
        line-height: $tree-elbow-height - 1;
    }

    .#{$prefix}grid-with-row-lines .#{$prefix}grid-cell-treecolumn .#{$prefix}grid-cell-inner {
        line-height: $tree-elbow-height - 3;
    }

    .#{$prefix}tree-panel .#{$prefix}grid-cell-inner {
        cursor: pointer;
        img {
            display: inline-block;
            vertical-align: top;
        }
    }

    @if $include-ie {
        .#{$prefix}ie .#{$prefix}tree-panel {
            .#{$prefix}tree-elbow,
            .#{$prefix}tree-elbow-end,
            .#{$prefix}tree-elbow-plus,
            .#{$prefix}tree-elbow-end-plus,
            .#{$prefix}tree-elbow-empty,
            .#{$prefix}tree-elbow-line {
                // vertical alignment is necessary for IE to show the ellipsis in the right place.
                vertical-align: -6px;
            }
        }
    }

    .#{$prefix}grid-editor-on-text-node {
        .#{$prefix}form-text {
            // specify padding left and padding right individually since we don't want to override padding-bottom (which can vary)
            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal;
            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal;
        }
    }
    @if $include-ie {
        .#{$prefix}ie .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
        }
    }
    @if $include-opera {
        .#{$prefix}opera .#{$prefix}grid-editor-on-text-node .#{$prefix}form-text {
            padding-left: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
            padding-right: $grid-cell-treecolumn-editor-field-padding-horizontal + 1px;
        }
    }

    .#{$prefix}tree-checkbox {
        margin: $tree-checkbox-margin-top $tree-checkbox-margin-right 0 0;
        display: inline-block;
        vertical-align: top;

        width: $form-checkbox-size;
        height: $form-checkbox-size;
        background: no-repeat;
        background-image: theme-background-image($theme-name, $form-checkbox-image);

        overflow: hidden;
        padding: 0;
        border: 0;
        &::-moz-focus-inner {
            padding: 0;
            border: 0;
        }
    }

    .#{$prefix}grid-with-row-lines .#{$prefix}tree-checkbox {
        margin-top: $tree-checkbox-margin-top - 1;
    }

    .#{$prefix}tree-checkbox-checked {
        background-position: 0 (0 - $form-checkbox-size);
    }

    .#{$prefix}tree-drop-ok-append .#{$prefix}dd-drop-icon {
        background-image: theme-background-image($theme-name, 'tree/drop-append.gif');
    }

    .#{$prefix}tree-drop-ok-above .#{$prefix}dd-drop-icon {
        background-image: theme-background-image($theme-name, 'tree/drop-above.gif');
    }

    .#{$prefix}tree-drop-ok-below .#{$prefix}dd-drop-icon {
        background-image: theme-background-image($theme-name, 'tree/drop-below.gif');
    }

    .#{$prefix}tree-drop-ok-between .#{$prefix}dd-drop-icon {
        background-image: theme-background-image($theme-name, 'tree/drop-between.gif');
    }

    .#{$prefix}grid-tree-loading .#{$prefix}tree-icon {
        background-image: theme-background-image($theme-name, 'tree/loading.gif');
    }

    .#{$prefix}tree-ddindicator {
        height: 1px;
        border-width: 1px 0px 0px;
        border-style: dotted;
        border-color: green;
    }

    .#{$prefix}grid-tree-loading span {
    	 font-style: italic;
    	 color: #444444;
    }

    .#{$prefix}tree-animator-wrap {
        overflow: hidden;
    }
}