here is a filter sample, for completeness I put in the showContact function.
<b>Filter name list: </b><input type=text id=txtFilter onKeyUp="filterNames(this);">
<select multiple style="widht: 1px;height:1px;visibility:hidden" id=selContacts onchange="showContact(this);">
</select>
<label id="lblStatus">Please type part of the name in the "Filter name list".</label>
<label id=lblAddress></label>
<script>
var arrAddr = new Array();
var arrNames = new Array();
arrNames[0] = 'name1';
arrNames[1] = 'name2';
arrNames[2] = 'name3';
arrNames[3] = 'name4';
arrNames[4] = 'name5';
arrAddr[0] = "address1";
arrAddr[1] = "address2";
arrAddr[2] = "address3";
arrAddr[3] = "address4";
arrAddr[4] = "address5";
function showContact(objSelect) {
var lngSelected = objSelect.value;
var i = 0;
while(i<objSelect.length) {
objSelect.options[ i ].selected = 0;
i++;
}
objSelect.value = lngSelected;
document.getElementById("lblAddress"

.innerHTML = arrAddr[lngSelected]
}
function filterNames(objTxt) {
var objSelect = document.getElementById("selContacts"

;
var i = 0;
var element = new Object();
var intOpt = 0;
var arrFiltered = new Array();
var strTxtVal = objTxt.value.toUpperCase();
while(i < arrNames.length) {
if((arrNames[ i ].toUpperCase().indexOf(strTxtVal)>-1)) {
arrFiltered[ i ] = arrNames[ i ];
intOpt++;
}
i++;
}
// remove all items from the select
i = objSelect.length-1;
while(i>-1){
objSelect.options[ i ] = null;
i--;
}
if(intOpt<200&&intOpt>0) {
i = 0;
intOpt = 0;
while(i<arrFiltered.length){
if(!(arrFiltered[ i ]==null)){
objSelect.options[intOpt] = new Option(arrFiltered[ i ],i);
intOpt++;
}
i++
}
document.getElementById("lblStatus"

.innerHTML = ""
objSelect.style.width = "200px"
objSelect.style.height = "200px"
objSelect.style.visibility = "visible"
}else if(intOpt==0){
objSelect.style.width = "1px"
objSelect.style.height = "1px"
objSelect.style.visibility = "hidden"
document.getElementById("lblStatus"

.innerHTML = 'Using the value "' + objTxt.value + '" does not return any contacts.<br>Please type less characters in the "Filter name list" textbox.';
}else {
objSelect.style.width = "1px"
objSelect.style.height = "1px"
objSelect.style.visibility = "hidden"
document.getElementById("lblStatus"

.innerHTML = 'Using the value "' + objTxt.value + '" returns too many contacts to display (more than 200) please type more characters in the "Filter name list" textbox.';
}
}
</script>