content: 
  
  
  
  
  
  sub init()
      m.log = log_Logger("HomeItem")
      m.itemText = m.top.findNode("itemText")
      m.itemPoster = m.top.findNode("itemPoster")
      m.itemProgress = m.top.findNode("progress")
      m.itemProgressBackground = m.top.findNode("progressBackground")
      m.itemIcon = m.top.findNode("itemIcon")
      m.itemTextExtra = m.top.findNode("itemTextExtra")
      m.itemPoster.observeField("loadStatus", "onPosterLoadStatusChanged")
      m.unplayedCount = m.top.findNode("unplayedCount")
      m.unplayedEpisodeCount = m.top.findNode("unplayedEpisodeCount")
      m.playedIndicator = m.top.findNode("playedIndicator")
      m.showProgressBarAnimation = m.top.findNode("showProgressBar")
      m.showProgressBarField = m.top.findNode("showProgressBarField")
  
      m.backdrop = m.top.findNode("backdrop")
      posterBackgrounds = m.global.constants.poster_bg_pallet
      m.backdrop.color = posterBackgrounds[rnd(posterBackgrounds.count()) - 1]
  end sub
  
  sub itemContentChanged()
      m.unplayedCount.visible = false
      itemData = m.top.itemContent
      if itemData = invalid then
          return
      end if
      itemData.Title = itemData.name ' Temporarily required while we move from "HomeItem" to "JFContentItem"
      m.itemPoster.width = itemData.imageWidth
      m.itemText.maxWidth = itemData.imageWidth
      m.itemTextExtra.width = itemData.imageWidth
      m.itemTextExtra.visible = true
      m.itemTextExtra.text = ""
      m.backdrop.width = itemData.imageWidth
      if isValid(itemData.iconUrl)
          m.itemIcon.uri = itemData.iconUrl
      end if
      if itemData.isWatched
          m.playedIndicator.visible = true
          m.unplayedCount.visible = false
      else
          m.playedIndicator.visible = false
          if LCase(itemData.type) = "series"
              if m.global.session.user.settings["ui.tvshows.disableUnwatchedEpisodeCount"] = false
                  if isValid(itemData.json.UserData) and isValid(itemData.json.UserData.UnplayedItemCount)
                      if itemData.json.UserData.UnplayedItemCount > 0
                          m.unplayedCount.visible = true
                          m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
                      end if
                  end if
              end if
          end if
      end if
  
      if itemData.type = "CollectionFolder" or itemData.type = "UserView" or itemData.type = "Channel"
          m.itemText.font.size = 35
          m.itemText.height = 64
          m.itemText.horizAlign = "center"
          m.itemText.vertAlign = "bottom"
          m.itemText.text = itemData.name
          m.itemPoster.uri = itemData.widePosterURL
          return
      end if
      if itemData.type = "UserView"
          m.itemPoster.width = "96"
          m.itemPoster.height = "96"
          m.itemPoster.translation = "[192, 88]"
          m.itemText.text = itemData.name
          m.itemPoster.uri = itemData.widePosterURL
          return
      end if
      playedIndicatorLeftPosition = m.itemPoster.width - 60
      m.playedIndicator.translation = [
          playedIndicatorLeftPosition
          0
      ]
      m.itemText.height = 34
      m.itemText.font.size = 25
      m.itemText.horizAlign = "left"
      m.itemText.vertAlign = "bottom"
      m.itemTextExtra.visible = true
      m.itemTextExtra.font.size = 22
  
      if itemData.type = "Program"
          m.itemText.Text = itemData.json.name
          m.itemTextExtra.Text = itemData.json.ChannelName
          if itemData.usePoster
              m.itemPoster.uri = itemData.thumbnailURL
          else
              m.itemPoster.uri = ImageURL(itemData.json.ChannelId)
          end if
          m.itemPoster.loadDisplayMode = "scaleToFill"
  
          if isValid(itemData.json.EpisodeTitle)
              m.itemTextExtra.text = itemData.json.EpisodeTitle
          end if
          return
      end if
      if itemData.type = "Episode"
          m.itemText.text = itemData.json.SeriesName
          if itemData.PlayedPercentage > 0
              drawProgressBar(itemData)
          end if
          if itemData.usePoster = true
              m.itemPoster.uri = itemData.widePosterURL
          else
              m.itemPoster.uri = itemData.thumbnailURL
          end if
  
          extraPrefix = ""
          if isValid(itemData.json.ParentIndexNumber)
              extraPrefix = "S" + StrI(itemData.json.ParentIndexNumber).trim()
          end if
          if isValid(itemData.json.IndexNumber)
              extraPrefix = extraPrefix + "E" + StrI(itemData.json.IndexNumber).trim()
          end if
          if extraPrefix.len() > 0
              extraPrefix = extraPrefix + " - "
          end if
          m.itemTextExtra.text = extraPrefix + itemData.name
          return
      end if
      if itemData.type = "Movie" or itemData.type = "MusicVideo"
          m.itemText.text = itemData.name
          if itemData.PlayedPercentage > 0
              drawProgressBar(itemData)
          end if
  
          if (itemData.imageWidth = 180 and itemData.posterURL <> "") or itemData.thumbnailURL = ""
              m.itemPoster.uri = itemData.posterURL
          else
              m.itemPoster.uri = itemData.thumbnailURL
          end if
  
          textExtra = ""
          if isValid(itemData.json.ProductionYear)
              textExtra = StrI(itemData.json.ProductionYear).trim()
          end if
          if isValid(itemData.json.OfficialRating)
              if textExtra <> ""
                  textExtra = textExtra + " - " + itemData.json.OfficialRating
              else
                  textExtra = itemData.json.OfficialRating
              end if
          end if
          m.itemTextExtra.text = textExtra
          return
      end if
      if itemData.type = "Video"
          m.itemText.text = itemData.name
          if itemData.PlayedPercentage > 0
              drawProgressBar(itemData)
          end if
          if itemData.imageWidth = 180
              m.itemPoster.uri = itemData.posterURL
          else
              m.itemPoster.uri = itemData.thumbnailURL
          end if
          return
      end if
      if itemData.type = "BoxSet"
          m.itemText.text = itemData.name
          m.itemPoster.uri = itemData.posterURL
  
          if isValid(itemData.json) and isValid(itemData.json.ChildCount)
              m.itemTextExtra.text = StrI(itemData.json.ChildCount).trim() + " item"
              if itemData.json.ChildCount > 1
                  m.itemTextExtra.text += "s"
              end if
          end if
          return
      end if
      if itemData.type = "Series"
          m.itemText.text = itemData.name
          if itemData.usePoster = true
              if itemData.imageWidth = 180
                  m.itemPoster.uri = itemData.posterURL
              else
                  m.itemPoster.uri = itemData.widePosterURL
              end if
          else
              m.itemPoster.uri = itemData.thumbnailURL
          end if
          textExtra = ""
          if isValid(itemData.json.ProductionYear)
              textExtra = StrI(itemData.json.ProductionYear).trim()
          end if
  
          if itemData.json.Status = "Continuing"
              textExtra = textExtra + " - Present"
          else if itemData.json.Status = "Ended" and isValid(itemData.json.EndDate)
              textExtra = textExtra + " - " + LEFT(itemData.json.EndDate, 4)
          end if
          m.itemTextExtra.text = textExtra
          return
      end if
      if itemData.type = "MusicAlbum"
          m.itemText.text = itemData.name
          m.itemTextExtra.text = itemData.json.AlbumArtist
          m.itemPoster.uri = itemData.posterURL
          return
      end if
      if itemData.type = "MusicArtist"
          m.itemText.text = itemData.name
          m.itemTextExtra.text = itemData.json.AlbumArtist
          m.itemPoster.uri = ImageURL(itemData.id)
          return
      end if
      if itemData.type = "Audio"
          m.itemText.text = itemData.name
          m.itemTextExtra.text = itemData.json.AlbumArtist
          m.itemPoster.uri = ImageURL(itemData.id)
          return
      end if
      if itemData.type = "TvChannel"
          m.itemText.text = itemData.name
          m.itemTextExtra.text = itemData.json.AlbumArtist
          m.itemPoster.uri = ImageURL(itemData.id)
          return
      end if
      if itemData.type = "Season"
          m.itemText.text = itemData.json.SeriesName
          m.itemTextExtra.text = itemData.name
          m.itemPoster.uri = ImageURL(itemData.id)
          return
      end if
      if itemData.type = "Photo"
          m.itemText.text = itemData.name
          m.itemPoster.uri = ImageURL(itemData.id)
  
          if isValidAndNotEmpty(itemData.json)
              if isValid(itemData.json.ProductionYear)
                  m.itemTextExtra.text = itemData.json.ProductionYear.ToStr().trim()
              end if
              if isValidAndNotEmpty(itemData.json.Album)
                  if m.itemTextExtra.text = ""
                      m.itemTextExtra.text = tr("Album") + ": " + itemData.json.Album.trim()
                  else
                      m.itemTextExtra.text = m.itemTextExtra.text + " - " + tr("Album") + ": " + itemData.json.Album.trim()
                  end if
              end if
          end if
          return
      end if
      if itemData.type = "PhotoAlbum"
          m.itemText.text = itemData.name
          m.itemPoster.uri = ImageURL(itemData.id)
  
          if isValid(itemData.json.ChildCount)
              m.itemTextExtra.text = itemData.json.ChildCount.ToStr().trim() + " items"
          end if
          return
      end if
      
  end sub
  
  
  
  sub drawProgressBar(itemData)
      m.itemProgressBackground.width = itemData.imageWidth
      m.itemProgressBackground.visible = true
      m.showProgressBarField.keyValue = [
          0
          m.itemPoster.width * (itemData.PlayedPercentage / 100)
      ]
      m.showProgressBarAnimation.control = "Start"
  end sub
  
  
  
  sub focusChanged()
      if m.top.itemHasFocus = true
          m.itemText.repeatCount = -1
      else
          m.itemText.repeatCount = 0
      end if
  end sub
  
  
  sub onPosterLoadStatusChanged()
      if m.itemPoster.loadStatus = "ready" and m.itemPoster.uri <> ""
          m.backdrop.visible = false
          m.itemIcon.visible = false
      else
          m.backdrop.visible = true
          m.itemIcon.visible = true
      end if
  end sub