$.ui.autocomplete.prototype._renderItem = function (ul, item) {
    if (item["autofillVersion"] == 2) {
        if (item["image"] === "undefined" || item["image"] === "") {
            if (typeof quickSearch !== "undefined") {
                item["image"] = quickSearch.customFields.vehicle_temporary_image;
            } else if(typeof inventoryMenuCommon.customFields.vehicle_temporary_image !== "undefined") {
                item["image"] = inventoryMenuCommon.customFields.vehicle_temporary_image;
            } else {
                item["image"] = 'https://s3-us-west-1.amazonaws.com/blueprint-cdn.searchoptics.com/be7de193e2156fc5cc817f246a493e1c/ford_image_coming_soon.jpg';
            }
        }

        if (item["price"] == '0' || item["price"] == "undefined" || item["price"] == "null") {
            item["price"] = 'N/A';
        } else {
            item["price"] = '$'+item["price"];
        }

        var prefix = "";
        var videoDirectory = (inventoryDao.videoOnly) ? 'videos/' : '';
        var condition = item["condition"];
        if (bpCustomFields['detail_url_type'] !== undefined && bpCustomFields['detail_url_type'] !== '') {
            if (bpCustomFields['detail_url_type'] == 'with_vin') {
                prefix = "-" + item["vin"].replace(/\s+/g, '-').replace(/\#/g, '-').replace(/\//g, '-').replace(/\&/g, '-');
            }
            if (bpCustomFields['detail_url_type'] == 'with_stock') {
                prefix = "-" + item["stock"].replace(/\s+/g, '-').replace(/\#/g, '-').replace(/\//g, '-').replace(/\&/g, '-');
            }
        }
        var vdpURLEnding =  "" + prefix + "-" + item["styleId"] + siteExtension;

        if (item["vehDetailURLAppend"] == undefined) {
            item["vehDetailURLAppend"] = "";
        }

        var vdpURL = encodeURI(item["vehDetailURLAppend"]+videoDirectory+condition
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + '/' + encodeURI( item["make"]
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + '/' + encodeURI( item["model"]
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + '/' + encodeURI( item["year"]
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + '-' + encodeURI( item["exteriorColor"]
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + "-" + encodeURI( item["trim"]
            .replace(/[#\/\&\s]+/g,"-")
            .toLowerCase() ) + vdpURLEnding;
        
        var vehicleChunk = '<a href="' + item["vehBaseUrl"] + vdpURL + '" class="chosenLink"><div class="autocomplete-thumbnail" style="display: inline-block; width: 90px; float: left;">\n' +
            '        <img src="'+item["image"]+'" onerror="this.src=\'https://s3-us-west-1.amazonaws.com/blueprint-cdn.searchoptics.com/be7de193e2156fc5cc817f246a493e1c/ford_image_coming_soon.jpg\'" style="max-width: 80px; vertical-align: text-top;">\n' +
            '        </div>\n' +
            '        <div class="autocomplete-title new-vehicle" style="display: inline-block; float: left; width:250px;">\n' +
            '        '+item["condition"]+' '+item["year"]+' '+item["make"]+' '+item["model"]+' '+item["trim"]+' <br><span class="search-anything-field-vehicle-price">Price: '+item["price"]+'</span> </div>\n' +
            '    <div class="clear"></div></a><br style="clear:both;">';

        return $("<li style='clear:both;'></li>")
            .data("item.autocomplete", item)
            .append(vehicleChunk)
            .appendTo(ul);
    } else {
        item.label = item.label.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(this.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.label + "</a>")
            .appendTo(ul);
    }
};

var autoComplete = {
    init:function(searchBarInput, searchButton, suggestionMaxCount, url, extraReqParams){
        $( searchBarInput ).autocomplete({
            source: function( request, response ) {
                request.term = request.term.replace(/["]+/g, '');
                var baseReqData = {term: request.term};
                var data = $.extend({}, baseReqData, extraReqParams);
                versionUsed = extraReqParams.version;
                $.ajax({
                    dataType: "json",
                    type: "POST",
                    url: url,
                    data: JSON.stringify(data),
                    success: function(data) {
                        $('input.suggest-user').removeClass('ui-autocomplete-loading');
                        response(data);
                    },
                    error: function(data) {
                        $('input.suggest-user').removeClass('ui-autocomplete-loading');
                    }
                });
            },
            minLength: 1,
            select: function( event, ui ) {
                setTimeout(function () {
                    searchButton.click()
                }, 500);
            }
        });
    }
};