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


function CRT.Research_Alert(k, id_craft, simcraft, start)
	if (start == true) then
		for i = 0, 2, 1 do
		local MaxResearch = CRT.SV.data.Craft[k][i]["MaxResearch"]
		local Simu_craft = CRT.SV.data.Craft[k][i]["Simu_craft"]
			if(Simu_craft < MaxResearch) then
					if (i == 0 and CRT.SV.Settings.ALERT.BS == true) then
						local msg = "Warning only "..Simu_craft.." / "..MaxResearch.." on Blacksmithing ( "..k.." )"
						CRT.UI.ALERT_WD:AddMessage(msg, CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b)
					elseif (i == 1 and CRT.SV.Settings.ALERT.CL == true) then
						local msg = "Warning only "..Simu_craft.." / "..MaxResearch.." on Clothing ( "..k.." )"
						CRT.UI.ALERT_WD:AddMessage(msg, CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b)
					elseif (i == 2 and CRT.SV.Settings.ALERT.WO == true) then
						local msg = "Warning only "..Simu_craft.." / "..MaxResearch.." on Woodworking ( "..k.." )"
						CRT.UI.ALERT_WD:AddMessage(msg, CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b)
					end
			end
		end
	else


		-- UPDATE SIMU_CRAFT
			local MaxResearch = CRT.SV.data.Craft[k][id_craft]["MaxResearch"]
			local Simu_craft = CRT.SV.data.Craft[k][id_craft]["Simu_craft"] - 1 		-- set new simucraft
				CRT.SV.data.Craft[k][id_craft]["Simu_craft"] = Simu_craft 			-- save new simucraft
			if (id_craft == 0) then
				id_text = "BS_Text"
			elseif(id_craft == 1) then
				id_text = "CL_Text"
			elseif(id_craft == 2) then
				id_text = "WO_Text"
			end

			CRT.UI.GRID_WD[k][id_craft][0][id_text]:SetText(" "..Simu_craft.." / "..MaxResearch)

			local Item_name = CRT.SV.data.Craft[k][id_craft][simcraft]["Item_name"]
			local Trait_name = CRT.SV.data.Craft[k][id_craft][simcraft]["Trait_name"]
			local msg = "Reseach completed on "..k.."  ( "..Item_name.." - "..Trait_name.." )"
			CRT.UI.ALERT_WD:AddMessage(msg,1,0,0)
	end
end

function CRT.Alert_Create()
	CRT.UI.ALERT_TLW = WINDOW_MANAGER:CreateTopLevelWindow("CRT_ALERT_TLW")
	CRT.UI.ALERT_TLW:SetDimensions(800,300)
	CRT.UI.ALERT_TLW:SetHidden(not CRT.SV.Settings.ALERT.hidden)
	CRT.UI.ALERT_TLW:SetClampedToScreen(false)
	CRT.UI.ALERT_TLW:SetMovable(CRT.SV.Settings.lock)
	CRT.UI.ALERT_TLW:SetMouseEnabled(true)
	CRT.UI.ALERT_TLW:SetDrawLayer(0)
	CRT.UI.ALERT_TLW:SetScale(1)
	CRT.UI.ALERT_TLW:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, CRT.SV.Settings.ALERT.offset.X, CRT.SV.Settings.ALERT.offset.Y)
	CRT.UI.ALERT_TLW:SetHandler("OnMouseUp", function(self) CRT.Save_position("ALERT")end)

	--Text Buffer
	CRT.UI.ALERT_WD = WINDOW_MANAGER:CreateControl("CRT_ALERT_WB",CRT.UI.ALERT_TLW,CT_TEXTBUFFER)
	CRT.UI.ALERT_WD:SetDimensions( 800, 300 )
	CRT.UI.ALERT_WD:SetFont( "ZoFontGame" )
	CRT.UI.ALERT_WD:SetAnchor(TOPLEFT,lsSum,TOPLEFT,0,0)
	CRT.UI.ALERT_WD:SetLineFade(10,2)
	CRT.UI.ALERT_WD:SetHorizontalAlignment(1)
	CRT.UI.ALERT_WD:SetClearBufferAfterFadeout(true)
	--	CRT_ALERT_WB:SetLinkEnabled( true )

	CRT.UI.ALERT_BD = WINDOW_MANAGER:CreateControl("CRT_ALERT_BD",CRT.UI.ALERT_TLW,CT_BACKDROP)
	CRT.UI.ALERT_BD:SetHidden(not CRT.SV.Settings.ALERT.preview)
	CRT.UI.ALERT_BD:SetDimensions( 800 , 300 )
	CRT.UI.ALERT_BD:SetCenterColor(0.1,0.1,0.1,1)
	CRT.UI.ALERT_BD:SetEdgeColor(0,0,0,1)
	CRT.UI.ALERT_BD:SetEdgeTexture("", 8, 1, 1)
	CRT.UI.ALERT_BD:SetAlpha(0.6)
	CRT.UI.ALERT_BD:SetAnchor(TOPLEFT,lsSum,TOPLEFT,0,0)
end

function CRT.ALERT_Update(timestamp)
		local k,j
		for k, _ in pairs(CRT.SV.data.Craft) do
			if (CRT.SV.data.Craft[CRT.playername]["Start"] == true) then
				local CRT_Current_PlayerPosition = GetMapPlayerPosition("player")
				if (CRT_Current_PlayerPosition ~= CRT_Start_PlayerPosition) then
					CRT.SV.data.Craft[CRT.playername]["Start"] = false
					CRT.Research_Alert(CRT.playername, nil, nil, true)
					for j, _ in pairs(CRT.SV.data.Craft) do
						if ((k ~= CRT.playername) and (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
							CRT.Research_Alert(k, nil, nil, true)
						end
					end
				end
			end

				for id_craft = 0, 2,1 do
					for simcraft = 1, 3,1 do
						if (CRT.SV.data.Craft[k][id_craft][simcraft] ~= nil)then
						local currenttimer = CRT.SV.data.Craft[k][id_craft][simcraft]["EndTimeStamp"] - timestamp - 1

							if (currenttimer <= 0) then

								if (CRT.SV.data.Craft[k][id_craft][simcraft]["Alert"] == true) then
									CRT.SV.data.Craft[k][id_craft][simcraft]["Alert"] = false
									CRT.Research_Alert(k, id_craft, simcraft, false)
								end
							end
						end
					end
				end
		end
end