--[[
	Addon: Taos Group Tools
	Author: TProg Taonnor
	Created by @Taonnor
]]--

--[[
	Global callbacks
]]--
TGT_SHOW_ULTIMATE_GROUP_MENU = "TGT-ShowUltimateGroupMenu"
TGT_SET_ULTIMATE_GROUP = "TGT-SetUltimateGroup"

--[[
	Local variables
]]--
local LOG_ACTIVE = false
local _logger = nil

--[[
	Table TGT_UltimateGroupMenu
]]--
TGT_UltimateGroupMenu = {}
TGT_UltimateGroupMenu.__index = TGT_UltimateGroupMenu

--[[
	Table Members
]]--

--[[
	SetUltimateGroup shows ultimate group menu
]]--
function TGT_UltimateGroupMenu.SetUltimateGroup(group, arg)
    if (LOG_ACTIVE) then
        _logger:logTrace("TGT_UltimateGroupMenu.SetultimateGroup")
        _logger:logDebug("group.GroupName, arg", group.GroupName, arg)
    end

    CALLBACK_MANAGER:FireCallbacks(TGT_SET_ULTIMATE_GROUP, group, arg)
end

--[[
	ShowUltimateGroupMenu shows ultimate group menu
]]--
function TGT_UltimateGroupMenu.ShowUltimateGroupMenu(control, arg)
    if (LOG_ACTIVE) then
        _logger:logTrace("TGT_UltimateGroupMenu.ShowUltimateGroupMenu")
        _logger:logDebug("arg", arg)
    end

    if (control ~= nil) then
        ClearMenu()

        local ultimateGroups = TGT_UltimateGroupHandler.GetUltimateGroups()

        for i, group in pairs(ultimateGroups) do
            AddMenuItem(group.GroupName .. " - " .. group.GroupDescription, function() TGT_UltimateGroupMenu.SetUltimateGroup(group, arg) end)
        end

        ShowMenu(control)
    else
        _logger:logError("TGT_UltimateGroupMenu.ShowUltimateGroupMenu, control nil")
    end
end

--[[
	Initialize initializes TGT_UltimateGroupMenu
]]--
function TGT_UltimateGroupMenu.Initialize(logger)
    if (LOG_ACTIVE) then
        logger:logTrace("TGT_UltimateGroupMenu.Initialize")
    end

    _logger = logger

    CALLBACK_MANAGER:RegisterCallback(TGT_SHOW_ULTIMATE_GROUP_MENU, TGT_UltimateGroupMenu.ShowUltimateGroupMenu)
end