$.widget("custom.catcomplete", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
        var self = this,
        currentCategory = "";
        $.each( items, function( index, item ) {
            if ( item.category != undefined && item.category != currentCategory ) {
                ul.append( "<li class='ui-autocomplete-category'><b style=\"color: gray;\">" + item.category + "</b></li>" );
                currentCategory = item.category;
            }
            self._renderItem( ul, item );
        });
    },
    _renderItem: function (ul, item){
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( '<a class="ui-corner-all" tabindex="-1">' + item.label + '</a>' )
            /* original code: .append($("<a></a>").text(item.label))*/
            .appendTo( ul );

    }
});

$(document).ready(function(){
    $("#fsearchparam").catcomplete({
        source: "/modules/autocomplete/autocomplete.php",
        minLength: 2,
        delay: 500,
        /*focus: function(event, ui) {
            $('#fsearchparam').val(replaceTags(ui.item.label));
            return false;
        },*/

        select: function(event, ui) {
            if (ui.item.link != undefined && ui.item.link != ''){
                window.location.href = ui.item.link;
            } else {
                $('#fsearchparam').val(replaceTags(ui.item.label));
                $('#fsearch').submit();
            }

            return false;
        }

    })
;
});

function replaceTags(sStr){
    sStr = sStr.replace(/&(lt|gt);/g, function (strMatch, p1){
        return (p1 == "lt")? "<" : ">";
    });
    var strTagStrippedText = sStr.replace(/<\/?[^>]+(>|$)/g, "");

    return strTagStrippedText;
}

