Event.observe(window, 'load', initSelectEvent, false);
//declaring the class
var addSelectEvent = Class.create();

var concatenatedLetters = "";

//defining the rest of the class implementation
addSelectEvent.prototype = {

  initialize: function(select) {  
    this.select = $(select);
    //assigning our method to the event

    this.select.onkeypress = this.trovaMatchReturnFalse.bindAsEventListener(this);
    this.select.onblur = this.azzeraConcatenatedLetters.bindAsEventListener(this);
    this.select.onfocus = this.azzeraConcatenatedLetters.bindAsEventListener(this);
  },
 
  trovaMatchReturnFalse: function(evt) {
 	trovaMatch(evt,this);
 	return false ;
 	}, 
  
 azzeraConcatenatedLetters: function(evt){
 concatenatedLetters=''
 }
 

 };
 
 //funzione 2/2 autolocator per nss:select
function trovaMatch(e,objSelect) {
	objSelect = Event.element(e);

    var codeASCII = e.keyCode;

    if (codeASCII == 27) { //delete all on ESC
	concatenatedLetters = "";
        findItem(objSelect); 
	return;
    }
    var letter = String.fromCharCode(codeASCII);
    letter = letter.toLowerCase();

    concatenatedLetters += letter;

    findItem(objSelect);        
}
//funzione 1/2 autolocator per nss:select
function findItem(objSelect) {

  for (var i = 0; i < objSelect.length; i++) {  
  	
    if (objSelect.options[i].text.toLowerCase().indexOf(concatenatedLetters) == 0) {
      objSelect.options[i].selected = true;
      return;
      }    
  }

// la funzione findItem viene richiamata sempre,evita il loop se la lettera inserita per prima non esiste nella lista
 if(concatenatedLetters.length>1){
 	// occorrenza non trovata, ci si riposiziona sull'elemento corrispondente alla lettera inserita, se esiste
 	concatenatedLetters= concatenatedLetters.substring(concatenatedLetters.length-1,concatenatedLetters.length);
 	findItem(objSelect);
}  
}
	
function initSelectEvent() {

	var comboArray = document.getElementsByTagName("select")
    for (i=0;i < comboArray.length; i++) {
		var watcher = new addSelectEvent(comboArray[i]);
	}
}



