YAHOO.widget.AutoComplete.prototype._onTextboxKeyDown = function(v,oSelf) {
    var nKeyCode = v.keyCode;
    switch (nKeyCode) {
        case 9:
            if(oSelf._oCurItem) {
                if(oSelf.delimChar && (oSelf._nKeyCode != nKeyCode)) {
                    if(oSelf._bContainerOpen) {YAHOO.util.Event.stopEvent(v);}
                }
                oSelf._selectItem(oSelf._oCurItem);
            }
            else {oSelf._toggleContainer(false);}
            break;
        case 13:
            var isMac = (navigator.userAgent.toLowerCase().indexOf("mac") != -1);
            if(!isMac) {
                if(oSelf._oCurItem) {
                    if(oSelf._nKeyCode != nKeyCode) {
                        if(oSelf._bContainerOpen) {YAHOO.util.Event.stopEvent(v);}
                    }
                    oSelf._selectItem(oSelf._oCurItem);
                }
                else {oSelf._toggleContainer(false);}
            }
            break;
        case 27:
            oSelf._toggleContainer(false);
            return;
        case 39:
            oSelf._jumpSelection();
            break;
        case 38:
            YAHOO.util.Event.stopEvent(v);
            oSelf._moveSelection(nKeyCode);
            break;
        case 40:
            YAHOO.util.Event.stopEvent(v);
            oSelf._moveSelection(nKeyCode);
            break;
        default:
            break;
    }
};

YAHOO.widget.AutoComplete.prototype._onTextboxKeyPress = function(v,oSelf) {
    var nKeyCode = v.keyCode;
    var isMac = (navigator.userAgent.toLowerCase().indexOf("mac") != -1);
    if(isMac) {
        switch (nKeyCode) {
        case 9:
            if(oSelf._oCurItem) {
                if(oSelf.delimChar && (oSelf._nKeyCode != nKeyCode)) {YAHOO.util.Event.stopEvent(v);}
            }
            break;
        case 13:
            if(oSelf._oCurItem) {
                if(oSelf._nKeyCode != nKeyCode) {
                    if(oSelf._bContainerOpen) {YAHOO.util.Event.stopEvent(v);}
                }
                oSelf._selectItem(oSelf._oCurItem);
            }
            else {oSelf._toggleContainer(false);}
            break;
        case 38:
        case 40:
            YAHOO.util.Event.stopEvent(v);
            break;
        default:
            break;
        }
    }
    else if(nKeyCode == 229) {oSelf._queryInterval = setInterval(function() { oSelf._onIMEDetected(oSelf); },500);}
};