(function ($, document, window) {
function getNode(item, folderState) {
var state = item.IsFolder ? folderState : '';
var name = item.Name;
// Channel number
if (item.Number) {
name = item.Number + " - " + name;
}
if (item.IndexNumber != null && item.Type != "Season") {
name = item.IndexNumber + " - " + name;
}
var cssClass = "editorNode";
if (item.LocationType == "Offline") {
cssClass += " offlineEditorNode";
}
var htmlName = "
";
if (item.LockData) {
htmlName += '

';
}
htmlName += name;
if (!item.LocalTrailerCount && item.Type == "Movie") {
htmlName += '

';
}
if (!item.ImageTags || !item.ImageTags.Primary) {
htmlName += '

';
}
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel") {
htmlName += '

';
}
}
if (!item.ImageTags || !item.ImageTags.Logo) {
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "Series" || item.Type == "MusicArtist" || item.Type == "BoxSet") {
htmlName += '

';
}
}
if (item.Type == "Episode" && item.LocationType == "Virtual") {
try {
if (item.PremiereDate && (new Date().getTime() >= parseISO8601Date(item.PremiereDate, { toLocal: true }).getTime())) {
htmlName += '

';
}
} catch (err) {
}
}
htmlName += "
";
var rel = item.IsFolder ? 'folder' : 'default';
return { attr: { id: item.Id, rel: rel, itemtype: item.Type }, data: htmlName, state: state };
}
function loadChildrenOfRootNode(callback, openItems) {
var promise1 = $.getJSON(ApiClient.getUrl("Library/MediaFolders"));
var promise2 = ApiClient.getLiveTvInfo();
$.when(promise1, promise2).done(function (response1, response2) {
var mediaFolders = response1[0].Items;
var liveTvInfo = response2[0];
var nodes = [];
var i, length;
for (i = 0, length = mediaFolders.length; i < length; i++) {
var state = openItems.indexOf(mediaFolders[i].Id) == -1 ? 'closed' : 'open';
nodes.push(getNode(mediaFolders[i], state));
}
for (i = 0, length = liveTvInfo.Services.length; i < length; i++) {
var service = liveTvInfo.Services[i];
var name = service.Name;
var cssClass = "editorNode";
var htmlName = "