local IC = InvenCraftInfo2
local Option = IC.optionFrame
Option:SetScript("OnEvent", function(self, event, ...) self[event](self, ...) end)

local LBO = LibStub("LibBlueOption-1.0")

local _G = _G
local type = _G.type
local sort = _G.table.sort
local twipe = _G.table.wipe
local tinsert = _G.table.insert

Option.title = Option:CreateFontString(nil, "OVERLAY", "GameFontNormalLarge")
Option.title:SetPoint("TOPLEFT", 16, -16)
Option.title:SetText(Option.name)
Option.version = Option:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
Option.version:SetPoint("LEFT", Option.title, "RIGHT", 2, 0)
Option.version:SetText("v"..GetAddOnMetadata("InvenCraftInfo2", "Version"))
Option.subText = Option:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
Option.subText:SetPoint("TOPLEFT", Option.title, "TOPLEFT", 15, -40)
Option.subText:SetHeight(32)
Option.subText:SetJustifyH("LEFT")
Option.subText:SetJustifyV("TOP")
Option.subText:SetNonSpaceWrap(true)
Option.subText:SetPoint("TOPLEFT", Option.title, "BOTTOMLEFT", 0, -8)
Option.subText:SetPoint("RIGHT", -32, 0)
Option.subText:SetText("전문기술 창에 기능을 추가하고 툴팁에 전문기술의 정보를 표시해주는 애드온입니다.")

Option.tooltip = LBO:CreateWidget("TitleBorder", Option, "툴팁")
Option.tooltip:SetPoint("TOP", Option.subText, "BOTTOM", 0, 0)
Option.tooltip:SetPoint("LEFT", 10, 0)
Option.tooltip:SetSize(180, 222)
local function getTooltip(tooltip)
	return IC.db[tooltip]
end
local function setTooltip(v, tooltip)
	IC.db[tooltip] = v
end
Option.skill = LBO:CreateWidget("CheckBox", Option.tooltip, "기술과 숙련도 표시하기", "툴팁에 제작 가능한 전문기술의 이름과 배울 수 있는 숙련도를 표시합니다.", nil, nil, nil, getTooltip, setTooltip, "title")
Option.skill:SetPoint("TOPLEFT", 10, -5)
Option.reagent = LBO:CreateWidget("CheckBox", Option.tooltip, "재료 목록 표시하기", "툴팁에 아이템을 만들 때 필요한 재료 목록을 표시합니다.", nil, nil, nil, getTooltip, setTooltip, "reagent")
Option.reagent:SetPoint("TOP", Option.skill, "BOTTOM", 0, 10)
Option.drop = LBO:CreateWidget("CheckBox", Option.tooltip, "획득처 표시하기", "툴팁에 도안의 획득처를 표시합니다.", nil, nil, nil, getTooltip, setTooltip, "drop")
Option.drop:SetPoint("TOP", Option.reagent, "BOTTOM", 0, 10)
Option.craftable = LBO:CreateWidget("CheckBox", Option.tooltip, "제작 가능 표시하기", "툴팁에 아이템을 제작할 수 있는 자신의 계정내 캐릭터 이름을 표시합니다.", nil, nil, nil, getTooltip, setTooltip, "craftable")
Option.craftable:SetPoint("TOP", Option.drop, "BOTTOM", 0, 10)
Option.use = LBO:CreateWidget("CheckBox", Option.tooltip, "사용 기술 표시하기", "툴팁에 재료 아이템이 사용되는 전문기술의 이름을 표시합니다.", nil, nil, nil, getTooltip, setTooltip, "use")
Option.use:SetPoint("TOP", Option.craftable, "BOTTOM", 0, 10)
Option.itemID = LBO:CreateWidget("CheckBox", Option.tooltip, "아이템ID 표시하기", "툴팁에 아이템의 ID 및 레벨을 표시합니다.", nil, function() return not Blizzard_CombatLog_Filters end, nil,
	function()
		if Blizzard_CombatLog_Filters then
			return not Blizzard_CombatLog_Filters.noTooltipID
		else
			return true
		end
	end,
	function(v)
		Blizzard_CombatLog_Filters.noTooltipID = not v
	end
)
Option.itemID:SetPoint("TOP", Option.use, "BOTTOM", 0, 10)

Option.window = LBO:CreateWidget("TitleBorder", Option, "UI 창")
Option.window:SetPoint("TOPLEFT", Option.tooltip, "TOPRIGHT", 10, 0)
Option.window:SetSize(180, 74)
Option.scale = LBO:CreateWidget("Slider", Option.window, "창 크기", "UI 창의 전체적인 크기를 설정합니다.", nil, nil, nil,
	function()
		return IC.db.scale * 100, 50, 150, 1, "%"
	end,
	function(v)
		IC.db.scale = v / 100
		TradeSkillFrame:SetScale(IC.db.scale)
	end
)
Option.scale:SetPoint("TOPLEFT", 10, -18)

Option.mapButton = LBO:CreateWidget("TitleBorder", Option, "미니맵 버튼")
Option.mapButton:SetPoint("TOPLEFT", Option.window, "BOTTOMLEFT", 0, -10)
Option.mapButton:SetSize(180, 86)
Option.showButton = LBO:CreateWidget("CheckBox", Option.mapButton, "표시하기", "미니맵 버튼을 표시합니다.", nil, nil, nil,
	function()
		return IC.db.minimapButton.show
	end,
	function(v)
		IC.db.minimapButton.show = v
		InvenCraftInfo2MapButton:Toggle()
	end
)
Option.showButton:SetPoint("TOPLEFT", 10, -5)
Option.lockButton = LBO:CreateWidget("CheckBox", Option.mapButton, "잠그기", "미니맵 버튼을 잠가 이동하지 못하게 합니다.", nil, function() return not IC.db.minimapButton.show end, nil,
	function()
		return not IC.db.minimapButton.dragable
	end,
	function(v)
		IC.db.minimapButton.dragable = not v
	end
)
Option.lockButton:SetPoint("TOP", Option.showButton, "BOTTOM", 0, 10)