local SLE, T, E, L, V, P, G = unpack(select(2, ...))
local Pr = SLE.Professions
local S = E.Skins

-- GLOBALS: CreateFrame, hooksecurefunc
local _G = _G
local UseItemByName = UseItemByName
local GetRecipeInfo = C_TradeSkillUI.GetRecipeInfo
local IsTradeSkillLinked = C_TradeSkillUI.IsTradeSkillLinked
local IsTradeSkillGuild = C_TradeSkillUI.IsTradeSkillGuild
local CraftRecipe = C_TradeSkillUI.CraftRecipe

function Pr:EnchantButton()
	local button = CreateFrame("Button", "SLE_EnchScrollButton", _G["ProfessionsFrame"], "MagicButtonTemplate, BackdropTemplate")
	if E.private.skins.blizzard.tradeskill == true and E.private.skins.blizzard.enable == true then
		S:HandleButton(button)
		button:StripTextures()
		button:SetTemplate('Default', true)
		button:ClearAllPoints()
		button:SetPoint("TOPRIGHT", _G["ProfessionsFrame"].CraftingPage.CreateButton, "TOPLEFT", -1, 0)
	else
		button:SetPoint("TOPRIGHT", _G["ProfessionsFrame"].CraftingPage.CreateButton, "TOPLEFT")
	end
	button:SetScript("OnClick", function()
		CraftRecipe(_G["ProfessionsFrame"].CraftingPage.SchematicForm:GetRecipeInfo().recipeID)
		UseItemByName(38682)
	end)
	button:SetMotionScriptsWhileDisabled(true)

	local function UpdateScrollButton(frame)
		if not frame.SchematicForm then return end
		if not Pr:IsSkillMine() then _G["SLE_EnchScrollButton"]:Hide() return end

		local skillInfo = C_TradeSkillUI.GetBaseProfessionInfo()
		if Pr.baseTradeSkills.Enchanting ~= skillInfo.parentProfessionId and Pr.baseTradeSkills.Enchanting ~= skillInfo.professionID then
			_G["SLE_EnchScrollButton"]:Hide()
			return
		end

		local recipeInfo = frame.SchematicForm:GetRecipeInfo()

		if not recipeInfo then return end
		if IsTradeSkillGuild() or IsTradeSkillLinked() then
			_G["SLE_EnchScrollButton"]:Hide()
		elseif recipeInfo.alternateVerb then
			_G["SLE_EnchScrollButton"]:Show()
			local scrollnum = GetItemCount(38682)
			_G["SLE_EnchScrollButton"]:SetText(string.format("%s (%d)", L["Scroll"], scrollnum))
			if recipeInfo.craftable and recipeInfo.learned and scrollnum > 0 then
				_G["SLE_EnchScrollButton"]:Enable()
			else
				_G["SLE_EnchScrollButton"]:Disable()
			end
		else
			_G["SLE_EnchScrollButton"]:Hide()
		end
	end
	hooksecurefunc(_G["ProfessionsFrame"].CraftingPage, "Refresh", UpdateScrollButton)
end
