/*
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 G=YAHOO.util.Dom,M=YAHOO.util.Event,I=YAHOO.lang,L=YAHOO.env.ua,B=YAHOO.widget.Overlay,J=YAHOO.widget.Menu,D={},K=null,E=null,C=null;
    function F(O,N,R,P){
        var S,Q;
        if(I.isString(O)&&I.isString(N)){
            if(L.ie){
                Q='<input type="'+O+'" name="'+N+'"';
                if(P){
                    Q+=" checked";
                }
                Q+=">";
                S=document.createElement(Q);
            }else{
                S=document.createElement("input");
                S.name=N;
                S.type=O;
                if(P){
                    S.checked=true;
                }
            }
            S.value=R;
    }
    return S;
}
function H(O,V){
    var N=O.nodeName.toUpperCase(),S=(this.CLASS_NAME_PREFIX+this.CSS_CLASS_NAME),T=this,U,P,Q;
    function W(X){
        if(!(X in V)){
            U=O.getAttributeNode(X);
            if(U&&("value" in U)){
                V[X]=U.value;
            }
        }
    }
function R(){
    W("type");
    if(V.type=="button"){
        V.type="push";
    }
    if(!("disabled" in V)){
        V.disabled=O.disabled;
    }
    W("name");
    W("value");
    W("title");
}
switch(N){
    case"A":
        V.type="link";
        W("href");
        W("target");
        break;
    case"INPUT":
        R();
        if(!("checked" in V)){
        V.checked=O.checked;
    }
    break;
    case"BUTTON":
        R();
        P=O.parentNode.parentNode;
        if(G.hasClass(P,S+"-checked")){
        V.checked=true;
    }
    if(G.hasClass(P,S+"-disabled")){
        V.disabled=true;
    }
    O.removeAttribute("value");
        O.setAttribute("type","button");
        break;
}
O.removeAttribute("id");
    O.removeAttribute("name");
    if(!("tabindex" in V)){
    V.tabindex=O.tabIndex;
}
if(!("label" in V)){
    Q=N=="INPUT"?O.value:O.innerHTML;
    if(Q&&Q.length>0){
        V.label=Q;
    }
}
}
function A(P){
    var O=P.attributes,N=O.srcelement,R=N.nodeName.toUpperCase(),Q=this;
    if(R==this.NODE_NAME){
        P.element=N;
        P.id=N.id;
        G.getElementsBy(function(S){
            switch(S.nodeName.toUpperCase()){
                case"BUTTON":case"A":case"INPUT":
                    H.call(Q,S,O);
                    break;
            }
        },"*",N);
}else{
    switch(R){
        case"BUTTON":case"A":case"INPUT":
            H.call(this,N,O);
            break;
    }
}
}
YAHOO.widget.Button=function(R,O){
    if(!B&&YAHOO.widget.Overlay){
        B=YAHOO.widget.Overlay;
    }
    if(!J&&YAHOO.widget.Menu){
        J=YAHOO.widget.Menu;
    }
    var Q=YAHOO.widget.Button.superclass.constructor,P,N;
    if(arguments.length==1&&!I.isString(R)&&!R.nodeName){
        if(!R.id){
            R.id=G.generateId();
        }
        Q.call(this,(this.createButtonElement(R.type)),R);
    }else{
        P={
            element:null,
            attributes:(O||{})
            };

        if(I.isString(R)){
            N=G.get(R);
            if(N){
                if(!P.attributes.id){
                    P.attributes.id=R;
                }
                P.attributes.srcelement=N;
                A.call(this,P);
                if(!P.element){
                    P.element=this.createButtonElement(P.attributes.type);
                }
                Q.call(this,P.element,P.attributes);
            }
        }else{
        if(R.nodeName){
            if(!P.attributes.id){
                if(R.id){
                    P.attributes.id=R.id;
                }else{
                    P.attributes.id=G.generateId();
                }
            }
            P.attributes.srcelement=R;
        A.call(this,P);
        if(!P.element){
            P.element=this.createButtonElement(P.attributes.type);
        }
        Q.call(this,P.element,P.attributes);
    }
}
}
};

YAHOO.extend(YAHOO.widget.Button,YAHOO.util.Element,{
    _button:null,
    _menu:null,
    _hiddenFields:null,
    _onclickAttributeValue:null,
    _activationKeyPressed:false,
    _activationButtonPressed:false,
    _hasKeyEventHandlers:false,
    _hasMouseEventHandlers:false,
    _nOptionRegionX:0,
    CLASS_NAME_PREFIX:"yui-",
    NODE_NAME:"SPAN",
    CHECK_ACTIVATION_KEYS:[32],
    ACTIVATION_KEYS:[13,32],
    OPTION_AREA_WIDTH:20,
    CSS_CLASS_NAME:"button",
    _setType:function(N){
        if(N=="split"){
            this.on("option",this._onOption);
        }
    },
_setLabel:function(O){
    this._button.innerHTML=O;
    var P,N=L.gecko;
    if(N&&N<1.9&&G.inDocument(this.get("element"))){
        P=(this.CLASS_NAME_PREFIX+this.CSS_CLASS_NAME);
        this.removeClass(P);
        I.later(0,this,this.addClass,P);
    }
},
_setTabIndex:function(N){
    this._button.tabIndex=N;
},
_setTitle:function(N){
    if(this.get("type")!="link"){
        this._button.title=N;
    }
},
_setDisabled:function(N){
    if(this.get("type")!="link"){
        if(N){
            if(this._menu){
                this._menu.hide();
            }
            if(this.hasFocus()){
                this.blur();
            }
            this._button.setAttribute("disabled","disabled");
            this.addStateCSSClasses("disabled");
            this.removeStateCSSClasses("hover");
            this.removeStateCSSClasses("active");
            this.removeStateCSSClasses("focus");
        }else{
            this._button.removeAttribute("disabled");
            this.removeStateCSSClasses("disabled");
        }
    }
},
_setHref:function(N){
    if(this.get("type")=="link"){
        this._button.href=N;
    }
},
_setTarget:function(N){
    if(this.get("type")=="link"){
        this._button.setAttribute("target",N);
    }
},
_setChecked:function(N){
    var O=this.get("type");
    if(O=="checkbox"||O=="radio"){
        if(N){
            this.addStateCSSClasses("checked");
        }else{
            this.removeStateCSSClasses("checked");
        }
    }
},
_setMenu:function(U){
    var P=this.get("lazyloadmenu"),R=this.get("element"),N,W=false,X,O,Q;
    function V(){
        X.render(R.parentNode);
        this.removeListener("appendTo",V);
    }
    function T(){
        X.cfg.queueProperty("container",R.parentNode);
        this.removeListener("appendTo",T);
    }
    function S(){
        var Y;
        if(X){
            G.addClass(X.element,this.get("menuclassname"));
            G.addClass(X.element,this.CLASS_NAME_PREFIX+this.get("type")+"-button-menu");
            X.showEvent.subscribe(this._onMenuShow,null,this);
            X.hideEvent.subscribe(this._onMenuHide,null,this);
            X.renderEvent.subscribe(this._onMenuRender,null,this);
            if(J&&X instanceof J){
                if(P){
                    Y=this.get("container");
                    if(Y){
                        X.cfg.queueProperty("container",Y);
                    }else{
                        this.on("appendTo",T);
                    }
                }
                X.cfg.queueProperty("clicktohide",false);
            X.keyDownEvent.subscribe(this._onMenuKeyDown,this,true);
            X.subscribe("click",this._onMenuClick,this,true);
            this.on("selectedMenuItemChange",this._onSelectedMenuItemChange);
            Q=X.srcElement;
            if(Q&&Q.nodeName.toUpperCase()=="SELECT"){
                Q.style.display="none";
                Q.parentNode.removeChild(Q);
            }
        }else{
        if(B&&X instanceof B){
            if(!K){
                K=new YAHOO.widget.OverlayManager();
            }
            K.register(X);
        }
    }
    this._menu=X;
if(!W&&!P){
    if(G.inDocument(R)){
        X.render(R.parentNode);
    }else{
        this.on("appendTo",V);
    }
}
}
}
if(B){
    if(J){
        N=J.prototype.CSS_CLASS_NAME;
    }
    if(U&&J&&(U instanceof J)){
        X=U;
        W=true;
        S.call(this);
    }else{
        if(B&&U&&(U instanceof B)){
            X=U;
            W=true;
            X.cfg.queueProperty("visible",false);
            S.call(this);
        }else{
            if(J&&I.isArray(U)){
                X=new J(G.generateId(),{
                    lazyload:P,
                    itemdata:U
                });
                this._menu=X;
                this.on("appendTo",S);
            }else{
                if(I.isString(U)){
                    O=G.get(U);
                    if(O){
                        if(J&&G.hasClass(O,N)||O.nodeName.toUpperCase()=="SELECT"){
                            X=new J(U,{
                                lazyload:P
                            });
                            S.call(this);
                        }else{
                            if(B){
                                X=new B(U,{
                                    visible:false
                                });
                                S.call(this);
                            }
                        }
                    }
            }else{
        if(U&&U.nodeName){
            if(J&&G.hasClass(U,N)||U.nodeName.toUpperCase()=="SELECT"){
                X=new J(U,{
                    lazyload:P
                });
                S.call(this);
            }else{
                if(B){
                    if(!U.id){
                        G.generateId(U);
                    }
                    X=new B(U,{
                        visible:false
                    });
                    S.call(this);
                }
            }
        }
}
}
}
}
}
},
_setOnClick:function(N){
    if(this._onclickAttributeValue&&(this._onclickAttributeValue!=N)){
        this.removeListener("click",this._onclickAttributeValue.fn);
        this._onclickAttributeValue=null;
    }
    if(!this._onclickAttributeValue&&I.isObject(N)&&I.isFunction(N.fn)){
        this.on("click",N.fn,N.obj,N.scope);
        this._onclickAttributeValue=N;
    }
},
_isActivationKey:function(N){
    var S=this.get("type"),O=(S=="checkbox"||S=="radio")?this.CHECK_ACTIVATION_KEYS:this.ACTIVATION_KEYS,Q=O.length,R=false,P;
    if(Q>0){
        P=Q-1;
        do{
            if(N==O[P]){
                R=true;
                break;
            }
        }while(P--);
}
return R;
},
_isSplitButtonOptionKey:function(P){
    var O=(M.getCharCode(P)==40);
    var N=function(Q){
        M.preventDefault(Q);
        this.removeListener("keypress",N);
    };

    if(O){
        if(L.opera){
            this.on("keypress",N);
        }
        M.preventDefault(P);
    }
    return O;
},
_addListenersToForm:function(){
    var T=this.getForm(),S=YAHOO.widget.Button.onFormKeyPress,R,N,Q,P,O;
    if(T){
        M.on(T,"reset",this._onFormReset,null,this);
        M.on(T,"submit",this._onFormSubmit,null,this);
        N=this.get("srcelement");
        if(this.get("type")=="submit"||(N&&N.type=="submit")){
            Q=M.getListeners(T,"keypress");
            R=false;
            if(Q){
                P=Q.length;
                if(P>0){
                    O=P-1;
                    do{
                        if(Q[O].fn==S){
                            R=true;
                            break;
                        }
                    }while(O--);
            }
        }
        if(!R){
        M.on(T,"keypress",S);
    }
}
}
},
_showMenu:function(R){
    if(YAHOO.widget.MenuManager){
        YAHOO.widget.MenuManager.hideVisible();
    }
    if(K){
        K.hideAll();
    }
    var N=this._menu,Q=this.get("menualignment"),P=this.get("focusmenu"),O;
    if(this._renderedMenu){
        N.cfg.setProperty("context",[this.get("element"),Q[0],Q[1]]);
        N.cfg.setProperty("preventcontextoverlap",true);
        N.cfg.setProperty("constraintoviewport",true);
    }else{
        N.cfg.queueProperty("context",[this.get("element"),Q[0],Q[1]]);
        N.cfg.queueProperty("preventcontextoverlap",true);
        N.cfg.queueProperty("constraintoviewport",true);
    }
    this.focus();
    if(J&&N&&(N instanceof J)){
        O=N.focus;
        N.focus=function(){};

        if(this._renderedMenu){
            N.cfg.setProperty("minscrollheight",this.get("menuminscrollheight"));
            N.cfg.setProperty("maxheight",this.get("menumaxheight"));
        }else{
            N.cfg.queueProperty("minscrollheight",this.get("menuminscrollheight"));
            N.cfg.queueProperty("maxheight",this.get("menumaxheight"));
        }
        N.show();
        N.focus=O;
        N.align();
        if(R.type=="mousedown"){
            M.stopPropagation(R);
        }
        if(P){
            N.focus();
        }
    }else{
    if(B&&N&&(N instanceof B)){
        if(!this._renderedMenu){
            N.render(this.get("element").parentNode);
        }
        N.show();
        N.align();
    }
}
},
_hideMenu:function(){
    var N=this._menu;
    if(N){
        N.hide();
    }
},
_onMouseOver:function(O){
    var Q=this.get("type"),N,P;
    if(Q==="split"){
        N=this.get("element");
        P=(G.getX(N)+(N.offsetWidth-this.OPTION_AREA_WIDTH));
        this._nOptionRegionX=P;
    }
    if(!this._hasMouseEventHandlers){
        if(Q==="split"){
            this.on("mousemove",this._onMouseMove);
        }
        this.on("mouseout",this._onMouseOut);
        this._hasMouseEventHandlers=true;
    }
    this.addStateCSSClasses("hover");
    if(Q==="split"&&(M.getPageX(O)>P)){
        this.addStateCSSClasses("hoveroption");
    }
    if(this._activationButtonPressed){
        this.addStateCSSClasses("active");
    }
    if(this._bOptionPressed){
        this.addStateCSSClasses("activeoption");
    }
    if(this._activationButtonPressed||this._bOptionPressed){
        M.removeListener(document,"mouseup",this._onDocumentMouseUp);
    }
},
_onMouseMove:function(N){
    var O=this._nOptionRegionX;
    if(O){
        if(M.getPageX(N)>O){
            this.addStateCSSClasses("hoveroption");
        }else{
            this.removeStateCSSClasses("hoveroption");
        }
    }
},
_onMouseOut:function(N){
    var O=this.get("type");
    this.removeStateCSSClasses("hover");
    if(O!="menu"){
        this.removeStateCSSClasses("active");
    }
    if(this._activationButtonPressed||this._bOptionPressed){
        M.on(document,"mouseup",this._onDocumentMouseUp,null,this);
    }
    if(O==="split"&&(M.getPageX(N)>this._nOptionRegionX)){
        this.removeStateCSSClasses("hoveroption");
    }
},
_onDocumentMouseUp:function(P){
    this._activationButtonPressed=false;
    this._bOptionPressed=false;
    var Q=this.get("type"),N,O;
    if(Q=="menu"||Q=="split"){
        N=M.getTarget(P);
        O=this._menu.element;
        if(N!=O&&!G.isAncestor(O,N)){
            this.removeStateCSSClasses((Q=="menu"?"active":"activeoption"));
            this._hideMenu();
        }
    }
    M.removeListener(document,"mouseup",this._onDocumentMouseUp);
},
_onMouseDown:function(P){
    var Q,O=true;
    function N(){
        this._hideMenu();
        this.removeListener("mouseup",N);
    }
    if((P.which||P.button)==1){
        if(!this.hasFocus()){
            this.focus();
        }
        Q=this.get("type");
        if(Q=="split"){
            if(M.getPageX(P)>this._nOptionRegionX){
                this.fireEvent("option",P);
                O=false;
            }else{
                this.addStateCSSClasses("active");
                this._activationButtonPressed=true;
            }
        }else{
        if(Q=="menu"){
            if(this.isActive()){
                this._hideMenu();
                this._activationButtonPressed=false;
            }else{
                this._showMenu(P);
                this._activationButtonPressed=true;
            }
        }else{
        this.addStateCSSClasses("active");
        this._activationButtonPressed=true;
    }
}
if(Q=="split"||Q=="menu"){
    this._hideMenuTimer=I.later(250,this,this.on,["mouseup",N]);
}
}
return O;
},
_onMouseUp:function(P){
    var Q=this.get("type"),N=this._hideMenuTimer,O=true;
    if(N){
        N.cancel();
    }
    if(Q=="checkbox"||Q=="radio"){
        this.set("checked",!(this.get("checked")));
    }
    this._activationButtonPressed=false;
    if(Q!="menu"){
        this.removeStateCSSClasses("active");
    }
    if(Q=="split"&&M.getPageX(P)>this._nOptionRegionX){
        O=false;
    }
    return O;
},
_onFocus:function(O){
    var N;
    this.addStateCSSClasses("focus");
    if(this._activationKeyPressed){
        this.addStateCSSClasses("active");
    }
    C=this;
    if(!this._hasKeyEventHandlers){
        N=this._button;
        M.on(N,"blur",this._onBlur,null,this);
        M.on(N,"keydown",this._onKeyDown,null,this);
        M.on(N,"keyup",this._onKeyUp,null,this);
        this._hasKeyEventHandlers=true;
    }
    this.fireEvent("focus",O);
},
_onBlur:function(N){
    this.removeStateCSSClasses("focus");
    if(this.get("type")!="menu"){
        this.removeStateCSSClasses("active");
    }
    if(this._activationKeyPressed){
        M.on(document,"keyup",this._onDocumentKeyUp,null,this);
    }
    C=null;
    this.fireEvent("blur",N);
},
_onDocumentKeyUp:function(N){
    if(this._isActivationKey(M.getCharCode(N))){
        this._activationKeyPressed=false;
        M.removeListener(document,"keyup",this._onDocumentKeyUp);
    }
},
_onKeyDown:function(O){
    var N=this._menu;
    if(this.get("type")=="split"&&this._isSplitButtonOptionKey(O)){
        this.fireEvent("option",O);
    }else{
        if(this._isActivationKey(M.getCharCode(O))){
            if(this.get("type")=="menu"){
                this._showMenu(O);
            }else{
                this._activationKeyPressed=true;
                this.addStateCSSClasses("active");
            }
        }
    }
if(N&&N.cfg.getProperty("visible")&&M.getCharCode(O)==27){
    N.hide();
    this.focus();
}
},
_onKeyUp:function(N){
    var O;
    if(this._isActivationKey(M.getCharCode(N))){
        O=this.get("type");
        if(O=="checkbox"||O=="radio"){
            this.set("checked",!(this.get("checked")));
        }
        this._activationKeyPressed=false;
        if(this.get("type")!="menu"){
            this.removeStateCSSClasses("active");
        }
    }
},
_onClick:function(P){
    var R=this.get("type"),Q,N,O;
    switch(R){
        case"submit":
            if(P.returnValue!==false){
            this.submitForm();
        }
        break;
        case"reset":
            Q=this.getForm();
            if(Q){
            Q.reset();
        }
        break;
        case"split":
            if(this._nOptionRegionX>0&&(M.getPageX(P)>this._nOptionRegionX)){
            O=false;
        }else{
            this._hideMenu();
            N=this.get("srcelement");
            if(N&&N.type=="submit"&&P.returnValue!==false){
                this.submitForm();
            }
        }
        break;
}
return O;
},
_onDblClick:function(O){
    var N=true;
    if(this.get("type")=="split"&&M.getPageX(O)>this._nOptionRegionX){
        N=false;
    }
    return N;
},
_onAppendTo:function(N){
    I.later(0,this,this._addListenersToForm);
},
_onFormReset:function(O){
    var P=this.get("type"),N=this._menu;
    if(P=="checkbox"||P=="radio"){
        this.resetValue("checked");
    }
    if(J&&N&&(N instanceof J)){
        this.resetValue("selectedMenuItem");
    }
},
_onFormSubmit:function(N){
    this.createHiddenFields();
},
_onDocumentMouseDown:function(Q){
    var N=M.getTarget(Q),P=this.get("element"),O=this._menu.element;
    if(N!=P&&!G.isAncestor(P,N)&&N!=O&&!G.isAncestor(O,N)){
        this._hideMenu();
        if(L.ie&&N.focus){
            N.setActive();
        }
        M.removeListener(document,"mousedown",this._onDocumentMouseDown);
    }
},
_onOption:function(N){
    if(this.hasClass(this.CLASS_NAME_PREFIX+"split-button-activeoption")){
        this._hideMenu();
        this._bOptionPressed=false;
    }else{
        this._showMenu(N);
        this._bOptionPressed=true;
    }
},
_onMenuShow:function(N){
    M.on(document,"mousedown",this._onDocumentMouseDown,null,this);
    var O=(this.get("type")=="split")?"activeoption":"active";
    this.addStateCSSClasses(O);
},
_onMenuHide:function(N){
    var O=(this.get("type")=="split")?"activeoption":"active";
    this.removeStateCSSClasses(O);
    if(this.get("type")=="split"){
        this._bOptionPressed=false;
    }
},
_onMenuKeyDown:function(P,O){
    var N=O[0];
    if(M.getCharCode(N)==27){
        this.focus();
        if(this.get("type")=="split"){
            this._bOptionPressed=false;
        }
    }
},
_onMenuRender:function(P){
    var S=this.get("element"),O=S.parentNode,N=this._menu,R=N.element,Q=N.srcElement,T;
    if(O!=R.parentNode){
        O.appendChild(R);
    }
    this._renderedMenu=true;
    if(Q&&Q.nodeName.toLowerCase()==="select"&&Q.value){
        T=N.getItem(Q.selectedIndex);
        this.set("selectedMenuItem",T,true);
        this._onSelectedMenuItemChange({
            newValue:T
        });
    }
},
_onMenuClick:function(O,N){
    var Q=N[1],P;
    if(Q){
        this.set("selectedMenuItem",Q);
        P=this.get("srcelement");
        if(P&&P.type=="submit"){
            this.submitForm();
        }
        this._hideMenu();
    }
},
_onSelectedMenuItemChange:function(O){
    var P=O.prevValue,Q=O.newValue,N=this.CLASS_NAME_PREFIX;
    if(P){
        G.removeClass(P.element,(N+"button-selectedmenuitem"));
    }
    if(Q){
        G.addClass(Q.element,(N+"button-selectedmenuitem"));
    }
},
_onLabelClick:function(N){
    this.focus();
    var O=this.get("type");
    if(O=="radio"||O=="checkbox"){
        this.set("checked",(!this.get("checked")));
    }
},
createButtonElement:function(N){
    var P=this.NODE_NAME,O=document.createElement(P);
    O.innerHTML="<"+P+' class="first-child">'+(N=="link"?"<a></a>":'<button type="button"></button>')+"</"+P+">";
    return O;
},
addStateCSSClasses:function(O){
    var P=this.get("type"),N=this.CLASS_NAME_PREFIX;
    if(I.isString(O)){
        if(O!="activeoption"&&O!="hoveroption"){
            this.addClass(N+this.CSS_CLASS_NAME+("-"+O));
        }
        this.addClass(N+P+("-button-"+O));
    }
},
removeStateCSSClasses:function(O){
    var P=this.get("type"),N=this.CLASS_NAME_PREFIX;
    if(I.isString(O)){
        this.removeClass(N+this.CSS_CLASS_NAME+("-"+O));
        this.removeClass(N+P+("-button-"+O));
    }
},
createHiddenFields:function(){
    this.removeHiddenFields();
    var V=this.getForm(),Z,O,S,X,Y,T,U,N,R,W,P,Q=false;
    if(V&&!this.get("disabled")){
        O=this.get("type");
        S=(O=="checkbox"||O=="radio");
        if((S&&this.get("checked"))||(E==this)){
            Z=F((S?O:"hidden"),this.get("name"),this.get("value"),this.get("checked"));
            if(Z){
                if(S){
                    Z.style.display="none";
                }
                V.appendChild(Z);
            }
        }
        X=this._menu;
    if(J&&X&&(X instanceof J)){
        Y=this.get("selectedMenuItem");
        P=X.srcElement;
        Q=(P&&P.nodeName.toUpperCase()=="SELECT");
        if(Y){
            U=(Y.value===null||Y.value==="")?Y.cfg.getProperty("text"):Y.value;
            T=this.get("name");
            if(Q){
                W=P.name;
            }else{
                if(T){
                    W=(T+"_options");
                }
            }
            if(U&&W){
            N=F("hidden",W,U);
            V.appendChild(N);
        }
    }else{
    if(Q){
        N=V.appendChild(P);
    }
}
}
if(Z&&N){
    this._hiddenFields=[Z,N];
}else{
    if(!Z&&N){
        this._hiddenFields=N;
    }else{
        if(Z&&!N){
            this._hiddenFields=Z;
        }
    }
}
R=this._hiddenFields;
}
return R;
},
removeHiddenFields:function(){
    var Q=this._hiddenFields,O,P;
    function N(R){
        if(G.inDocument(R)){
            R.parentNode.removeChild(R);
        }
    }
    if(Q){
    if(I.isArray(Q)){
        O=Q.length;
        if(O>0){
            P=O-1;
            do{
                N(Q[P]);
            }while(P--);
        }
    }else{
    N(Q);
}
this._hiddenFields=null;
}
},
submitForm:function(){
    var Q=this.getForm(),P=this.get("srcelement"),O=false,N;
    if(Q){
        if(this.get("type")=="submit"||(P&&P.type=="submit")){
            E=this;
        }
        if(L.ie){
            O=Q.fireEvent("onsubmit");
        }else{
            N=document.createEvent("HTMLEvents");
            N.initEvent("submit",true,true);
            O=Q.dispatchEvent(N);
        }
        if((L.ie||L.webkit)&&O){
            Q.submit();
        }
    }
    return O;
},
init:function(P,d){
    var V=d.type=="link"?"a":"button",a=d.srcelement,S=P.getElementsByTagName(V)[0],U;
    if(!S){
        U=P.getElementsByTagName("input")[0];
        if(U){
            S=document.createElement("button");
            S.setAttribute("type","button");
            U.parentNode.replaceChild(S,U);
        }
    }
    this._button=S;
YAHOO.widget.Button.superclass.init.call(this,P,d);
var T=this.get("id"),Z=T+"-button";
S.id=Z;
var X,Q;
var e=function(f){
    return(f.htmlFor===T);
};

var c=function(){
    Q.setAttribute((L.ie?"htmlFor":"for"),Z);
};

if(a&&this.get("type")!="link"){
    X=G.getElementsBy(e,"label");
    if(I.isArray(X)&&X.length>0){
        Q=X[0];
    }
}
D[T]=this;
var b=this.CLASS_NAME_PREFIX;
this.addClass(b+this.CSS_CLASS_NAME);
this.addClass(b+this.get("type")+"-button");
M.on(this._button,"focus",this._onFocus,null,this);
this.on("mouseover",this._onMouseOver);
this.on("mousedown",this._onMouseDown);
this.on("mouseup",this._onMouseUp);
this.on("click",this._onClick);
var R=this.get("onclick");
this.set("onclick",null);
this.set("onclick",R);
this.on("dblclick",this._onDblClick);
var O;
if(Q){
    if(this.get("replaceLabel")){
        this.set("label",Q.innerHTML);
        O=Q.parentNode;
        O.removeChild(Q);
    }else{
        this.on("appendTo",c);
        M.on(Q,"click",this._onLabelClick,null,this);
        this._label=Q;
    }
}
this.on("appendTo",this._onAppendTo);
var N=this.get("container"),Y=this.get("element"),W=G.inDocument(Y);
if(N){
    if(a&&a!=Y){
        O=a.parentNode;
        if(O){
            O.removeChild(a);
        }
    }
    if(I.isString(N)){
    M.onContentReady(N,this.appendTo,N,this);
}else{
    this.on("init",function(){
        I.later(0,this,this.appendTo,N);
    });
}
}else{
    if(!W&&a&&a!=Y){
        O=a.parentNode;
        if(O){
            this.fireEvent("beforeAppendTo",{
                type:"beforeAppendTo",
                target:O
            });
            O.replaceChild(Y,a);
            this.fireEvent("appendTo",{
                type:"appendTo",
                target:O
            });
        }
    }else{
    if(this.get("type")!="link"&&W&&a&&a==Y){
        this._addListenersToForm();
    }
}
}
this.fireEvent("init",{
    type:"init",
    target:this
});
},
initAttributes:function(O){
    var N=O||{};

    YAHOO.widget.Button.superclass.initAttributes.call(this,N);
    this.setAttributeConfig("type",{
        value:(N.type||"push"),
        validator:I.isString,
        writeOnce:true,
        method:this._setType
        });
    this.setAttributeConfig("label",{
        value:N.label,
        validator:I.isString,
        method:this._setLabel
        });
    this.setAttributeConfig("value",{
        value:N.value
        });
    this.setAttributeConfig("name",{
        value:N.name,
        validator:I.isString
        });
    this.setAttributeConfig("tabindex",{
        value:N.tabindex,
        validator:I.isNumber,
        method:this._setTabIndex
        });
    this.configureAttribute("title",{
        value:N.title,
        validator:I.isString,
        method:this._setTitle
        });
    this.setAttributeConfig("disabled",{
        value:(N.disabled||false),
        validator:I.isBoolean,
        method:this._setDisabled
        });
    this.setAttributeConfig("href",{
        value:N.href,
        validator:I.isString,
        method:this._setHref
        });
    this.setAttributeConfig("target",{
        value:N.target,
        validator:I.isString,
        method:this._setTarget
        });
    this.setAttributeConfig("checked",{
        value:(N.checked||false),
        validator:I.isBoolean,
        method:this._setChecked
        });
    this.setAttributeConfig("container",{
        value:N.container,
        writeOnce:true
    });
    this.setAttributeConfig("srcelement",{
        value:N.srcelement,
        writeOnce:true
    });
    this.setAttributeConfig("menu",{
        value:null,
        method:this._setMenu,
        writeOnce:true
    });
    this.setAttributeConfig("lazyloadmenu",{
        value:(N.lazyloadmenu===false?false:true),
        validator:I.isBoolean,
        writeOnce:true
    });
    this.setAttributeConfig("menuclassname",{
        value:(N.menuclassname||(this.CLASS_NAME_PREFIX+"button-menu")),
        validator:I.isString,
        method:this._setMenuClassName,
        writeOnce:true
    });
    this.setAttributeConfig("menuminscrollheight",{
        value:(N.menuminscrollheight||90),
        validator:I.isNumber
        });
    this.setAttributeConfig("menumaxheight",{
        value:(N.menumaxheight||0),
        validator:I.isNumber
        });
    this.setAttributeConfig("menualignment",{
        value:(N.menualignment||["tl","bl"]),
        validator:I.isArray
        });
    this.setAttributeConfig("selectedMenuItem",{
        value:null
    });
    this.setAttributeConfig("onclick",{
        value:N.onclick,
        method:this._setOnClick
        });
    this.setAttributeConfig("focusmenu",{
        value:(N.focusmenu===false?false:true),
        validator:I.isBoolean
        });
    this.setAttributeConfig("replaceLabel",{
        value:false,
        validator:I.isBoolean,
        writeOnce:true
    });
},
focus:function(){
    if(!this.get("disabled")){
        this._button.focus();
    }
},
blur:function(){
    if(!this.get("disabled")){
        this._button.blur();
    }
},
hasFocus:function(){
    return(C==this);
},
isActive:function(){
    return this.hasClass(this.CLASS_NAME_PREFIX+this.CSS_CLASS_NAME+"-active");
},
getMenu:function(){
    return this._menu;
},
getForm:function(){
    var N=this._button,O;
    if(N){
        O=N.form;
    }
    return O;
},
getHiddenFields:function(){
    return this._hiddenFields;
},
destroy:function(){
    var P=this.get("element"),N=this._menu,T=this._label,O,S;
    if(N){
        if(K&&K.find(N)){
            K.remove(N);
        }
        N.destroy();
    }
    M.purgeElement(P);
    M.purgeElement(this._button);
    M.removeListener(document,"mouseup",this._onDocumentMouseUp);
    M.removeListener(document,"keyup",this._onDocumentKeyUp);
    M.removeListener(document,"mousedown",this._onDocumentMouseDown);
    if(T){
        M.removeListener(T,"click",this._onLabelClick);
        O=T.parentNode;
        O.removeChild(T);
    }
    var Q=this.getForm();
    if(Q){
        M.removeListener(Q,"reset",this._onFormReset);
        M.removeListener(Q,"submit",this._onFormSubmit);
    }
    this.unsubscribeAll();
    O=P.parentNode;
    if(O){
        O.removeChild(P);
    }
    delete D[this.get("id")];
    var R=(this.CLASS_NAME_PREFIX+this.CSS_CLASS_NAME);
    S=G.getElementsByClassName(R,this.NODE_NAME,Q);
    if(I.isArray(S)&&S.length===0){
        M.removeListener(Q,"keypress",YAHOO.widget.Button.onFormKeyPress);
    }
},
fireEvent:function(O,N){
    var P=arguments[0];
    if(this.DOM_EVENTS[P]&&this.get("disabled")){
        return false;
    }
    return YAHOO.widget.Button.superclass.fireEvent.apply(this,arguments);
},
toString:function(){
    return("Button "+this.get("id"));
}
});
YAHOO.widget.Button.onFormKeyPress=function(R){
    var P=M.getTarget(R),S=M.getCharCode(R),Q=P.nodeName&&P.nodeName.toUpperCase(),N=P.type,T=false,V,X,O,W;
    function U(a){
        var Z,Y;
        switch(a.nodeName.toUpperCase()){
            case"INPUT":case"BUTTON":
                if(a.type=="submit"&&!a.disabled){
                if(!T&&!O){
                    O=a;
                }
            }
            break;
        default:
            Z=a.id;
            if(Z){
            V=D[Z];
            if(V){
                T=true;
                if(!V.get("disabled")){
                    Y=V.get("srcelement");
                    if(!X&&(V.get("type")=="submit"||(Y&&Y.type=="submit"))){
                        X=V;
                    }
                }
            }
        }
    break;
}
}
if(S==13&&((Q=="INPUT"&&(N=="text"||N=="password"||N=="checkbox"||N=="radio"||N=="file"))||Q=="SELECT")){
    G.getElementsBy(U,"*",this);
    if(O){
        O.focus();
    }else{
        if(!O&&X){
            M.preventDefault(R);
            if(L.ie){
                X.get("element").fireEvent("onclick");
            }else{
                W=document.createEvent("HTMLEvents");
                W.initEvent("click",true,true);
                if(L.gecko<1.9){
                    X.fireEvent("click",W);
                }else{
                    X.get("element").dispatchEvent(W);
                }
            }
        }
}
}
};

YAHOO.widget.Button.addHiddenFieldsToForm=function(N){
    var R=YAHOO.widget.Button.prototype,T=G.getElementsByClassName((R.CLASS_NAME_PREFIX+R.CSS_CLASS_NAME),"*",N),Q=T.length,S,O,P;
    if(Q>0){
        for(P=0;P<Q;P++){
            O=T[P].id;
            if(O){
                S=D[O];
                if(S){
                    S.createHiddenFields();
                }
            }
        }
    }
};

YAHOO.widget.Button.getButton=function(N){
    return D[N];
};

})();
(function(){
    var C=YAHOO.util.Dom,B=YAHOO.util.Event,D=YAHOO.lang,A=YAHOO.widget.Button,E={};

    YAHOO.widget.ButtonGroup=function(J,H){
        var I=YAHOO.widget.ButtonGroup.superclass.constructor,K,G,F;
        if(arguments.length==1&&!D.isString(J)&&!J.nodeName){
            if(!J.id){
                F=C.generateId();
                J.id=F;
            }
            I.call(this,(this._createGroupElement()),J);
        }else{
            if(D.isString(J)){
                G=C.get(J);
                if(G){
                    if(G.nodeName.toUpperCase()==this.NODE_NAME){
                        I.call(this,G,H);
                    }
                }
            }else{
        K=J.nodeName.toUpperCase();
        if(K&&K==this.NODE_NAME){
            if(!J.id){
                J.id=C.generateId();
            }
            I.call(this,J,H);
        }
    }
}
};

YAHOO.extend(YAHOO.widget.ButtonGroup,YAHOO.util.Element,{
    _buttons:null,
    NODE_NAME:"DIV",
    CLASS_NAME_PREFIX:"yui-",
    CSS_CLASS_NAME:"buttongroup",
    _createGroupElement:function(){
        var F=document.createElement(this.NODE_NAME);
        return F;
    },
    _setDisabled:function(G){
        var H=this.getCount(),F;
        if(H>0){
            F=H-1;
            do{
                this._buttons[F].set("disabled",G);
            }while(F--);
        }
    },
_onKeyDown:function(K){
    var G=B.getTarget(K),I=B.getCharCode(K),H=G.parentNode.parentNode.id,J=E[H],F=-1;
    if(I==37||I==38){
        F=(J.index===0)?(this._buttons.length-1):(J.index-1);
    }else{
        if(I==39||I==40){
            F=(J.index===(this._buttons.length-1))?0:(J.index+1);
        }
    }
    if(F>-1){
    this.check(F);
    this.getButton(F).focus();
}
},
_onAppendTo:function(H){
    var I=this._buttons,G=I.length,F;
    for(F=0;F<G;F++){
        I[F].appendTo(this.get("element"));
    }
    },
_onButtonCheckedChange:function(G,F){
    var I=G.newValue,H=this.get("checkedButton");
    if(I&&H!=F){
        if(H){
            H.set("checked",false,true);
        }
        this.set("checkedButton",F);
        this.set("value",F.get("value"));
    }else{
        if(H&&!H.set("checked")){
            H.set("checked",true,true);
        }
    }
},
init:function(I,H){
    this._buttons=[];
    YAHOO.widget.ButtonGroup.superclass.init.call(this,I,H);
    this.addClass(this.CLASS_NAME_PREFIX+this.CSS_CLASS_NAME);
    var K=(YAHOO.widget.Button.prototype.CLASS_NAME_PREFIX+"radio-button"),J=this.getElementsByClassName(K);
    if(J.length>0){
        this.addButtons(J);
    }
    function F(L){
        return(L.type=="radio");
    }
    J=C.getElementsBy(F,"input",this.get("element"));
    if(J.length>0){
        this.addButtons(J);
    }
    this.on("keydown",this._onKeyDown);
    this.on("appendTo",this._onAppendTo);
    var G=this.get("container");
    if(G){
        if(D.isString(G)){
            B.onContentReady(G,function(){
                this.appendTo(G);
            },null,this);
        }else{
            this.appendTo(G);
        }
    }
},
initAttributes:function(G){
    var F=G||{};

    YAHOO.widget.ButtonGroup.superclass.initAttributes.call(this,F);
    this.setAttributeConfig("name",{
        value:F.name,
        validator:D.isString
        });
    this.setAttributeConfig("disabled",{
        value:(F.disabled||false),
        validator:D.isBoolean,
        method:this._setDisabled
        });
    this.setAttributeConfig("value",{
        value:F.value
        });
    this.setAttributeConfig("container",{
        value:F.container,
        writeOnce:true
    });
    this.setAttributeConfig("checkedButton",{
        value:null
    });
},
addButton:function(J){
    var L,K,G,F,H,I;
    if(J instanceof A&&J.get("type")=="radio"){
        L=J;
    }else{
        if(!D.isString(J)&&!J.nodeName){
            J.type="radio";
            L=new A(J);
        }else{
            L=new A(J,{
                type:"radio"
            });
        }
    }
    if(L){
    F=this._buttons.length;
    H=L.get("name");
    I=this.get("name");
    L.index=F;
    this._buttons[F]=L;
    E[L.get("id")]=L;
    if(H!=I){
        L.set("name",I);
    }
    if(this.get("disabled")){
        L.set("disabled",true);
    }
    if(L.get("checked")){
        this.set("checkedButton",L);
    }
    K=L.get("element");
    G=this.get("element");
    if(K.parentNode!=G){
        G.appendChild(K);
    }
    L.on("checkedChange",this._onButtonCheckedChange,L,this);
}
return L;
},
addButtons:function(G){
    var H,I,J,F;
    if(D.isArray(G)){
        H=G.length;
        J=[];
        if(H>0){
            for(F=0;F<H;F++){
                I=this.addButton(G[F]);
                if(I){
                    J[J.length]=I;
                }
            }
            }
    }
return J;
},
removeButton:function(H){
    var I=this.getButton(H),G,F;
    if(I){
        this._buttons.splice(H,1);
        delete E[I.get("id")];
        I.removeListener("checkedChange",this._onButtonCheckedChange);
        I.destroy();
        G=this._buttons.length;
        if(G>0){
            F=this._buttons.length-1;
            do{
                this._buttons[F].index=F;
            }while(F--);
        }
    }
},
getButton:function(F){
    return this._buttons[F];
},
getButtons:function(){
    return this._buttons;
},
getCount:function(){
    return this._buttons.length;
},
focus:function(H){
    var I,G,F;
    if(D.isNumber(H)){
        I=this._buttons[H];
        if(I){
            I.focus();
        }
    }else{
    G=this.getCount();
    for(F=0;F<G;F++){
        I=this._buttons[F];
        if(!I.get("disabled")){
            I.focus();
            break;
        }
    }
    }
},
check:function(F){
    var G=this.getButton(F);
    if(G){
        G.set("checked",true);
    }
},
destroy:function(){
    var I=this._buttons.length,H=this.get("element"),F=H.parentNode,G;
    if(I>0){
        G=this._buttons.length-1;
        do{
            this._buttons[G].destroy();
        }while(G--);
    }
    B.purgeElement(H);
    F.removeChild(H);
},
toString:function(){
    return("ButtonGroup "+this.get("id"));
}
});
})();
YAHOO.register("button",YAHOO.widget.Button,{
    version:"2.8.0r4",
    build:"2449"
});