Type.registerNamespace("Nammedia.Control");
Nammedia.Control.Tabs=function(){
    Nammedia.Control.Tabs.initializeBase(this);
    this._heads=[];
    this._contents=[];
    this._etrig=[];
    this._ci=0;
    // switch tab delegate
    this._del_sw=null;
};
Nammedia.Control.Tabs.prototype={
    // heads
    get_hs:function(){return this._heads;},
    set_hs:function(val){this._heads=val;},
    
    // contents
    get_cs:function(){return this._contents;},
    set_cs:function(val){this._contents=val;},
    
    // trigger events
    get_etrig:function(){return this._etrig;},
    set_etrig:function(val){this._etrig=val}, 
    
    // css headselected
    get_cSH:function(){return this._cSH;},
    set_cSH:function(val){this._cSH=val;},
    
    // css normal header    
    get_cNH:function(){return this._cNH;},
    set_cNH:function(val){this._cNH=val;},
    
    // current tab id
    get_ci:function(){return this._ci;},
    set_ci:function(val){this._ci=val;},
    
    _switch_tab:function(evn){
        var tabid=-1;
        for(var i=0; i<this._heads.length; i++)
            if(this._heads[i].id==evn.target.id){
                tabid=i;
                break;
            }
        if(tabid<this._heads.length && tabid>=0 && tabid!=this._ci){
            this._active_tab(tabid);                
            this._hide_tab(this._ci);
            this._ci=tabid;
        }
    },
    _active_tab:function(tabid){
        this._heads[tabid].className=this._cSH;
        this._contents[tabid].style.display="block";
    },
    _hide_tab:function(tabid){
        this._heads[tabid].className=this._cNH;
        this._contents[tabid].style.display="none";
    },
    initialize:function(){
        Nammedia.Control.Tabs.callBaseMethod(this,"initialize");        
        var i;
        this._del_sw=Function.createDelegate(this,this._switch_tab);
        for(i=0; i<this._etrig.length; i++){
            var j=0;
            for(j=0; j<this._heads.length; j++)
                $addHandler(this._heads[j],this._etrig[i],this._del_sw);
        }
        // normalize presentation
        for(i=0; i<this._heads.length; i++){
            if(this._ci==i)
                this._active_tab(this._ci);
            else
                this._hide_tab(i);
        }
    },
    dispose:function(){
        Nammedia.Control.Tabs.callBaseMethod(this,"dispose");        
    }
};

Nammedia.Control.Tabs.registerClass("Nammedia.Control.Tabs",Sys.Component);
