]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blobdiff - wradmin/static/yui/button/button.js
Remove yui.
[philipp/winterrodeln/wradmin.git] / wradmin / static / yui / button / button.js
diff --git a/wradmin/static/yui/button/button.js b/wradmin/static/yui/button/button.js
deleted file mode 100644 (file)
index 61d0700..0000000
+++ /dev/null
@@ -1,4749 +0,0 @@
-/*
-Copyright (c) 2009, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.7.0
-*/
-/**
-* @module button
-* @description <p>The Button Control enables the creation of rich, graphical 
-* buttons that function like traditional HTML form buttons.  <em>Unlike</em> 
-* traditional HTML form buttons, buttons created with the Button Control can have 
-* a label that is different from its value.  With the inclusion of the optional 
-* <a href="module_menu.html">Menu Control</a>, the Button Control can also be
-* used to create menu buttons and split buttons, controls that are not 
-* available natively in HTML.  The Button Control can also be thought of as a 
-* way to create more visually engaging implementations of the browser's 
-* default radio-button and check-box controls.</p>
-* <p>The Button Control supports the following types:</p>
-* <dl>
-* <dt>push</dt>
-* <dd>Basic push button that can execute a user-specified command when 
-* pressed.</dd>
-* <dt>link</dt>
-* <dd>Navigates to a specified url when pressed.</dd>
-* <dt>submit</dt>
-* <dd>Submits the parent form when pressed.</dd>
-* <dt>reset</dt>
-* <dd>Resets the parent form when pressed.</dd>
-* <dt>checkbox</dt>
-* <dd>Maintains a "checked" state that can be toggled on and off.</dd>
-* <dt>radio</dt>
-* <dd>Maintains a "checked" state that can be toggled on and off.  Use with 
-* the ButtonGroup class to create a set of controls that are mutually 
-* exclusive; checking one button in the set will uncheck all others in 
-* the group.</dd>
-* <dt>menu</dt>
-* <dd>When pressed will show/hide a menu.</dd>
-* <dt>split</dt>
-* <dd>Can execute a user-specified command or display a menu when pressed.</dd>
-* </dl>
-* @title Button
-* @namespace YAHOO.widget
-* @requires yahoo, dom, element, event
-* @optional container, menu
-*/
-
-
-(function () {
-
-
-    /**
-    * The Button class creates a rich, graphical button.
-    * @param {String} p_oElement String specifying the id attribute of the 
-    * <code>&#60;input&#62;</code>, <code>&#60;button&#62;</code>,
-    * <code>&#60;a&#62;</code>, or <code>&#60;span&#62;</code> element to 
-    * be used to create the button.
-    * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-
-    * one-html.html#ID-6043025">HTMLInputElement</a>|<a href="http://www.w3.org
-    * /TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-34812697">
-    * HTMLButtonElement</a>|<a href="
-    * http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#
-    * ID-33759296">HTMLElement</a>} p_oElement Object reference for the 
-    * <code>&#60;input&#62;</code>, <code>&#60;button&#62;</code>, 
-    * <code>&#60;a&#62;</code>, or <code>&#60;span&#62;</code> element to be 
-    * used to create the button.
-    * @param {Object} p_oElement Object literal specifying a set of   
-    * configuration attributes used to create the button.
-    * @param {Object} p_oAttributes Optional. Object literal specifying a set  
-    * of configuration attributes used to create the button.
-    * @namespace YAHOO.widget
-    * @class Button
-    * @constructor
-    * @extends YAHOO.util.Element
-    */
-
-
-
-    // Shorthard for utilities
-
-    var Dom = YAHOO.util.Dom,
-        Event = YAHOO.util.Event,
-        Lang = YAHOO.lang,
-        UA = YAHOO.env.ua,
-        Overlay = YAHOO.widget.Overlay,
-        Menu = YAHOO.widget.Menu,
-    
-    
-        // Private member variables
-    
-        m_oButtons = {},    // Collection of all Button instances
-        m_oOverlayManager = null,   // YAHOO.widget.OverlayManager instance
-        m_oSubmitTrigger = null,    // The button that submitted the form 
-        m_oFocusedButton = null;    // The button that has focus
-
-
-
-    // Private methods
-
-    
-    
-    /**
-    * @method createInputElement
-    * @description Creates an <code>&#60;input&#62;</code> element of the 
-    * specified type.
-    * @private
-    * @param {String} p_sType String specifying the type of 
-    * <code>&#60;input&#62;</code> element to create.
-    * @param {String} p_sName String specifying the name of 
-    * <code>&#60;input&#62;</code> element to create.
-    * @param {String} p_sValue String specifying the value of 
-    * <code>&#60;input&#62;</code> element to create.
-    * @param {String} p_bChecked Boolean specifying if the  
-    * <code>&#60;input&#62;</code> element is to be checked.
-    * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-
-    * one-html.html#ID-6043025">HTMLInputElement</a>}
-    */
-    function createInputElement(p_sType, p_sName, p_sValue, p_bChecked) {
-    
-        var oInput,
-            sInput;
-    
-        if (Lang.isString(p_sType) && Lang.isString(p_sName)) {
-        
-            if (UA.ie) {
-        
-                /*
-                    For IE it is necessary to create the element with the 
-                    "type," "name," "value," and "checked" properties set all 
-                    at once.
-                */
-            
-                sInput = "<input type=\"" + p_sType + "\" name=\"" + 
-                    p_sName + "\"";
-        
-                if (p_bChecked) {
-        
-                    sInput += " checked";
-                
-                }
-                
-                sInput += ">";
-        
-                oInput = document.createElement(sInput);
-        
-            }
-            else {
-            
-                oInput = document.createElement("input");
-                oInput.name = p_sName;
-                oInput.type = p_sType;
-        
-                if (p_bChecked) {
-        
-                    oInput.checked = true;
-                
-                }
-        
-            }
-        
-            oInput.value = p_sValue;
-        
-        }
-
-               return oInput;
-    
-    }
-    
-    
-    /**
-    * @method setAttributesFromSrcElement
-    * @description Gets the values for all the attributes of the source element 
-    * (either <code>&#60;input&#62;</code> or <code>&#60;a&#62;</code>) that 
-    * map to Button configuration attributes and sets them into a collection 
-    * that is passed to the Button constructor.
-    * @private
-    * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-
-    * one-html.html#ID-6043025">HTMLInputElement</a>|<a href="http://www.w3.org/
-    * TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-
-    * 48250443">HTMLAnchorElement</a>} p_oElement Object reference to the HTML 
-    * element (either <code>&#60;input&#62;</code> or <code>&#60;span&#62;
-    * </code>) used to create the button.
-    * @param {Object} p_oAttributes Object reference for the collection of 
-    * configuration attributes used to create the button.
-    */
-    function setAttributesFromSrcElement(p_oElement, p_oAttributes) {
-    
-        var sSrcElementNodeName = p_oElement.nodeName.toUpperCase(),
-            me = this,
-            oAttribute,
-            oRootNode,
-            sText;
-            
-    
-        /**
-        * @method setAttributeFromDOMAttribute
-        * @description Gets the value of the specified DOM attribute and sets it 
-        * into the collection of configuration attributes used to configure 
-        * the button.
-        * @private
-        * @param {String} p_sAttribute String representing the name of the 
-        * attribute to retrieve from the DOM element.
-        */
-        function setAttributeFromDOMAttribute(p_sAttribute) {
-    
-            if (!(p_sAttribute in p_oAttributes)) {
-    
-                /*
-                    Need to use "getAttributeNode" instead of "getAttribute" 
-                    because using "getAttribute," IE will return the innerText 
-                    of a <code>&#60;button&#62;</code> for the value attribute  
-                    rather than the value of the "value" attribute.
-                */
-        
-                oAttribute = p_oElement.getAttributeNode(p_sAttribute);
-        
-    
-                if (oAttribute && ("value" in oAttribute)) {
-    
-    
-                    p_oAttributes[p_sAttribute] = oAttribute.value;
-    
-                }
-    
-            }
-        
-        }
-    
-    
-        /**
-        * @method setFormElementProperties
-        * @description Gets the value of the attributes from the form element  
-        * and sets them into the collection of configuration attributes used to 
-        * configure the button.
-        * @private
-        */
-        function setFormElementProperties() {
-    
-            setAttributeFromDOMAttribute("type");
-    
-            if (p_oAttributes.type == "button") {
-            
-                p_oAttributes.type = "push";
-            
-            }
-    
-            if (!("disabled" in p_oAttributes)) {
-    
-                p_oAttributes.disabled = p_oElement.disabled;
-    
-            }
-    
-            setAttributeFromDOMAttribute("name");
-            setAttributeFromDOMAttribute("value");
-            setAttributeFromDOMAttribute("title");
-    
-        }
-
-    
-        switch (sSrcElementNodeName) {
-        
-        case "A":
-            
-            p_oAttributes.type = "link";
-            
-            setAttributeFromDOMAttribute("href");
-            setAttributeFromDOMAttribute("target");
-        
-            break;
-    
-        case "INPUT":
-
-            setFormElementProperties();
-
-            if (!("checked" in p_oAttributes)) {
-    
-                p_oAttributes.checked = p_oElement.checked;
-    
-            }
-
-            break;
-
-        case "BUTTON":
-
-            setFormElementProperties();
-
-            oRootNode = p_oElement.parentNode.parentNode;
-
-            if (Dom.hasClass(oRootNode, this.CSS_CLASS_NAME + "-checked")) {
-            
-                p_oAttributes.checked = true;
-            
-            }
-
-            if (Dom.hasClass(oRootNode, this.CSS_CLASS_NAME + "-disabled")) {
-
-                p_oAttributes.disabled = true;
-            
-            }
-
-            p_oElement.removeAttribute("value");
-
-            p_oElement.setAttribute("type", "button");
-
-            break;
-        
-        }
-
-        p_oElement.removeAttribute("id");
-        p_oElement.removeAttribute("name");
-        
-        if (!("tabindex" in p_oAttributes)) {
-
-            p_oAttributes.tabindex = p_oElement.tabIndex;
-
-        }
-    
-        if (!("label" in p_oAttributes)) {
-    
-            // Set the "label" property
-        
-            sText = sSrcElementNodeName == "INPUT" ? 
-                            p_oElement.value : p_oElement.innerHTML;
-        
-    
-            if (sText && sText.length > 0) {
-                
-                p_oAttributes.label = sText;
-                
-            } 
-    
-        }
-    
-    }
-    
-    
-    /**
-    * @method initConfig
-    * @description Initializes the set of configuration attributes that are 
-    * used to instantiate the button.
-    * @private
-    * @param {Object} Object representing the button's set of 
-    * configuration attributes.
-    */
-    function initConfig(p_oConfig) {
-    
-        var oAttributes = p_oConfig.attributes,
-            oSrcElement = oAttributes.srcelement,
-            sSrcElementNodeName = oSrcElement.nodeName.toUpperCase(),
-            me = this;
-    
-    
-        if (sSrcElementNodeName == this.NODE_NAME) {
-    
-            p_oConfig.element = oSrcElement;
-            p_oConfig.id = oSrcElement.id;
-
-            Dom.getElementsBy(function (p_oElement) {
-            
-                switch (p_oElement.nodeName.toUpperCase()) {
-                
-                case "BUTTON":
-                case "A":
-                case "INPUT":
-
-                    setAttributesFromSrcElement.call(me, p_oElement, 
-                        oAttributes);
-
-                    break;                        
-                
-                }
-            
-            }, "*", oSrcElement);
-        
-        }
-        else {
-    
-            switch (sSrcElementNodeName) {
-
-            case "BUTTON":
-            case "A":
-            case "INPUT":
-
-                setAttributesFromSrcElement.call(this, oSrcElement, 
-                    oAttributes);
-
-                break;
-
-            }
-        
-        }
-    
-    }
-
-
-
-    //  Constructor
-
-    YAHOO.widget.Button = function (p_oElement, p_oAttributes) {
-    
-               if (!Overlay && YAHOO.widget.Overlay) {
-               
-                       Overlay = YAHOO.widget.Overlay;
-               
-               }
-
-
-               if (!Menu && YAHOO.widget.Menu) {
-               
-                       Menu = YAHOO.widget.Menu;
-               
-               }
-
-
-        var fnSuperClass = YAHOO.widget.Button.superclass.constructor,
-            oConfig,
-            oElement;
-    
-
-        if (arguments.length == 1 && !Lang.isString(p_oElement) && !p_oElement.nodeName) {
-    
-            if (!p_oElement.id) {
-    
-                p_oElement.id = Dom.generateId();
-    
-    
-            }
-    
-    
-            fnSuperClass.call(this, (this.createButtonElement(p_oElement.type)), p_oElement);
-    
-        }
-        else {
-    
-            oConfig = { element: null, attributes: (p_oAttributes || {}) };
-    
-    
-            if (Lang.isString(p_oElement)) {
-    
-                oElement = Dom.get(p_oElement);
-    
-                if (oElement) {
-
-                    if (!oConfig.attributes.id) {
-                    
-                        oConfig.attributes.id = p_oElement;
-                    
-                    }
-    
-                
-                
-                    oConfig.attributes.srcelement = oElement;
-                
-                    initConfig.call(this, oConfig);
-                
-                
-                    if (!oConfig.element) {
-                
-                
-                        oConfig.element = this.createButtonElement(oConfig.attributes.type);
-                
-                    }
-                
-                    fnSuperClass.call(this, oConfig.element, oConfig.attributes);
-    
-                }
-    
-            }
-            else if (p_oElement.nodeName) {
-    
-                if (!oConfig.attributes.id) {
-    
-                    if (p_oElement.id) {
-        
-                        oConfig.attributes.id = p_oElement.id;
-                    
-                    }
-                    else {
-        
-                        oConfig.attributes.id = Dom.generateId();
-        
-        
-                    }
-    
-                }
-    
-    
-    
-                oConfig.attributes.srcelement = p_oElement;
-        
-                initConfig.call(this, oConfig);
-        
-        
-                if (!oConfig.element) {
-    
-            
-                    oConfig.element = this.createButtonElement(oConfig.attributes.type);
-            
-                }
-            
-                fnSuperClass.call(this, oConfig.element, oConfig.attributes);
-            
-            }
-    
-        }
-    
-    };
-
-
-
-    YAHOO.extend(YAHOO.widget.Button, YAHOO.util.Element, {
-    
-    
-        // Protected properties
-        
-        
-        /** 
-        * @property _button
-        * @description Object reference to the button's internal 
-        * <code>&#60;a&#62;</code> or <code>&#60;button&#62;</code> element.
-        * @default null
-        * @protected
-        * @type <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-48250443">HTMLAnchorElement</a>|<a href="
-        * http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html
-        * #ID-34812697">HTMLButtonElement</a>
-        */
-        _button: null,
-        
-        
-        /** 
-        * @property _menu
-        * @description Object reference to the button's menu.
-        * @default null
-        * @protected
-        * @type {<a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>|
-        * <a href="YAHOO.widget.Menu.html">YAHOO.widget.Menu</a>}
-        */
-        _menu: null,
-        
-        
-        /** 
-        * @property _hiddenFields
-        * @description Object reference to the <code>&#60;input&#62;</code>  
-        * element, or array of HTML form elements used to represent the button
-        *  when its parent form is submitted.
-        * @default null
-        * @protected
-        * @type <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-6043025">HTMLInputElement</a>|Array
-        */
-        _hiddenFields: null,
-        
-        
-        /** 
-        * @property _onclickAttributeValue
-        * @description Object reference to the button's current value for the 
-        * "onclick" configuration attribute.
-        * @default null
-        * @protected
-        * @type Object
-        */
-        _onclickAttributeValue: null,
-        
-        
-        /** 
-        * @property _activationKeyPressed
-        * @description Boolean indicating if the key(s) that toggle the button's 
-        * "active" state have been pressed.
-        * @default false
-        * @protected
-        * @type Boolean
-        */
-        _activationKeyPressed: false,
-        
-        
-        /** 
-        * @property _activationButtonPressed
-        * @description Boolean indicating if the mouse button that toggles 
-        * the button's "active" state has been pressed.
-        * @default false
-        * @protected
-        * @type Boolean
-        */
-        _activationButtonPressed: false,
-        
-        
-        /** 
-        * @property _hasKeyEventHandlers
-        * @description Boolean indicating if the button's "blur", "keydown" and 
-        * "keyup" event handlers are assigned
-        * @default false
-        * @protected
-        * @type Boolean
-        */
-        _hasKeyEventHandlers: false,
-        
-        
-        /** 
-        * @property _hasMouseEventHandlers
-        * @description Boolean indicating if the button's "mouseout," 
-        * "mousedown," and "mouseup" event handlers are assigned
-        * @default false
-        * @protected
-        * @type Boolean
-        */
-        _hasMouseEventHandlers: false,
-
-
-        /** 
-        * @property _nOptionRegionX
-        * @description Number representing the X coordinate of the leftmost edge of the Button's 
-        * option region.  Applies only to Buttons of type "split".
-        * @default 0
-        * @protected
-        * @type Number
-        */        
-        _nOptionRegionX: 0,
-        
-
-
-        // Constants
-        
-        
-        /**
-        * @property NODE_NAME
-        * @description The name of the node to be used for the button's 
-        * root element.
-        * @default "SPAN"
-        * @final
-        * @type String
-        */
-        NODE_NAME: "SPAN",
-        
-        
-        /**
-        * @property CHECK_ACTIVATION_KEYS
-        * @description Array of numbers representing keys that (when pressed) 
-        * toggle the button's "checked" attribute.
-        * @default [32]
-        * @final
-        * @type Array
-        */
-        CHECK_ACTIVATION_KEYS: [32],
-        
-        
-        /**
-        * @property ACTIVATION_KEYS
-        * @description Array of numbers representing keys that (when presed) 
-        * toggle the button's "active" state.
-        * @default [13, 32]
-        * @final
-        * @type Array
-        */
-        ACTIVATION_KEYS: [13, 32],
-        
-        
-        /**
-        * @property OPTION_AREA_WIDTH
-        * @description Width (in pixels) of the area of a split button that  
-        * when pressed will display a menu.
-        * @default 20
-        * @final
-        * @type Number
-        */
-        OPTION_AREA_WIDTH: 20,
-        
-        
-        /**
-        * @property CSS_CLASS_NAME
-        * @description String representing the CSS class(es) to be applied to  
-        * the button's root element.
-        * @default "yui-button"
-        * @final
-        * @type String
-        */
-        CSS_CLASS_NAME: "yui-button",
-        
-        
-        /**
-        * @property RADIO_DEFAULT_TITLE
-        * @description String representing the default title applied to buttons 
-        * of type "radio." 
-        * @default "Unchecked.  Click to check."
-        * @final
-        * @type String
-        */
-        RADIO_DEFAULT_TITLE: "Unchecked.  Click to check.",
-        
-        
-        /**
-        * @property RADIO_CHECKED_TITLE
-        * @description String representing the title applied to buttons of 
-        * type "radio" when checked.
-        * @default "Checked.  Click another button to uncheck"
-        * @final
-        * @type String
-        */
-        RADIO_CHECKED_TITLE: "Checked.  Click another button to uncheck",
-        
-        
-        /**
-        * @property CHECKBOX_DEFAULT_TITLE
-        * @description String representing the default title applied to 
-        * buttons of type "checkbox." 
-        * @default "Unchecked.  Click to check."
-        * @final
-        * @type String
-        */
-        CHECKBOX_DEFAULT_TITLE: "Unchecked.  Click to check.",
-        
-        
-        /**
-        * @property CHECKBOX_CHECKED_TITLE
-        * @description String representing the title applied to buttons of type 
-        * "checkbox" when checked.
-        * @default "Checked.  Click to uncheck."
-        * @final
-        * @type String
-        */
-        CHECKBOX_CHECKED_TITLE: "Checked.  Click to uncheck.",
-        
-        
-        /**
-        * @property MENUBUTTON_DEFAULT_TITLE
-        * @description String representing the default title applied to 
-        * buttons of type "menu." 
-        * @default "Menu collapsed.  Click to expand."
-        * @final
-        * @type String
-        */
-        MENUBUTTON_DEFAULT_TITLE: "Menu collapsed.  Click to expand.",
-        
-        
-        /**
-        * @property MENUBUTTON_MENU_VISIBLE_TITLE
-        * @description String representing the title applied to buttons of type 
-        * "menu" when the button's menu is visible. 
-        * @default "Menu expanded.  Click or press Esc to collapse."
-        * @final
-        * @type String
-        */
-        MENUBUTTON_MENU_VISIBLE_TITLE: 
-            "Menu expanded.  Click or press Esc to collapse.",
-        
-        
-        /**
-        * @property SPLITBUTTON_DEFAULT_TITLE
-        * @description  String representing the default title applied to 
-        * buttons of type "split." 
-        * @default "Menu collapsed.  Click inside option region or press 
-        * Ctrl + Shift + M to show the menu."
-        * @final
-        * @type String
-        */
-        SPLITBUTTON_DEFAULT_TITLE: ("Menu collapsed.  Click inside option " + 
-            "region or press down arrow key to show the menu."),
-        
-        
-        /**
-        * @property SPLITBUTTON_OPTION_VISIBLE_TITLE
-        * @description String representing the title applied to buttons of type 
-        * "split" when the button's menu is visible. 
-        * @default "Menu expanded.  Press Esc or Ctrl + Shift + M to hide 
-        * the menu."
-        * @final
-        * @type String
-        */
-        SPLITBUTTON_OPTION_VISIBLE_TITLE: 
-            "Menu expanded.  Press Esc to hide the menu.",
-        
-        
-        /**
-        * @property SUBMIT_TITLE
-        * @description String representing the title applied to buttons of 
-        * type "submit." 
-        * @default "Click to submit form."
-        * @final
-        * @type String
-        */
-        SUBMIT_TITLE: "Click to submit form.",
-        
-        
-        
-        // Protected attribute setter methods
-        
-        
-        /**
-        * @method _setType
-        * @description Sets the value of the button's "type" attribute.
-        * @protected
-        * @param {String} p_sType String indicating the value for the button's 
-        * "type" attribute.
-        */
-        _setType: function (p_sType) {
-        
-            if (p_sType == "split") {
-        
-                this.on("option", this._onOption);
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setLabel
-        * @description Sets the value of the button's "label" attribute.
-        * @protected
-        * @param {String} p_sLabel String indicating the value for the button's 
-        * "label" attribute.
-        */
-        _setLabel: function (p_sLabel) {
-
-            this._button.innerHTML = p_sLabel;
-
-            
-            /*
-                Remove and add the default class name from the root element
-                for Gecko to ensure that the button shrinkwraps to the label.
-                Without this the button will not be rendered at the correct 
-                width when the label changes.  The most likely cause for this 
-                bug is button's use of the Gecko-specific CSS display type of 
-                "-moz-inline-box" to simulate "inline-block" supported by IE, 
-                Safari and Opera.
-            */
-            
-            var sClass,
-                nGeckoVersion = UA.gecko;
-                               
-            
-            if (nGeckoVersion && nGeckoVersion < 1.9 && Dom.inDocument(this.get("element"))) {
-            
-                sClass = this.CSS_CLASS_NAME;                
-
-                this.removeClass(sClass);
-                
-                Lang.later(0, this, this.addClass, sClass);
-
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setTabIndex
-        * @description Sets the value of the button's "tabindex" attribute.
-        * @protected
-        * @param {Number} p_nTabIndex Number indicating the value for the 
-        * button's "tabindex" attribute.
-        */
-        _setTabIndex: function (p_nTabIndex) {
-        
-            this._button.tabIndex = p_nTabIndex;
-        
-        },
-        
-        
-        /**
-        * @method _setTitle
-        * @description Sets the value of the button's "title" attribute.
-        * @protected
-        * @param {String} p_nTabIndex Number indicating the value for 
-        * the button's "title" attribute.
-        */
-        _setTitle: function (p_sTitle) {
-        
-            var sTitle = p_sTitle;
-        
-            if (this.get("type") != "link") {
-        
-                if (!sTitle) {
-        
-                    switch (this.get("type")) {
-        
-                    case "radio":
-    
-                        sTitle = this.RADIO_DEFAULT_TITLE;
-    
-                        break;
-    
-                    case "checkbox":
-    
-                        sTitle = this.CHECKBOX_DEFAULT_TITLE;
-    
-                        break;
-                    
-                    case "menu":
-    
-                        sTitle = this.MENUBUTTON_DEFAULT_TITLE;
-    
-                        break;
-    
-                    case "split":
-    
-                        sTitle = this.SPLITBUTTON_DEFAULT_TITLE;
-    
-                        break;
-    
-                    case "submit":
-    
-                        sTitle = this.SUBMIT_TITLE;
-    
-                        break;
-        
-                    }
-        
-                }
-        
-                this._button.title = sTitle;
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setDisabled
-        * @description Sets the value of the button's "disabled" attribute.
-        * @protected
-        * @param {Boolean} p_bDisabled Boolean indicating the value for 
-        * the button's "disabled" attribute.
-        */
-        _setDisabled: function (p_bDisabled) {
-        
-            if (this.get("type") != "link") {
-        
-                if (p_bDisabled) {
-        
-                    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");
-                
-                }
-        
-            }
-        
-        },
-
-        
-        /**
-        * @method _setHref
-        * @description Sets the value of the button's "href" attribute.
-        * @protected
-        * @param {String} p_sHref String indicating the value for the button's 
-        * "href" attribute.
-        */
-        _setHref: function (p_sHref) {
-        
-            if (this.get("type") == "link") {
-        
-                this._button.href = p_sHref;
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setTarget
-        * @description Sets the value of the button's "target" attribute.
-        * @protected
-        * @param {String} p_sTarget String indicating the value for the button's 
-        * "target" attribute.
-        */
-        _setTarget: function (p_sTarget) {
-        
-            if (this.get("type") == "link") {
-        
-                this._button.setAttribute("target", p_sTarget);
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setChecked
-        * @description Sets the value of the button's "target" attribute.
-        * @protected
-        * @param {Boolean} p_bChecked Boolean indicating the value for  
-        * the button's "checked" attribute.
-        */
-        _setChecked: function (p_bChecked) {
-        
-            var sType = this.get("type"),
-                sTitle;
-        
-            if (sType == "checkbox" || sType == "radio") {
-        
-                if (p_bChecked) {
-        
-                    this.addStateCSSClasses("checked");
-                    
-                    sTitle = (sType == "radio") ? 
-                                this.RADIO_CHECKED_TITLE : 
-                                this.CHECKBOX_CHECKED_TITLE;
-                
-                }
-                else {
-
-                    this.removeStateCSSClasses("checked");
-        
-                    sTitle = (sType == "radio") ? 
-                                this.RADIO_DEFAULT_TITLE : 
-                                this.CHECKBOX_DEFAULT_TITLE;
-                
-                }
-
-
-                       if (!this._hasDefaultTitle) {
-        
-                       this.set("title", sTitle);
-                
-                }
-        
-            }
-        
-        },
-
-        
-        /**
-        * @method _setMenu
-        * @description Sets the value of the button's "menu" attribute.
-        * @protected
-        * @param {Object} p_oMenu Object indicating the value for the button's 
-        * "menu" attribute.
-        */
-        _setMenu: function (p_oMenu) {
-
-            var bLazyLoad = this.get("lazyloadmenu"),
-                oButtonElement = this.get("element"),
-                sMenuCSSClassName,
-        
-                /*
-                    Boolean indicating if the value of p_oMenu is an instance 
-                    of YAHOO.widget.Menu or YAHOO.widget.Overlay.
-                */
-        
-                bInstance = false,
-                oMenu,
-                oMenuElement,
-                oSrcElement;
-        
-
-                       function onAppendTo() {
-
-                               oMenu.render(oButtonElement.parentNode);
-                               
-                               this.removeListener("appendTo", onAppendTo);
-                       
-                       }
-                       
-                       
-                       function setMenuContainer() {
-
-                               oMenu.cfg.queueProperty("container", oButtonElement.parentNode);
-                               
-                               this.removeListener("appendTo", setMenuContainer);
-                       
-                       }
-
-
-                       function initMenu() {
-               
-                               var oContainer;
-               
-                               if (oMenu) {
-
-                                       Dom.addClass(oMenu.element, this.get("menuclassname"));
-                                       Dom.addClass(oMenu.element, "yui-" + this.get("type") + "-button-menu");
-
-                                       oMenu.showEvent.subscribe(this._onMenuShow, null, this);
-                                       oMenu.hideEvent.subscribe(this._onMenuHide, null, this);
-                                       oMenu.renderEvent.subscribe(this._onMenuRender, null, this);
-
-
-                                       if (Menu && oMenu instanceof Menu) {
-
-                                               if (bLazyLoad) {
-
-                                                       oContainer = this.get("container");
-
-                                                       if (oContainer) {
-
-                                                               oMenu.cfg.queueProperty("container", oContainer);
-
-                                                       }
-                                                       else {
-
-                                                               this.on("appendTo", setMenuContainer);
-
-                                                       }
-
-                                               }
-
-                                               oMenu.cfg.queueProperty("clicktohide", false);
-
-                                               oMenu.keyDownEvent.subscribe(this._onMenuKeyDown, this, true);
-                                               oMenu.subscribe("click", this._onMenuClick, this, true);
-
-                                               this.on("selectedMenuItemChange", this._onSelectedMenuItemChange);
-               
-                                               oSrcElement = oMenu.srcElement;
-               
-                                               if (oSrcElement && oSrcElement.nodeName.toUpperCase() == "SELECT") {
-
-                                                       oSrcElement.style.display = "none";
-                                                       oSrcElement.parentNode.removeChild(oSrcElement);
-               
-                                               }
-               
-                                       }
-                                       else if (Overlay && oMenu instanceof Overlay) {
-               
-                                               if (!m_oOverlayManager) {
-               
-                                                       m_oOverlayManager = new YAHOO.widget.OverlayManager();
-                                               
-                                               }
-                                               
-                                               m_oOverlayManager.register(oMenu);
-                                               
-                                       }
-               
-               
-                                       this._menu = oMenu;
-
-               
-                                       if (!bInstance && !bLazyLoad) {
-               
-                                               if (Dom.inDocument(oButtonElement)) {
-       
-                                                       oMenu.render(oButtonElement.parentNode);
-                                               
-                                               }
-                                               else {
-               
-                                                       this.on("appendTo", onAppendTo);
-                                               
-                                               }
-                                       
-                                       }
-               
-                               }
-               
-                       }
-
-        
-            if (Overlay) {
-        
-                               if (Menu) {
-                               
-                                       sMenuCSSClassName = Menu.prototype.CSS_CLASS_NAME;
-                               
-                               }
-                       
-                               if (p_oMenu && Menu && (p_oMenu instanceof Menu)) {
-                       
-                                       oMenu = p_oMenu;
-                                       bInstance = true;
-                       
-                                       initMenu.call(this);
-                       
-                               }
-                               else if (Overlay && p_oMenu && (p_oMenu instanceof Overlay)) {
-                       
-                                       oMenu = p_oMenu;
-                                       bInstance = true;
-                       
-                                       oMenu.cfg.queueProperty("visible", false);
-                       
-                                       initMenu.call(this);
-                       
-                               }
-                               else if (Menu && Lang.isArray(p_oMenu)) {
-
-                                       oMenu = new Menu(Dom.generateId(), { lazyload: bLazyLoad, itemdata: p_oMenu });
-                                               
-                                       this._menu = oMenu;
-                       
-                                       this.on("appendTo", initMenu);
-                       
-                               }
-                               else if (Lang.isString(p_oMenu)) {
-                       
-                                       oMenuElement = Dom.get(p_oMenu);
-                       
-                                       if (oMenuElement) {
-                       
-                                               if (Menu && Dom.hasClass(oMenuElement, sMenuCSSClassName) || 
-                                                       oMenuElement.nodeName.toUpperCase() == "SELECT") {
-                               
-                                                       oMenu = new Menu(p_oMenu, { lazyload: bLazyLoad });
-                               
-                                                       initMenu.call(this);
-                               
-                                               }
-                                               else if (Overlay) {
-                       
-                                                       oMenu = new Overlay(p_oMenu, { visible: false });
-                               
-                                                       initMenu.call(this);
-                               
-                                               }
-                       
-                                       }
-                       
-                               }
-                               else if (p_oMenu && p_oMenu.nodeName) {
-                       
-                                       if (Menu && Dom.hasClass(p_oMenu, sMenuCSSClassName) || 
-                                                       p_oMenu.nodeName.toUpperCase() == "SELECT") {
-                       
-                                               oMenu = new Menu(p_oMenu, { lazyload: bLazyLoad });
-                                       
-                                               initMenu.call(this);
-                       
-                                       }
-                                       else if (Overlay) {
-                       
-                                               if (!p_oMenu.id) {
-                                               
-                                                       Dom.generateId(p_oMenu);
-                                               
-                                               }
-                       
-                                               oMenu = new Overlay(p_oMenu, { visible: false });
-                       
-                                               initMenu.call(this);
-                                       
-                                       }
-                               
-                               }
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _setOnClick
-        * @description Sets the value of the button's "onclick" attribute.
-        * @protected
-        * @param {Object} p_oObject Object indicating the value for the button's 
-        * "onclick" attribute.
-        */
-        _setOnClick: function (p_oObject) {
-        
-            /*
-                Remove any existing listeners if a "click" event handler 
-                has already been specified.
-            */
-        
-            if (this._onclickAttributeValue && 
-                (this._onclickAttributeValue != p_oObject)) {
-        
-                this.removeListener("click", this._onclickAttributeValue.fn);
-        
-                this._onclickAttributeValue = null;
-        
-            }
-        
-        
-            if (!this._onclickAttributeValue && 
-                Lang.isObject(p_oObject) && 
-                Lang.isFunction(p_oObject.fn)) {
-        
-                this.on("click", p_oObject.fn, p_oObject.obj, p_oObject.scope);
-        
-                this._onclickAttributeValue = p_oObject;
-        
-            }
-        
-        },
-
-        
-        
-        // Protected methods
-
-        
-        
-        /**
-        * @method _isActivationKey
-        * @description Determines if the specified keycode is one that toggles  
-        * the button's "active" state.
-        * @protected
-        * @param {Number} p_nKeyCode Number representing the keycode to 
-        * be evaluated.
-        * @return {Boolean}
-        */
-        _isActivationKey: function (p_nKeyCode) {
-        
-            var sType = this.get("type"),
-                aKeyCodes = (sType == "checkbox" || sType == "radio") ? 
-                    this.CHECK_ACTIVATION_KEYS : this.ACTIVATION_KEYS,
-        
-                nKeyCodes = aKeyCodes.length,
-                bReturnVal = false,
-                i;
-        
-
-            if (nKeyCodes > 0) {
-        
-                i = nKeyCodes - 1;
-        
-                do {
-        
-                    if (p_nKeyCode == aKeyCodes[i]) {
-        
-                        bReturnVal = true;
-                        break;
-        
-                    }
-        
-                }
-                while (i--);
-            
-            }
-            
-            return bReturnVal;
-        
-        },
-        
-        
-        /**
-        * @method _isSplitButtonOptionKey
-        * @description Determines if the specified keycode is one that toggles  
-        * the display of the split button's menu.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        * @return {Boolean}
-        */
-        _isSplitButtonOptionKey: function (p_oEvent) {
-
-                       var bShowMenu = (Event.getCharCode(p_oEvent) == 40);
-
-
-                       var onKeyPress = function (p_oEvent) {
-
-                               Event.preventDefault(p_oEvent);
-
-                               this.removeListener("keypress", onKeyPress);
-                       
-                       };
-
-
-                       // Prevent the browser from scrolling the window
-                       if (bShowMenu) {
-
-                               if (UA.opera) {
-       
-                                       this.on("keypress", onKeyPress);
-       
-                               }
-
-                               Event.preventDefault(p_oEvent);
-                       }
-
-            return bShowMenu;
-        
-        },
-        
-        
-        /**
-        * @method _addListenersToForm
-        * @description Adds event handlers to the button's form.
-        * @protected
-        */
-        _addListenersToForm: function () {
-        
-            var oForm = this.getForm(),
-                onFormKeyPress = YAHOO.widget.Button.onFormKeyPress,
-                bHasKeyPressListener,
-                oSrcElement,
-                aListeners,
-                nListeners,
-                i;
-        
-        
-            if (oForm) {
-        
-                Event.on(oForm, "reset", this._onFormReset, null, this);
-                Event.on(oForm, "submit", this._onFormSubmit, null, this);
-        
-                oSrcElement = this.get("srcelement");
-        
-        
-                if (this.get("type") == "submit" || 
-                    (oSrcElement && oSrcElement.type == "submit")) 
-                {
-                
-                    aListeners = Event.getListeners(oForm, "keypress");
-                    bHasKeyPressListener = false;
-            
-                    if (aListeners) {
-            
-                        nListeners = aListeners.length;
-        
-                        if (nListeners > 0) {
-            
-                            i = nListeners - 1;
-                            
-                            do {
-               
-                                if (aListeners[i].fn == onFormKeyPress) {
-                
-                                    bHasKeyPressListener = true;
-                                    break;
-                                
-                                }
-                
-                            }
-                            while (i--);
-                        
-                        }
-                    
-                    }
-            
-            
-                    if (!bHasKeyPressListener) {
-               
-                        Event.on(oForm, "keypress", onFormKeyPress);
-            
-                    }
-        
-                }
-            
-            }
-        
-        },
-        
-        
-        
-        /**
-        * @method _showMenu
-        * @description Shows the button's menu.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object 
-        * passed back by the event utility (YAHOO.util.Event) that triggered 
-        * the display of the menu.
-        */
-        _showMenu: function (p_oEvent) {
-
-            if (YAHOO.widget.MenuManager) {
-                YAHOO.widget.MenuManager.hideVisible();
-            }
-
-        
-            if (m_oOverlayManager) {
-                m_oOverlayManager.hideAll();
-            }
-
-
-            var oMenu = this._menu,
-               aMenuAlignment = this.get("menualignment"),
-               bFocusMenu = this.get("focusmenu"),
-                               fnFocusMethod;
-
-
-                       if (this._renderedMenu) {
-
-                               oMenu.cfg.setProperty("context", 
-                                                               [this.get("element"), aMenuAlignment[0], aMenuAlignment[1]]);
-       
-                               oMenu.cfg.setProperty("preventcontextoverlap", true);
-                               oMenu.cfg.setProperty("constraintoviewport", true);
-
-                       }
-                       else {
-
-                               oMenu.cfg.queueProperty("context", 
-                                                               [this.get("element"), aMenuAlignment[0], aMenuAlignment[1]]);
-       
-                               oMenu.cfg.queueProperty("preventcontextoverlap", true);
-                               oMenu.cfg.queueProperty("constraintoviewport", true);
-                       
-                       }
-
-
-                       /*
-                                Refocus the Button before showing its Menu in case the call to 
-                                YAHOO.widget.MenuManager.hideVisible() resulted in another element in the 
-                                DOM being focused after another Menu was hidden.
-                       */
-                       
-                       this.focus();
-
-
-            if (Menu && oMenu && (oMenu instanceof Menu)) {
-
-                               // Since Menus automatically focus themselves when made visible, temporarily 
-                               // replace the Menu focus method so that the value of the Button's "focusmenu"
-                               // attribute determines if the Menu should be focus when made visible.
-
-                               fnFocusMethod = oMenu.focus;
-
-                               oMenu.focus = function () {};
-
-                               if (this._renderedMenu) {
-
-                                       oMenu.cfg.setProperty("minscrollheight", this.get("menuminscrollheight"));
-                                       oMenu.cfg.setProperty("maxheight", this.get("menumaxheight"));
-                               
-                               }
-                               else {
-
-                                       oMenu.cfg.queueProperty("minscrollheight", this.get("menuminscrollheight"));
-                                       oMenu.cfg.queueProperty("maxheight", this.get("menumaxheight"));
-                               
-                               }
-
-
-                oMenu.show();
-
-                       oMenu.focus = fnFocusMethod;
-
-                               oMenu.align();
-        
-
-                /*
-                    Stop the propagation of the event so that the MenuManager 
-                    doesn't blur the menu after it gets focus.
-                */
-        
-                if (p_oEvent.type == "mousedown") {
-                    Event.stopPropagation(p_oEvent);
-                }
-
-        
-                if (bFocusMenu) { 
-                    oMenu.focus();
-                }
-
-            }
-            else if (Overlay && oMenu && (oMenu instanceof Overlay)) {
-
-                               if (!this._renderedMenu) {
-                           oMenu.render(this.get("element").parentNode);
-                               }
-
-                oMenu.show();
-                               oMenu.align();
-
-            }
-        
-        },
-        
-        
-        /**
-        * @method _hideMenu
-        * @description Hides the button's menu.
-        * @protected
-        */
-        _hideMenu: function () {
-        
-            var oMenu = this._menu;
-        
-            if (oMenu) {
-        
-                oMenu.hide();
-        
-            }
-        
-        },
-        
-        
-        
-        
-        // Protected event handlers
-        
-        
-        /**
-        * @method _onMouseOver
-        * @description "mouseover" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onMouseOver: function (p_oEvent) {
-        
-               var sType = this.get("type"),
-                       oElement,
-                               nOptionRegionX;
-
-
-                       if (sType === "split") {
-
-                               oElement = this.get("element");
-                               nOptionRegionX = 
-                                       (Dom.getX(oElement) + (oElement.offsetWidth - this.OPTION_AREA_WIDTH));
-                                       
-                               this._nOptionRegionX = nOptionRegionX;
-                       
-                       }
-        
-
-            if (!this._hasMouseEventHandlers) {
-        
-                               if (sType === "split") {
-        
-                               this.on("mousemove", this._onMouseMove);
-
-                       }
-
-                this.on("mouseout", this._onMouseOut);
-        
-                this._hasMouseEventHandlers = true;
-        
-            }
-        
-
-            this.addStateCSSClasses("hover");
-
-
-                       if (sType === "split" && (Event.getPageX(p_oEvent) > nOptionRegionX)) {
-       
-                               this.addStateCSSClasses("hoveroption");
-       
-                       }
-
-        
-            if (this._activationButtonPressed) {
-        
-                this.addStateCSSClasses("active");
-        
-            }
-        
-        
-            if (this._bOptionPressed) {
-        
-                this.addStateCSSClasses("activeoption");
-            
-            }
-
-
-            if (this._activationButtonPressed || this._bOptionPressed) {
-        
-                Event.removeListener(document, "mouseup", this._onDocumentMouseUp);
-        
-            }
-
-        },
-
-
-        /**
-        * @method _onMouseMove
-        * @description "mousemove" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */        
-        _onMouseMove: function (p_oEvent) {
-        
-               var nOptionRegionX = this._nOptionRegionX;
-        
-               if (nOptionRegionX) {
-
-                               if (Event.getPageX(p_oEvent) > nOptionRegionX) {
-                                       
-                                       this.addStateCSSClasses("hoveroption");
-       
-                               }
-                               else {
-
-                                       this.removeStateCSSClasses("hoveroption");
-                               
-                               }
-                               
-               }
-        
-        },
-        
-        /**
-        * @method _onMouseOut
-        * @description "mouseout" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onMouseOut: function (p_oEvent) {
-
-                       var sType = this.get("type");
-        
-            this.removeStateCSSClasses("hover");
-        
-
-            if (sType != "menu") {
-        
-                this.removeStateCSSClasses("active");
-        
-            }
-        
-
-            if (this._activationButtonPressed || this._bOptionPressed) {
-        
-                Event.on(document, "mouseup", this._onDocumentMouseUp, null, this);
-        
-            }
-
-
-                       if (sType === "split" && (Event.getPageX(p_oEvent) > this._nOptionRegionX)) {
-                       
-                               this.removeStateCSSClasses("hoveroption");
-       
-                       }
-            
-        },
-        
-        
-        /**
-        * @method _onDocumentMouseUp
-        * @description "mouseup" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onDocumentMouseUp: function (p_oEvent) {
-        
-            this._activationButtonPressed = false;
-            this._bOptionPressed = false;
-        
-            var sType = this.get("type"),
-                oTarget,
-                oMenuElement;
-        
-            if (sType == "menu" || sType == "split") {
-
-                oTarget = Event.getTarget(p_oEvent);
-                oMenuElement = this._menu.element;
-        
-                if (oTarget != oMenuElement && 
-                    !Dom.isAncestor(oMenuElement, oTarget)) {
-
-                    this.removeStateCSSClasses((sType == "menu" ? 
-                        "active" : "activeoption"));
-            
-                    this._hideMenu();
-
-                }
-        
-            }
-        
-            Event.removeListener(document, "mouseup", this._onDocumentMouseUp);
-        
-        },
-        
-        
-        /**
-        * @method _onMouseDown
-        * @description "mousedown" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onMouseDown: function (p_oEvent) {
-        
-            var sType,
-               bReturnVal = true;
-        
-        
-            function onMouseUp() {
-            
-                this._hideMenu();
-                this.removeListener("mouseup", onMouseUp);
-            
-            }
-        
-        
-            if ((p_oEvent.which || p_oEvent.button) == 1) {
-        
-        
-                if (!this.hasFocus()) {
-                
-                    this.focus();
-                
-                }
-        
-        
-                sType = this.get("type");
-        
-        
-                if (sType == "split") {
-                
-                    if (Event.getPageX(p_oEvent) > this._nOptionRegionX) {
-                        
-                        this.fireEvent("option", p_oEvent);
-                                               bReturnVal = false;
-        
-                    }
-                    else {
-        
-                        this.addStateCSSClasses("active");
-        
-                        this._activationButtonPressed = true;
-        
-                    }
-        
-                }
-                else if (sType == "menu") {
-        
-                    if (this.isActive()) {
-        
-                        this._hideMenu();
-        
-                        this._activationButtonPressed = false;
-        
-                    }
-                    else {
-        
-                        this._showMenu(p_oEvent);
-        
-                        this._activationButtonPressed = true;
-                    
-                    }
-        
-                }
-                else {
-        
-                    this.addStateCSSClasses("active");
-        
-                    this._activationButtonPressed = true;
-                
-                }
-        
-        
-        
-                if (sType == "split" || sType == "menu") {
-
-                    this._hideMenuTimer = Lang.later(250, this, this.on, ["mouseup", onMouseUp]);
-        
-                }
-        
-            }
-            
-            return bReturnVal;
-            
-        },
-        
-        
-        /**
-        * @method _onMouseUp
-        * @description "mouseup" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onMouseUp: function (p_oEvent) {
-        
-            var sType = this.get("type"),
-               oHideMenuTimer = this._hideMenuTimer,
-               bReturnVal = true;
-        
-        
-            if (oHideMenuTimer) {
-  
-                               oHideMenuTimer.cancel();
-        
-            }
-        
-        
-            if (sType == "checkbox" || sType == "radio") {
-        
-                this.set("checked", !(this.get("checked")));
-            
-            }
-        
-        
-            this._activationButtonPressed = false;
-            
-        
-            if (sType != "menu") {
-        
-                this.removeStateCSSClasses("active");
-            
-            }
-
-                
-                       if (sType == "split" && Event.getPageX(p_oEvent) > this._nOptionRegionX) {
-                               
-                               bReturnVal = false;
-
-                       }
-
-                       return bReturnVal;
-            
-        },
-        
-        
-        /**
-        * @method _onFocus
-        * @description "focus" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onFocus: function (p_oEvent) {
-        
-            var oElement;
-        
-            this.addStateCSSClasses("focus");
-        
-            if (this._activationKeyPressed) {
-        
-                this.addStateCSSClasses("active");
-           
-            }
-        
-            m_oFocusedButton = this;
-        
-        
-            if (!this._hasKeyEventHandlers) {
-        
-                oElement = this._button;
-        
-                Event.on(oElement, "blur", this._onBlur, null, this);
-                Event.on(oElement, "keydown", this._onKeyDown, null, this);
-                Event.on(oElement, "keyup", this._onKeyUp, null, this);
-        
-                this._hasKeyEventHandlers = true;
-        
-            }
-        
-        
-            this.fireEvent("focus", p_oEvent);
-        
-        },
-        
-        
-        /**
-        * @method _onBlur
-        * @description "blur" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onBlur: function (p_oEvent) {
-        
-            this.removeStateCSSClasses("focus");
-        
-            if (this.get("type") != "menu") {
-        
-                this.removeStateCSSClasses("active");
-
-            }    
-        
-            if (this._activationKeyPressed) {
-        
-                Event.on(document, "keyup", this._onDocumentKeyUp, null, this);
-        
-            }
-        
-        
-            m_oFocusedButton = null;
-        
-            this.fireEvent("blur", p_oEvent);
-           
-        },
-        
-        
-        /**
-        * @method _onDocumentKeyUp
-        * @description "keyup" event handler for the document.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onDocumentKeyUp: function (p_oEvent) {
-        
-            if (this._isActivationKey(Event.getCharCode(p_oEvent))) {
-        
-                this._activationKeyPressed = false;
-                
-                Event.removeListener(document, "keyup", this._onDocumentKeyUp);
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onKeyDown
-        * @description "keydown" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onKeyDown: function (p_oEvent) {
-        
-            var oMenu = this._menu;
-        
-        
-            if (this.get("type") == "split" && 
-                this._isSplitButtonOptionKey(p_oEvent)) {
-        
-                this.fireEvent("option", p_oEvent);
-        
-            }
-            else if (this._isActivationKey(Event.getCharCode(p_oEvent))) {
-        
-                if (this.get("type") == "menu") {
-        
-                    this._showMenu(p_oEvent);
-        
-                }
-                else {
-        
-                    this._activationKeyPressed = true;
-                    
-                    this.addStateCSSClasses("active");
-                
-                }
-            
-            }
-        
-        
-            if (oMenu && oMenu.cfg.getProperty("visible") && 
-                Event.getCharCode(p_oEvent) == 27) {
-            
-                oMenu.hide();
-                this.focus();
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onKeyUp
-        * @description "keyup" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onKeyUp: function (p_oEvent) {
-        
-            var sType;
-        
-            if (this._isActivationKey(Event.getCharCode(p_oEvent))) {
-        
-                sType = this.get("type");
-        
-                if (sType == "checkbox" || sType == "radio") {
-        
-                    this.set("checked", !(this.get("checked")));
-                
-                }
-        
-                this._activationKeyPressed = false;
-        
-                if (this.get("type") != "menu") {
-        
-                    this.removeStateCSSClasses("active");
-        
-                }
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onClick
-        * @description "click" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onClick: function (p_oEvent) {
-        
-            var sType = this.get("type"),
-                sTitle,
-                oForm,
-                oSrcElement,
-                bReturnVal;
-        
-
-                       switch (sType) {
-
-                       case "radio":
-                       case "checkbox":
-
-                               if (!this._hasDefaultTitle) {
-
-                                       if (this.get("checked")) {
-
-                                               sTitle = (sType == "radio") ? 
-                                                                       this.RADIO_CHECKED_TITLE : 
-                                                                       this.CHECKBOX_CHECKED_TITLE;
-
-                                       }
-                                       else {
-
-                                               sTitle = (sType == "radio") ? 
-                                                                       this.RADIO_DEFAULT_TITLE : 
-                                                                       this.CHECKBOX_DEFAULT_TITLE;
-
-                                       }
-
-                                       this.set("title", sTitle);
-
-                               }
-
-                               break;
-
-                       case "submit":
-
-                               if (p_oEvent.returnValue !== false) {
-
-                                       this.submitForm();
-
-                               }
-
-                               break;
-
-                       case "reset":
-
-                               oForm = this.getForm();
-
-                               if (oForm) {
-
-                                       oForm.reset();
-
-                               }
-
-                               break;
-
-                       case "menu":
-
-                               sTitle = this._menu.cfg.getProperty("visible") ? 
-                                                               this.MENUBUTTON_MENU_VISIBLE_TITLE : 
-                                                               this.MENUBUTTON_DEFAULT_TITLE;
-
-                               this.set("title", sTitle);
-
-                               break;
-
-                       case "split":
-
-                               if (this._nOptionRegionX > 0 && 
-                                               (Event.getPageX(p_oEvent) > this._nOptionRegionX)) {
-
-                                       bReturnVal = false;
-
-                               }
-                               else {
-
-                                       this._hideMenu();
-
-                                       oSrcElement = this.get("srcelement");
-
-                                       if (oSrcElement && oSrcElement.type == "submit" && 
-                                                       p_oEvent.returnValue !== false) {
-
-                                               this.submitForm();
-
-                                       }
-
-                               }
-
-                               sTitle = this._menu.cfg.getProperty("visible") ? 
-                                                               this.SPLITBUTTON_OPTION_VISIBLE_TITLE : 
-                                                               this.SPLITBUTTON_DEFAULT_TITLE;
-
-                               this.set("title", sTitle);
-
-                               break;
-
-                       }
-
-                       return bReturnVal;
-        
-        },
-        
-        
-        /**
-        * @method _onDblClick
-        * @description "dblclick" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onDblClick: function (p_oEvent) {
-        
-            var bReturnVal = true;
-    
-                       if (this.get("type") == "split" && Event.getPageX(p_oEvent) > this._nOptionRegionX) {
-
-                               bReturnVal = false;
-                       
-                       }
-        
-               return bReturnVal;
-        
-        },        
-        
-        
-        /**
-        * @method _onAppendTo
-        * @description "appendTo" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onAppendTo: function (p_oEvent) {
-        
-            /*
-                It is necessary to call "_addListenersToForm" using 
-                "setTimeout" to make sure that the button's "form" property 
-                returns a node reference.  Sometimes, if you try to get the 
-                reference immediately after appending the field, it is null.
-            */
-        
-            Lang.later(0, this, this._addListenersToForm);
-        
-        },
-        
-        
-        /**
-        * @method _onFormReset
-        * @description "reset" event handler for the button's form.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event 
-        * object passed back by the event utility (YAHOO.util.Event).
-        */
-        _onFormReset: function (p_oEvent) {
-        
-            var sType = this.get("type"),
-                oMenu = this._menu;
-        
-            if (sType == "checkbox" || sType == "radio") {
-        
-                this.resetValue("checked");
-        
-            }
-        
-        
-            if (Menu && oMenu && (oMenu instanceof Menu)) {
-        
-                this.resetValue("selectedMenuItem");
-        
-            }
-        
-        },
-
-
-        /**
-        * @method _onFormSubmit
-        * @description "submit" event handler for the button's form.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event 
-        * object passed back by the event utility (YAHOO.util.Event).
-        */        
-        _onFormSubmit: function (p_oEvent) {
-        
-               this.createHiddenFields();
-        
-        },
-        
-        
-        /**
-        * @method _onDocumentMouseDown
-        * @description "mousedown" event handler for the document.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onDocumentMouseDown: function (p_oEvent) {
-
-            var oTarget = Event.getTarget(p_oEvent),
-                oButtonElement = this.get("element"),
-                oMenuElement = this._menu.element;
-           
-        
-            if (oTarget != oButtonElement && 
-                !Dom.isAncestor(oButtonElement, oTarget) && 
-                oTarget != oMenuElement && 
-                !Dom.isAncestor(oMenuElement, oTarget)) {
-        
-                this._hideMenu();
-        
-                Event.removeListener(document, "mousedown", 
-                    this._onDocumentMouseDown);    
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onOption
-        * @description "option" event handler for the button.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onOption: function (p_oEvent) {
-        
-            if (this.hasClass("yui-split-button-activeoption")) {
-        
-                this._hideMenu();
-        
-                this._bOptionPressed = false;
-        
-            }
-            else {
-        
-                this._showMenu(p_oEvent);    
-        
-                this._bOptionPressed = true;
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onMenuShow
-        * @description "show" event handler for the button's menu.
-        * @private
-        * @param {String} p_sType String representing the name of the event  
-        * that was fired.
-        */
-        _onMenuShow: function (p_sType) {
-        
-            Event.on(document, "mousedown", this._onDocumentMouseDown, 
-                null, this);
-        
-            var sTitle,
-                sState;
-            
-            if (this.get("type") == "split") {
-        
-                sTitle = this.SPLITBUTTON_OPTION_VISIBLE_TITLE;
-                sState = "activeoption";
-            
-            }
-            else {
-        
-                sTitle = this.MENUBUTTON_MENU_VISIBLE_TITLE;        
-                sState = "active";
-        
-            }
-        
-            this.addStateCSSClasses(sState);
-            this.set("title", sTitle);
-        
-        },
-        
-        
-        /**
-        * @method _onMenuHide
-        * @description "hide" event handler for the button's menu.
-        * @private
-        * @param {String} p_sType String representing the name of the event  
-        * that was fired.
-        */
-        _onMenuHide: function (p_sType) {
-            
-            var oMenu = this._menu,
-                sTitle,
-                sState;
-        
-            
-            if (this.get("type") == "split") {
-        
-                sTitle = this.SPLITBUTTON_DEFAULT_TITLE;
-                sState = "activeoption";
-        
-            }
-            else {
-        
-                sTitle = this.MENUBUTTON_DEFAULT_TITLE;        
-                sState = "active";
-            }
-        
-        
-            this.removeStateCSSClasses(sState);
-            this.set("title", sTitle);
-        
-        
-            if (this.get("type") == "split") {
-        
-                this._bOptionPressed = false;
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onMenuKeyDown
-        * @description "keydown" event handler for the button's menu.
-        * @private
-        * @param {String} p_sType String representing the name of the event  
-        * that was fired.
-        * @param {Array} p_aArgs Array of arguments sent when the event 
-        * was fired.
-        */
-        _onMenuKeyDown: function (p_sType, p_aArgs) {
-        
-            var oEvent = p_aArgs[0];
-        
-            if (Event.getCharCode(oEvent) == 27) {
-        
-                this.focus();
-        
-                if (this.get("type") == "split") {
-                
-                    this._bOptionPressed = false;
-                
-                }
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onMenuRender
-        * @description "render" event handler for the button's menu.
-        * @private
-        * @param {String} p_sType String representing the name of the  
-        * event thatwas fired.
-        */
-        _onMenuRender: function (p_sType) {
-        
-            var oButtonElement = this.get("element"),
-                oButtonParent = oButtonElement.parentNode,
-                               oMenu = this._menu,
-                oMenuElement = oMenu.element,
-                               oSrcElement = oMenu.srcElement;
-        
-        
-            if (oButtonParent != oMenuElement.parentNode) {
-        
-                oButtonParent.appendChild(oMenuElement);
-            
-            }
-
-                       this._renderedMenu = true;
-
-                       //      If the user has designated an <option> of the Menu's source 
-                       //      <select> element to be selected, sync the selectedIndex with 
-                       //      the "selectedMenuItem" Attribute.
-
-                       if (oSrcElement && 
-                                       oSrcElement.nodeName.toLowerCase() === "select" && 
-                                       oSrcElement.value) {
-                               
-                               this.set("selectedMenuItem", 
-                                                       oMenu.getItem(oSrcElement.selectedIndex));
-                               
-                       }
-
-        },
-
-        
-        
-        /**
-        * @method _onMenuClick
-        * @description "click" event handler for the button's menu.
-        * @private
-        * @param {String} p_sType String representing the name of the event  
-        * that was fired.
-        * @param {Array} p_aArgs Array of arguments sent when the event 
-        * was fired.
-        */
-        _onMenuClick: function (p_sType, p_aArgs) {
-
-            var oItem = p_aArgs[1],
-                oSrcElement;
-        
-            if (oItem) {
-        
-                               this.set("selectedMenuItem", oItem);
-
-                oSrcElement = this.get("srcelement");
-            
-                if (oSrcElement && oSrcElement.type == "submit") {
-        
-                    this.submitForm();
-            
-                }
-            
-                this._hideMenu();
-            
-            }
-        
-        },
-
-
-        /**
-        * @method _onSelectedMenuItemChange
-        * @description "selectedMenuItemChange" event handler for the Button's
-               * "selectedMenuItem" attribute.
-        * @param {Event} event Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-               _onSelectedMenuItemChange: function (event) {
-               
-                       var oSelected = event.prevValue,
-                               oItem = event.newValue;
-
-                       if (oSelected) {
-                               Dom.removeClass(oSelected.element, "yui-button-selectedmenuitem");
-                       }
-                       
-                       if (oItem) {
-                               Dom.addClass(oItem.element, "yui-button-selectedmenuitem");
-                       }
-                       
-               },        
-        
-        
-        // Public methods
-        
-        
-        /**
-        * @method createButtonElement
-        * @description Creates the button's HTML elements.
-        * @param {String} p_sType String indicating the type of element 
-        * to create.
-        * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-58190037">HTMLElement</a>}
-        */
-        createButtonElement: function (p_sType) {
-        
-            var sNodeName = this.NODE_NAME,
-                oElement = document.createElement(sNodeName);
-        
-            oElement.innerHTML =  "<" + sNodeName + " class=\"first-child\">" + 
-                (p_sType == "link" ? "<a></a>" : 
-                "<button type=\"button\"></button>") + "</" + sNodeName + ">";
-        
-            return oElement;
-        
-        },
-
-        
-        /**
-        * @method addStateCSSClasses
-        * @description Appends state-specific CSS classes to the button's root 
-        * DOM element.
-        */
-        addStateCSSClasses: function (p_sState) {
-        
-            var sType = this.get("type");
-        
-            if (Lang.isString(p_sState)) {
-        
-                if (p_sState != "activeoption" && p_sState != "hoveroption") {
-        
-                    this.addClass(this.CSS_CLASS_NAME + ("-" + p_sState));
-        
-                }
-        
-                this.addClass("yui-" + sType + ("-button-" + p_sState));
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method removeStateCSSClasses
-        * @description Removes state-specific CSS classes to the button's root 
-        * DOM element.
-        */
-        removeStateCSSClasses: function (p_sState) {
-        
-            var sType = this.get("type");
-        
-            if (Lang.isString(p_sState)) {
-        
-                this.removeClass(this.CSS_CLASS_NAME + ("-" + p_sState));
-                this.removeClass("yui-" + sType + ("-button-" + p_sState));
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method createHiddenFields
-        * @description Creates the button's hidden form field and appends it 
-        * to its parent form.
-        * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-6043025">HTMLInputElement</a>|Array}
-        */
-        createHiddenFields: function () {
-        
-            this.removeHiddenFields();
-        
-            var oForm = this.getForm(),
-                oButtonField,
-                sType,
-                bCheckable,
-                oMenu,
-                oMenuItem,
-                sButtonName,
-                oValue,
-                oMenuField,
-                oReturnVal,
-                               sMenuFieldName,
-                               oMenuSrcElement,
-                               bMenuSrcElementIsSelect = false;
-        
-        
-            if (oForm && !this.get("disabled")) {
-        
-                sType = this.get("type");
-                bCheckable = (sType == "checkbox" || sType == "radio");
-        
-        
-                if ((bCheckable && this.get("checked")) || (m_oSubmitTrigger == this)) {
-                
-        
-                    oButtonField = createInputElement((bCheckable ? sType : "hidden"),
-                                    this.get("name"), this.get("value"), this.get("checked"));
-            
-            
-                    if (oButtonField) {
-            
-                        if (bCheckable) {
-            
-                            oButtonField.style.display = "none";
-            
-                        }
-            
-                        oForm.appendChild(oButtonField);
-            
-                    }
-        
-                }
-                    
-        
-                oMenu = this._menu;
-            
-            
-                if (Menu && oMenu && (oMenu instanceof Menu)) {
-        
-        
-                    oMenuItem = this.get("selectedMenuItem");
-                                       oMenuSrcElement = oMenu.srcElement;
-                                       bMenuSrcElementIsSelect = (oMenuSrcElement && 
-                                                                                               oMenuSrcElement.nodeName.toUpperCase() == "SELECT");
-
-                    if (oMenuItem) {
-
-                                               oValue = (oMenuItem.value === null || oMenuItem.value === "") ? 
-                                                                       oMenuItem.cfg.getProperty("text") : oMenuItem.value;
-
-                                               sButtonName = this.get("name");
-
-
-                                               if (bMenuSrcElementIsSelect) {
-                                               
-                                                       sMenuFieldName = oMenuSrcElement.name;
-                                               
-                                               }
-                                               else if (sButtonName) {
-
-                                                       sMenuFieldName = (sButtonName + "_options");
-                                               
-                                               }
-                                               
-
-                                               if (oValue && sMenuFieldName) {
-               
-                                                       oMenuField = createInputElement("hidden", sMenuFieldName, oValue);
-                                                       oForm.appendChild(oMenuField);
-               
-                                               }
-                    
-                    }
-                    else if (bMenuSrcElementIsSelect) {
-                                       
-                                               oForm.appendChild(oMenuSrcElement);
-                    
-                    }
-        
-                }
-            
-            
-                if (oButtonField && oMenuField) {
-        
-                    this._hiddenFields = [oButtonField, oMenuField];
-        
-                }
-                else if (!oButtonField && oMenuField) {
-        
-                    this._hiddenFields = oMenuField;
-                
-                }
-                else if (oButtonField && !oMenuField) {
-        
-                    this._hiddenFields = oButtonField;
-                
-                }
-        
-                       oReturnVal = this._hiddenFields;
-        
-            }
-
-                       return oReturnVal;
-        
-        },
-        
-        
-        /**
-        * @method removeHiddenFields
-        * @description Removes the button's hidden form field(s) from its 
-        * parent form.
-        */
-        removeHiddenFields: function () {
-        
-            var oField = this._hiddenFields,
-                nFields,
-                i;
-        
-            function removeChild(p_oElement) {
-        
-                if (Dom.inDocument(p_oElement)) {
-        
-                    p_oElement.parentNode.removeChild(p_oElement);
-                
-                }
-                
-            }
-            
-        
-            if (oField) {
-        
-                if (Lang.isArray(oField)) {
-        
-                    nFields = oField.length;
-                    
-                    if (nFields > 0) {
-                    
-                        i = nFields - 1;
-                        
-                        do {
-        
-                            removeChild(oField[i]);
-        
-                        }
-                        while (i--);
-                    
-                    }
-                
-                }
-                else {
-        
-                    removeChild(oField);
-        
-                }
-        
-                this._hiddenFields = null;
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method submitForm
-        * @description Submits the form to which the button belongs.  Returns  
-        * true if the form was submitted successfully, false if the submission 
-        * was cancelled.
-        * @protected
-        * @return {Boolean}
-        */
-        submitForm: function () {
-        
-            var oForm = this.getForm(),
-        
-                oSrcElement = this.get("srcelement"),
-        
-                /*
-                    Boolean indicating if the event fired successfully 
-                    (was not cancelled by any handlers)
-                */
-        
-                bSubmitForm = false,
-                
-                oEvent;
-        
-        
-            if (oForm) {
-        
-                if (this.get("type") == "submit" || (oSrcElement && oSrcElement.type == "submit")) {
-        
-                    m_oSubmitTrigger = this;
-                    
-                }
-        
-        
-                if (UA.ie) {
-        
-                    bSubmitForm = oForm.fireEvent("onsubmit");
-        
-                }
-                else {  // Gecko, Opera, and Safari
-        
-                    oEvent = document.createEvent("HTMLEvents");
-                    oEvent.initEvent("submit", true, true);
-        
-                    bSubmitForm = oForm.dispatchEvent(oEvent);
-        
-                }
-        
-        
-                /*
-                    In IE and Safari, dispatching a "submit" event to a form 
-                    WILL cause the form's "submit" event to fire, but WILL NOT 
-                    submit the form.  Therefore, we need to call the "submit" 
-                    method as well.
-                */
-              
-                if ((UA.ie || UA.webkit) && bSubmitForm) {
-        
-                    oForm.submit();
-                
-                }
-            
-            }
-        
-            return bSubmitForm;
-            
-        },
-        
-        
-        /**
-        * @method init
-        * @description The Button class's initialization method.
-        * @param {String} p_oElement String specifying the id attribute of the 
-        * <code>&#60;input&#62;</code>, <code>&#60;button&#62;</code>,
-        * <code>&#60;a&#62;</code>, or <code>&#60;span&#62;</code> element to 
-        * be used to create the button.
-        * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-6043025">HTMLInputElement</a>|<a href="http://
-        * www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html
-        * #ID-34812697">HTMLButtonElement</a>|<a href="http://www.w3.org/TR
-        * /2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-33759296">
-        * HTMLElement</a>} p_oElement Object reference for the 
-        * <code>&#60;input&#62;</code>, <code>&#60;button&#62;</code>, 
-        * <code>&#60;a&#62;</code>, or <code>&#60;span&#62;</code> element to be 
-        * used to create the button.
-        * @param {Object} p_oElement Object literal specifying a set of 
-        * configuration attributes used to create the button.
-        * @param {Object} p_oAttributes Optional. Object literal specifying a 
-        * set of configuration attributes used to create the button.
-        */
-        init: function (p_oElement, p_oAttributes) {
-        
-            var sNodeName = p_oAttributes.type == "link" ? "a" : "button",
-                oSrcElement = p_oAttributes.srcelement,
-                oButton = p_oElement.getElementsByTagName(sNodeName)[0],
-                oInput;
-
-
-            if (!oButton) {
-
-                oInput = p_oElement.getElementsByTagName("input")[0];
-
-
-                if (oInput) {
-
-                    oButton = document.createElement("button");
-                    oButton.setAttribute("type", "button");
-
-                    oInput.parentNode.replaceChild(oButton, oInput);
-                
-                }
-
-            }
-
-            this._button = oButton;
-
-            /*
-                               Capture if the button has a value for the title attribute.  If so, we won't 
-                               override it for type of "checkbox" or "radio".
-            */
-            
-            this._hasDefaultTitle = (p_oAttributes.title && p_oAttributes.title.length > 0);
-
-            YAHOO.widget.Button.superclass.init.call(this, p_oElement, p_oAttributes);
-
-
-                       var sId = this.get("id"),
-                               sButtonId = sId + "-button";
-
-
-               oButton.id = sButtonId;
-
-
-                       var aLabels,
-                               oLabel;
-
-
-               var hasLabel = function (element) {
-               
-                               return (element.htmlFor === sId);
-
-               };
-
-
-                       var setLabel = function () {
-
-                               oLabel.setAttribute((UA.ie ? "htmlFor" : "for"), sButtonId);
-                       
-                       };
-
-
-                       if (oSrcElement && this.get("type") != "link") {
-
-                               aLabels = Dom.getElementsBy(hasLabel, "label");
-
-                               if (Lang.isArray(aLabels) && aLabels.length > 0) {
-                               
-                                       oLabel = aLabels[0];
-                               
-                               }
-
-                       }
-        
-
-            m_oButtons[sId] = this;
-        
-
-            this.addClass(this.CSS_CLASS_NAME);
-            this.addClass("yui-" + this.get("type") + "-button");
-        
-            Event.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);
-
-                       //      Need to reset the value of the "onclick" Attribute so that any
-                       //      handlers registered via the "onclick" Attribute are fired after 
-                       //      Button's default "_onClick" listener.
-
-                       var fnOnClick = this.get("onclick");
-
-                       this.set("onclick", null);
-                       this.set("onclick", fnOnClick);
-
-            this.on("dblclick", this._onDblClick);
-
-            if (oLabel) {
-            
-                               this.on("appendTo", setLabel);     
-            
-            }
-            
-            this.on("appendTo", this._onAppendTo);
-       
-        
-
-            var oContainer = this.get("container"),
-                oElement = this.get("element"),
-                bElInDoc = Dom.inDocument(oElement),
-                oParentNode;
-
-
-            if (oContainer) {
-        
-                if (oSrcElement && oSrcElement != oElement) {
-                
-                    oParentNode = oSrcElement.parentNode;
-
-                    if (oParentNode) {
-                    
-                        oParentNode.removeChild(oSrcElement);
-                    
-                    }
-
-                }
-        
-                if (Lang.isString(oContainer)) {
-        
-                    Event.onContentReady(oContainer, this.appendTo, oContainer, this);
-        
-                }
-                else {
-        
-                               this.on("init", function () {
-                               
-                                       Lang.later(0, this, this.appendTo, oContainer);
-                               
-                               });
-        
-                }
-        
-            }
-            else if (!bElInDoc && oSrcElement && oSrcElement != oElement) {
-
-                oParentNode = oSrcElement.parentNode;
-        
-                if (oParentNode) {
-        
-                    this.fireEvent("beforeAppendTo", {
-                        type: "beforeAppendTo",
-                        target: oParentNode
-                    });
-            
-                    oParentNode.replaceChild(oElement, oSrcElement);
-            
-                    this.fireEvent("appendTo", {
-                        type: "appendTo",
-                        target: oParentNode
-                    });
-                
-                }
-        
-            }
-            else if (this.get("type") != "link" && bElInDoc && oSrcElement && 
-                oSrcElement == oElement) {
-        
-                this._addListenersToForm();
-        
-            }
-        
-        
-
-                       this.fireEvent("init", {
-                               type: "init",
-                               target: this
-                       });        
-        
-        },
-        
-        
-        /**
-        * @method initAttributes
-        * @description Initializes all of the configuration attributes used to  
-        * create the button.
-        * @param {Object} p_oAttributes Object literal specifying a set of 
-        * configuration attributes used to create the button.
-        */
-        initAttributes: function (p_oAttributes) {
-        
-            var oAttributes = p_oAttributes || {};
-        
-            YAHOO.widget.Button.superclass.initAttributes.call(this, 
-                oAttributes);
-        
-        
-            /**
-            * @attribute type
-            * @description String specifying the button's type.  Possible 
-            * values are: "push," "link," "submit," "reset," "checkbox," 
-            * "radio," "menu," and "split."
-            * @default "push"
-            * @type String
-                       * @writeonce
-            */
-            this.setAttributeConfig("type", {
-        
-                value: (oAttributes.type || "push"),
-                validator: Lang.isString,
-                writeOnce: true,
-                method: this._setType
-
-            });
-        
-        
-            /**
-            * @attribute label
-            * @description String specifying the button's text label 
-            * or innerHTML.
-            * @default null
-            * @type String
-            */
-            this.setAttributeConfig("label", {
-        
-                value: oAttributes.label,
-                validator: Lang.isString,
-                method: this._setLabel
-        
-            });
-        
-        
-            /**
-            * @attribute value
-            * @description Object specifying the value for the button.
-            * @default null
-            * @type Object
-            */
-            this.setAttributeConfig("value", {
-        
-                value: oAttributes.value
-        
-            });
-        
-        
-            /**
-            * @attribute name
-            * @description String specifying the name for the button.
-            * @default null
-            * @type String
-            */
-            this.setAttributeConfig("name", {
-        
-                value: oAttributes.name,
-                validator: Lang.isString
-        
-            });
-        
-        
-            /**
-            * @attribute tabindex
-            * @description Number specifying the tabindex for the button.
-            * @default null
-            * @type Number
-            */
-            this.setAttributeConfig("tabindex", {
-        
-                value: oAttributes.tabindex,
-                validator: Lang.isNumber,
-                method: this._setTabIndex
-        
-            });
-        
-        
-            /**
-            * @attribute title
-            * @description String specifying the title for the button.
-            * @default null
-            * @type String
-            */
-            this.configureAttribute("title", {
-        
-                value: oAttributes.title,
-                validator: Lang.isString,
-                method: this._setTitle
-        
-            });
-        
-        
-            /**
-            * @attribute disabled
-            * @description Boolean indicating if the button should be disabled.  
-            * (Disabled buttons are dimmed and will not respond to user input 
-            * or fire events.  Does not apply to button's of type "link.")
-            * @default false
-            * @type Boolean
-            */
-            this.setAttributeConfig("disabled", {
-        
-                value: (oAttributes.disabled || false),
-                validator: Lang.isBoolean,
-                method: this._setDisabled
-        
-            });
-        
-        
-            /**
-            * @attribute href
-            * @description String specifying the href for the button.  Applies
-            * only to buttons of type "link."
-            * @type String
-            */
-            this.setAttributeConfig("href", {
-        
-                value: oAttributes.href,
-                validator: Lang.isString,
-                method: this._setHref
-        
-            });
-        
-        
-            /**
-            * @attribute target
-            * @description String specifying the target for the button.  
-            * Applies only to buttons of type "link."
-            * @type String
-            */
-            this.setAttributeConfig("target", {
-        
-                value: oAttributes.target,
-                validator: Lang.isString,
-                method: this._setTarget
-        
-            });
-        
-        
-            /**
-            * @attribute checked
-            * @description Boolean indicating if the button is checked. 
-            * Applies only to buttons of type "radio" and "checkbox."
-            * @default false
-            * @type Boolean
-            */
-            this.setAttributeConfig("checked", {
-        
-                value: (oAttributes.checked || false),
-                validator: Lang.isBoolean,
-                method: this._setChecked
-        
-            });
-        
-        
-            /**
-            * @attribute container
-            * @description HTML element reference or string specifying the id 
-            * attribute of the HTML element that the button's markup should be 
-            * rendered into.
-            * @type <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-            * level-one-html.html#ID-58190037">HTMLElement</a>|String
-            * @default null
-                       * @writeonce
-            */
-            this.setAttributeConfig("container", {
-        
-                value: oAttributes.container,
-                writeOnce: true
-        
-            });
-        
-        
-            /**
-            * @attribute srcelement
-            * @description Object reference to the HTML element (either 
-            * <code>&#60;input&#62;</code> or <code>&#60;span&#62;</code>) 
-            * used to create the button.
-            * @type <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-            * level-one-html.html#ID-58190037">HTMLElement</a>|String
-            * @default null
-                       * @writeonce
-            */
-            this.setAttributeConfig("srcelement", {
-        
-                value: oAttributes.srcelement,
-                writeOnce: true
-        
-            });
-        
-        
-            /**
-            * @attribute menu
-            * @description Object specifying the menu for the button.  
-            * The value can be one of the following:
-            * <ul>
-            * <li>Object specifying a <a href="YAHOO.widget.Menu.html">
-            * YAHOO.widget.Menu</a> instance.</li>
-            * <li>Object specifying a <a href="YAHOO.widget.Overlay.html">
-            * YAHOO.widget.Overlay</a> instance.</li>
-            * <li>String specifying the id attribute of the <code>&#60;div&#62;
-            * </code> element used to create the menu.  By default the menu 
-            * will be created as an instance of 
-            * <a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>.  
-            * If the <a href="YAHOO.widget.Menu.html#CSS_CLASS_NAME">
-            * default CSS class name for YAHOO.widget.Menu</a> is applied to 
-            * the <code>&#60;div&#62;</code> element, it will be created as an
-            * instance of <a href="YAHOO.widget.Menu.html">YAHOO.widget.Menu
-            * </a>.</li><li>String specifying the id attribute of the 
-            * <code>&#60;select&#62;</code> element used to create the menu.
-            * </li><li>Object specifying the <code>&#60;div&#62;</code> element
-            * used to create the menu.</li>
-            * <li>Object specifying the <code>&#60;select&#62;</code> element
-            * used to create the menu.</li>
-            * <li>Array of object literals, each representing a set of 
-            * <a href="YAHOO.widget.MenuItem.html">YAHOO.widget.MenuItem</a> 
-            * configuration attributes.</li>
-            * <li>Array of strings representing the text labels for each menu 
-            * item in the menu.</li>
-            * </ul>
-            * @type <a href="YAHOO.widget.Menu.html">YAHOO.widget.Menu</a>|<a 
-            * href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>|<a 
-            * href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-
-            * one-html.html#ID-58190037">HTMLElement</a>|String|Array
-            * @default null
-                       * @writeonce
-            */
-            this.setAttributeConfig("menu", {
-        
-                value: null,
-                method: this._setMenu,
-                writeOnce: true
-            
-            });
-        
-        
-            /**
-            * @attribute lazyloadmenu
-            * @description Boolean indicating the value to set for the 
-            * <a href="YAHOO.widget.Menu.html#lazyLoad">"lazyload"</a>
-            * configuration property of the button's menu.  Setting 
-            * "lazyloadmenu" to <code>true </code> will defer rendering of 
-            * the button's menu until the first time it is made visible.  
-            * If "lazyloadmenu" is set to <code>false</code>, the button's 
-            * menu will be rendered immediately if the button is in the 
-            * document, or in response to the button's "appendTo" event if 
-            * the button is not yet in the document.  In either case, the 
-            * menu is rendered into the button's parent HTML element.  
-            * <em>This attribute does not apply if a 
-            * <a href="YAHOO.widget.Menu.html">YAHOO.widget.Menu</a> or 
-            * <a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a> 
-            * instance is passed as the value of the button's "menu" 
-            * configuration attribute. <a href="YAHOO.widget.Menu.html">
-            * YAHOO.widget.Menu</a> or <a href="YAHOO.widget.Overlay.html">
-            * YAHOO.widget.Overlay</a> instances should be rendered before 
-            * being set as the value for the "menu" configuration 
-            * attribute.</em>
-            * @default true
-            * @type Boolean
-                       * @writeonce
-            */
-            this.setAttributeConfig("lazyloadmenu", {
-        
-                value: (oAttributes.lazyloadmenu === false ? false : true),
-                validator: Lang.isBoolean,
-                writeOnce: true
-        
-            });
-
-
-            /**
-            * @attribute menuclassname
-            * @description String representing the CSS class name to be 
-            * applied to the root element of the button's menu.
-            * @type String
-            * @default "yui-button-menu"
-                       * @writeonce
-            */
-            this.setAttributeConfig("menuclassname", {
-        
-                value: (oAttributes.menuclassname || "yui-button-menu"),
-                validator: Lang.isString,
-                method: this._setMenuClassName,
-                writeOnce: true
-        
-            });        
-
-
-                       /**
-                       * @attribute menuminscrollheight
-                       * @description Number defining the minimum threshold for the "menumaxheight" 
-                       * configuration attribute.  When set this attribute is automatically applied 
-                       * to all submenus.
-                       * @default 90
-                       * @type Number
-                       */
-            this.setAttributeConfig("menuminscrollheight", {
-        
-                value: (oAttributes.menuminscrollheight || 90),
-                validator: Lang.isNumber
-        
-            });
-
-
-            /**
-            * @attribute menumaxheight
-                       * @description Number defining the maximum height (in pixels) for a menu's 
-                       * body element (<code>&#60;div class="bd"&#60;</code>).  Once a menu's body 
-                       * exceeds this height, the contents of the body are scrolled to maintain 
-                       * this value.  This value cannot be set lower than the value of the 
-                       * "minscrollheight" configuration property.
-            * @type Number
-            * @default 0
-            */
-            this.setAttributeConfig("menumaxheight", {
-        
-                value: (oAttributes.menumaxheight || 0),
-                validator: Lang.isNumber
-        
-            });
-
-
-            /**
-            * @attribute menualignment
-                       * @description Array defining how the Button's Menu is aligned to the Button.  
-            * The default value of ["tl", "bl"] aligns the Menu's top left corner to the Button's 
-            * bottom left corner.
-            * @type Array
-            * @default ["tl", "bl"]
-            */
-            this.setAttributeConfig("menualignment", {
-        
-                value: (oAttributes.menualignment || ["tl", "bl"]),
-                validator: Lang.isArray
-        
-            });
-            
-
-            /**
-            * @attribute selectedMenuItem
-            * @description Object representing the item in the button's menu 
-            * that is currently selected.
-            * @type Number
-            * @default null
-            */
-            this.setAttributeConfig("selectedMenuItem", {
-        
-                value: null
-        
-            });
-        
-        
-            /**
-            * @attribute onclick
-            * @description Object literal representing the code to be executed  
-            * when the button is clicked.  Format:<br> <code> {<br> 
-            * <strong>fn:</strong> Function,   &#47;&#47; The handler to call 
-            * when the event fires.<br> <strong>obj:</strong> Object, 
-            * &#47;&#47; An object to pass back to the handler.<br> 
-            * <strong>scope:</strong> Object &#47;&#47;  The object to use 
-            * for the scope of the handler.<br> } </code>
-            * @type Object
-            * @default null
-            */
-            this.setAttributeConfig("onclick", {
-        
-                value: oAttributes.onclick,
-                method: this._setOnClick
-            
-            });
-
-
-            /**
-            * @attribute focusmenu
-            * @description Boolean indicating whether or not the button's menu 
-            * should be focused when it is made visible.
-            * @type Boolean
-            * @default true
-            */
-            this.setAttributeConfig("focusmenu", {
-        
-                value: (oAttributes.focusmenu === false ? false : true),
-                validator: Lang.isBoolean
-        
-            });
-
-        },
-        
-        
-        /**
-        * @method focus
-        * @description Causes the button to receive the focus and fires the 
-        * button's "focus" event.
-        */
-        focus: function () {
-        
-            if (!this.get("disabled")) {
-        
-                this._button.focus();
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method blur
-        * @description Causes the button to lose focus and fires the button's
-        * "blur" event.
-        */
-        blur: function () {
-        
-            if (!this.get("disabled")) {
-        
-                this._button.blur();
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method hasFocus
-        * @description Returns a boolean indicating whether or not the button 
-        * has focus.
-        * @return {Boolean}
-        */
-        hasFocus: function () {
-        
-            return (m_oFocusedButton == this);
-        
-        },
-        
-        
-        /**
-        * @method isActive
-        * @description Returns a boolean indicating whether or not the button 
-        * is active.
-        * @return {Boolean}
-        */
-        isActive: function () {
-        
-            return this.hasClass(this.CSS_CLASS_NAME + "-active");
-        
-        },
-        
-        
-        /**
-        * @method getMenu
-        * @description Returns a reference to the button's menu.
-        * @return {<a href="YAHOO.widget.Overlay.html">
-        * YAHOO.widget.Overlay</a>|<a 
-        * href="YAHOO.widget.Menu.html">YAHOO.widget.Menu</a>}
-        */
-        getMenu: function () {
-        
-            return this._menu;
-        
-        },
-        
-        
-        /**
-        * @method getForm
-        * @description Returns a reference to the button's parent form.
-        * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-
-        * 20000929/level-one-html.html#ID-40002357">HTMLFormElement</a>}
-        */
-        getForm: function () {
-        
-               var oButton = this._button,
-                       oForm;
-        
-            if (oButton) {
-            
-               oForm = oButton.form;
-            
-            }
-        
-               return oForm;
-        
-        },
-        
-        
-        /** 
-        * @method getHiddenFields
-        * @description Returns an <code>&#60;input&#62;</code> element or 
-        * array of form elements used to represent the button when its parent 
-        * form is submitted.  
-        * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-6043025">HTMLInputElement</a>|Array}
-        */
-        getHiddenFields: function () {
-        
-            return this._hiddenFields;
-        
-        },
-        
-        
-        /**
-        * @method destroy
-        * @description Removes the button's element from its parent element and 
-        * removes all event handlers.
-        */
-        destroy: function () {
-        
-        
-            var oElement = this.get("element"),
-                oParentNode = oElement.parentNode,
-                oMenu = this._menu,
-                aButtons;
-        
-            if (oMenu) {
-        
-
-                if (m_oOverlayManager && m_oOverlayManager.find(oMenu)) {
-
-                    m_oOverlayManager.remove(oMenu);
-
-                }
-        
-                oMenu.destroy();
-        
-            }
-        
-        
-            Event.purgeElement(oElement);
-            Event.purgeElement(this._button);
-            Event.removeListener(document, "mouseup", this._onDocumentMouseUp);
-            Event.removeListener(document, "keyup", this._onDocumentKeyUp);
-            Event.removeListener(document, "mousedown", this._onDocumentMouseDown);
-        
-        
-            var oForm = this.getForm();
-            
-            if (oForm) {
-        
-                Event.removeListener(oForm, "reset", this._onFormReset);
-                Event.removeListener(oForm, "submit", this._onFormSubmit);
-        
-            }
-
-
-            this.unsubscribeAll();
-
-            if (oParentNode) {
-
-                oParentNode.removeChild(oElement);
-            
-            }
-        
-        
-            delete m_oButtons[this.get("id")];
-
-            aButtons = Dom.getElementsByClassName(this.CSS_CLASS_NAME, 
-                                this.NODE_NAME, oForm); 
-
-            if (Lang.isArray(aButtons) && aButtons.length === 0) {
-
-                Event.removeListener(oForm, "keypress", 
-                        YAHOO.widget.Button.onFormKeyPress);
-
-            }
-
-        
-        },
-        
-        
-        fireEvent: function (p_sType , p_aArgs) {
-        
-                       var sType = arguments[0];
-               
-                       //  Disabled buttons should not respond to DOM events
-               
-                       if (this.DOM_EVENTS[sType] && this.get("disabled")) {
-               
-                               return false;
-               
-                       }
-               
-                       return YAHOO.widget.Button.superclass.fireEvent.apply(this, arguments);
-        
-        },
-        
-        
-        /**
-        * @method toString
-        * @description Returns a string representing the button.
-        * @return {String}
-        */
-        toString: function () {
-        
-            return ("Button " + this.get("id"));
-        
-        }
-    
-    });
-    
-    
-    /**
-    * @method YAHOO.widget.Button.onFormKeyPress
-    * @description "keypress" event handler for the button's form.
-    * @param {Event} p_oEvent Object representing the DOM event object passed 
-    * back by the event utility (YAHOO.util.Event).
-    */
-    YAHOO.widget.Button.onFormKeyPress = function (p_oEvent) {
-    
-        var oTarget = Event.getTarget(p_oEvent),
-            nCharCode = Event.getCharCode(p_oEvent),
-            sNodeName = oTarget.nodeName && oTarget.nodeName.toUpperCase(),
-            sType = oTarget.type,
-    
-            /*
-                Boolean indicating if the form contains any enabled or 
-                disabled YUI submit buttons
-            */
-    
-            bFormContainsYUIButtons = false,
-    
-            oButton,
-    
-            oYUISubmitButton,   // The form's first, enabled YUI submit button
-    
-            /*
-                 The form's first, enabled HTML submit button that precedes any 
-                 YUI submit button
-            */
-    
-            oPrecedingSubmitButton,
-            
-            oEvent; 
-    
-    
-        function isSubmitButton(p_oElement) {
-    
-            var sId,
-                oSrcElement;
-    
-            switch (p_oElement.nodeName.toUpperCase()) {
-    
-            case "INPUT":
-            case "BUTTON":
-            
-                if (p_oElement.type == "submit" && !p_oElement.disabled) {
-                    
-                    if (!bFormContainsYUIButtons && !oPrecedingSubmitButton) {
-
-                        oPrecedingSubmitButton = p_oElement;
-
-                    }
-                
-                }
-
-                break;
-            
-
-            default:
-            
-                sId = p_oElement.id;
-    
-                if (sId) {
-    
-                    oButton = m_oButtons[sId];
-        
-                    if (oButton) {
-
-                        bFormContainsYUIButtons = true;
-        
-                        if (!oButton.get("disabled")) {
-
-                            oSrcElement = oButton.get("srcelement");
-    
-                            if (!oYUISubmitButton && (oButton.get("type") == "submit" || 
-                                (oSrcElement && oSrcElement.type == "submit"))) {
-
-                                oYUISubmitButton = oButton;
-                            
-                            }
-                        
-                        }
-                        
-                    }
-                
-                }
-
-                break;
-    
-            }
-    
-        }
-    
-    
-        if (nCharCode == 13 && ((sNodeName == "INPUT" && (sType == "text" || 
-            sType == "password" || sType == "checkbox" || sType == "radio" || 
-            sType == "file")) || sNodeName == "SELECT")) {
-    
-            Dom.getElementsBy(isSubmitButton, "*", this);
-    
-    
-            if (oPrecedingSubmitButton) {
-    
-                /*
-                     Need to set focus to the first enabled submit button
-                     to make sure that IE includes its name and value 
-                     in the form's data set.
-                */
-    
-                oPrecedingSubmitButton.focus();
-            
-            }
-            else if (!oPrecedingSubmitButton && oYUISubmitButton) {
-    
-                               /*
-                                       Need to call "preventDefault" to ensure that the form doesn't end up getting
-                                       submitted twice.
-                               */
-    
-                       Event.preventDefault(p_oEvent);
-
-
-                               if (UA.ie) {
-                               
-                                       oYUISubmitButton.get("element").fireEvent("onclick");
-                               
-                               }
-                               else {
-
-                                       oEvent = document.createEvent("HTMLEvents");
-                                       oEvent.initEvent("click", true, true);
-                       
-
-                                       if (UA.gecko < 1.9) {
-                                       
-                                               oYUISubmitButton.fireEvent("click", oEvent);
-                                       
-                                       }
-                                       else {
-
-                                               oYUISubmitButton.get("element").dispatchEvent(oEvent);
-                                       
-                                       }
-  
-                }
-
-            }
-            
-        }
-    
-    };
-    
-    
-    /**
-    * @method YAHOO.widget.Button.addHiddenFieldsToForm
-    * @description Searches the specified form and adds hidden fields for  
-    * instances of YAHOO.widget.Button that are of type "radio," "checkbox," 
-    * "menu," and "split."
-    * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-
-    * one-html.html#ID-40002357">HTMLFormElement</a>} p_oForm Object reference 
-    * for the form to search.
-    */
-    YAHOO.widget.Button.addHiddenFieldsToForm = function (p_oForm) {
-    
-        var aButtons = Dom.getElementsByClassName(
-                            YAHOO.widget.Button.prototype.CSS_CLASS_NAME, 
-                            "*", 
-                            p_oForm),
-    
-            nButtons = aButtons.length,
-            oButton,
-            sId,
-            i;
-    
-        if (nButtons > 0) {
-    
-    
-            for (i = 0; i < nButtons; i++) {
-    
-                sId = aButtons[i].id;
-    
-                if (sId) {
-    
-                    oButton = m_oButtons[sId];
-        
-                    if (oButton) {
-           
-                        oButton.createHiddenFields();
-                        
-                    }
-                
-                }
-            
-            }
-    
-        }
-    
-    };
-    
-
-    /**
-    * @method YAHOO.widget.Button.getButton
-    * @description Returns a button with the specified id.
-    * @param {String} p_sId String specifying the id of the root node of the 
-    * HTML element representing the button to be retrieved.
-    * @return {YAHOO.widget.Button}
-    */
-    YAHOO.widget.Button.getButton = function (p_sId) {
-
-               return m_oButtons[p_sId];
-
-    };
-    
-    
-    // Events
-    
-    
-    /**
-    * @event focus
-    * @description Fires when the menu item receives focus.  Passes back a  
-    * single object representing the original DOM event object passed back by 
-    * the event utility (YAHOO.util.Event) when the event was fired.  See 
-    * <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> 
-    * for more information on listening for this event.
-    * @type YAHOO.util.CustomEvent
-    */
-    
-    
-    /**
-    * @event blur
-    * @description Fires when the menu item loses the input focus.  Passes back  
-    * a single object representing the original DOM event object passed back by 
-    * the event utility (YAHOO.util.Event) when the event was fired.  See 
-    * <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for  
-    * more information on listening for this event.
-    * @type YAHOO.util.CustomEvent
-    */
-    
-    
-    /**
-    * @event option
-    * @description Fires when the user invokes the button's option.  Passes 
-    * back a single object representing the original DOM event (either 
-    * "mousedown" or "keydown") that caused the "option" event to fire.  See 
-    * <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> 
-    * for more information on listening for this event.
-    * @type YAHOO.util.CustomEvent
-    */
-
-})();
-(function () {
-
-    // Shorthard for utilities
-    
-    var Dom = YAHOO.util.Dom,
-        Event = YAHOO.util.Event,
-        Lang = YAHOO.lang,
-        Button = YAHOO.widget.Button,  
-    
-        // Private collection of radio buttons
-    
-        m_oButtons = {};
-
-
-
-    /**
-    * The ButtonGroup class creates a set of buttons that are mutually 
-    * exclusive; checking one button in the set will uncheck all others in the 
-    * button group.
-    * @param {String} p_oElement String specifying the id attribute of the 
-    * <code>&#60;div&#62;</code> element of the button group.
-    * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-    * level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object 
-    * specifying the <code>&#60;div&#62;</code> element of the button group.
-    * @param {Object} p_oElement Object literal specifying a set of 
-    * configuration attributes used to create the button group.
-    * @param {Object} p_oAttributes Optional. Object literal specifying a set 
-    * of configuration attributes used to create the button group.
-    * @namespace YAHOO.widget
-    * @class ButtonGroup
-    * @constructor
-    * @extends YAHOO.util.Element
-    */
-    YAHOO.widget.ButtonGroup = function (p_oElement, p_oAttributes) {
-    
-        var fnSuperClass = YAHOO.widget.ButtonGroup.superclass.constructor,
-            sNodeName,
-            oElement,
-            sId;
-    
-        if (arguments.length == 1 && !Lang.isString(p_oElement) && 
-            !p_oElement.nodeName) {
-    
-            if (!p_oElement.id) {
-    
-                sId = Dom.generateId();
-    
-                p_oElement.id = sId;
-    
-    
-            }
-    
-    
-    
-            fnSuperClass.call(this, (this._createGroupElement()), p_oElement);
-    
-        }
-        else if (Lang.isString(p_oElement)) {
-    
-            oElement = Dom.get(p_oElement);
-    
-            if (oElement) {
-            
-                if (oElement.nodeName.toUpperCase() == this.NODE_NAME) {
-    
-            
-                    fnSuperClass.call(this, oElement, p_oAttributes);
-    
-                }
-    
-            }
-        
-        }
-        else {
-    
-            sNodeName = p_oElement.nodeName.toUpperCase();
-    
-            if (sNodeName && sNodeName == this.NODE_NAME) {
-        
-                if (!p_oElement.id) {
-        
-                    p_oElement.id = Dom.generateId();
-        
-        
-                }
-        
-        
-                fnSuperClass.call(this, p_oElement, p_oAttributes);
-    
-            }
-    
-        }
-    
-    };
-    
-    
-    YAHOO.extend(YAHOO.widget.ButtonGroup, YAHOO.util.Element, {
-    
-    
-        // Protected properties
-        
-        
-        /** 
-        * @property _buttons
-        * @description Array of buttons in the button group.
-        * @default null
-        * @protected
-        * @type Array
-        */
-        _buttons: null,
-        
-        
-        
-        // Constants
-        
-        
-        /**
-        * @property NODE_NAME
-        * @description The name of the tag to be used for the button 
-        * group's element. 
-        * @default "DIV"
-        * @final
-        * @type String
-        */
-        NODE_NAME: "DIV",
-        
-        
-        /**
-        * @property CSS_CLASS_NAME
-        * @description String representing the CSS class(es) to be applied  
-        * to the button group's element.
-        * @default "yui-buttongroup"
-        * @final
-        * @type String
-        */
-        CSS_CLASS_NAME: "yui-buttongroup",
-    
-    
-    
-        // Protected methods
-        
-        
-        /**
-        * @method _createGroupElement
-        * @description Creates the button group's element.
-        * @protected
-        * @return {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-22445964">HTMLDivElement</a>}
-        */
-        _createGroupElement: function () {
-        
-            var oElement = document.createElement(this.NODE_NAME);
-        
-            return oElement;
-        
-        },
-        
-        
-        
-        // Protected attribute setter methods
-        
-        
-        /**
-        * @method _setDisabled
-        * @description Sets the value of the button groups's 
-        * "disabled" attribute.
-        * @protected
-        * @param {Boolean} p_bDisabled Boolean indicating the value for
-        * the button group's "disabled" attribute.
-        */
-        _setDisabled: function (p_bDisabled) {
-        
-            var nButtons = this.getCount(),
-                i;
-        
-            if (nButtons > 0) {
-        
-                i = nButtons - 1;
-                
-                do {
-        
-                    this._buttons[i].set("disabled", p_bDisabled);
-                
-                }
-                while (i--);
-        
-            }
-        
-        },
-        
-        
-        
-        // Protected event handlers
-        
-        
-        /**
-        * @method _onKeyDown
-        * @description "keydown" event handler for the button group.
-        * @protected
-        * @param {Event} p_oEvent Object representing the DOM event object  
-        * passed back by the event utility (YAHOO.util.Event).
-        */
-        _onKeyDown: function (p_oEvent) {
-        
-            var oTarget = Event.getTarget(p_oEvent),
-                nCharCode = Event.getCharCode(p_oEvent),
-                sId = oTarget.parentNode.parentNode.id,
-                oButton = m_oButtons[sId],
-                nIndex = -1;
-        
-        
-            if (nCharCode == 37 || nCharCode == 38) {
-        
-                nIndex = (oButton.index === 0) ? 
-                            (this._buttons.length - 1) : (oButton.index - 1);
-            
-            }
-            else if (nCharCode == 39 || nCharCode == 40) {
-        
-                nIndex = (oButton.index === (this._buttons.length - 1)) ? 
-                            0 : (oButton.index + 1);
-        
-            }
-        
-        
-            if (nIndex > -1) {
-        
-                this.check(nIndex);
-                this.getButton(nIndex).focus();
-            
-            }        
-        
-        },
-        
-        
-        /**
-        * @method _onAppendTo
-        * @description "appendTo" event handler for the button group.
-        * @protected
-        * @param {Event} p_oEvent Object representing the event that was fired.
-        */
-        _onAppendTo: function (p_oEvent) {
-        
-            var aButtons = this._buttons,
-                nButtons = aButtons.length,
-                i;
-        
-            for (i = 0; i < nButtons; i++) {
-        
-                aButtons[i].appendTo(this.get("element"));
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method _onButtonCheckedChange
-        * @description "checkedChange" event handler for each button in the 
-        * button group.
-        * @protected
-        * @param {Event} p_oEvent Object representing the event that was fired.
-        * @param {<a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>}  
-        * p_oButton Object representing the button that fired the event.
-        */
-        _onButtonCheckedChange: function (p_oEvent, p_oButton) {
-        
-            var bChecked = p_oEvent.newValue,
-                oCheckedButton = this.get("checkedButton");
-        
-            if (bChecked && oCheckedButton != p_oButton) {
-        
-                if (oCheckedButton) {
-        
-                    oCheckedButton.set("checked", false, true);
-        
-                }
-        
-                this.set("checkedButton", p_oButton);
-                this.set("value", p_oButton.get("value"));
-        
-            }
-            else if (oCheckedButton && !oCheckedButton.set("checked")) {
-        
-                oCheckedButton.set("checked", true, true);
-        
-            }
-           
-        },
-        
-        
-        
-        // Public methods
-        
-        
-        /**
-        * @method init
-        * @description The ButtonGroup class's initialization method.
-        * @param {String} p_oElement String specifying the id attribute of the 
-        * <code>&#60;div&#62;</code> element of the button group.
-        * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object 
-        * specifying the <code>&#60;div&#62;</code> element of the button group.
-        * @param {Object} p_oElement Object literal specifying a set of  
-        * configuration attributes used to create the button group.
-        * @param {Object} p_oAttributes Optional. Object literal specifying a
-        * set of configuration attributes used to create the button group.
-        */
-        init: function (p_oElement, p_oAttributes) {
-        
-            this._buttons = [];
-        
-            YAHOO.widget.ButtonGroup.superclass.init.call(this, p_oElement, 
-                    p_oAttributes);
-        
-            this.addClass(this.CSS_CLASS_NAME);
-        
-        
-            var aButtons = this.getElementsByClassName("yui-radio-button");
-        
-        
-            if (aButtons.length > 0) {
-        
-        
-                this.addButtons(aButtons);
-        
-            }
-        
-        
-        
-            function isRadioButton(p_oElement) {
-        
-                return (p_oElement.type == "radio");
-        
-            }
-        
-            aButtons = 
-                Dom.getElementsBy(isRadioButton, "input", this.get("element"));
-        
-        
-            if (aButtons.length > 0) {
-        
-        
-                this.addButtons(aButtons);
-        
-            }
-        
-            this.on("keydown", this._onKeyDown);
-            this.on("appendTo", this._onAppendTo);
-        
-
-            var oContainer = this.get("container");
-
-            if (oContainer) {
-        
-                if (Lang.isString(oContainer)) {
-        
-                    Event.onContentReady(oContainer, function () {
-        
-                        this.appendTo(oContainer);            
-                    
-                    }, null, this);
-        
-                }
-                else {
-        
-                    this.appendTo(oContainer);
-        
-                }
-        
-            }
-        
-        
-        
-        },
-        
-        
-        /**
-        * @method initAttributes
-        * @description Initializes all of the configuration attributes used to  
-        * create the button group.
-        * @param {Object} p_oAttributes Object literal specifying a set of 
-        * configuration attributes used to create the button group.
-        */
-        initAttributes: function (p_oAttributes) {
-        
-            var oAttributes = p_oAttributes || {};
-        
-            YAHOO.widget.ButtonGroup.superclass.initAttributes.call(
-                this, oAttributes);
-        
-        
-            /**
-            * @attribute name
-            * @description String specifying the name for the button group.  
-            * This name will be applied to each button in the button group.
-            * @default null
-            * @type String
-            */
-            this.setAttributeConfig("name", {
-        
-                value: oAttributes.name,
-                validator: Lang.isString
-        
-            });
-        
-        
-            /**
-            * @attribute disabled
-            * @description Boolean indicating if the button group should be 
-            * disabled.  Disabling the button group will disable each button 
-            * in the button group.  Disabled buttons are dimmed and will not 
-            * respond to user input or fire events.
-            * @default false
-            * @type Boolean
-            */
-            this.setAttributeConfig("disabled", {
-        
-                value: (oAttributes.disabled || false),
-                validator: Lang.isBoolean,
-                method: this._setDisabled
-        
-            });
-        
-        
-            /**
-            * @attribute value
-            * @description Object specifying the value for the button group.
-            * @default null
-            * @type Object
-            */
-            this.setAttributeConfig("value", {
-        
-                value: oAttributes.value
-        
-            });
-        
-        
-            /**
-            * @attribute container
-            * @description HTML element reference or string specifying the id 
-            * attribute of the HTML element that the button group's markup
-            * should be rendered into.
-            * @type <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-            * level-one-html.html#ID-58190037">HTMLElement</a>|String
-            * @default null
-                       * @writeonce
-            */
-            this.setAttributeConfig("container", {
-        
-                value: oAttributes.container,
-                writeOnce: true
-        
-            });
-        
-        
-            /**
-            * @attribute checkedButton
-            * @description Reference for the button in the button group that 
-            * is checked.
-            * @type {<a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>}
-            * @default null
-            */
-            this.setAttributeConfig("checkedButton", {
-        
-                value: null
-        
-            });
-        
-        },
-        
-        
-        /**
-        * @method addButton
-        * @description Adds the button to the button group.
-        * @param {<a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>}  
-        * p_oButton Object reference for the <a href="YAHOO.widget.Button.html">
-        * YAHOO.widget.Button</a> instance to be added to the button group.
-        * @param {String} p_oButton String specifying the id attribute of the 
-        * <code>&#60;input&#62;</code> or <code>&#60;span&#62;</code> element 
-        * to be used to create the button to be added to the button group.
-        * @param {<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/
-        * level-one-html.html#ID-6043025">HTMLInputElement</a>|<a href="
-        * http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#
-        * ID-33759296">HTMLElement</a>} p_oButton Object reference for the 
-        * <code>&#60;input&#62;</code> or <code>&#60;span&#62;</code> element 
-        * to be used to create the button to be added to the button group.
-        * @param {Object} p_oButton Object literal specifying a set of 
-        * <a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a> 
-        * configuration attributes used to configure the button to be added to 
-        * the button group.
-        * @return {<a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>} 
-        */
-        addButton: function (p_oButton) {
-        
-            var oButton,
-                oButtonElement,
-                oGroupElement,
-                nIndex,
-                sButtonName,
-                sGroupName;
-        
-        
-            if (p_oButton instanceof Button && 
-                p_oButton.get("type") == "radio") {
-        
-                oButton = p_oButton;
-        
-            }
-            else if (!Lang.isString(p_oButton) && !p_oButton.nodeName) {
-        
-                p_oButton.type = "radio";
-        
-                oButton = new Button(p_oButton);
-
-            }
-            else {
-        
-                oButton = new Button(p_oButton, { type: "radio" });
-        
-            }
-        
-        
-            if (oButton) {
-        
-                nIndex = this._buttons.length;
-                sButtonName = oButton.get("name");
-                sGroupName = this.get("name");
-        
-                oButton.index = nIndex;
-        
-                this._buttons[nIndex] = oButton;
-                m_oButtons[oButton.get("id")] = oButton;
-        
-        
-                if (sButtonName != sGroupName) {
-        
-                    oButton.set("name", sGroupName);
-                
-                }
-        
-        
-                if (this.get("disabled")) {
-        
-                    oButton.set("disabled", true);
-        
-                }
-        
-        
-                if (oButton.get("checked")) {
-        
-                    this.set("checkedButton", oButton);
-        
-                }
-
-                
-                oButtonElement = oButton.get("element");
-                oGroupElement = this.get("element");
-                
-                if (oButtonElement.parentNode != oGroupElement) {
-                
-                    oGroupElement.appendChild(oButtonElement);
-                
-                }
-        
-                
-                oButton.on("checkedChange", 
-                    this._onButtonCheckedChange, oButton, this);
-        
-        
-            }
-
-                       return oButton;
-        
-        },
-        
-        
-        /**
-        * @method addButtons
-        * @description Adds the array of buttons to the button group.
-        * @param {Array} p_aButtons Array of <a href="YAHOO.widget.Button.html">
-        * YAHOO.widget.Button</a> instances to be added 
-        * to the button group.
-        * @param {Array} p_aButtons Array of strings specifying the id 
-        * attribute of the <code>&#60;input&#62;</code> or <code>&#60;span&#62;
-        * </code> elements to be used to create the buttons to be added to the 
-        * button group.
-        * @param {Array} p_aButtons Array of object references for the 
-        * <code>&#60;input&#62;</code> or <code>&#60;span&#62;</code> elements 
-        * to be used to create the buttons to be added to the button group.
-        * @param {Array} p_aButtons Array of object literals, each containing
-        * a set of <a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>  
-        * configuration attributes used to configure each button to be added 
-        * to the button group.
-        * @return {Array}
-        */
-        addButtons: function (p_aButtons) {
-    
-            var nButtons,
-                oButton,
-                aButtons,
-                i;
-        
-            if (Lang.isArray(p_aButtons)) {
-            
-                nButtons = p_aButtons.length;
-                aButtons = [];
-        
-                if (nButtons > 0) {
-        
-                    for (i = 0; i < nButtons; i++) {
-        
-                        oButton = this.addButton(p_aButtons[i]);
-                        
-                        if (oButton) {
-        
-                            aButtons[aButtons.length] = oButton;
-        
-                        }
-                    
-                    }
-                
-                }
-        
-            }
-
-                       return aButtons;
-        
-        },
-        
-        
-        /**
-        * @method removeButton
-        * @description Removes the button at the specified index from the 
-        * button group.
-        * @param {Number} p_nIndex Number specifying the index of the button 
-        * to be removed from the button group.
-        */
-        removeButton: function (p_nIndex) {
-        
-            var oButton = this.getButton(p_nIndex),
-                nButtons,
-                i;
-            
-            if (oButton) {
-        
-        
-                this._buttons.splice(p_nIndex, 1);
-                delete m_oButtons[oButton.get("id")];
-        
-                oButton.removeListener("checkedChange", 
-                    this._onButtonCheckedChange);
-
-                oButton.destroy();
-        
-        
-                nButtons = this._buttons.length;
-                
-                if (nButtons > 0) {
-        
-                    i = this._buttons.length - 1;
-                    
-                    do {
-        
-                        this._buttons[i].index = i;
-        
-                    }
-                    while (i--);
-                
-                }
-        
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method getButton
-        * @description Returns the button at the specified index.
-        * @param {Number} p_nIndex The index of the button to retrieve from the 
-        * button group.
-        * @return {<a href="YAHOO.widget.Button.html">YAHOO.widget.Button</a>}
-        */
-        getButton: function (p_nIndex) {
-        
-            return this._buttons[p_nIndex];
-        
-        },
-        
-        
-        /**
-        * @method getButtons
-        * @description Returns an array of the buttons in the button group.
-        * @return {Array}
-        */
-        getButtons: function () {
-        
-            return this._buttons;
-        
-        },
-        
-        
-        /**
-        * @method getCount
-        * @description Returns the number of buttons in the button group.
-        * @return {Number}
-        */
-        getCount: function () {
-        
-            return this._buttons.length;
-        
-        },
-        
-        
-        /**
-        * @method focus
-        * @description Sets focus to the button at the specified index.
-        * @param {Number} p_nIndex Number indicating the index of the button 
-        * to focus. 
-        */
-        focus: function (p_nIndex) {
-        
-            var oButton,
-                nButtons,
-                i;
-        
-            if (Lang.isNumber(p_nIndex)) {
-        
-                oButton = this._buttons[p_nIndex];
-                
-                if (oButton) {
-        
-                    oButton.focus();
-        
-                }
-            
-            }
-            else {
-        
-                nButtons = this.getCount();
-        
-                for (i = 0; i < nButtons; i++) {
-        
-                    oButton = this._buttons[i];
-        
-                    if (!oButton.get("disabled")) {
-        
-                        oButton.focus();
-                        break;
-        
-                    }
-        
-                }
-        
-            }
-        
-        },
-        
-        
-        /**
-        * @method check
-        * @description Checks the button at the specified index.
-        * @param {Number} p_nIndex Number indicating the index of the button 
-        * to check. 
-        */
-        check: function (p_nIndex) {
-        
-            var oButton = this.getButton(p_nIndex);
-            
-            if (oButton) {
-        
-                oButton.set("checked", true);
-            
-            }
-        
-        },
-        
-        
-        /**
-        * @method destroy
-        * @description Removes the button group's element from its parent 
-        * element and removes all event handlers.
-        */
-        destroy: function () {
-        
-        
-            var nButtons = this._buttons.length,
-                oElement = this.get("element"),
-                oParentNode = oElement.parentNode,
-                i;
-            
-            if (nButtons > 0) {
-        
-                i = this._buttons.length - 1;
-        
-                do {
-        
-                    this._buttons[i].destroy();
-        
-                }
-                while (i--);
-            
-            }
-        
-        
-            Event.purgeElement(oElement);
-            
-        
-            oParentNode.removeChild(oElement);
-        
-        },
-        
-        
-        /**
-        * @method toString
-        * @description Returns a string representing the button group.
-        * @return {String}
-        */
-        toString: function () {
-        
-            return ("ButtonGroup " + this.get("id"));
-        
-        }
-    
-    });
-
-})();
-YAHOO.register("button", YAHOO.widget.Button, {version: "2.7.0", build: "1799"});