var keysPressed = [];

function selectAsYouType(e)
{
    try {
    
    var keyChar; var keyNum;
    var comboBox;
    if (window.event) // IE
    {
        keyNum = e.keyCode;            
    }
    else
    {
        return true; // browser doesn't support DOM, do default processing.
    }
    
    keyChar = String.fromCharCode(keyNum);
    comboBox = e.srcElement;
    
    if (!comboBox)
    {
        return true; // if DOM didn't work, do default processing
    }
    if (keyNum == 27) // Esc key
    {
        clearKeysPressed(comboBox);
    }
    else
    {
        return selectElement(comboBox, keyChar);
    }
    return true;
    
    } catch(err){}
}

function clearKeysPressed(e)
{
        try {
        
            if (e.srcElement)
                keysPressed[e.srcElement]="";
        
        } catch(err){}
}

function selectElement(comboBox, keyChar)
{
        try {
        
            var i = 0;
            var keysPressedSoFar =     keysPressed[comboBox] || "";
            keysPressedSoFar += keyChar;
            keysPressed[comboBox] = keysPressedSoFar;
            var options = comboBox.options;
            for (i = 0; i<options.length; ++i)
            {
                if (options[i].text.toUpperCase().indexOf(keysPressedSoFar.toUpperCase(), 0) == 0)
                {
                    comboBox.selectedIndex = i;
                    return false; // don't do default processing
                }
            }
            keysPressed[comboBox] = String(keyChar); // didn't match start of any option, so reset keysPressed to just this key
            return true;    
            
        } catch(err){}    
}

