/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){
    var B=YAHOO.util,C=B.Dom,H=B.Event,F=window.document,J="active",D="activeIndex",E="activeTab",A="contentEl",G="element",I=function(L,K){
        K=K||{};

        if(arguments.length==1&&!YAHOO.lang.isString(L)&&!L.nodeName){
            K=L;
            L=K.element||null;
        }
        if(!L&&!K.element){
            L=this._createTabViewElement(K);
        }
        I.superclass.constructor.call(this,L,K);
    };

    YAHOO.extend(I,B.Element,{
        CLASSNAME:"yui-navset",
        TAB_PARENT_CLASSNAME:"yui-nav",
        CONTENT_PARENT_CLASSNAME:"yui-content",
        _tabParent:null,
        _contentParent:null,
        addTab:function(P,L){
            var N=this.get("tabs"),Q=this.getTab(L),R=this._tabParent,K=this._contentParent,M=P.get(G),O=P.get(A);
            if(!N){
                this._queue[this._queue.length]=["addTab",arguments];
                return false;
            }
            L=(L===undefined)?N.length:L;
            N.splice(L,0,P);
            if(Q){
                R.insertBefore(M,Q.get(G));
            }else{
                R.appendChild(M);
            }
            if(O&&!C.isAncestor(K,O)){
                K.appendChild(O);
            }
            if(!P.get(J)){
                P.set("contentVisible",false,true);
            }else{
                this.set(E,P,true);
                this.set("activeIndex",L,true);
            }
            this._initTabEvents(P);
        },
        _initTabEvents:function(K){
            K.addListener(K.get("activationEvent"),K._onActivate,this,K);
            K.addListener(K.get("activationEventChange"),K._onActivationEventChange,this,K);
        },
        _removeTabEvents:function(K){
            K.removeListener(K.get("activationEvent"),K._onActivate,this,K);
            K.removeListener("activationEventChange",K._onActivationEventChange,this,K);
        },
        DOMEventHandler:function(P){
            var Q=H.getTarget(P),S=this._tabParent,R=this.get("tabs"),M,L,K;
            if(C.isAncestor(S,Q)){
                for(var N=0,O=R.length;N<O;N++){
                    L=R[N].get(G);
                    K=R[N].get(A);
                    if(Q==L||C.isAncestor(L,Q)){
                        M=R[N];
                        break;
                    }
                }
                if(M){
                    M.fireEvent(P.type,P);
                }
            }
        },
        getTab:function(K){
            return this.get("tabs")[K];
        },
        getTabIndex:function(O){
            var L=null,N=this.get("tabs");
            for(var M=0,K=N.length;M<K;++M){
                if(O==N[M]){
                    L=M;
                    break;
                }
            }
            return L;
        },
        removeTab:function(M){
            var L=this.get("tabs").length,K=this.getTabIndex(M);
            if(M===this.get(E)){
                if(L>1){
                    if(K+1===L){
                        this.set(D,K-1);
                    }else{
                        this.set(D,K+1);
                    }
                }else{
                    this.set(E,null);
                }
            }
            this._removeTabEvents(M);
            this._tabParent.removeChild(M.get(G));
            this._contentParent.removeChild(M.get(A));
            this._configs.tabs.value.splice(K,1);
            M.fireEvent("remove",{
                type:"remove",
                tabview:this
            });
        },
        toString:function(){
            var K=this.get("id")||this.get("tagName");
            return"TabView "+K;
        },
        contentTransition:function(L,K){
            if(L){
                L.set("contentVisible",true);
            }
            if(K){
                K.set("contentVisible",false);
            }
        },
        initAttributes:function(K){
            I.superclass.initAttributes.call(this,K);
            if(!K.orientation){
                K.orientation="top";
            }
            var M=this.get(G);
            if(!C.hasClass(M,this.CLASSNAME)){
                C.addClass(M,this.CLASSNAME);
            }
            this.setAttributeConfig("tabs",{
                value:[],
                readOnly:true
            });
            this._tabParent=this.getElementsByClassName(this.TAB_PARENT_CLASSNAME,"ul")[0]||this._createTabParent();
            this._contentParent=this.getElementsByClassName(this.CONTENT_PARENT_CLASSNAME,"div")[0]||this._createContentParent();
            this.setAttributeConfig("orientation",{
                value:K.orientation,
                method:function(N){
                    var O=this.get("orientation");
                    this.addClass("yui-navset-"+N);
                    if(O!=N){
                        this.removeClass("yui-navset-"+O);
                    }
                    if(N==="bottom"){
                        this.appendChild(this._tabParent);
                    }
                }
            });
            this.setAttributeConfig(D,{
                value:K.activeIndex,
                validator:function(O){
                    var N=true;
                    if(O&&this.getTab(O).get("disabled")){
                        N=false;
                    }
                    return N;
                }
            });
            this.setAttributeConfig(E,{
                value:K.activeTab,
                method:function(O){
                    var N=this.get(E);
                    if(O){
                        O.set(J,true);
                    }
                    if(N&&N!==O){
                        N.set(J,false);
                    }
                    if(N&&O!==N){
                        this.contentTransition(O,N);
                    }else{
                        if(O){
                            O.set("contentVisible",true);
                        }
                    }
                },
                validator:function(O){
                    var N=true;
                    if(O&&O.get("disabled")){
                        N=false;
                    }
                    return N;
                }
            });
            this.on("activeTabChange",this._onActiveTabChange);
            this.on("activeIndexChange",this._onActiveIndexChange);
            if(this._tabParent){
                this._initTabs();
            }
            this.DOM_EVENTS.submit=false;
            this.DOM_EVENTS.focus=false;
            this.DOM_EVENTS.blur=false;
            for(var L in this.DOM_EVENTS){
                if(YAHOO.lang.hasOwnProperty(this.DOM_EVENTS,L)){
                    this.addListener.call(this,L,this.DOMEventHandler);
                }
            }
        },
        deselectTab:function(K){
            if(this.getTab(K)===this.get("activeTab")){
                this.set("activeTab",null);
            }
        },
        selectTab:function(K){
            this.set("activeTab",this.getTab(K));
        },
        _onActiveTabChange:function(M){
            var K=this.get(D),L=this.getTabIndex(M.newValue);
            if(K!==L){
                if(!(this.set(D,L))){
                    this.set(E,M.prevValue);
                }
            }
        },
        _onActiveIndexChange:function(K){
            if(K.newValue!==this.getTabIndex(this.get(E))){
                if(!(this.set(E,this.getTab(K.newValue)))){
                    this.set(D,K.prevValue);
                }
            }
        },
        _initTabs:function(){
            var P=C.getChildren(this._tabParent),N=C.getChildren(this._contentParent),M=this.get(D),Q,L,R;
            for(var O=0,K=P.length;O<K;++O){
                L={};

                if(N[O]){
                    L.contentEl=N[O];
                }
                Q=new YAHOO.widget.Tab(P[O],L);
                this.addTab(Q);
                if(Q.hasClass(Q.ACTIVE_CLASSNAME)){
                    R=Q;
                }
            }
            if(M){
                this.set(E,this.getTab(M));
            }else{
                this._configs.activeTab.value=R;
                this._configs.activeIndex.value=this.getTabIndex(R);
            }
        },
        _createTabViewElement:function(K){
            var L=F.createElement("div");
            if(this.CLASSNAME){
                L.className=this.CLASSNAME;
            }
            return L;
        },
        _createTabParent:function(K){
            var L=F.createElement("ul");
            if(this.TAB_PARENT_CLASSNAME){
                L.className=this.TAB_PARENT_CLASSNAME;
            }
            this.get(G).appendChild(L);
            return L;
        },
        _createContentParent:function(K){
            var L=F.createElement("div");
            if(this.CONTENT_PARENT_CLASSNAME){
                L.className=this.CONTENT_PARENT_CLASSNAME;
            }
            this.get(G).appendChild(L);
            return L;
        }
    });
    YAHOO.widget.TabView=I;
})();
(function(){
    var D=YAHOO.util,I=D.Dom,L=YAHOO.lang,M="activeTab",J="label",G="labelEl",Q="content",C="contentEl",O="element",P="cacheData",B="dataSrc",H="dataLoaded",A="dataTimeout",N="loadMethod",F="postData",K="disabled",E=function(S,R){
        R=R||{};

        if(arguments.length==1&&!L.isString(S)&&!S.nodeName){
            R=S;
            S=R.element;
        }
        if(!S&&!R.element){
            S=this._createTabElement(R);
        }
        this.loadHandler={
            success:function(T){
                this.set(Q,T.responseText);
            },
            failure:function(T){}
        };

        E.superclass.constructor.call(this,S,R);
        this.DOM_EVENTS={};

    };

    YAHOO.extend(E,YAHOO.util.Element,{
        LABEL_TAGNAME:"em",
        ACTIVE_CLASSNAME:"selected",
        HIDDEN_CLASSNAME:"yui-hidden",
        ACTIVE_TITLE:"active",
        DISABLED_CLASSNAME:K,
        LOADING_CLASSNAME:"loading",
        dataConnection:null,
        loadHandler:null,
        _loading:false,
        toString:function(){
            var R=this.get(O),S=R.id||R.tagName;
            return"Tab "+S;
        },
        initAttributes:function(R){
            R=R||{};

            E.superclass.initAttributes.call(this,R);
            this.setAttributeConfig("activationEvent",{
                value:R.activationEvent||"click"
            });
            this.setAttributeConfig(G,{
                value:R[G]||this._getLabelEl(),
                method:function(S){
                    S=I.get(S);
                    var T=this.get(G);
                    if(T){
                        if(T==S){
                            return false;
                        }
                        T.parentNode.replaceChild(S,T);
                        this.set(J,S.innerHTML);
                    }
                }
            });
            this.setAttributeConfig(J,{
                value:R.label||this._getLabel(),
                method:function(T){
                    var S=this.get(G);
                    if(!S){
                        this.set(G,this._createLabelEl());
                    }
                    S.innerHTML=T;
                }
            });
            this.setAttributeConfig(C,{
                value:R[C]||document.createElement("div"),
                method:function(S){
                    S=I.get(S);
                    var T=this.get(C);
                    if(T){
                        if(T===S){
                            return false;
                        }
                        if(!this.get("selected")){
                            I.addClass(S,this.HIDDEN_CLASSNAME);
                        }
                        T.parentNode.replaceChild(S,T);
                        this.set(Q,S.innerHTML);
                    }
                }
            });
            this.setAttributeConfig(Q,{
                value:R[Q],
                method:function(S){
                    this.get(C).innerHTML=S;
                }
            });
            this.setAttributeConfig(B,{
                value:R.dataSrc
            });
            this.setAttributeConfig(P,{
                value:R.cacheData||false,
                validator:L.isBoolean
            });
            this.setAttributeConfig(N,{
                value:R.loadMethod||"GET",
                validator:L.isString
            });
            this.setAttributeConfig(H,{
                value:false,
                validator:L.isBoolean,
                writeOnce:true
            });
            this.setAttributeConfig(A,{
                value:R.dataTimeout||null,
                validator:L.isNumber
            });
            this.setAttributeConfig(F,{
                value:R.postData||null
            });
            this.setAttributeConfig("active",{
                value:R.active||this.hasClass(this.ACTIVE_CLASSNAME),
                method:function(S){
                    if(S===true){
                        this.addClass(this.ACTIVE_CLASSNAME);
                        this.set("title",this.ACTIVE_TITLE);
                    }else{
                        this.removeClass(this.ACTIVE_CLASSNAME);
                        this.set("title","");
                    }
                },
                validator:function(S){
                    return L.isBoolean(S)&&!this.get(K);
                }
            });
            this.setAttributeConfig(K,{
                value:R.disabled||this.hasClass(this.DISABLED_CLASSNAME),
                method:function(S){
                    if(S===true){
                        I.addClass(this.get(O),this.DISABLED_CLASSNAME);
                    }else{
                        I.removeClass(this.get(O),this.DISABLED_CLASSNAME);
                    }
                },
                validator:L.isBoolean
            });
            this.setAttributeConfig("href",{
                value:R.href||this.getElementsByTagName("a")[0].getAttribute("href",2)||"#",
                method:function(S){
                    this.getElementsByTagName("a")[0].href=S;
                },
                validator:L.isString
            });
            this.setAttributeConfig("contentVisible",{
                value:R.contentVisible,
                method:function(S){
                    if(S){
                        I.removeClass(this.get(C),this.HIDDEN_CLASSNAME);
                        if(this.get(B)){
                            if(!this._loading&&!(this.get(H)&&this.get(P))){
                                this._dataConnect();
                            }
                        }
                    }else{
                        I.addClass(this.get(C),this.HIDDEN_CLASSNAME);
                    }
                },
                validator:L.isBoolean
            });
        },
        _dataConnect:function(){
            if(!D.Connect){
                return false;
            }
            I.addClass(this.get(C).parentNode,this.LOADING_CLASSNAME);
            this._loading=true;
            this.dataConnection=D.Connect.asyncRequest(this.get(N),this.get(B),{
                success:function(R){
                    this.loadHandler.success.call(this,R);
                    this.set(H,true);
                    this.dataConnection=null;
                    I.removeClass(this.get(C).parentNode,this.LOADING_CLASSNAME);
                    this._loading=false;
                },
                failure:function(R){
                    this.loadHandler.failure.call(this,R);
                    this.dataConnection=null;
                    I.removeClass(this.get(C).parentNode,this.LOADING_CLASSNAME);
                    this._loading=false;
                },
                scope:this,
                timeout:this.get(A)
            },this.get(F));
        },
        _createTabElement:function(R){
            var V=document.createElement("li"),S=document.createElement("a"),U=R.label||null,T=R.labelEl||null;
            S.href=R.href||"#";
            V.appendChild(S);
            if(T){
                if(!U){
                    U=this._getLabel();
                }
            }else{
                T=this._createLabelEl();
            }
            S.appendChild(T);
            return V;
        },
        _getLabelEl:function(){
            return this.getElementsByTagName(this.LABEL_TAGNAME)[0];
        },
        _createLabelEl:function(){
            var R=document.createElement(this.LABEL_TAGNAME);
            return R;
        },
        _getLabel:function(){
            var R=this.get(G);
            if(!R){
                return undefined;
            }
            return R.innerHTML;
        },
        _onActivate:function(U,T){
            var S=this,R=false;
            D.Event.preventDefault(U);
            if(S===T.get(M)){
                R=true;
            }
            T.set(M,S,R);
        },
        _onActivationEventChange:function(S){
            var R=this;
            if(S.prevValue!=S.newValue){
                R.removeListener(S.prevValue,R._onActivate);
                R.addListener(S.newValue,R._onActivate,this,R);
            }
        }
    });
    YAHOO.widget.Tab=E;
})();
YAHOO.register("tabview",YAHOO.widget.TabView,{
    version:"2.8.0r4",
    build:"2449"
});