local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins");

--Cache global variables
--Lua functions
local _G = _G
local floor, format = math.floor, string.format
--WoW API / Variables
local hooksecurefunc = hooksecurefunc

local function LoadSkin()
	if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.mirrorTimers ~= true then return end

	hooksecurefunc("MirrorTimerFrame_OnUpdate", function(frame, elapsed)
		if frame.paused then
			return
		end

		if frame.timeSinceUpdate >= 0.3 then
			local minutes = frame.value / 60
			local seconds = frame.value - floor(frame.value / 60) * 60
			local text = frame.label:GetText()

			if frame.value > 0 then
				frame.TimerText:SetText(format("%s (%d:%02d)", text, minutes, seconds))
			else
				frame.TimerText:SetText(format("%s (0:00)", text))
			end
			frame.timeSinceUpdate = 0
		else
			frame.timeSinceUpdate = frame.timeSinceUpdate + elapsed
		end
	end)

	for i = 1, MIRRORTIMER_NUMTIMERS do
		local mirrorTimer = _G["MirrorTimer"..i]
		local statusBar = _G["MirrorTimer"..i.."StatusBar"]
		local text = _G["MirrorTimer"..i.."Text"]

		E:StripTextures(mirrorTimer)
		E:Size(mirrorTimer, 222, 18)
		mirrorTimer.label = text
		statusBar:SetStatusBarTexture(E.media.normTex)
		E:RegisterStatusBar(statusBar)
		E:CreateBackdrop(statusBar)
		E:Size(statusBar, 222, 18)
		text:Hide()

		local TimerText = mirrorTimer:CreateFontString(nil, "OVERLAY")
		E:FontTemplate(TimerText)
		TimerText:SetPoint("CENTER", statusBar, "CENTER", 0, 0)
		mirrorTimer.TimerText = TimerText

		mirrorTimer.timeSinceUpdate = 0.3

		E:CreateMover(mirrorTimer, "MirrorTimer"..i.."Mover", L["MirrorTimer"]..i, nil, nil, nil, "ALL,SOLO")
	end
end

S:AddCallback("MirrorTimers", LoadSkin)