var Select = {
	enable: function(obj) {
		obj.disabled = false;
	},
	
	disable: function(obj) {
		obj.disabled = true;
	},
	
	add: function(obj, value, text) {
		var browser = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null; 
		var element; 
		
		element = document.createElement("option"); 
		element.value = value; 
		element.text = text; 
		
		obj.add(element, browser);
	},
	
	removeAll: function(obj) {
		if( obj.options.length > 0 ){ 
			while (obj.options.length) { 
				obj.remove(0); 
			}     
		}
	},
	
	update: function(obj, url) {
		// Creo un riferimento a questa classe
		var Select = this;
		// Rimuovo tutti gli elementi della select
		Select.removeAll(obj);
		// Aggiungo lo stato di "Loading..."
		Select.add(obj, 'loading', 'Loading...');
		// Disabilito la select
		Select.disable(obj);
		
		// Inoltro la richiesta Ajax per ri-popolare la select
		new Ajax.Request(url, {
			method: 'get',
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport) {
				// Svuoto la select
				Select.removeAll(obj);
				// Verifico che ci siano dei dati
				if ( transport.responseText ) {
					var result = transport.responseText.evalJSON(true);
					// Riempio la select con i dati
					for ( id in result ) {
						Select.add(obj, id, result[id]);
					}
					// Abilito la select
					Select.enable(obj);
				} else {
					Select.add(obj, '', 'No data found');
				}
			}
		});
	}
}
