VipList = {}

-- private variables
local vipWindow = nil

-- public functions
function VipList.create()
  vipWindow = loadUI("/viplist/viplist.otui", Game.gameRightPanel)
end

function VipList.destroy()
  vipWindow:destroy()
  vipWindow = nil
end

-- hooked events
function Game.onAddVip(id, name, online)
  local vipList = vipWindow:getChildById('vipList')

  local label = UILabel.create()
  vipList:addChild(label)
  label:setId('vip' .. id)
  label:setText(name)
  label:setStyle('VipListLabel')

  if online then
    label:setForegroundColor('#00ff00')
  else
    label:setForegroundColor('#ff0000')
  end

  label.vipOnline = online
end

function Game.onVipStateChange(id, online)
  local vipList = vipWindow:getChildById('vipList')
  local label = vipList:getChildById('vip' .. id)

  if online then
    label:setForegroundColor('#00ff00')
  else
    label:setForegroundColor('#ff0000')
  end

  label.vipOnline = online
end

connect(Game, { onLogin = VipList.create,
                onLogout = VipList.destroy })
