(function ($, document, window, clearTimeout, setTimeout) {
var searchHintTimeout;
function clearSearchHintTimeout() {
if (searchHintTimeout) {
clearTimeout(searchHintTimeout);
searchHintTimeout = null;
}
}
function updateSearchHints(page, searchTerm) {
if (!searchTerm) {
$('#searchHints', page).empty();
clearSearchHintTimeout();
return;
}
clearSearchHintTimeout();
searchHintTimeout = setTimeout(function () {
requestSearchHints(page, searchTerm);
}, 100);
}
function requestSearchHints(page, searchTerm) {
var currentTimeout = searchHintTimeout;
ApiClient.getSearchHints({ userId: Dashboard.getCurrentUserId(), searchTerm: searchTerm, limit: 10 }).done(function (result) {
if (currentTimeout != searchHintTimeout) {
return;
}
renderSearchHintResult(page, result.SearchHints);
});
}
function preg_quote(str, delimiter) {
// http://kevin.vanzonneveld.net
// + original by: booeyOH
// + improved by: Ates Goral (http://magnetiq.com)
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman
// + improved by: Brett Zamir (http://brett-zamir.me)
// * example 1: preg_quote("$40");
// * returns 1: '\$40'
// * example 2: preg_quote("*RRRING* Hello?");
// * returns 2: '\*RRRING\* Hello\?'
// * example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
// * returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'
return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}
function getHintDisplayName(data, term) {
var regexp = new RegExp("(" + preg_quote(term) + ")", 'gi');
return data.replace(regexp, "$1");
}
function getAdditionalTextLines(hint) {
if (hint.Type == "Audio") {
return [[hint.AlbumArtist, hint.Album].join(" - ")];
}
else if (hint.Type == "MusicAlbum") {
return [hint.AlbumArtist];
}
else if (hint.Type == "MusicArtist") {
return [Globalize.translate('LabelArtist')];
}
else if (hint.Type == "Movie") {
return [Globalize.translate('LabelMovie')];
}
else if (hint.Type == "MusicVideo") {
return [Globalize.translate('LabelMusicVideo')];
}
else if (hint.Type == "Episode") {
return [Globalize.translate('LabelEpisode')];
}
else if (hint.Type == "Series") {
return [Globalize.translate('LabelSeries')];
}
else if (hint.Type == "BoxSet") {
return [Globalize.translate('LabelCollection')];
}
return [hint.Type];
}
function getSearchHintHtml(hint) {
var html = '';
html += '';
var imgUrl;
if (hint.PrimaryImageTag) {
hint.ImageTags = { Primary: hint.PrimaryImageTag };
imgUrl = ApiClient.getImageUrl(hint.ItemId, {
type: "Primary",
maxWidth: 150,
maxHeight: 150,
tag: hint.PrimaryImageTag
});
}
else if (hint.MediaType == "Game") {
imgUrl = "css/images/items/searchhintsv2/game.png";
}
else if (hint.Type == "Episode" || hint.Type == "Season" || hint.Type == "Series") {
imgUrl = "css/images/items/searchhintsv2/tv.png";
}
else if (hint.Type == "Audio" || hint.Type == "MusicAlbum" || hint.Type == "MusicArtist") {
imgUrl = "css/images/items/searchhintsv2/music.png";
}
else if (hint.Type == "Person") {
imgUrl = "css/images/items/searchhintsv2/person.png";
}
else {
imgUrl = "css/images/items/searchhintsv2/film.png";
}
html += '';
html += '