local E, L, V, P, G = unpack(ElvUI);
local TT = E:GetModule('Tooltip');

--Defaults (Need to be moved.)
P['tooltip']['overrideCombat'] = false

local iconPath = [[Interface\AddOns\ElvUI_SLE\media\textures\]]

local function AnchorFrameToMouse()
	if not E.db.tooltip.cursorAnchor or (E.db.sle.tooltip.xOffset == 0 and E.db.sle.tooltip.yOffset == 0) then return end

	local frame = GameTooltip
	if frame:GetAnchorType() ~= "ANCHOR_CURSOR" then return end

	local x, y = GetCursorPosition();
	local scale = frame:GetEffectiveScale();
	local tipWidth = frame:GetWidth();

	frame:ClearAllPoints();
	--frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", (x/scale + (E.db.tooltip.mouseOffsetX - tipWidth/2)), (y/scale + E.db.tooltip.mouseOffsetY));
	frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", (x/scale + (E.db.sle.tooltip.xOffset - tipWidth/2)), (y/scale + E.db.sle.tooltip.yOffset));
end

local function SetDefaultAnchor(self, tt, parent)
	if (tt:GetAnchorType() ~= "ANCHOR_CURSOR") then
		return
	end
	if InCombatLockdown() and self.db.visibility.combat then
		tt:Hide()
		return
	end
	if (parent) then
		if(self.db.cursorAnchor) then
			AnchorFrameToMouse(tt);
			return  
		end
	end
end

local function OnTooltipSetUnit(self, tt)
	if not E.db.sle.tooltip.showFaction then return end

	local unit = select(2, tt:GetUnit())
	if (UnitIsPlayer(unit)) then
		local text = GameTooltipTextLeft1:GetText()
		local faction = UnitFactionGroup(unit)

		if not faction then faction = "Neutral" end

		GameTooltipTextLeft1:SetText("|T"..iconPath..faction..".blp:15:15:0:0:64:64:2:56:2:56|t "..text)
	end
end

local function Init()
	if not E.private.tooltip.enable then return end
	hooksecurefunc(TT, "GameTooltip_OnTooltipSetUnit", OnTooltipSetUnit)

	--if not E.db.tooltip.cursorAnchor then return end
	hooksecurefunc(TT, "CheckBackdropColor", AnchorFrameToMouse)
	--hooksecurefunc(TT, "GameTooltip_SetDefaultAnchor", SetDefaultAnchor)
end
hooksecurefunc(TT, "Initialize", Init)