if not InvenRaidFrames2CharDB.spellTimer then return end

local IRF2 = InvenRaidFrames2
local Option = IRF2.optionFrame
local LBO = LibStub("LibBlueOption-1.0")

local _G = _G
local ipairs = _G.ipairs
local unpack = _G.unpack
local strjoin = _G.string.join

function Option:CreateSpellTimerMenu(menu, parent)
	local name
	local get = function(key, id, arg1) return IRF2.charDB.spellTimer[key][id], arg1 end
	local set = function(v, key, id)
		IRF2.charDB.spellTimer[key][id] = v
		if key == "enable" then
			LBO:Refresh(parent)
		elseif key == "showIcon" then
			for _, object in pairs(IRF2.objects) do
				if object.spellTimer and object.spellTimer[id] then
					if v then
						object.spellTimer[id].icon:SetWidth(13)
						if object.spellTimer[id].timerLength then
							object.spellTimer[id]:SetWidth(13 + object.spellTimer[id].timerLength)
						end
					else
						object.spellTimer[id].icon:SetWidth(0.01)
						if object.spellTimer[id].timerLength then
							object.spellTimer[id]:SetWidth(0.01 + object.spellTimer[id].timerLength)
						end
					end
				end
			end
		elseif key == "pos" then
			local pos = IRF2:GetFramePoint(v)
			for _, object in pairs(IRF2.objects) do
				if object.spellTimer and object.spellTimer[i] then
					object.spellTimer[i]:ClearAllPoints()
					object.spellTimer[i]:SetPoint(pos[1], object, pos[3])
				end
			end
		end
		IRF2:UpdateAllUnits()
	end
	local disable = function(_, id) return not IRF2.charDB.spellTimer.enable[id] end
	for i, names in ipairs(IRF2:GetSpellTimerNames()) do
		name = strjoin(", ", unpack(names))
		menu["spell"..i] = LBO:CreateWidget("CheckBox", parent, name, name.." 버프의 지속시간을 표시합니다.", nil, nil, nil, get, set, "enable", i)
		menu["spellSelf"..i] = LBO:CreateWidget("CheckBox", parent, "자신이 시전한 버프만 보기", "체크하면 자신이 시전한 버프의 지속시간만을 표시합며, 체크하지 않으면 자신이 시전한 것과 다른 사람이 시전한 버프의 지속시간을 표시합니다.", nil, disable, nil, get, set, "showSelf", i)
		menu["spellSelf"..i]:SetPoint("TOPLEFT", menu["spell"..i], "BOTTOMLEFT", 20, 25)
		menu["spellSelf"..i]:SetScale(0.9)
		menu["spellIcon"..i] = LBO:CreateWidget("CheckBox", parent, "아이콘 보기", "주문 타이머의 아이콘을 표시합니다.", nil, disable, nil, get, set, "showIcon", i)
		menu["spellIcon"..i]:SetPoint("TOP", menu["spellSelf"..i], "BOTTOM", 0, 25)
		menu["spellIcon"..i]:SetScale(0.9)
		menu["spellPos"..i] = LBO:CreateWidget("DropDown", parent, "위치", "주문 타이머의 위치를 설정합니다.", nil, disable, nil, get, set, "pos", i, self.dropdownTable["위치2"])
		menu["spellPos"..i]:SetWidth(100)
		if i == 1 then
			menu["spell"..i]:SetPoint("TOPLEFT", 5, 5)
			menu["spellPos"..i]:SetPoint("TOPRIGHT", -5, -5)
		else
			menu["spell"..i]:SetPoint("TOP", menu["spell"..(i - 1)], "BOTTOM", 0, -25)
			menu["spellPos"..i]:SetPoint("TOP", menu["spellPos"..(i - 1)], "BOTTOM", 0, -25)
		end
	end
	menu.size = LBO:CreateWidget("Slider", parent, "크기", "주문 타이머 아이콘의 전체적인 크기를 설정합니다.", nil, nil, nil,
		function()
			return IRF2.charDB.spellTimer.size * 100, 50, 150, 1, "%"
		end,
		function(v)
			IRF2.charDB.spellTimer.size = v / 100
			for _, object in pairs(IRF2.objects) do
				if object.spellTimer then
					for i = 1, 4 do
						if object.spellTimer[i] then
							object.spellTimer[i]:SetScale(IRF2.charDB.spellTimer.size)
						end
					end
				end
			end
		end
	)
	menu.size:SetPoint("TOP", menu["spell"..#IRF2:GetSpellTimerNames()], "BOTTOM", 0, -30)
end