BEB.VARIABLE_FUNCTIONS = {
	["$plv"] = {
		func =	function() return UnitLevel("player") end,
		events =	{"PLAYER_LEVEL_UP", "PLAYER_XP_UPDATE"}  -- fix if/when fixed
	},

	["$cxp"] = {
		func =	function()
					if (UnitXP("player")) then
						return UnitXP("player")
					else
						return 0
					end
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$mxp"] = {
		func =	function() return UnitXPMax("player") end,
		events =	{"PLAYER_LEVEL_UP", "PLAYER_XP_UPDATE"}  -- fix if/when fixed
	},

	["$rxp"] = {
		func =	function()
					if (GetXPExhaustion()) then
						return GetXPExhaustion()
					else
						return 0
					end
				end,
		events =	{"UPDATE_EXHAUSTION"}
	},

	["$Rxp"] = {
		func =	function()
					if (GetXPExhaustion()) then
						return (GetXPExhaustion()/2)
					else
						return 0
					end
				end,
		events =	{"UPDATE_EXHAUSTION"}
	},

	["$Cxp"] = {
		func =	function()
					local xpdone
					if (UnitXP("player")) then
						xpdone = UnitXP("player")
					else
						xpdone = 0
					end
					for i=1,(UnitLevel("player")-1) do
						xpdone = xpdone + BEB.XpPerLvl[i]
					end
					return xpdone
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$Mxp"] = {
		func =	function()
					local xptodo
					if (UnitXP("player")) then
						xptodo = UnitXPMax("player") - UnitXP("player")
					else
						xptodo = UnitXPMax("player")
					end
					for i=(UnitLevel("player")+1),60 do
						xptodo = xptodo + BEB.XpPerLvl[i]
					end
					return xptodo
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$txp"] = {
		func =	function()
					return UnitXPMax("player") - (UnitXP("player") or 0)
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$Txp"] = { -- Xp left to do to reach lvl 60
		func =	function()
					local xptodo = UnitXPMax("player") - (UnitXP("player") or 0)
					for i=(UnitLevel("player")+1),59 do
						xptodo = xptodo + BEB.XpPerLvl[i]
					end
					return xptodo
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$pdl"] = {
		func =	function()
					if (UnitXP("player")) then
						return BEB.round((UnitXP("player")/UnitXPMax("player"))*100)
					else
						return 0
					end
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$Pdl"] = {
		func =	function()
					local xpdone = UnitXP("player") or 0
					for i=1,(UnitLevel("player")-1) do
						xpdone = xpdone + BEB.XpPerLvl[i]
					end
					return BEB.round((xpdone/4302200)*100)
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$ptl"] = {
		func =	function()
					if (UnitXP("player")) then
						return BEB.round(((UnitXPMax("player") - UnitXP("player"))/UnitXPMax("player"))*100)
					else
						return 0
					end
				end,
		events =	{"PLAYER_XP_UPDATE"}
	},

	["$res"] = { -- Resting or not
		func =	function()
					if (IsResting() == 1) then
						return BEB.TEXTVARTEXT.resting
					else
						return ""
					end
				end,
		events =	{"PLAYER_UPDATE_RESTING"}
	},

	["$rst"] = { -- How rested
		func =	function()
					if (GetRestState() == 1) then
						if (GetXPExhaustion() == (UnitXPMax("player")*1.5)) then
							return BEB.TEXTVARTEXT.fullyrested
						else
							return BEB.TEXTVARTEXT.rested
						end
					else
						return BEB.TEXTVARTEXT.unrested
					end
				end,
		events =	{"UPDATE_EXHAUSTION", "PLAYER_LEVEL_UP"}
	},

	["$ptx"] = { -- Pet Current XP
		func =	function()
					if (GetPetExperience()) then
						local x = GetPetExperience();
						return x
					else
						return ""
					end
				end,
		events = {"UNIT_PET_EXPERIENCE"}
	},

	["$pty"] = { -- Pet XP Needed to Level
		func =	function(text, unit)
					if (GetPetExperience()) then
						local _,x = GetPetExperience();
						return x
					else
						return ""
					end
				end,
		events = {"UNIT_PET_EXPERIENCE"}
	},

	["$ppc"] = { -- Pet XP Percent Complete
		func =	function()
					if (GetPetExperience()) then
						local min,max = GetPetExperience();
						if (max and min and max > 0) then
							return BEB.round((min / max) * 100);
						else
							return ""
						end
					else
						return ""
					end
				end,
		events = {"UNIT_PET_EXPERIENCE"}
	},

	["$ppn"] = { -- Pet XP Percent Needed
		func =	function()
					if (GetPetExperience()) then
						local min,max = GetPetExperience();
						if (max and min and max > 0) then
							return BEB.round(((max-min)/max)*100);
						else
							return ""
						end
					else
						return ""
					end
				end,
		events = {"UNIT_PET_EXPERIENCE"}
	},

	["$pxg"] = { -- Pet XP To Go
		func =	function(text, unit)
					if (GetPetExperience()) then
						local min,max = GetPetExperience();
						if (max and min and max > 0) then
							return (max - min);
						else
							return ""
						end
					else
						return ""
					end
				end,
		events = {"UNIT_PET_EXPERIENCE"}
	},

	["$tts"] = { -- time this session
		func =	function()
					return BEB.SecondsToTime(BEB.TimeThisSession)
				end,
		events =	{"ON_UPDATE"}
	},

	["$rss"] = { -- rate this session per second
		func =	function()
					return BEB.sigfigs(BEB.RateThisSession,2)
				end,
		events =	{"ON_UPDATE"}
	},

	["$rsm"] = { -- rate this session per minute
		func =	function()
					return BEB.sigfigs(BEB.RateThisSession*60,2)
				end,
		events =	{"ON_UPDATE"}
	},

	["$rsh"] = { -- rate this session per hour
		func =	function()
					return BEB.sigfigs(BEB.RateThisSession*3600,2)
				end,
		events =	{"ON_UPDATE"}
	},

	["$tls"] = { -- time to level this session
		func =	function()
					if (BEB.RateThisSession > 0) then
						if ((UnitXPMax("player")-UnitXP("player"))/BEB.RateThisSession > 360000) then
							return "~~"
						end
						return BEB.SecondsToTime((UnitXPMax("player")-UnitXP("player"))/BEB.RateThisSession)
					else
						return "~~"
					end
				end,
		events =	{"ON_UPDATE"}
	},


	["$xts"] = { -- xp gained this session
		func =	function()
					return BEB.XpThisSession
				end,
		events =	{"PLAYER_XP_UPDATE", "PLAYER_LEVEL_UP"}
	},

	["$prt"] = { -- % of fully rested
		func =	function()
					if (GetXPExhaustion()) then
						return BEB.round((GetXPExhaustion()*100)/(UnitXPMax("player")*1.5))
					else
						return 0
					end
				end,
		events =	{"UPDATE_EXHAUSTION"}
	},

	["$pre"] = { -- percent of what's left that's rested
		func =	function()
					if (GetXPExhaustion() < UnitXPMax("player")-UnitXP("player")) then
						return BEB.round((GetXPExhaustion()*100)/(UnitXPMax("player")-UnitXP("player")))
					elseif (not GetXPExhaustion()) then
						return 0
					else
						return 100
					end
				end,
		events =	{"UPDATE_EXHAUSTION"}
	},

	["$nkx"] = { -- number of kills giving xp
		func =	function()
					return BEB.MobsTS
				end,
		events =	{"CHAT_MSG_COMBAT_XP_GAIN"}
	},

	["$xpk"] = { -- Average xp per kill
		func =	function()
					if (BEB.MobsTS ~= 0) then
						return BEB.round(BEB.XpMobsTS/BEB.MobsTS)
					else
						return "~~"
					end
				end,
		events =	{"CHAT_MSG_COMBAT_XP_GAIN"}
	},

	["$kls"] = { -- Kills to level up
		func =	function()
					if (BEB.MobsTS ~= 0) then
						return BEB.round(UnitXPMax("player")/(BEB.XpMobsTS/BEB.MobsTS))
					else
						return "~~"
					end
				end,
		events =	{"CHAT_MSG_COMBAT_XP_GAIN"}
	},
}