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

function CRT_SetLock(Newlock)
	CRT.SV.Settings.lock = Newlock
	if (CRT.UI.GRID_TLW~= nil) then
		CRT.UI.GRID_TLW:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetMovable(Newlock)
	end
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetMovable(Newlock)
	end
end

function CRT_SetMode(NewMode)
CRT.SV.Settings.mode = NewMode
ReloadUI()
end

function CRT_Settimer_format(Newtimer_format)
CRT.SV.Settings.timer_format = Newtimer_format
end

function CRT_Gettimer_format()
    local format = CRT.SV.Settings.timer_format
    if (string.match(format, ":")) then
        format = "smart"
        CRT.SV.Settings.timer_format = format
    end
    return format
end


-------------------------ALERT Components---------------------------------------
function CRT_SetAlert(NewAlert)
	CRT.SV.Settings.ALERT.hidden = NewAlert
	if (CRT.UI.ALERT_TLW ~= nil) then
		CRT.UI.ALERT_TLW:SetHidden(not NewAlert)
	end
end

function CRT_SetPreview(NewPreview)
	CRT.SV.Settings.ALERT.preview = NewPreview
	CRT.UI.ALERT_BD:SetHidden(not NewPreview)
	if (CRT.UI.ALERT_TLW ~= nil) then
		CRT.UI.ALERT_TLW:SetMovable(NewPreview)
	end
end

function CRT_GetALERTColor()
	return CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b, CRT.SV.Settings.ALERT.Color.a
end

function CRT_SetALERTColor(r, g, b, a)
	if (CRT.UI.ALERT_WD ~= nil) then
		CRT.UI.ALERT_WD:AddMessage("New Alert Color", CRT.SV.Settings.ALERT.Color.r, CRT.SV.Settings.ALERT.Color.g, CRT.SV.Settings.ALERT.Color.b)
	end
	CRT.SV.Settings.ALERT.Color.r = r
	CRT.SV.Settings.ALERT.Color.g = g
	CRT.SV.Settings.ALERT.Color.b = b
	CRT.SV.Settings.ALERT.Color.a = a
end

function CRT_SetALERTBS(Alertswitch)
	CRT.SV.Settings.ALERT.BS = Alertswitch
end

function CRT_SetALERTCL(Alertswitch)
	CRT.SV.Settings.ALERT.CL = Alertswitch
end
function CRT_SetALERTWO(Alertswitch)
	CRT.SV.Settings.ALERT.WO = Alertswitch
end

-------------------------GRID Components---------------------------------------
function CRT_GetGRIDBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.GRID.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT_SetGRIDBackdropAlpha(NewGRIDBackdropAlphaPercent)
	local NewGRIDBackdropAlpha = NewGRIDBackdropAlphaPercent / 100
	if (CRT.UI.GRID_BD ~= nil) then
		CRT.UI.GRID_BD:SetAlpha(NewGRIDBackdropAlpha)
	end
	CRT.SV.Settings.GRID.BackdropAlpha = NewGRIDBackdropAlpha
end

function CRT_GetGRIDScale()
	local ScalePercent = CRT.SV.Settings.GRID.Scale * 100
	return ScalePercent
end
function CRT_SetGRIDScale(NewGRIDScalePercent)
	local NewGRIDScale = NewGRIDScalePercent / 100
	if (CRT.UI.GRID_TLW~= nil) then
		CRT.UI.GRID_TLW:SetScale(NewGRIDScale)
	end
	CRT.SV.Settings.GRID.Scale = NewGRIDScale
end

function CRT_GetGRIDColor()
	return CRT.SV.Settings.GRID.Color.r, CRT.SV.Settings.GRID.Color.g, CRT.SV.Settings.GRID.Color.b, CRT.SV.Settings.GRID.Color.a
end

function CRT_SetGRIDColor(r, g, b, a)
	CRT.SV.Settings.GRID.Color.r = r
	CRT.SV.Settings.GRID.Color.g = g
	CRT.SV.Settings.GRID.Color.b = b
	CRT.SV.Settings.GRID.Color.a = a
end

-------------------------BS Components---------------------------------------

function CRT_SetTrackerBS(state)
	CRT.SV.Settings.BS.craft = state
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetHidden(not state)
	end
end

function CRT_SetBSHide0(NewBSHide0)
	CRT.SV.Settings.BS.Hide_0 = NewBSHide0
		if (CRT.UI.CRAFT_TLW[0] ~= nil and NewBSHide0 == false and CRT.SV.Settings.BS.Hide_Type ~= "Toggle keybind" and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
end


function CRT_SetBSHideMenu(NewBSHideMenu)
	CRT.SV.Settings.BS.Hide_Type = NewBSHideMenu
	if (NewBSHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end


function CRT_GetBSBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.BS.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT_SetBSBackdropAlpha(NewBSBackdropAlphaPercent)
	local NewBSBackdropAlpha = NewBSBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_BD[0]:SetAlpha(NewBSBackdropAlpha)
	end
	CRT.SV.Settings.BS.BackdropAlpha = NewBSBackdropAlpha
end

function CRT_GetBSScale()
	local ScalePercent = CRT.SV.Settings.BS.Scale * 100
	return ScalePercent
end
function CRT_SetBSScale(NewBSScalePercent)
	local NewBSScale = NewBSScalePercent / 100
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_TLW[0]:SetScale(NewBSScale)
	end
	CRT.SV.Settings.BS.Scale = NewBSScale
end

function CRT_GetBSColor()
return CRT.SV.Settings.BS.Color.r, CRT.SV.Settings.BS.Color.g, CRT.SV.Settings.BS.Color.b, CRT.SV.Settings.BS.Color.a
end

function CRT_SetBSColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[0] ~= nil) then
		CRT.UI.CRAFT_WD[0][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[0][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.BS.Color.r = r
CRT.SV.Settings.BS.Color.g = g
CRT.SV.Settings.BS.Color.b = b
CRT.SV.Settings.BS.Color.a = a
end


-------------------------CL Components---------------------------------------
function CRT_SetTrackerCL(state)
	CRT.SV.Settings.CL.craft = state
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetHidden(not state)
	end
end

function CRT_SetCLHide0(NewCLHide0)
	CRT.SV.Settings.CL.Hide_0 = NewCLHide0
		if (CRT.UI.CRAFT_TLW[1] ~= nil and NewCLHide0 == false and CRT.SV.Settings.CL.Hide_Type ~= "Toggle keybind" and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
end


function CRT_SetCLHideMenu(NewCLHideMenu)
	CRT.SV.Settings.CL.Hide_Type = NewCLHideMenu
	if (NewCLHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end

function CRT_GetCLBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.CL.BackdropAlpha * 100
	return BackdropAlphaPercent
end
function CRT_SetCLBackdropAlpha(NewCLBackdropAlphaPercent)
	local NewCLBackdropAlpha = NewCLBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_BD[1] ~= nil) then
		CRT.UI.CRAFT_BD[1]:SetAlpha(NewCLBackdropAlpha)
	end
	CRT.SV.Settings.CL.BackdropAlpha = NewCLBackdropAlpha
end

function CRT_GetCLScale()
	local ScalePercent = CRT.SV.Settings.CL.Scale * 100
	return ScalePercent
end
function CRT_SetCLScale(NewCLScalePercent)
	local NewCLScale = NewCLScalePercent / 100
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[1]:SetScale(NewCLScale)
	end
	CRT.SV.Settings.CL.Scale = NewCLScale
end

function CRT_GetCLColor()
return CRT.SV.Settings.CL.Color.r, CRT.SV.Settings.CL.Color.g, CRT.SV.Settings.CL.Color.b, CRT.SV.Settings.CL.Color.a
end

function CRT_SetCLColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_WD[1][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[1][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.CL.Color.r = r
CRT.SV.Settings.CL.Color.g = g
CRT.SV.Settings.CL.Color.b = b
CRT.SV.Settings.CL.Color.a = a
end

-------------------------Woodworking Components---------------------------------------
function CRT_SetTrackerWO(state)
	CRT.SV.Settings.WO.craft = state
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetHidden(not state)
	end
end

function CRT_SetWOHide0(NewWOHide0)
	CRT.SV.Settings.WO.Hide_0 = NewWOHide0
		if (CRT.UI.CRAFT_TLW[2] ~= nil and NewWOHide0 == false and CRT.SV.Settings.WO.Hide_0 ~= "Toggle keybind" and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
end

function CRT_SetWOHideMenu(NewWOHideMenu)
	CRT.SV.Settings.WO.Hide_Type = NewWOHideMenu
	if (NewWOHideMenu == "Toggle keybind") then
		if (CRT.UI.CRAFT_TLW[0] ~= nil and CRT.SV.Settings.BS.craft == true) then
			CRT.UI.CRAFT_TLW[0]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[1] ~= nil and CRT.SV.Settings.CL.craft == true) then
			CRT.UI.CRAFT_TLW[1]:SetHidden(false)
		end
		if (CRT.UI.CRAFT_TLW[2] ~= nil and CRT.SV.Settings.WO.craft == true) then
			CRT.UI.CRAFT_TLW[2]:SetHidden(false)
		end
	end
end

function CRT_GetWOBackdropAlpha()
	local BackdropAlphaPercent = CRT.SV.Settings.WO.BackdropAlpha * 100
	return BackdropAlphaPercent
end

function CRT_SetWOBackdropAlpha(NewWOBackdropAlphaPercent)
	local NewWOBackdropAlpha = NewWOBackdropAlphaPercent / 100
	if (CRT.UI.CRAFT_BD[2] ~= nil) then
		CRT.UI.CRAFT_BD[2]:SetAlpha(NewWOBackdropAlpha)
	end
	CRT.SV.Settings.WO.BackdropAlpha = NewWOBackdropAlpha
end

function CRT_GetWOScale()
	local ScalePercent = CRT.SV.Settings.WO.Scale * 100
	return ScalePercent
end

function CRT_SetWOScale(NewWOScalePercent)
	local NewWOScale = NewWOScalePercent / 100
	if (CRT.UI.CRAFT_TLW[1] ~= nil) then
		CRT.UI.CRAFT_TLW[2]:SetScale(NewWOScale)
	end
	CRT.SV.Settings.WO.Scale = NewWOScale
end

function CRT_GetWOColor()
return CRT.SV.Settings.WO.Color.r, CRT.SV.Settings.WO.Color.g, CRT.SV.Settings.WO.Color.b, CRT.SV.Settings.WO.Color.a
end

function CRT_SetWOColor(r, g, b, a)
	if (CRT.UI.CRAFT_TLW[2] ~= nil) then
		CRT.UI.CRAFT_WD[2][0]["Craft_Text"]:SetColor(r,g,b,a)
		for simcraft  = 1, 3, 1 do
		CRT.UI.CRAFT_WD[2][simcraft]["text"]:SetColor(r,g,b,a)
		end
	end

CRT.SV.Settings.WO.Color.r = r
CRT.SV.Settings.WO.Color.g = g
CRT.SV.Settings.WO.Color.b = b
CRT.SV.Settings.WO.Color.a = a
end

function CRT_Reset()

		CRT.SV.Settings.icon_width = CRT.svDefaults.icon_width
		CRT.SV.Settings.icon_height = CRT.svDefaults.icon_height
		CRT.SV.Settings.text_width = CRT.svDefaults.text_width
		CRT.SV.Settings.text_height = CRT.svDefaults.text_height
		CRT.SV.Settings.mode = CRT.svDefaults.mode
		CRT.SV.Settings.timer_format = CRT.svDefaults.timer_format
		-- blacksmithing
		CRT.SV.Settings.BS.offset.X = CRT.svDefaults.BS.offset.X
		CRT.SV.Settings.BS.offset.Y = CRT.svDefaults.BS.offset.Y
		CRT.SV.Settings.BS.craft = CRT.svDefaults.BS.craft
		CRT.SV.Settings.BS.Hide_0 = CRT.svDefaults.BS.Hide_0
		CRT.SV.Settings.BS.Hide_Type = CRT.svDefaults.BS.Hide_Type
		CRT.SV.Settings.BS.BackdropAlpha = CRT.svDefaults.BS.BackdropAlpha
		CRT.SV.Settings.BS.Scale = CRT.svDefaults.BS.Scale
		CRT.SV.Settings.BS.Color.r = CRT.svDefaults.BS.Color.r
		CRT.SV.Settings.BS.Color.g = CRT.svDefaults.BS.Color.g
		CRT.SV.Settings.BS.Color.b = CRT.svDefaults.BS.Color.b
		CRT.SV.Settings.BS.Color.a = CRT.svDefaults.BS.Color.a
		--clothing
		CRT.SV.Settings.CL.offset.X = CRT.svDefaults.CL.offset.X
		CRT.SV.Settings.CL.offset.Y = CRT.svDefaults.CL.offset.Y
		CRT.SV.Settings.CL.craft = CRT.svDefaults.CL.craft
		CRT.SV.Settings.CL.Hide_0 = CRT.svDefaults.CL.Hide_0
		CRT.SV.Settings.CL.Hide_Type = CRT.svDefaults.CL.Hide_Type
		CRT.SV.Settings.CL.BackdropAlpha = CRT.svDefaults.CL.BackdropAlpha
		CRT.SV.Settings.CL.Scale = CRT.svDefaults.CL.Scale
		CRT.SV.Settings.CL.Color.r = CRT.svDefaults.CL.Color.r
		CRT.SV.Settings.CL.Color.g = CRT.svDefaults.CL.Color.g
		CRT.SV.Settings.CL.Color.b = CRT.svDefaults.CL.Color.b
		CRT.SV.Settings.CL.Color.a = CRT.svDefaults.CL.Color.a
		-- woodworking
		CRT.SV.Settings.WO.offset.X = CRT.svDefaults.WO.offset.X
		CRT.SV.Settings.WO.offset.Y = CRT.svDefaults.WO.offset.Y
		CRT.SV.Settings.WO.craft = CRT.svDefaults.WO.craft
		CRT.SV.Settings.WO.Hide_0 = CRT.svDefaults.WO.Hide_0
		CRT.SV.Settings.WO.Hide_Type = CRT.svDefaults.WO.Hide_Type
		CRT.SV.Settings.WO.BackdropAlpha = CRT.svDefaults.WO.BackdropAlpha
		CRT.SV.Settings.WO.Scale = CRT.svDefaults.WO.Scale
		CRT.SV.Settings.WO.Color.r = CRT.svDefaults.WO.Color.r
		CRT.SV.Settings.WO.Color.g = CRT.svDefaults.WO.Color.g
		CRT.SV.Settings.WO.Color.b = CRT.svDefaults.WO.Color.b
		CRT.SV.Settings.WO.Color.a = CRT.svDefaults.WO.Color.a
		--Grid
		CRT.SV.Settings.GRID.hidden = CRT.svDefaults.GRID.hidden
		CRT.SV.Settings.GRID.offset.X = CRT.svDefaults.GRID.offset.X
		CRT.SV.Settings.GRID.offset.Y = CRT.svDefaults.GRID.offset.Y
		CRT.SV.Settings.GRID.BackdropAlpha = CRT.svDefaults.GRID.BackdropAlpha
		CRT.SV.Settings.GRID.Scale = CRT.svDefaults.GRID.Scale
		CRT.SV.Settings.GRID.Color.r = CRT.svDefaults.GRID.Color.r
		CRT.SV.Settings.GRID.Color.g = CRT.svDefaults.GRID.Color.g
		CRT.SV.Settings.GRID.Color.b = CRT.svDefaults.GRID.Color.b
		CRT.SV.Settings.GRID.Color.a = CRT.svDefaults.GRID.Color.a
		--Alert
		CRT.SV.Settings.ALERT.hidden = CRT.svDefaults.ALERT.hidden
		CRT.SV.Settings.ALERT.preview = CRT.svDefaults.ALERT.preview
		CRT.SV.Settings.ALERT.offset.X = CRT.svDefaults.ALERT.offset.X
		CRT.SV.Settings.ALERT.offset.Y = CRT.svDefaults.ALERT.offset.Y
		CRT.SV.Settings.ALERT.Color.r = CRT.svDefaults.ALERT.Color.r
		CRT.SV.Settings.ALERT.Color.g = CRT.svDefaults.ALERT.Color.g
		CRT.SV.Settings.ALERT.Color.b = CRT.svDefaults.ALERT.Color.b
		CRT.SV.Settings.ALERT.Color.a = CRT.svDefaults.ALERT.Color.a

	ReloadUI()

end