function handleKey(e)
   {
       keycode = event.keyCode;
       ele = event.srcElement;
       //alert(keycode);
       if(ele != null) {
                   if(keycode == 8 || keycode == 127) // backspace
                   {
                       if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
                           ele.enteredText = ele.enteredText.substring(0,ele.enteredText.length-1);
                           ele.insertIndex = -1;
                       }
                       else{
                           ele.enteredText = ele.enteredText.substr(0,ele.insertIndex-1) + ele.enteredText.substr(ele.insertIndex);
                           if(ele.insertIndex > 0 ) {
                               ele.insertIndex = ele.insertIndex - 1;
                           }
                       }
                       resetTime(ele);
                       event.cancelbubble=true;
                       setSelected();
                       return false;
                   }
                   else if(keycode == 46){  // delete
                       if(event.shiftKey) {
                           ele.enteredText = "";
                           ele.selectedIndex=0;
                           ele.insertIndex = -1;
                       }
                       else {
                           ele.enteredText = ele.enteredText.substr(0,ele.insertIndex) + ele.enteredText.substr(ele.insertIndex+1);
                       }
                       resetTime(ele);
                       setSelected();
                   }
                   else if(keycode == 37){ // left arrow
                        if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
                           ele.insertIndex = ele.enteredText.length-1;
                        }
                        else {
                           if(ele.insertIndex > 0 ) {
                               ele.insertIndex = ele.insertIndex - 1;
                           }
                        }
                        resetTime(ele);
                        setSelected();
                   }
                   else if(keycode == 39){ // right arrow
                        if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
                           ele.insertIndex = ele.enteredText.length;
                        }
                        else {
                           if(ele.insertIndex < ele.enteredText.length) {
                               ele.insertIndex = ele.insertIndex + 1;
                           }
                        }
                        resetTime(ele);
                        setSelected();
                   }
                   else if(keycode == 9 || keycode == 39 || keycode == 40){ // tab,up and down arrow
                       event.cancelbubble=false;
                       ele.enteredText = "";
                       ele.insertIndex = -1;
                       return true;
                   }
   
       }
       return true;
   }
   function resetTime(ele){
           var curTime = new Date();
           var t = curTime.getTime() -  ele.lastEntered;
           ele.lastEntered = curTime;
           window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
   }
   function setSelected(){
       ele = event.srcElement;
       if (ele != null)
       { // detect if element exists
           enteredText = ele.enteredText.toLowerCase();
           var selectIndex = -1;
           var selectLength = 20000;
           for(k=0; k < ele.children.length;k++){
             txt = ele.children[k].text.toLowerCase()
             if( txt.indexOf(enteredText) == 0) {
               if(txt == enteredText){
                  selectIndex =k;
                  break;
               }
               var len = txt.length;
               if(selectLength > len) {
                   selectLength = len;
                   selectIndex = k;
               }
             }
           }
           if(selectIndex > -1) {
              ele.selectedIndex=selectIndex;
              window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
             return false;
           }
       } // end if
       return false;
   }
   function selectItem(txtField,tier2){
       ele = event.srcElement;
       if(isNaN(ele.insertIndex)) {
         ele.insertIndex = -1;
       }
       if(ele.insertIndex > -1) {
           ele.enteredText = ele.enteredText.substr(0,ele.insertIndex) +  String.fromCharCode(event.keyCode) + ele.enteredText.substr(ele.insertIndex);
           ele.insertIndex = ele.insertIndex +1;
       }
       else {
           if(ele.enteredText == "") {
               ele.lastEntered = new Date();
           }
           else {
             var curTime = new Date();
             var t = curTime.getTime() -  ele.lastEntered;
             ele.lastEntered = curTime;
             if(t > 2000) {
                 ele.enteredText = "";
             }
           }
           ele.enteredText = ele.enteredText + String.fromCharCode(event.keyCode);
       }
       event.cancelBubble=true;
       window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
       return setSelected();
   }
