$package('difc.tabbar',
    $class('Tab').$define(
        $public({
            name:'',
            action:'deactive',
            activeStyleName:'',
            deactiveStyleName:'',
            tabStage:null,
            displayStage:null,
            activeEventHandler:function(){},
            deactiveEventHandler:function(){},
            construct:function(/*object*/param){
                this.name = param.name;
                this.activeStyleName = param.activeStyleName;
                this.deactiveStyleName = param.deactiveStyleName;
                this.tabStage = param.tabStage;
                this.displayStage = param.displayStage;
                if(param.activeEventHandler)
                    this.activeEventHandler = param.activeEventHandler;
                if(param.deactiveEventHandler)
                    this.deactiveEventHandler = param.deactiveEventHandler;
            }
        })    
    )
);
$package('difc.tabbar',
    $class('TabbarManager').$define(
        $static({
            tabs:{},
            run:function(){
                var i=0;
                for(;i<arguments.length;++i){
                    var tab = arguments[i];
                    if(tab){
                        switch(tab.action){
                            case 'active':
                                tab.tabStage.className = tab.activeStyleName;
                                tab.displayStage.style.display='';
                                tab.activeEventHandler();
                                break;
                            case 'deactive':
                                tab.tabStage.className = tab.deactiveStyleName;
                                tab.displayStage.style.display='none';
                                tab.deactiveEventHandler();
                                break;
                        }
                    }
                }
            },
            addTab:function(/*Tab*/tab){
                if(tab)
                    difc.tabbar.TabbarManager.tabs[tab.name] = tab;
            },
            getTab:function(/*string*/name, /*string*/action){
                if(difc.tabbar.TabbarManager.tabs[name]){
                    difc.tabbar.TabbarManager.tabs[name].action = action;
                    return difc.tabbar.TabbarManager.tabs[name];
                }
                return null;
            }
        })    
    )
);

