if not SimpleCombatLog then return end

local dewdrop = AceLibrary("Dewdrop-2.0")

local L = {
	physical = "Physical",		
	holy = "Holy",	
	fire = "Fire",		
	nature = "Nature",	
	frost = "Frost",	
	shadow = "Shadow",
	arcane = "Arcane",

	player = "Player",
	skill = "Skill",
	party = "Party",
	raid = "Raid",	
	pet = "Pet",
	target = "Target",
	targettarget = "Target of Target",
	other = 'Others',

	["Colors"] = "Colors",

	hit = "Hit",
	heal = "Heal",
	miss = "Miss",	
	buff = "Buff",
	debuff = "Debuff",
	
	["Restore default colors"] = "Restore default colors",	
}


function SimpleCombatLog:GetColorRGB(id, colorType)
	local hexColor, isDefault = self:GetColor(id, colorType)
	local r, g, b = string.sub(hexColor,1,2), string.sub(hexColor,3,4), string.sub(hexColor,5,6)
	r = tonumber(r, 16)/255
	g = tonumber(g, 16)/255
	b = tonumber(b, 16)/255
	return r, g, b, isDefault
end


function SimpleCombatLog:SetColorRGB(id, colorType, r, g, b)
	local hexColor = 	string.format('%02x%02x%02x', (r*255), (g*255), (b*255))
	self:SetColorHex(id, colorType, hexColor)
end


function SimpleCombatLog:SetColorHex(id, colorType, hexColor)
	if not self.settings[id] then
		self.settings[id] = {}
		self.settingDB[id] = self.settings[id]
	else
		if self.settings[id].theme then
			self.settings[id] = SimpleCombatLog.CopyTable({}, self.settings[id])
			self.settings[id].theme = nil
			self.settingDB[id] = self.settings[id]
		end
	end

	if not self.settings[id].colors then
		self.settings[id].colors = {}
	end	
	self.settings[id].colors[colorType] = hexColor
end

function SimpleCombatLog:RestoreDefaultColors(id)
	if self.settings[id] and self.settings[id].colors then
		self.settings[id].colors = nil
	end
end


local function UpdateColorOptionsTable(self, id, level, value)
	if level == 1 then
		dewdrop:AddLine(
			'text', L["Colors"],
			'notCheckable', true,
			'hasArrow', true,
			'value', 'color'
		)
	elseif level == 2 and value == 'color' then
			local c, d, title
			for i, v in pairs(self.colorList) do
				if v ~= "" then
					local r, g, b, isDefault = self:GetColorRGB(id, v)
					if not isDefault then title = "|cffeda55f".. L[v] .."|r" else title = L[v] end
					dewdrop:AddLine(
						'text', title,
						'hasColorSwatch', true,
						'r', r,
						'g', g,
						'b', b,
						'notCheckable', true,
						'colorFunc', function(id, colorType, r, g, b) self:SetColorRGB(id, colorType, r, g, b) end,
						'colorArg1', id,
						'colorArg2', v
					)
				else
					dewdrop:AddLine()
				end
			end
			
			dewdrop:AddLine()
			dewdrop:AddLine(
				'text', L["Restore default colors"],
				'notCheckable', true,
				'func', function() self:RestoreDefaultColors(id) end
			)
				
	end
			
end



if SimpleCombatLog.menuFunc then
	SimpleCombatLog.menuFunc[3] = UpdateColorOptionsTable
end

