if not PriceTracker then
	return
end

local PriceTracker = PriceTracker
local PriceTrackerMenu = {}
PriceTracker.menu = PriceTrackerMenu

PriceTrackerMenu.algorithmTable = {
	"Weighted Average",
	"Median",
	"Most Frequently Used"
}

PriceTrackerMenu.keyTable = {
	"None",
	"Shift",
	"Control",
	"Alt",
	"Command"
}

function PriceTrackerMenu:InitAddonMenu(addOnName)
	local LAM = LibStub:GetLibrary("LibAddonMenu-1.0")
	local addOnMenu = LAM:CreateControlPanel("PriceTrackerMenu", PriceTracker.colors.title .. addOnName)

	-- Ensure compatibility
	if PriceTracker.settings.showMinMax == nil then
		PriceTracker.settings.showMinMax = true
	end

	if PriceTracker.settings.showSeen == nil then
		PriceTracker.settings.showSeen = true
	end

	-- Create the settings menu
	LAM:AddHeader(addOnMenu, addOnName .. "Header", "Options")
	LAM:AddDropdown(addOnMenu, addOnName .. "Algorithm", "Select Price Algorithm", "", self.algorithmTable,
		function() return PriceTracker.settings.algorithm or self.algorithmTable[1] end,
		function(algorithm) PriceTracker.settings.algorithm = algorithm end)
	LAM:AddDescription(addOnMenu, addOnName .. "WeightedAverageDescription", "The average price of all items, with stack sizes taken into account.  For example, a stack of 10 items will be counted 10 times when calculating the average price.", PriceTracker.colors.instructional .. "Weighted Average" .. PriceTracker.colors.default)
	LAM:AddDescription(addOnMenu, addOnName .. "MedianDescription", "The price value for which half of the items cost more and half cost less.", PriceTracker.colors.instructional .. "Median" .. PriceTracker.colors.default)
	LAM:AddDescription(addOnMenu, addOnName .. "ModeDescription", "The most common price value.", PriceTracker.colors.instructional .. "Most Frequently Used (also known as Mode)" .. PriceTracker.colors.default)
	LAM:AddCheckbox(addOnMenu, addOnName .. "MinMax", "Show Min / Max Prices", "Show minimum and maximum sell values",
		function() return PriceTracker.settings.showMinMax end,
		function(check) PriceTracker.settings.showMinMax = check end)
	LAM:AddCheckbox(addOnMenu, addOnName .. "Seen", "Show 'Seen'", "Show how many times an item was seen in the guild stores",
		function() return PriceTracker.settings.showSeen end,
		function(check) PriceTracker.settings.showSeen = check end)
	LAM:AddDropdown(addOnMenu, addOnName .. "KeyPress", "Show only if key is pressed",
		"Show pricing on tooltip only if one of the following keys is pressed.  This is useful if you have too many addons modifying your tooltips.",
		self.keyTable,
		function() return PriceTracker.settings.keyPress or self.keyTable[1] end,
		function(key) PriceTracker.settings.keyPress = key end)
end

function PriceTrackerMenu:IsKeyPressed()
	return PriceTracker.settings.keyPress == self.keyTable[1] or
		(PriceTracker.settings.keyPress == self.keyTable[2] and IsShiftKeyDown()) or
		(PriceTracker.settings.keyPress == self.keyTable[3] and IsControlKeyDown()) or
		(PriceTracker.settings.keyPress == self.keyTable[4] and IsAltKeyDown()) or
		(PriceTracker.settings.keyPress == self.keyTable[5] and IsCommandKeyDown())
end