docs: function(event) {
  		 	if (event.keyCode === lib.KEY.TAB && !this._trapTabs) {
  		 		if (this._selectedItem || this._isVisible) {
  		 			var keepIterating = true;
  		 			while (keepIterating) {
  						keepIterating = this.close(true);
  						if (this._parentDropdown && keepIterating) {
  							this._parentDropdown._dropdownNode.focus();
  						}
  					}
  		 		}
  		 		return;  // Allow the TAB to propagate
  		 	}
  			if (event.keyCode === lib.KEY.UP || event.keyCode === lib.KEY.DOWN || event.keyCode === lib.KEY.RIGHT || event.keyCode === lib.KEY.LEFT || event.keyCode === lib.KEY.ENTER || event.keyCode === lib.KEY.SPACE) {
  				var items = this.getItems();
  				var isMenuBar = this._dropdownNode.getAttribute("role") === "menubar";
  				if (items.length && items.length > 0) {
  					if (this._selectedItem) {
  						var index = items.indexOf(this._selectedItem);
  						// for inputs nested in labels, we should check the parent node since the label is the item
  						if (index < 0) {
  							index = items.indexOf(this._selectedItem.parentNode);
  						}
  						if (index >= 0) {
  							if (event.keyCode === lib.KEY.UP) {
  								if (isMenuBar) {
  									if (this._selectedItem.classList.contains("dropdownTrigger") && this._selectedItem.dropdown) { //$NON-NLS-0$
  										var dropdown = this._selectedItem.dropdown;
  										dropdown.open();
  										var menuitems = dropdown.getItems();
  										dropdown._selectItem(menuitems[menuitems.length - 1]); // select last item in submenu
  									}
  								} else {
  									this._selectItem(items[index > 0 ? index - 1 : items.length - 1]);
  								}
  							} else if (event.keyCode === lib.KEY.DOWN) {
  								if (isMenuBar) {
  									if (this._selectedItem.classList.contains("dropdownTrigger") && this._selectedItem.dropdown) { //$NON-NLS-0$
  										this._selectedItem.dropdown.open();
  										this._selectedItem.dropdown._selectItem(); // select first item in submenu
  									}
  								} else {
  									this._selectItem(items[index < items.length - 1 ? index + 1 : 0]);
  								}
  							} else if (event.keyCode === lib.KEY.RIGHT) {
  								if (isMenuBar) {
  									this._selectItem(items[index < items.length - 1 ? index + 1 : 0]);
  								} else {
  									if (this._selectedItem.classList.contains("dropdownTrigger") && this._selectedItem.dropdown) { //$NON-NLS-0$
  										this._selectedItem.dropdown.open();
  										this._selectedItem.dropdown._selectItem(); // select first item in submenu
  									} else {
  										this._closeThenOpen(this._selectedItem, event.keyCode, true);
  									}
  								}
  							} else if (event.keyCode === lib.KEY.LEFT) {
  								if (isMenuBar) {
  									this._selectItem(items[index > 0 ? index - 1 : items.length - 1]);
  								} else {
  									if (this._parentDropdown) {
  										this.close(true);
  										this._parentDropdown._dropdownNode.focus();
  									} else {
  										this._closeThenOpen(this._selectedItem, event.keyCode, true);
  									}
  								}
  							} else if (event.keyCode === lib.KEY.ENTER || event.keyCode === lib.KEY.SPACE) {
  							 	if (!(event.target === this._dropdownNode || event.target.getAttribute("role") === "menuitem")) {
  							 		return;
  						 		}
  								if (this._selectedItem.classList.contains("dropdownTrigger") && this._selectedItem.dropdown) { //$NON-NLS-0$
  									this._selectedItem.dropdown.open();
  									this._selectedItem.dropdown._selectItem(); // select first item in submenu
  								} else {
  									this._selectedItem.click();
  									// click handling auto closes menus without restoring focus to trigger, so need to restore here
  									lib.returnFocus(this._dropdownNode, this._triggerNode);
  								}
  							}
  						}
  					} else {
  						if (event.keyCode === lib.KEY.UP) {
  							this._selectItem(items[items.length - 1]); // select last item in menu
  						} else if (event.keyCode === lib.KEY.RIGHT || event.keyCode === lib.KEY.LEFT) {
  							this._closeThenOpen(this._triggerNode, event.keyCode, false);
  						} else {
  							// DOWN, ENTER, or SPACE: select first item in menu
  							this._selectItem(items[0]);
  						}
  					}
  					lib.stop(event);
  				}
  			} else if (event.keyCode === lib.KEY.ESCAPE) {
  				this.close(true);
  				if (this._parentDropdown) {
  					this._parentDropdown._dropdownNode.focus();
  				}
  				lib.stop(event);
  			}
  		 }