ZeiteinheitenPanel = function(config)
{
    //-----< apply config >-----------------------------------------------------
    Ext.apply(this, config);
    //-----< create root node and static sub nodes >----------------------------
    this.rootnode = new Ext.tree.TreeNode({
        text: 'Zeiteinheiten',
        uiProvider:Ext.tree.NoCollapseTreeNodeUI,
        draggable:false,
        id:'root'
    });
    // this.rootnode.addListener('beforecollapse',function(node,deep,anim){return(false);});
    this.jahrenode = new Ext.tree.AsyncTreeNode({
        text:'Jahre',
        uiProvider:Ext.tree.NoCollapseTreeNodeUI,
        expanded:false,
        id:'jahre'
    });
    this.berichtenode = new Ext.tree.AsyncTreeNode({
        text:'Berichte',
        uiProvider:Ext.tree.NoCollapseTreeNodeUI,
        expanded:false,
        id:'berichte'
    });
    this.rootnode.appendChild(this.jahrenode);
    this.rootnode.appendChild(this.berichtenode);
    //-----< call parent constructor >------------------------------------------
    ZeiteinheitenPanel.superclass.constructor.call(this, {
        animate:true,
        loader: new ParameterizedTreeLoader({
            dataUrl: '../services/ZeiteinheitenTree.php',
            baseAttrs: {uiProvider:Ext.tree.NoCollapseTreeNodeUI,checked:false}
        }),
        enableDD:false,
        rootVisible:true,
        lines:false,
        border:false,
        autoScroll:true,
        root: this.rootnode,
        collapseFirst:false,
        singleExpand:true
    });
    //-----< additional tasks after parents constructor has run >---------------
    this.on('show', this.onShowMe, this);
};

//-----< define new class MerkmalePanel >---------------------------------------
Ext.extend(ZeiteinheitenPanel, Ext.tree.TreePanel,
{

    setBerichtssystem : function(art)
    {
        this.reset();
        this.getLoader().setBaseParams( { bericht: art } );
    },

    reset : function()
    {
        if(this.jahrenode.loaded)
        {
            this.jahrenode.collapse(false, false);
            while(this.jahrenode.firstChild){
                this.jahrenode.removeChild(this.jahrenode.firstChild);
            }
            this.jahrenode.childrenRendered = false;
            this.jahrenode.loaded = false;
        }
        if(this.berichtenode.loaded)
        {
            this.berichtenode.collapse(false, false);
            while(this.berichtenode.firstChild){
                this.berichtenode.removeChild(this.berichtenode.firstChild);
            }
            this.berichtenode.childrenRendered = false;
            this.berichtenode.loaded = false;
        }
        this.root.collapse(false, false);
    },

    onShowMe : function(me)
    {
        //-----< expand this root node when wizard tab gets activated >---------
        if(!this.root.isExpanded())
        {
            this.root.expand();
        }
        if(!this.jahrenode.isExpanded() && !this.berichtenode.isExpanded())
        {
            this.berichtenode.expand(false,true,function(node){if(node.firstChild){node.firstChild.ui.toggleCheck(true);node.firstChild.attributes.checked = true;}});
        }
    },

    getZeitArt : function()
    {
        return( this.berichtenode.isExpanded() ? 'berichte' : 'jahre' );
    },

    getZeiteinheiten : function()
    {
        //-----< create empty array for results >-------------------------------
        var result = Array();
        //-----< get parent  node >---------------------------------------------
        var parentnode = this.berichtenode.isExpanded() ? this.berichtenode : this.jahrenode;
        //-----< iterate over all groups >--------------------------------------
        var allnodes = parentnode.childNodes;
        for(var i = 0; i < allnodes.length; i++)
        {
            if( allnodes[i].attributes.checked )
            {
                    result.push(allnodes[i].id);
            }
        }
        //-----< return results >-----------------------------------------------
        return(result);
    }

});
