-- Deja Player Stats

	CharacterStatsPane.ItemLevelCategory.Title:Hide()
	CharacterStatsPane.ItemLevelFrame:Hide()

	CharacterStatsPane.ItemLevelCategory:ClearAllPoints()
	CharacterStatsPane.ItemLevelCategory:SetPoint("BOTTOM", CharacterStatsPane, "BOTTOM", 0, 94)

	CharacterStatsPane.AttributesCategory:ClearAllPoints()	
	CharacterStatsPane.AttributesCategory:SetPoint("TOP", CharacterStatsPane, "TOP", 0, 0)
	
-- Deja Player Stats Frame

local dejaplayerstatsframe = CreateFrame("Frame", nil, CharacterStatsPane)
	dejaplayerstatsframe:SetWidth(166)
	dejaplayerstatsframe:SetHeight(80)
	dejaplayerstatsframe:SetPoint(
		"BOTTOMLEFT", 
		CharacterStatsPane, 
		"BOTTOMLEFT", 15, 14)

local t=dejaplayerstatsframe:CreateTexture(nil,"ARTWORK")
	t:SetAllPoints(dejaplayerstatsframe)
	t:SetTexture(CharacterStatsPane.AttributesCategory.Background)
	
-- Details Text
local detailsframe = CreateFrame("Frame", nil, CharacterStatsPane.ItemLevelCategory)
	detailsframe:SetWidth(50)
	detailsframe:SetHeight(10)
	detailsframe:SetPoint("CENTER", CharacterStatsPane.ItemLevelCategory, "CENTER", 0, 0)

local detailsFS = detailsframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	detailsFS:SetPoint("TOPLEFT",detailsframe,"TOPLEFT",0,0)
	detailsFS:SetFont("Fonts\\FRIZQT__.TTF", 12, "THINOUTLINE")
	
-- Item Level
local ilevelframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	ilevelframe:SetWidth(50)
	ilevelframe:SetHeight(10)
	ilevelframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, 0)

local ilevelFS = ilevelframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	ilevelFS:SetPoint("TOPLEFT",ilevelframe,"TOPLEFT",0,0)
	ilevelFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Movement Speed
local mspeedframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	mspeedframe:SetWidth(50)
	mspeedframe:SetHeight(10)
	mspeedframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -10)

local mspeedFS = mspeedframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	mspeedFS:SetPoint("TOPLEFT",mspeedframe,"TOPLEFT",0,0)
	mspeedFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Melee Damage
local mdamageframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	mdamageframe:SetWidth(50)
	mdamageframe:SetHeight(10)
	mdamageframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -20)

local mdamageFS = mdamageframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	mdamageFS:SetPoint("TOPLEFT",mdamageframe,"TOPLEFT",0,0)
	mdamageFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Ranged Damage
local rdamageframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	rdamageframe:SetWidth(50)
	rdamageframe:SetHeight(10)
	rdamageframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -20)

local rdamageFS = rdamageframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	rdamageFS:SetPoint("TOPLEFT",rdamageframe,"TOPLEFT",0,0)
	rdamageFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Attack Power
local apowerframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	apowerframe:SetWidth(50)
	apowerframe:SetHeight(10)
	apowerframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -30)

local apowerFS = apowerframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	apowerFS:SetPoint("TOPLEFT",apowerframe,"TOPLEFT",0,0)
	apowerFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Attack Speed
local aspeedframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	aspeedframe:SetWidth(50)
	aspeedframe:SetHeight(10)
	aspeedframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -40)

local aspeedFS = aspeedframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	aspeedFS:SetPoint("TOPLEFT",aspeedframe,"TOPLEFT",0,0)
	aspeedFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Spell Power
local spowerframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	spowerframe:SetWidth(50)
	spowerframe:SetHeight(10)
	spowerframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -50)

local spowerFS = spowerframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	spowerFS:SetPoint("TOPLEFT",spowerframe,"TOPLEFT",0,0)
	spowerFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Dodge
local dodgeframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	dodgeframe:SetWidth(50)
	dodgeframe:SetHeight(10)
	dodgeframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -60)

local dodgeFS = dodgeframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	dodgeFS:SetPoint("TOPLEFT",dodgeframe,"TOPLEFT",0,0)
	dodgeFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")
	
-- Parry
local parryframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	parryframe:SetWidth(50)
	parryframe:SetHeight(10)
	parryframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -70)

local parryFS = parryframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	parryFS:SetPoint("TOPLEFT",parryframe,"TOPLEFT",0,0)
	parryFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")

-- Block
local blockframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	blockframe:SetWidth(50)
	blockframe:SetHeight(10)
	blockframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -80)

local blockFS = blockframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	blockFS:SetPoint("TOPLEFT",blockframe,"TOPLEFT",0,0)
	blockFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")

local elapsed = 0

blockframe:SetScript("OnUpdate", function(self, e)
	elapsed = elapsed + e
		if elapsed >= 0.02 then
				local overall, equipped = GetAverageItemLevel()
				local currentSpeed, runSpeed, flightSpeed, swimSpeed = GetUnitSpeed("player")
				
				local isbowEquipped = IsEquippedItemType("Bows")
				local iscrossbowEquipped = IsEquippedItemType("Crossbows")
				local isgunEquipped = IsEquippedItemType("Guns")
				
				local base, posBuff, negBuff = UnitAttackPower("player")
					local apowereffective = base + posBuff + negBuff
				
				local mainSpeed, offSpeed = UnitAttackSpeed("player")
					if OffhandHasWeapon(1) then
						aspeedeffective = ((mainSpeed + offSpeed) / 2)
					else
						aspeedeffective = mainSpeed
					end
				
				local spellDmg = GetSpellBonusDamage(7)
				local dodge = GetDodgeChance()
				local parry = GetParryChance()
				local block = GetBlockChance()

					if CharacterStatsPane:IsVisible() then
						detailsFS:SetFormattedText('|cffffffffDetails|r')
						detailsframe:Show()
						ilevelFS:SetFormattedText('|cffe5e500Item Level:|r |cff00e500%.0f / %.0f |r', equipped, overall)
						ilevelframe:Show()
						mspeedFS:SetFormattedText('|cffe5e500Run Speed:|r |cffffffff%.0f%% |r', runSpeed / 0.07)
						mspeedframe:Show()
											
						if isbowEquipped or iscrossbowEquipped or isgunEquipped then 
							local speed, lowDmg, hiDmg, posBuff, negBuff, percent = UnitRangedDamage("player")
								local rlowdamage = (lowDmg + posBuff + negBuff)
								local rhighdamage = (hiDmg + posBuff + negBuff)
							rdamageFS:SetFormattedText('|cffe5e500Damage:|r |cff00e500%.0f - %.0f |r', rlowdamage, rhighdamage)
							rdamageframe:Show()	
						
						else
							local lowDmg, hiDmg, offlowDmg, offhiDmg, posBuff, negBuff, percentmod = UnitDamage("player")
								local mlowdamage = (lowDmg + posBuff + negBuff)
								local mhighdamage = (hiDmg + posBuff + negBuff)
						mdamageFS:SetFormattedText('|cffe5e500Damage:|r |cff00e500%.0f - %.0f |r', mlowdamage, mhighdamage)
						mdamageframe:Show()
						end

						apowerFS:SetFormattedText('|cffe5e500Attack Power:|r |cffffffff%.0f |r', apowereffective)
						apowerframe:Show()						
						aspeedFS:SetFormattedText('|cffe5e500Attack Speed:|r |cffffffff%.2f |r', aspeedeffective)
						aspeedframe:Show()
						spowerFS:SetFormattedText('|cffe5e500Spell Power:|r |cffffffff%.0f |r', spellDmg)
						spowerframe:Show()						
						dodgeFS:SetFormattedText('|cffe5e500Dodge:|r |cffffffff%.2f%% |r', dodge)
						dodgeframe:Show()
						parryFS:SetFormattedText('|cffe5e500Parry:|r |cffffffff%.2f%% |r', parry)
						parryframe:Show()		
						blockFS:SetFormattedText('|cffe5e500Block:|r |cffffffff%.2f%% |r', block)
						blockframe:Show()						
					end
			elapsed = 0
		end
end)































-- primary: only show the 1 for the player's current spec
-- roles: only show if the player's current spec is one of the roles
-- hideAt: only show if it's not this value

PAPERDOLL_STATCATEGORIES= {
	[1] = {
		categoryFrame = "AttributesCategory",
		stats = {
			[1] = { stat = "HEALTH" },
			[2] = { stat = "POWER" },
			[3] = { stat = "ALTERNATEMANA" },
			[6] = { stat = "ARMOR" },
			[7] = { stat = "STRENGTH", primary = LE_UNIT_STAT_STRENGTH },
			[8] = { stat = "AGILITY", primary = LE_UNIT_STAT_AGILITY },
			[9] = { stat = "INTELLECT", primary = LE_UNIT_STAT_INTELLECT },
			[10] = { stat = "STAMINA" },
			[11] = { stat = "MANAREGEN", roles =  { "HEALER" } },
			[12] = { stat = "ENERGY_REGEN", unitClass ==  { "ROGUE" } },
			[13] = { stat = "RUNE_REGEN", unitClass ==  { "DEATHKNIGHT" } },
			[14] = { stat = "FOCUS_REGEN", unitClass ==  { "HUNTER" } },
		},
	},
	[2] = {
		categoryFrame = "EnhancementsCategory",
		stats = {
			[1] = { stat = "CRITCHANCE", hideAt = 0 },
			[2] = { stat = "HASTE", hideAt = 0 },
			[3] = { stat = "MASTERY", hideAt = 0 },
			[4] = { stat = "VERSATILITY", hideAt = 0 },
			[5] = { stat = "LIFESTEAL", showAt = 0 },
			[6] = { stat = "AVOIDANCE", showAt = 0 },
		},
	},


};



























































-- Deja Player Stats
	
-- Deja Player Stats Frame

local dejaplayerstatsframe = CreateFrame("Frame", nil, CharacterStatsPane)
	dejaplayerstatsframe:SetWidth(166)
	dejaplayerstatsframe:SetHeight(80)
	dejaplayerstatsframe:SetPoint(
		"BOTTOMLEFT", 
		CharacterStatsPane, 
		"BOTTOMLEFT", 15, 14)

local t=dejaplayerstatsframe:CreateTexture(nil,"ARTWORK")
	t:SetAllPoints(dejaplayerstatsframe)
	t:SetTexture(CharacterStatsPane.AttributesCategory.Background)
	
-- Movement Speed
local mspeedframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	mspeedframe:SetWidth(50)
	mspeedframe:SetHeight(10)
	mspeedframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -10)

local mspeedFS = mspeedframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	mspeedFS:SetPoint("TOPLEFT",mspeedframe,"TOPLEFT",0,0)
	mspeedFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")

-- Attack Speed
local aspeedframe = CreateFrame("Frame", nil, dejaplayerstatsframe)
	aspeedframe:SetWidth(50)
	aspeedframe:SetHeight(10)
	aspeedframe:SetPoint("TOPLEFT", dejaplayerstatsframe, "TOPLEFT", 0, -40)

local aspeedFS = aspeedframe:CreateFontString("FontString","OVERLAY","GameTooltipText")

	aspeedFS:SetPoint("TOPLEFT",aspeedframe,"TOPLEFT",0,0)
	aspeedFS:SetFont("Fonts\\FRIZQT__.TTF", 10, "THINOUTLINE")

local elapsed = 0

dejaplayerstatsframe:SetScript("OnUpdate", function(self, e)
	elapsed = elapsed + e
		if elapsed >= 0.02 then
				local currentSpeed, runSpeed, flightSpeed, swimSpeed = GetUnitSpeed("player")
				
				local mainSpeed, offSpeed = UnitAttackSpeed("player")
					if OffhandHasWeapon(1) then
						aspeedeffective = ((mainSpeed + offSpeed) / 2)
					else
						aspeedeffective = mainSpeed
					end
				
					if CharacterStatsPane:IsVisible() then
						mspeedFS:SetFormattedText('|cffe5e500Run Speed:|r |cffffffff%.0f%% |r', runSpeed / 0.07)
						mspeedframe:Show()
						aspeedFS:SetFormattedText('|cffe5e500Attack Speed:|r |cffffffff%.2f |r', aspeedeffective)
						aspeedframe:Show()
					end
			elapsed = 0
		end
end)