Richfaces.ComboBoxList.addMethods({
	createDefaultList : function() {
		var items = new Array();
		for (var i = 0; i < this.itemsText.length; i++) {
			// if itemsValue[] is defined, send also the custom value to this.createItem()
			if (this.itemsValue)
				items.push(this.createItem(this.itemsText[i], this.classes.item.normal, this.itemsValue[i]));
			else
				items.push(this.createItem(this.itemsText[i], this.classes.item.normal));
		}
		this.createNewList(items);
	},
	doSelectItem : function(item) {
		this.selectedItem = item;
		// Save selected item's value locally, which should be stored in the 'id' attribute of the 'span' tag
		if (item != null && item.id != null)
			this.selectedItemValue = item.id;
	},
	getFilteredItems : function(text) {
		var items = new Array();
		for (var i = 0; i < this.itemsText.length; i++) {
			var itText = this.itemsText[i];
			if (itText.toLowerCase() .indexOf(text.toLowerCase()) != -1){
				items.push(this.createItem(itText, this.classes.item.normal));
			}
		}
		return items;
	},
	findItemBySubstr : function(substr) {
		var items = this.getItems();
		for ( var i = 0; i < items.length; i++) {
			var item = items[i]
			var itText = item.innerHTML.unescapeHTML();
			if (itText.toLowerCase() .indexOf(substr.toLowerCase()) != -1){
				return item;
			}
		}
	},
	createItem : function(text, className, value) {
		// receive the custom value
		var escapedText = text.escapeHTML();
		// Save custom value as 'id' in 'span', so it can be recovered later
		if (value != null)
			return "" + escapedText + "";
		else
			return "" + escapedText + "";
	}
});