/**
 * Extension du plug-in Autocomplete.
 */
$.widget( "uoh.uohAutocomplete", $.ui.autocomplete, {

    _renderItem: function(ul, item) {
		/*
		 * Nous mettons en valeur la portion de texte trouvée
		 * (sans prendre en compte la casse).
		 */
		var lcLabel = item.label.toLowerCase();
		var lcTerm = this.term.toLowerCase();

		var htmlElements = $( "<a></a>" );
		
		var textLength = item.label.length;
		var nextText = 0;
		var nextTerm = lcLabel.indexOf(lcTerm);

		while (nextTerm >= 0) {
			if (nextText < nextTerm) {
				htmlElements.append($('<span></span>').text(item.label.substring(nextText, nextTerm)));
			}
			htmlElements.append($('<span class="matched"></span>').text(item.label.substring(nextTerm, nextTerm + lcTerm.length)));

			nextText = nextTerm + lcTerm.length;
			nextTerm = lcLabel.indexOf(lcTerm, nextText);
		}
		if (nextText < textLength) {
			htmlElements.append($('<span></span>').text(item.label.substring(nextText)));
		}
	
        return $( '<li class="uohSuggest-item"></li>' )
                .data( "item.autocomplete", item )
                .append( htmlElements )
                .appendTo( ul );
    },

	_renderMenu: function(ul, items) {
		var me = this, currentCategory = "";
		$.each(items, function(index, item) {
			if (item.category != currentCategory) {
				var categoryName = item.category;
				
				if (me.options.categories && me.options.categories[categoryName]) {
					categoryName = me.options.categories[categoryName];
				}
				
				ul.append($('<li class="uohSuggest-category"></li>').text(categoryName));
				currentCategory = item.category;
			}
			me._renderItem(ul, item);
		});
	}

});

