-- Craft Research Timer (CRT) by @aTo (EU)
-- v0.4.8

local num_char   --track character number drawing for, for positioning

function CRT.GRID_Create()
	local k
	-- Fenetre de base
		CRT.UI.GRID_TLW= WINDOW_MANAGER:CreateTopLevelWindow("CRT_GRID_TLW")
		CRT.UI.GRID_TLW:SetHidden(CRT.SV.Settings.GRID.hidden)
		CRT.UI.GRID_TLW:SetClampedToScreen(false)
		CRT.UI.GRID_TLW:SetMovable(CRT.SV.Settings.lock)
		CRT.UI.GRID_TLW:SetMouseEnabled(true)
		CRT.UI.GRID_TLW:SetDrawLayer(1)
		CRT.UI.GRID_TLW:SetScale(CRT.SV.Settings.GRID.Scale)
		CRT.UI.GRID_TLW:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, CRT.SV.Settings.GRID.offset.X, CRT.SV.Settings.GRID.offset.Y)
		CRT.UI.GRID_TLW:SetHandler("OnMouseUp", function(self) CRT.Save_position("GRID")end)
		CRT.UI.GRID_TLW:SetHidden(true)


		--/background
		CRT.UI.GRID_BD = WINDOW_MANAGER:CreateControlFromVirtual("CRT_GRID_BD",CRT.UI.GRID_TLW, "ZO_DefaultBackdrop")
		CRT.UI.GRID_BD:SetAlpha(CRT.SV.Settings.GRID.BackdropAlpha)

		CRT.UI.GRID_BTN = WINDOW_MANAGER:CreateControl("CRT_GRID_BTN" , CRT.UI.GRID_TLW, CT_BUTTON)
		CRT.UI.GRID_BTN:SetDimensions( 30 , 30 )
		CRT.UI.GRID_BTN:SetAnchor(TOPRIGHT,CRT.UI.GRID_TLW,TOPRIGHT,5,-10)
		CRT.UI.GRID_BTN:SetState( BSTATE_NORMAL )
		CRT.UI.GRID_BTN:SetMouseOverBlendMode(0)
		CRT.UI.GRID_BTN:SetNormalTexture("/esoui/art/buttons/decline_down.dds")
		CRT.UI.GRID_BTN:SetMouseOverTexture("/esoui/art/buttons/decline_up.dds")
		CRT.UI.GRID_BTN:SetHandler( "OnClicked" , function(self) CRT.UI.GRID_TLW:SetHidden(true); CRT.SV.Settings.GRID.hidden = true	end )


		for k, _ in pairs(CRT.SV.data.Craft) do
			CRT.GRID_Create_Character(k)
		end
end

function CRT.GRID_Create_Character(k)
		if (num_char == nil) then
			num_char = 0
		end
			if ((CRT.SV.data.Craft[k][0]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][1]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][2]["Simu_craft"] ~= 0)) then

				-- display main window
				CRT.UI.GRID_TLW:SetHidden(CRT.SV.Settings.GRID.hidden)


				-- pseudo
				CRT.UI.GRID_WD[k] = {}
				CRT.UI.GRID_WD[k][k] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..k,CRT.UI.GRID_TLW,CT_LABEL)
				--CRT.UI.GRID_WD[k][k]:SetHidden(false)
				CRT.UI.GRID_WD[k][k]:SetFont("ZoFontGame")
				CRT.UI.GRID_WD[k][k]:SetDimensions(360,20)
				CRT.UI.GRID_WD[k][k]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a)
				CRT.UI.GRID_WD[k][k]:SetAlpha(1)
				CRT.UI.GRID_WD[k][k]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,0,120*num_char)
				CRT.UI.GRID_WD[k][k]:SetHorizontalAlignment(1)
				CRT.UI.GRID_WD[k][k]:SetText(string.upper(k))

				if (num_char == 0) then
					x = 0
					y = 20
				else
					x = 0
					y = 20+num_char*120
				end
				--blacksmithing
				CRT.UI.GRID_WD[k][0] = {}
				CRT.UI.GRID_WD[k][0][0]	= {}
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_0_icon",CRT.UI.GRID_TLW,CT_TEXTURE)
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetHidden(false)
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetDimensions(20,20)
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,0,y)
				CRT.UI.GRID_WD[k][0][0]["BS_Icon"]:SetTexture("/esoui/art/icons/ability_smith_007.dds")

				CRT.UI.GRID_WD[k][0][0]["BS_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_0_text",CRT.UI.GRID_TLW,CT_LABEL)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetHidden(false)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetFont("ZoFontGame")
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetDimensions(360,20)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,20,y)
				CRT.UI.GRID_WD[k][0][0]["BS_Text"]:SetText("Loading")

				--Clothing
				CRT.UI.GRID_WD[k][1] = {}
				CRT.UI.GRID_WD[k][1][0] = {}
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_1_icon",CRT.UI.GRID_TLW,CT_TEXTURE)
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetHidden(false)
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetDimensions(20,20)
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,120,y)
				CRT.UI.GRID_WD[k][1][0]["CL_Icon"]:SetTexture("/esoui/art/icons/ability_tradecraft_008.dds")

				CRT.UI.GRID_WD[k][1][0]["CL_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_1_text",CRT.UI.GRID_TLW,CT_LABEL)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetHidden(false)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetFont("ZoFontGame")
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetDimensions(360,20)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,140,y)
				CRT.UI.GRID_WD[k][1][0]["CL_Text"]:SetText("Loading")

				--Woodworking
				CRT.UI.GRID_WD[k][2] = {}
				CRT.UI.GRID_WD[k][2][0] = {}
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_2_icon",CRT.UI.GRID_TLW,CT_TEXTURE)
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetHidden(false)
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetDimensions(20,20)
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,240,y)
				CRT.UI.GRID_WD[k][2][0]["WO_Icon"]:SetTexture("/esoui/art/icons/ability_tradecraft_009.dds")

				CRT.UI.GRID_WD[k][2][0]["WO_Text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_2_text",CRT.UI.GRID_TLW,CT_LABEL)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetHidden(false)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetFont("ZoFontGame")
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetDimensions(360,20)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetAlpha(1)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,260,y)
				CRT.UI.GRID_WD[k][2][0]["WO_Text"]:SetText("Loading")

				for id_craft = 0, 2,1 do
					for simcraft = 1, 3,1 do

						if (num_char == 0) then
							x = (120*id_craft)+20
							y = 20+(20*simcraft)
						else
							x = (120*id_craft)+20
							y = 20+num_char*120+(20*simcraft)
						end

						CRT.UI.GRID_WD[k][id_craft][simcraft] = {}
						-- item icon
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_icon",CRT.UI.GRID_TLW,CT_TEXTURE)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHidden(true)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetDimensions(20,20)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetAlpha(1)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x-20,y)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetMouseEnabled(true)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHandler("OnMouseEnter", function (self)
																					ZO_Tooltips_ShowTextTooltip(self, TOP, CRT.SV.data.Craft[k][id_craft][simcraft]["Item_name"])
																		end)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHandler("OnMouseExit", function (self)
																					ZO_Tooltips_HideTextTooltip()
																		end)



						-- trait icon
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_trait",CRT.UI.GRID_TLW,CT_TEXTURE)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHidden(true)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetDimensions(20,20)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetAlpha(1)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x,y)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetMouseEnabled(true)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHandler("OnMouseEnter", function (self)
																					ZO_Tooltips_ShowTextTooltip(self, TOP, CRT.SV.data.Craft[k][id_craft][simcraft]["Trait_description"])
																		end)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHandler("OnMouseExit", function (self)
																					ZO_Tooltips_HideTextTooltip()
																		end)
						-- text
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"] = WINDOW_MANAGER:CreateControl("CRT_GRID_"..k.."_"..id_craft.."_"..simcraft.."_text",CRT.UI.GRID_TLW,CT_LABEL)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(true)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetFont("ZoFontGame")
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetDimensions(360,20)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetColor(CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetAlpha(1)
						CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetAnchor(TOPLEFT,CRT.UI.GRID_TLW,TOPLEFT,x+20,y)



					end
				end
				num_char = num_char+1
				CRT.UI.GRID_TLW:SetDimensions(360,120*num_char)
			end
end

function CRT.GRID_Update(timestamp)

		for k, _ in pairs(CRT.SV.data.Craft) do
			if ( (CRT.SV.data.Craft[k][0]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][1]["Simu_craft"] ~= 0 or CRT.SV.data.Craft[k][2]["Simu_craft"] ~= 0)) then
				for id_craft = 0, 2,1 do
					if (CRT.SV.data.Craft[k][id_craft]["MaxResearch"] ~= nil ) then
						local MaxResearch = CRT.SV.data.Craft[k][id_craft]["MaxResearch"]
						local Simu_craft = CRT.SV.data.Craft[k][id_craft]["Simu_craft"]
						if (id_craft == 0) then
						CRT.UI.GRID_WD[k][id_craft][0]["BS_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch)

						elseif(id_craft == 1) then
						CRT.UI.GRID_WD[k][id_craft][0]["CL_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch)
						elseif(id_craft == 2) then
						CRT.UI.GRID_WD[k][id_craft][0]["WO_Text"]:SetText(" "..Simu_craft.." / "..MaxResearch)
						end

					end


					for simcraft = 1, 3,1 do

						if (CRT.SV.data.Craft[k][id_craft][simcraft] ~= nil)then


							CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetHidden(false)
							CRT.UI.GRID_WD[k][id_craft][simcraft]["item_icon"]:SetTexture(CRT.SV.data.Craft[k][id_craft][simcraft]["Item_icon"])

							CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetHidden(false)
							CRT.UI.GRID_WD[k][id_craft][simcraft]["trait_icon"]:SetTexture(CRT.SV.data.Craft[k][id_craft][simcraft]["Trait_icon"])

							local currenttimer = CRT.SV.data.Craft[k][id_craft][simcraft]["EndTimeStamp"] - timestamp - 1

							if (currenttimer > 0) then
								CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(false)
								CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetText(CRT.Converthms(currenttimer))
							elseif (currenttimer <= 0) then
								CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetHidden(false)
								CRT.UI.GRID_WD[k][id_craft][simcraft]["text"]:SetText("|cFF0000Finished|r")
							end
						end
					end
				end
			end
		end
end