Quantcast
-- ================================================================================ --
--				EMA - ( Ebony's MultiBoxing Assistant )    							--
--				Current Author: Jennifer Cally (Ebony)								--
--																					--
--				License: All Rights Reserved 2018-2019 Jennifer Cally					--
--																					--
--				Some Code Used from "Jamba" that is 								--
--				Released under the MIT License 										--
--				"Jamba" Copyright 2008-2015  Michael "Jafula" Miller				--
--																					--
-- ================================================================================ --

-- Create the addon using AceAddon-3.0 and embed some libraries.
local EMA = LibStub( "AceAddon-3.0" ):NewAddon(
	"Information",
	"Module-1.0",
	"AceConsole-3.0",
	"AceEvent-3.0",
	"AceTimer-3.0"
)

-- Get the EMA Utilities Library.
local EMAUtilities = LibStub:GetLibrary( "EbonyUtilities-1.0" )
local EMAHelperSettings = LibStub:GetLibrary( "EMAHelperSettings-1.0" )
local LibBagUtils = LibStub:GetLibrary( "LibBagUtils-1.0" )
EMA.SharedMedia = LibStub( "LibSharedMedia-3.0" )

--  Constants and Locale for this module.
EMA.moduleName = "Information"
EMA.settingsDatabaseName = "CurrProfileDB"
EMA.chatCommand = "ema-information"
local L = LibStub( "AceLocale-3.0" ):GetLocale( "Core" )
EMA.parentDisplayName = L["DISPLAY"]
EMA.moduleDisplayName = L["CURRENCY"]
-- Icon
EMA.moduleIcon = "Interface\\Addons\\EMA-Classic\\Media\\SellIcon.tga"
-- order
EMA.moduleOrder = 3

EMA.globalCurrencyFramePrefix = "EMAToonCurrencyListFrame"
EMA.currTypes = {}
EMA.simpleCurrList = {}

-------------------------------------- End of edit --------------------------------------------------------------



-- Settings - the values to store and their defaults for the settings database.
EMA.settings = {
	profile = {
		currGold = true,
		bagSpace = true,
		charDurr = true,

		currencyFrameAlpha = 1.0,
		currencyFramePoint = "CENTER",
		currencyFrameRelativePoint = "CENTER",
		currencyFrameXOffset = 0,
		currencyFrameYOffset = 0,
		currencyFrameBackgroundColourR = 1.0,
		currencyFrameBackgroundColourG = 1.0,
		currencyFrameBackgroundColourB = 1.0,
		currencyFrameBackgroundColourA = 1.0,
		currencyFrameBorderColourR = 1.0,
		currencyFrameBorderColourG = 1.0,
		currencyFrameBorderColourB = 1.0,
		currencyFrameBorderColourA = 1.0,
		currencyBorderStyle = L["BLIZZARD_TOOLTIP"],
		currencyBackgroundStyle = L["BLIZZARD_DIALOG_BACKGROUND"],
		currencyFontStyle = L["ARIAL_NARROW"],
		currencyFontSize = 12,
		currencyScale = 1,
		currencyNameWidth = 60,
		currencyPointsWidth = 50,
		currencyGoldWidth = 140,
		currencySpacingWidth = 3,
		currencyLockWindow = false,
		currOpenStartUpMaster = false,
	},
}

-- Configuration.
function EMA:GetConfiguration()
	local configuration = {
		name = EMA.moduleDisplayName,
		handler = EMA,
		type = 'group',
		childGroups  = "tab",
		get = "EMAConfigurationGetSetting",
		set = "EMAConfigurationSetSetting",
		args = {
			config = {
				type = "input",
				name = L["OPEN_CONFIG"],
				desc = L["OPEN_CONFIG_HELP"],
				usage = "/ema-information config",
				get = false,
				set = "",
			},
			show = {
				type = "input",
				name = L["SHOW_CURRENCY"],
				desc = L["SHOW_CURRENCY_HELP"],
				usage = "ema-information show",
				get = false,
				set = "EMAToonRequestCurrency",
			},
			hide = {
				type = "input",
				name = L["HIDE_CURRENCY"],
				desc = L["HIDE_CURRENCY_HELP"],
				usage = "ema-information hide",
				get = false,
				set = "EMAToonHideCurrency",
			},
			push = {
				type = "input",
				name = L["PUSH_ALL_SETTINGS"],
				desc = L["PUSH_SETTINGS_INFO"],
				usage = "ema-information push",
				get = false,
				set = "EMASendSettings",
			},
		},
	}
	return configuration
end

local function DebugMessage( ... )
	--EMA:Print( ... )
end

-------------------------------------------------------------------------------------------------------------
-- Command this module sends.
-------------------------------------------------------------------------------------------------------------

EMA.COMMAND_REQUEST_CURRENCY = "SendCurrency"
EMA.COMMAND_HERE_IS_CURRENCY = "HereIsCurrency"

-------------------------------------------------------------------------------------------------------------
-- Messages module sends.
-------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------
-- Variables used by module.
-------------------------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------------------------------
-- Settings Dialogs.
-------------------------------------------------------------------------------------------------------------

local function SettingsCreate()
	EMA.settingsControl = {}
	-- Create the settings panel.
	EMAHelperSettings:CreateSettings(
		EMA.settingsControl,
		EMA.moduleDisplayName,
		EMA.parentDisplayName,
		EMA.SettingsPushSettingsClick,
		EMA.moduleIcon,
		EMA.moduleOrder
	)
	local bottomOfInfo = EMA:SettingsCreateCurrency( EMAHelperSettings:TopOfSettings() )
	EMA.settingsControl.widgetSettings.content:SetHeight( -bottomOfInfo )
	-- Help
	local helpTable = {}
	EMAHelperSettings:CreateHelp( EMA.settingsControl, helpTable, EMA:GetConfiguration() )
end




function EMA:SettingsCreateCurrency( top )
	-- Get positions.
	local checkBoxHeight = EMAHelperSettings:GetCheckBoxHeight()
	local sliderHeight = EMAHelperSettings:GetSliderHeight()
	local mediaHeight = EMAHelperSettings:GetMediaHeight()
	local editBoxHeight = EMAHelperSettings:GetEditBoxHeight()
	local buttonHeight = EMAHelperSettings:GetButtonHeight()
	local dropdownHeight = EMAHelperSettings:GetDropdownHeight() + 10
	local labelHeight = EMAHelperSettings:GetLabelHeight()
	local continueLabelHeight = 18
	local left = EMAHelperSettings:LeftOfSettings()
	local headingHeight = EMAHelperSettings:HeadingHeight()
	local headingWidth = EMAHelperSettings:HeadingWidth( true )
	local horizontalSpacing = EMAHelperSettings:GetHorizontalSpacing()
	local indent = horizontalSpacing * 12
	local verticalSpacing = EMAHelperSettings:GetVerticalSpacing()
	local halfWidth = (headingWidth - horizontalSpacing) / 2
	local thirdWidth = (headingWidth - (horizontalSpacing * 5)) / 5
	local halfWidthSlider = (headingWidth - horizontalSpacing) / 2
	local column2left = left + halfWidthSlider
	local left2 = left + thirdWidth
	local left3 = left + (thirdWidth * 1)
	local right = left + halfWidth + horizontalSpacing
	local movingTop = top
	EMAHelperSettings:CreateHeading( EMA.settingsControl, L["CURRENCY_HEADER"], movingTop, false )
	movingTop = movingTop - headingHeight
	EMA.settingsControl.checkBoxCurrencyGold = EMAHelperSettings:CreateCheckBox(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["GOLD"],
		EMA.SettingsToggleCurrencyGold,
		L["GOLD_HELP"]
	)
	movingTop = movingTop - checkBoxHeight
		EMA.settingsControl.checkBoxCurrencyBagSpace = EMAHelperSettings:CreateCheckBox(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["BAG_SPACE"],
		EMA.SettingsToggleCurrencyBagSpace,
		L["BAG_SPACE_HELP"]
	)
	movingTop = movingTop - checkBoxHeight
		EMA.settingsControl.checkBoxCurrencyCharDurr = EMAHelperSettings:CreateCheckBox(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["DURR"],
		EMA.SettingsToggleCurrencyCharDurr,
		L["DURR_HELP"]
	)
	movingTop = movingTop - checkBoxHeight

	-- Other Stuff
	EMA.settingsControl.currencyButtonShowList = EMAHelperSettings:CreateButton(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SHOW_CURRENCY"],
		EMA.EMAToonRequestCurrency,
		L["SHOW_CURRENCY_HELP"]
	)
	movingTop = movingTop - buttonHeight
	EMA.settingsControl.checkBoxCurrencyOpenStartUpMaster = EMAHelperSettings:CreateCheckBox(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["CURR_STARTUP"],
		EMA.SettingsToggleCurrencyOpenStartUpMaster,
		L["CURR_STARTUP_HELP"]
	)
	movingTop = movingTop - checkBoxHeight
	-- Create appearance & layout.
	EMAHelperSettings:CreateHeading( EMA.settingsControl, L["APPEARANCE_LAYOUT_HEALDER"], movingTop, true )
	movingTop = movingTop - headingHeight
	EMA.settingsControl.checkBoxCurrencyLockWindow = EMAHelperSettings:CreateCheckBox(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["LOCK_CURR_LIST"],
		EMA.SettingsToggleCurrencyLockWindow,
		L["LOCK_CURR_LIST_HELP"]
	)
	movingTop = movingTop - checkBoxHeight
	EMA.settingsControl.currencyScaleSlider = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SCALE"]
	)
	EMA.settingsControl.currencyScaleSlider:SetSliderValues( 0.5, 2, 0.01 )
	EMA.settingsControl.currencyScaleSlider:SetCallback( "OnValueChanged", EMA.SettingsChangeScale )
	movingTop = movingTop - sliderHeight - verticalSpacing
	EMA.settingsControl.currencyTransparencySlider = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["TRANSPARENCY"]
	)
	EMA.settingsControl.currencyTransparencySlider:SetSliderValues( 0, 1, 0.01 )
	EMA.settingsControl.currencyTransparencySlider:SetCallback( "OnValueChanged", EMA.SettingsChangeTransparency )
	movingTop = movingTop - sliderHeight - verticalSpacing
	EMA.settingsControl.currencyMediaBorder = EMAHelperSettings:CreateMediaBorder(
		EMA.settingsControl,
		halfWidthSlider,
		left,
		movingTop,
		L["BORDER_STYLE"]
	)
	EMA.settingsControl.currencyMediaBorder:SetCallback( "OnValueChanged", EMA.SettingsChangeBorderStyle )

	EMA.settingsControl.currencyBorderColourPicker = EMAHelperSettings:CreateColourPicker(
		EMA.settingsControl,
		halfWidthSlider,
		column2left + 15,
		movingTop - 15,
		L["BORDER COLOUR"]
	)
	EMA.settingsControl.currencyBorderColourPicker:SetHasAlpha( true )
	EMA.settingsControl.currencyBorderColourPicker:SetCallback( "OnValueConfirmed", EMA.SettingsBorderColourPickerChanged )
	movingTop = movingTop - mediaHeight - verticalSpacing
	EMA.settingsControl.currencyMediaBackground = EMAHelperSettings:CreateMediaBackground(
		EMA.settingsControl,
		halfWidthSlider,
		left,
		movingTop,
		L["BACKGROUND"]
	)
	EMA.settingsControl.currencyMediaBackground:SetCallback( "OnValueChanged", EMA.SettingsChangeBackgroundStyle )
	EMA.settingsControl.currencyBackgroundColourPicker = EMAHelperSettings:CreateColourPicker(
		EMA.settingsControl,
		halfWidthSlider,
		column2left + 15,
		movingTop - 15,
		L["BG_COLOUR"]
	)
	EMA.settingsControl.currencyBackgroundColourPicker:SetHasAlpha( true )
	EMA.settingsControl.currencyBackgroundColourPicker:SetCallback( "OnValueConfirmed", EMA.SettingsBackgroundColourPickerChanged )
	movingTop = movingTop - mediaHeight - verticalSpacing
	--Font
	EMA.settingsControl.currencyMediaFont = EMAHelperSettings:CreateMediaFont(
		EMA.settingsControl,
		halfWidthSlider,
		left,
		movingTop,
		L["FONT"]
	)
	EMA.settingsControl.currencyMediaFont:SetCallback( "OnValueChanged", EMA.SettingsChangeFontStyle )
	EMA.settingsControl.currencyFontSize = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		halfWidthSlider,
		column2left,
		movingTop,
		L["FONT_SIZE"]
	)
	EMA.settingsControl.currencyFontSize:SetSliderValues( 8, 20 , 1 )
	EMA.settingsControl.currencyFontSize:SetCallback( "OnValueChanged", EMA.SettingsChangeFontSize )
	movingTop = movingTop - mediaHeight - verticalSpacing
	EMA.settingsControl.currencySliderSpaceForName = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SPACE_FOR_NAME"]
	)
	EMA.settingsControl.currencySliderSpaceForName:SetSliderValues( 20, 200, 1 )
	EMA.settingsControl.currencySliderSpaceForName:SetCallback( "OnValueChanged", EMA.SettingsChangeSliderSpaceForName )
	movingTop = movingTop - sliderHeight - verticalSpacing
	EMA.settingsControl.currencySliderSpaceForGold = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SPACE_FOR_GOLD"]
	)
	EMA.settingsControl.currencySliderSpaceForGold:SetSliderValues( 20, 200, 1 )
	EMA.settingsControl.currencySliderSpaceForGold:SetCallback( "OnValueChanged", EMA.SettingsChangeSliderSpaceForGold )
	movingTop = movingTop - sliderHeight - verticalSpacing
	EMA.settingsControl.currencySliderSpaceForPoints = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SPACE_FOR_POINTS"]
	)
	EMA.settingsControl.currencySliderSpaceForPoints:SetSliderValues( 20, 200, 1 )
	EMA.settingsControl.currencySliderSpaceForPoints:SetCallback( "OnValueChanged", EMA.SettingsChangeSliderSpaceForPoints )
	movingTop = movingTop - sliderHeight - verticalSpacing
	EMA.settingsControl.currencySliderSpaceBetweenValues = EMAHelperSettings:CreateSlider(
		EMA.settingsControl,
		headingWidth,
		left,
		movingTop,
		L["SPACE_BETWEEN_VALUES"]
	)
	EMA.settingsControl.currencySliderSpaceBetweenValues:SetSliderValues( 0, 20, 1 )
	EMA.settingsControl.currencySliderSpaceBetweenValues:SetCallback( "OnValueChanged", EMA.SettingsChangeSliderSpaceBetweenValues )
	movingTop = movingTop - sliderHeight - verticalSpacing
	return movingTop
end



-------------------------------------------------------------------------------------------------------------
-- Settings Populate.
-------------------------------------------------------------------------------------------------------------

function EMA:BeforeEMAProfileChanged()
end

function EMA:OnEMAProfileChanged()
	EMA:SettingsRefresh()
end

function EMA:SettingsRefresh()
	EMA.settingsControl.checkBoxCurrencyGold:SetValue( EMA.db.currGold )
	EMA.settingsControl.checkBoxCurrencyBagSpace:SetValue ( EMA.db.bagSpace )
	EMA.settingsControl.checkBoxCurrencyCharDurr:SetValue ( EMA.db.charDurr )

	--state
	EMA.settingsControl.checkBoxCurrencyOpenStartUpMaster:SetValue( EMA.db.currOpenStartUpMaster )
	EMA.settingsControl.currencyTransparencySlider:SetValue( EMA.db.currencyFrameAlpha )
	EMA.settingsControl.currencyScaleSlider:SetValue( EMA.db.currencyScale )
	EMA.settingsControl.currencyMediaBorder:SetValue( EMA.db.currencyBorderStyle )
	EMA.settingsControl.currencyMediaBackground:SetValue( EMA.db.currencyBackgroundStyle )
	EMA.settingsControl.currencyBackgroundColourPicker:SetColor( EMA.db.currencyFrameBackgroundColourR, EMA.db.currencyFrameBackgroundColourG, EMA.db.currencyFrameBackgroundColourB, EMA.db.currencyFrameBackgroundColourA )
	EMA.settingsControl.currencyBorderColourPicker:SetColor( EMA.db.currencyFrameBorderColourR, EMA.db.currencyFrameBorderColourG, EMA.db.currencyFrameBorderColourB, EMA.db.currencyFrameBorderColourA )
	EMA.settingsControl.currencyMediaFont:SetValue( EMA.db.currencyFontStyle )
	EMA.settingsControl.currencyFontSize:SetValue( EMA.db.currencyFontSize )
	EMA.settingsControl.currencySliderSpaceForName:SetValue( EMA.db.currencyNameWidth )
	EMA.settingsControl.currencySliderSpaceForGold:SetValue( EMA.db.currencyGoldWidth )
	EMA.settingsControl.currencySliderSpaceForPoints:SetValue( EMA.db.currencyPointsWidth )
	EMA.settingsControl.currencySliderSpaceBetweenValues:SetValue( EMA.db.currencySpacingWidth )
	EMA.settingsControl.checkBoxCurrencyLockWindow:SetValue( EMA.db.currencyLockWindow )
	if EMA.currencyListFrameCreated == true then
		EMA:CurrencyListSetColumnWidth()
		EMA:SettingsUpdateBorderStyle()
		EMA:SettingsUpdateFontStyle()
		EMA:CurrencyUpdateWindowLock()
		EMAToonCurrencyListFrame:SetScale( EMA.db.currencyScale )
---????		EMA:UpdateHendingText()
		EMA:CurrencyListSetHeight()
	end
end

function EMA:SettingsPushSettingsClick( event )
	EMA:EMASendSettings()
end

function EMA:SettingsToggleCurrencyGold( event, checked )
	EMA.db.currGold = checked
	EMA:SettingsRefresh()
end

function EMA:SettingsToggleCurrencyBagSpace( event, checked )
	EMA.db.bagSpace = checked
	EMA:SettingsRefresh()
end

function EMA:SettingsToggleCurrencyCharDurr( event, checked )
	EMA.db.charDurr = checked
	EMA:SettingsRefresh()
end

function EMA:SettingsToggleCurrencyOpenStartUpMaster( event, checked )
	EMA.db.currOpenStartUpMaster = checked
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeScale( event, value )
	EMA.db.currencyScale = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeTransparency( event, value )
	EMA.db.currencyFrameAlpha = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeBorderStyle( event, value )
	EMA.db.currencyBorderStyle = value
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeBackgroundStyle( event, value )
	EMA.db.currencyBackgroundStyle = value
	EMA:SettingsRefresh()
end

function EMA:SettingsBackgroundColourPickerChanged( event, r, g, b, a )
	EMA.db.currencyFrameBackgroundColourR = r
	EMA.db.currencyFrameBackgroundColourG = g
	EMA.db.currencyFrameBackgroundColourB = b
	EMA.db.currencyFrameBackgroundColourA = a
	EMA:SettingsRefresh()
end

function EMA:SettingsBorderColourPickerChanged( event, r, g, b, a )
	EMA.db.currencyFrameBorderColourR = r
	EMA.db.currencyFrameBorderColourG = g
	EMA.db.currencyFrameBorderColourB = b
	EMA.db.currencyFrameBorderColourA = a
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeFontStyle( event, value )
	EMA.db.currencyFontStyle = value
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeFontSize( event, value )
	EMA.db.currencyFontSize = value
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeSliderSpaceForName( event, value )
	EMA.db.currencyNameWidth = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeSliderSpaceForGold( event, value )
	EMA.db.currencyGoldWidth = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeSliderSpaceForPoints( event, value )
	EMA.db.currencyPointsWidth = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsChangeSliderSpaceBetweenValues( event, value )
	EMA.db.currencySpacingWidth = tonumber( value )
	EMA:SettingsRefresh()
end

function EMA:SettingsToggleCurrencyLockWindow( event, checked )
	EMA.db.currencyLockWindow = checked
	EMA:CurrencyUpdateWindowLock()
	EMA:SettingsRefresh()
end

-------------------------------------------------------------------------------------------------------------
-- Addon initialization, enabling and disabling.
-------------------------------------------------------------------------------------------------------------

-- Initialise the module.
function EMA:OnInitialize()
	EMA.currencyTotalGold = 0
	EMA.currencyListFrameCreated = false
	EMA.currencyFrameCharacterInfo = {}
	EMA.currentCurrencyValues = {}
	-- Create the settings control.
	SettingsCreate()
	-- Initialise the EMAModule part of this module.
	EMA:EMAModuleInitialize( EMA.settingsControl.widgetSettings.frame )
	-- Populate the settings.
	EMA:SettingsRefresh()
	-- Create the currency list frame.
	EMA:CreateEMAToonCurrencyListFrame()
end

-- Called when the addon is enabled.
function EMA:OnEnable()
	-- WoW events.
	--EMA:RegisterMessage( EMAApi.MESSAGE_MESSAGE_AREAS_CHANGED, "OnMessageAreasChanged" )
	if EMA.db.currOpenStartUpMaster == true then
		if EMAApi.IsCharacterTheMaster( self.characterName ) == true then
			EMA:ScheduleTimer( "EMAToonRequestCurrency", 5 )
		end
	end
end

-- Called when the addon is disabled.
function EMA:OnDisable()
end

-- Settings received.
function EMA:EMAOnSettingsReceived( characterName, settings )
	if characterName ~= EMA.characterName then
		-- Update the settings.
		EMA.db.currGold = settings.currGold
		EMA.db.bagSpace = settings.bagSpace
		EMA.db.charDurr = settings.charDurr

		EMA.db.currOpenStartUpMaster = settings.currOpenStartUpMaster
		EMA.db.currencyScale = settings.currencyScale
		EMA.db.currencyFrameAlpha = settings.currencyFrameAlpha
		EMA.db.currencyFramePoint = settings.currencyFramePoint
		EMA.db.currencyFrameRelativePoint = settings.currencyFrameRelativePoint
		EMA.db.currencyFrameXOffset = settings.currencyFrameXOffset
		EMA.db.currencyFrameYOffset = settings.currencyFrameYOffset
		EMA.db.currencyFrameBackgroundColourR = settings.currencyFrameBackgroundColourR
		EMA.db.currencyFrameBackgroundColourG = settings.currencyFrameBackgroundColourG
		EMA.db.currencyFrameBackgroundColourB = settings.currencyFrameBackgroundColourB
		EMA.db.currencyFrameBackgroundColourA = settings.currencyFrameBackgroundColourA
		EMA.db.currencyFrameBorderColourR = settings.currencyFrameBorderColourR
		EMA.db.currencyFrameBorderColourG = settings.currencyFrameBorderColourG
		EMA.db.currencyFrameBorderColourB = settings.currencyFrameBorderColourB
		EMA.db.currencyFrameBorderColourA = settings.currencyFrameBorderColourA
		EMA.db.currencyBorderStyle = settings.currencyBorderStyle
		EMA.db.currencyBackgroundStyle = settings.currencyBackgroundStyle
		EMA.db.currencyFontSize = settings.currencyFontSize
		EMA.db.currencyFontStyle = settings.currencyFontStyle
		EMA.db.currencyNameWidth = settings.currencyNameWidth
		EMA.db.currencyPointsWidth = settings.currencyPointsWidth
		EMA.db.currencyGoldWidth = settings.currencyGoldWidth
		EMA.db.currencySpacingWidth = settings.currencySpacingWidth
		EMA.db.currencyLockWindow = settings.currencyLockWindow
		-- Refresh the settings.
		EMA:SettingsRefresh()
		-- Tell the player.
		EMA:Print( L["SETTINGS_RECEIVED_FROM_A"]( characterName ) )
	end
end

function EMA:CreateEMAToonCurrencyListFrame()
	-- The frame.
	local frame = CreateFrame( "Frame", "EMAToonCurrencyListWindowFrame", UIParent )
	frame.obj = EMA
	frame:SetFrameStrata( "LOW" )
	frame:SetToplevel( false )
	frame:SetClampedToScreen( true )
	frame:EnableMouse( true )
	frame:SetMovable( true )
	frame:RegisterForDrag( "LeftButton" )
	frame:SetScript( "OnDragStart",
		function( this )
			if IsAltKeyDown() then
				this:StartMoving()
			end
		end )
	frame:SetScript( "OnDragStop",
		function( this )
			this:StopMovingOrSizing()
			local point, relativeTo, relativePoint, xOffset, yOffset = this:GetPoint()
			EMA.db.currencyFramePoint = point
			EMA.db.currencyFrameRelativePoint = relativePoint
			EMA.db.currencyFrameXOffset = xOffset
			EMA.db.currencyFrameYOffset = yOffset
		end	)
	frame:SetWidth( 500 )
	frame:SetHeight( 200 )
	frame:ClearAllPoints()
	frame:SetPoint( EMA.db.currencyFramePoint, UIParent, EMA.db.currencyFrameRelativePoint, EMA.db.currencyFrameXOffset, EMA.db.currencyFrameYOffset )
	frame:SetBackdrop( {
		bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
		edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
		tile = true, tileSize = 10, edgeSize = 10,
		insets = { left = 3, right = 3, top = 3, bottom = 3 }
	} )

	-- Create the title for the frame.
	local titleName = frame:CreateFontString( "EMAToonCurrencyListWindowFrameTitleText", "OVERLAY", "GameFontNormal" )
	titleName:SetPoint( "TOPLEFT", frame, "TOPLEFT", 3, -8 )
	titleName:SetTextColor( NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1.0 )
	titleName:SetText( L["CURRENCY"] )
	titleName:SetWidth( 200 )
	titleName:SetJustifyH( "LEFT" )
	titleName:SetWordWrap( false )
	frame.titleName = titleName

	-- Create the headings.
	local left = 10
	local spacing = 50
	local width = 50
	local top = -30
	local parentFrame = frame
	local r = 1.0
	local g = 0.96
	local b = 0.41
	local a = 1.0
	-- Set the characters name font string.
	local frameCharacterName = EMA.globalCurrencyFramePrefix.."TitleCharacterName"
	local frameCharacterNameText = parentFrame:CreateFontString( frameCharacterName.."Text", "OVERLAY", "GameFontNormal" )
	frameCharacterNameText:SetText( L["NAME"] )
	frameCharacterNameText:SetTextColor( r, g, b, a )
	frameCharacterNameText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameCharacterNameText:SetWidth( width * 2.5 )
	frameCharacterNameText:SetJustifyH( "LEFT" )
	frame.characterNameText = frameCharacterNameText
	left = left + (spacing * 2)
	-- Set the Gold font string.
	local frameGold = EMA.globalCurrencyFramePrefix.."TitleGold"
	local frameGoldText = parentFrame:CreateFontString( frameGold.."Text", "OVERLAY", "GameFontNormal" )
	frameGoldText:SetText( L["GOLD"] )
	frameGoldText:SetTextColor( r, g, b, a )
	frameGoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameGoldText:SetWidth( width )
	frameGoldText:SetJustifyH( "CENTER" )
	frame.GoldText = frameGoldText
	left = left + spacing
	-- Set the BagSpace font string.
	local frameBagSpace = EMA.globalCurrencyFramePrefix.."TitleBagSpace"
	local frameBagSpaceText = parentFrame:CreateFontString( frameBagSpace.."Text", "OVERLAY", "GameFontNormal" )
	frameBagSpaceText:SetText( L["BAG_SPACE"] )
	frameBagSpaceText:SetTextColor( r, g, b, a )
	frameBagSpaceText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameBagSpaceText:SetWidth( width )
	frameBagSpaceText:SetJustifyH( "CENTER" )
	frame.BagSpaceText = frameBagSpaceText
	left = left + spacing
	-- Set the CharDurr font string.
	local frameCharDurr = EMA.globalCurrencyFramePrefix.."TitleBagSpace"
	local frameCharDurrText = parentFrame:CreateFontString( frameCharDurr.."Text", "OVERLAY", "GameFontNormal" )
	frameCharDurrText:SetText( L["DURR"] )
	frameCharDurrText:SetTextColor( r, g, b, a )
	frameCharDurrText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameCharDurrText:SetWidth( width )
	frameCharDurrText:SetJustifyH( "CENTER" )
	frame.CharDurrText = frameCharDurrText
	left = left + spacing

	-- Set the Total Gold font string.
	left = 10
	top = -50
	local frameTotalGoldTitle = EMA.globalCurrencyFramePrefix.."TitleTotalGold"
	local frameTotalGoldTitleText = parentFrame:CreateFontString( frameTotalGoldTitle.."Text", "OVERLAY", "GameFontNormal" )
	frameTotalGoldTitleText:SetText( L["TOTAL"] )
	frameTotalGoldTitleText:SetTextColor( r, g, b, a )
	frameTotalGoldTitleText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameTotalGoldTitleText:SetWidth( width )
	frameTotalGoldTitleText:SetJustifyH( "LEFT" )
	frame.TotalGoldTitleText = frameTotalGoldTitleText

	local frameTotalGold = EMA.globalCurrencyFramePrefix.."TotalGold"
	local frameTotalGoldText = parentFrame:CreateFontString( frameTotalGold.."Text", "OVERLAY", "GameFontNormal" )
	frameTotalGoldText:SetText( "0" )
	frameTotalGoldText:SetTextColor( r, g, b, a )
	frameTotalGoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameTotalGoldText:SetWidth( width )
	frameTotalGoldText:SetJustifyH( "RIGHT" )
	frame.TotalGoldText = frameTotalGoldText

	-- Set frame width.
	frame:SetWidth( left + 10 )

	-- Set transparency of the the frame (and all its children).
	frame:SetAlpha( EMA.db.currencyFrameAlpha )

	-- Set scale.
	frame:SetScale( EMA.db.currencyScale )

	-- Set the global frame reference for this frame.
	EMAToonCurrencyListFrame = frame

	-- Close.
	local closeButton = CreateFrame( "Button", EMA.globalCurrencyFramePrefix.."ButtonClose", frame, "UIPanelCloseButton" )
	closeButton:SetScript( "OnClick", function() EMAToonCurrencyListFrame:Hide() end )
	closeButton:SetPoint( "TOPRIGHT", frame, "TOPRIGHT", 0, 0 )
	frame.closeButton = closeButton

	-- Update.
	local updateButton = CreateFrame( "Button", EMA.globalCurrencyFramePrefix.."ButtonUpdate", frame, "UIPanelButtonTemplate" )
	updateButton:SetScript( "OnClick", function() EMA:EMAToonRequestCurrency() end )
	updateButton:SetPoint( "TOPRIGHT", frame, "TOPRIGHT", -30, -4 )
	updateButton:SetHeight( 22 )
	updateButton:SetWidth( 55 )
	updateButton:SetText( L["UPDATE"] )

	frame.updateButton = updateButton

	EMA:SettingsUpdateBorderStyle()
	EMA:CurrencyUpdateWindowLock()
	EMA:SettingsUpdateFontStyle()
	EMAToonCurrencyListFrame:Hide()
	EMA.currencyListFrameCreated = true

	EMA:CurrencyListSetHeight()
end

function EMA:CurrencyUpdateWindowLock()
	if EMA.db.currencyLockWindow == false then
		EMAToonCurrencyListFrame:EnableMouse( true )
	else
		EMAToonCurrencyListFrame:EnableMouse( false )
	end
end

function EMA:SettingsUpdateBorderStyle()
	local borderStyle = EMA.SharedMedia:Fetch( "border", EMA.db.currencyBorderStyle )
	local backgroundStyle = EMA.SharedMedia:Fetch( "background", EMA.db.currencyBackgroundStyle )
	local frame = EMAToonCurrencyListFrame
	frame:SetBackdrop( {
		bgFile = backgroundStyle,
		edgeFile = borderStyle,
		tile = true, tileSize = frame:GetWidth(), edgeSize = 10,
		insets = { left = 3, right = 3, top = 3, bottom = 3 }
	} )
	frame:SetBackdropColor( EMA.db.currencyFrameBackgroundColourR, EMA.db.currencyFrameBackgroundColourG, EMA.db.currencyFrameBackgroundColourB, EMA.db.currencyFrameBackgroundColourA )
	frame:SetBackdropBorderColor( EMA.db.currencyFrameBorderColourR, EMA.db.currencyFrameBorderColourG, EMA.db.currencyFrameBorderColourB, EMA.db.currencyFrameBorderColourA )
	frame:ClearAllPoints()
	frame:SetAlpha( EMA.db.currencyFrameAlpha )
	frame:SetPoint( EMA.db.currencyFramePoint, UIParent, EMA.db.currencyFrameRelativePoint, EMA.db.currencyFrameXOffset, EMA.db.currencyFrameYOffset )
end

function EMA:SettingsUpdateFontStyle()
	local textFont = EMA.SharedMedia:Fetch( "font", EMA.db.currencyFontStyle )
	local textSize = EMA.db.currencyFontSize
	local frame = EMAToonCurrencyListFrame
	frame.titleName:SetFont( textFont , textSize , "OUTLINE")
	frame.characterNameText:SetFont( textFont , textSize , "OUTLINE")
	frame.GoldText:SetFont( textFont , textSize , "OUTLINE")
	frame.BagSpaceText:SetFont( textFont , textSize , "OUTLINE")
	frame.CharDurrText:SetFont( textFont , textSize , "OUTLINE")
	for characterName, currencyFrameCharacterInfo in pairs( EMA.currencyFrameCharacterInfo ) do
		--EMA:Print("test", characterName)
		currencyFrameCharacterInfo.characterNameText:SetFont( textFont , textSize , "OUTLINE")
		currencyFrameCharacterInfo.GoldText:SetFont( textFont , textSize , "OUTLINE")
		currencyFrameCharacterInfo.BagSpaceText:SetFont( textFont , textSize , "OUTLINE")
		currencyFrameCharacterInfo.CharDurrText:SetFont( textFont , textSize , "OUTLINE")
	end
end


function EMA:CurrencyListSetHeight()
	local additionalLines = 0
	local addHeight = 0
	if EMA.db.currGold == true then
		additionalLines = 1
		addHeight = 5
	end
	EMAToonCurrencyListFrame:SetHeight( 56 + (( EMAApi.GetTeamListMaximumOrderOnline() + additionalLines) * 15) + addHeight )
end

function EMA:CurrencyListSetColumnWidth()
	local nameWidth = EMA.db.currencyNameWidth
	local pointsWidth = EMA.db.currencyPointsWidth
	local goldWidth = EMA.db.currencyGoldWidth
	local spacingWidth = EMA.db.currencySpacingWidth
	local frameHorizontalSpacing = 10
	local numberOfPointsColumns = 0
	local parentFrame = EMAToonCurrencyListFrame
	local headingRowTopPoint = -30
	local left = frameHorizontalSpacing
	local haveGold = 0
	-- Heading rows.
	parentFrame.characterNameText:SetWidth( nameWidth )
	parentFrame.characterNameText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, headingRowTopPoint )
	left = left + nameWidth + spacingWidth
 	if EMA.db.currGold == true then
		parentFrame.GoldText:SetWidth( goldWidth )
		parentFrame.GoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, headingRowTopPoint )
		left = left + goldWidth + (spacingWidth * 3)
		parentFrame.GoldText:Show()
		haveGold = 1
	else
		parentFrame.GoldText:Hide()
		haveGold = 0
	end
 	if EMA.db.bagSpace == true then
		parentFrame.BagSpaceText:SetWidth( pointsWidth )
		parentFrame.BagSpaceText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, headingRowTopPoint )
		left = left + pointsWidth + spacingWidth
		numberOfPointsColumns = numberOfPointsColumns + 1
		parentFrame.BagSpaceText:Show()
	else
		parentFrame.BagSpaceText:Hide()
	end
 	if EMA.db.charDurr == true then
		parentFrame.CharDurrText:SetWidth( pointsWidth )
		parentFrame.CharDurrText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, headingRowTopPoint )
		left = left + pointsWidth + spacingWidth
		numberOfPointsColumns = numberOfPointsColumns + 1
		parentFrame.CharDurrText:Show()
	else
		parentFrame.CharDurrText:Hide()
	end
	-- Character rows.
	for characterName, currencyFrameCharacterInfo in pairs( EMA.currencyFrameCharacterInfo ) do
		if EMAPrivate.Team.GetCharacterOnlineStatus (characterName) == true then
			local left = frameHorizontalSpacing
			local characterRowTopPoint = currencyFrameCharacterInfo.characterRowTopPoint
				currencyFrameCharacterInfo.characterNameText:SetWidth( nameWidth )
				currencyFrameCharacterInfo.characterNameText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, characterRowTopPoint )
				left = left + nameWidth + spacingWidth
			if EMA.db.currGold == true then
				currencyFrameCharacterInfo.GoldText:SetWidth( goldWidth )
				currencyFrameCharacterInfo.GoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, characterRowTopPoint )
				left = left + goldWidth + (spacingWidth * 3)
				currencyFrameCharacterInfo.GoldText:Show()
			else
				currencyFrameCharacterInfo.GoldText:Hide()
			end
			if EMA.db.bagSpace == true then
				currencyFrameCharacterInfo.BagSpaceText:SetWidth( pointsWidth )
				currencyFrameCharacterInfo.BagSpaceText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, characterRowTopPoint )
				left = left + pointsWidth + spacingWidth
				currencyFrameCharacterInfo.BagSpaceText:Show()
			else
				currencyFrameCharacterInfo.BagSpaceText:Hide()
			end
			if EMA.db.charDurr == true then
				currencyFrameCharacterInfo.CharDurrText:SetWidth( pointsWidth )
				currencyFrameCharacterInfo.CharDurrText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, characterRowTopPoint )
				left = left + pointsWidth + spacingWidth
				currencyFrameCharacterInfo.CharDurrText:Show()
			else
				currencyFrameCharacterInfo.CharDurrText:Hide()
			end
		end
	end
	-- Parent frame width and title.
	local finalParentWidth = frameHorizontalSpacing + nameWidth + spacingWidth + (haveGold * (goldWidth + (spacingWidth * 3))) + (numberOfPointsColumns * (pointsWidth + spacingWidth)) + frameHorizontalSpacing
	if finalParentWidth < 95 then
		finalParentWidth = 95
	end
	local widthOfCloseAndUpdateButtons = 70
	parentFrame.titleName:SetWidth( finalParentWidth - widthOfCloseAndUpdateButtons - frameHorizontalSpacing - frameHorizontalSpacing )
	parentFrame.titleName:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", frameHorizontalSpacing, -9 )
	if EMA.db.currGold == true then
		if numberOfPointsColumns > 1 then
			parentFrame.titleName:SetText( L["EMA_CURRENCY"] )
		else
			parentFrame.titleName:SetText( L["CURRENCY"] )
		end
	else
		if numberOfPointsColumns < 2 then
			parentFrame.titleName:SetText( "" )
		end
		if numberOfPointsColumns == 2 then
			parentFrame.titleName:SetText( L["CURR"] )
		end
		if (numberOfPointsColumns >= 3) and (numberOfPointsColumns <= 4) then
			parentFrame.titleName:SetText( L["CURRENCY"] )
		end
		if numberOfPointsColumns > 4 then
			parentFrame.titleName:SetText( L["EMA_CURRENCY"] )
		end
	end
	parentFrame:SetWidth( finalParentWidth )
	-- Total Gold.
	local nameLeft = frameHorizontalSpacing
	local goldLeft = frameHorizontalSpacing + nameWidth + spacingWidth
	local guildTop = -35 - ((EMAApi.GetTeamListMaximumOrderOnline() + 1) * 15) - 5
	local goldTop = -35 - ((EMAApi.GetTeamListMaximumOrderOnline() + 1) * 15) - 7
	if EMA.db.currGold == true then
		parentFrame.TotalGoldTitleText:SetWidth( nameWidth )
		parentFrame.TotalGoldTitleText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", nameLeft, goldTop )
		parentFrame.TotalGoldTitleText:Show()
		parentFrame.TotalGoldText:SetWidth( goldWidth )
		parentFrame.TotalGoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", goldLeft, goldTop )
		parentFrame.TotalGoldText:Show()
	else
		parentFrame.TotalGoldTitleText:Hide()
		parentFrame.TotalGoldText:Hide()
	end
end




function EMA:CreateEMACurrencyFrameInfo( characterName, parentFrame )
	--EMA.Print("makelist", characterName)
	--if EMAPrivate.Team.GetCharacterOnlineStatus (characterName) == true then
	local left = 10
	local spacing = 50
	local width = 50
	local top = 0
	--local top = -35 + (-15 * EMAApi.GetPositionForCharacterName( characterName ))
	-- WHAT THE HELL IS GOING ON HERE! Ebony!
		local height1 = -35 + ( -15 * EMAApi.GetPositionForCharacterName( characterName) )
		local height2 = -35 + ( -15 * EMAApi.GetPositionForCharacterNameOnline( characterName) )
		if height1 < height2 then
			--EMA:Print("greater than ", characterName )
			top = height2
		elseif height1 > height2 then
			top = height2
		else
			top = height2
		end
	--EMA:Print("Top", top)
	-- Create the table to hold the status bars for this character.
	EMA.currencyFrameCharacterInfo[characterName] = {}
	-- Get the character info table.
	local currencyFrameCharacterInfo = EMA.currencyFrameCharacterInfo[characterName]
	currencyFrameCharacterInfo.characterRowTopPoint = top
	-- Set the characters name font string.
	local frameCharacterName = EMA.globalCurrencyFramePrefix.."CharacterName"
	local frameCharacterNameText = parentFrame:CreateFontString( frameCharacterName.."Text", "OVERLAY", "GameFontNormal" )
	frameCharacterNameText:SetText( Ambiguate( characterName , "none" ) )
	frameCharacterNameText:SetTextColor( 1.00, 1.00, 1.00, 1.00 )
	frameCharacterNameText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameCharacterNameText:SetWidth( width * 2.5 )
	frameCharacterNameText:SetJustifyH( "LEFT" )
	currencyFrameCharacterInfo.characterNameText = frameCharacterNameText
	left = left + (spacing * 2)
	-- Set the Gold font string.
	local frameGold = EMA.globalCurrencyFramePrefix.."Gold"
	local frameGoldText = parentFrame:CreateFontString( frameGold.."Text", "OVERLAY", "GameFontNormal" )
	frameGoldText:SetText( "0" )
	frameGoldText:SetTextColor( 1.00, 1.00, 1.00, 1.00 )
	frameGoldText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameGoldText:SetWidth( width )
	frameGoldText:SetJustifyH( "RIGHT" )
	currencyFrameCharacterInfo.GoldText = frameGoldText
	left = left + spacing
	-- Set the BagSpace font string.
	local frameBagSpace = EMA.globalCurrencyFramePrefix.."BagSpace"
	local frameBagSpaceText = parentFrame:CreateFontString( frameBagSpace.."Text", "OVERLAY", "GameFontNormal" )
	frameBagSpaceText:SetText( "0/0" )
	frameBagSpaceText:SetTextColor( 1.00, 1.00, 1.00, 1.00 )
	frameBagSpaceText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameBagSpaceText:SetWidth( width )
	frameBagSpaceText:SetJustifyH( "RIGHT" )
	currencyFrameCharacterInfo.BagSpaceText = frameBagSpaceText
	left = left + spacing
	-- Set the Durability font string.
	local frameCharDurr = EMA.globalCurrencyFramePrefix.."CharDurr"
	local frameCharDurrText = parentFrame:CreateFontString( frameCharDurr.."Text", "OVERLAY", "GameFontNormal" )
	frameCharDurrText:SetText( "0"..L["%"] )
	frameCharDurrText:SetTextColor( 1.00, 1.00, 1.00, 1.00 )
	frameCharDurrText:SetPoint( "TOPLEFT", parentFrame, "TOPLEFT", left, top )
	frameCharDurrText:SetWidth( width )
	frameCharDurrText:SetJustifyH( "RIGHT" )
	currencyFrameCharacterInfo.CharDurrText = frameCharDurrText
	left = left + spacing

	EMA:SettingsUpdateFontStyle()
end

function EMA:EMAToonHideCurrency()
	EMAToonCurrencyListFrame:Hide()
end

function EMA:EMAToonRequestCurrency()
	-- Colour Light Red.
	local r = 1.0
	local g = 0.42
	local b = 0.42
	local a = 0.6
	for characterName, currencyFrameCharacterInfo in pairs( EMA.currencyFrameCharacterInfo ) do
		--EMA.Print("DoRequestCurrency", characterName)
		-- Change Hight if a new member joins the team or leaves the team.
		local height1 = currencyFrameCharacterInfo.characterRowTopPoint
		local height2 = -35 + ( -15 * EMAApi.GetPositionForCharacterNameOnline( characterName) )
			if height1 < height2 then
				currencyFrameCharacterInfo.characterRowTopPoint = height2
			elseif height1 > height2 then
				currencyFrameCharacterInfo.characterRowTopPoint = height2
			end
		if EMAApi.GetCharacterOnlineStatus ( characterName ) == false then
			-- Hides currency for offline members.
			--EMA.Print("offlineRemove", characterName )
			currencyFrameCharacterInfo.characterNameText:Hide()
			currencyFrameCharacterInfo.GoldText:Hide()
			currencyFrameCharacterInfo.BagSpaceText:Hide()
			currencyFrameCharacterInfo.CharDurrText:Hide()
		else
			currencyFrameCharacterInfo.characterNameText:Show()
			currencyFrameCharacterInfo.characterNameText:SetTextColor( r, g, b, a )
			currencyFrameCharacterInfo.GoldText:SetTextColor( r, g, b, a )
			currencyFrameCharacterInfo.BagSpaceText:SetTextColor( r, g, b, a )
			currencyFrameCharacterInfo.CharDurrText:SetTextColor( r, g, b, a )
		end
	end
	EMA.currencyTotalGold = 0
	EMA:EMASendCommandToTeam( EMA.COMMAND_REQUEST_CURRENCY, "" )
	EMA.SettingsRefresh()

end

function EMA:DoSendCurrency( characterName, dummyValue )
	--EMA:Print("Test2")
	if EMAApi.GetCharacterOnlineStatus ( characterName ) == true then
	table.wipe( EMA.currentCurrencyValues )
	EMA.currentCurrencyValues.currGold = GetMoney()
	-- BagSpace Maths
	local numFreeSlots, numTotalSlots = LibBagUtils:CountSlots("BAGS", 0)
	EMA.currentCurrencyValues.bagSpace = numFreeSlots
	EMA.currentCurrencyValues.bagSpaceMax = numTotalSlots
	-- Durability Maths
	local curTotal, maxTotal, broken = 0, 0, 0
	for i = 1, 18 do
		local curItemDurability, maxItemDurability = GetInventoryItemDurability(i)
		if curItemDurability and maxItemDurability then
			curTotal = curTotal + curItemDurability
			maxTotal = maxTotal + maxItemDurability
			if maxItemDurability > 0 and curItemDurability == 0 then
				broken = broken + 1
			end
		end
	end
	local durability = (curTotal / maxTotal) * 100
	local durabilityText = tostring(gsub( durability, "%.[^|]+", "") )
	EMA.currentCurrencyValues.durability = durabilityText

	EMA:EMASendCommandToToon( characterName, EMA.COMMAND_HERE_IS_CURRENCY, EMA.currentCurrencyValues )
	else
		return
	end
end

function EMA:DoShowToonsCurrency( characterName, currencyValues )
	--EMA.Print("DoShowCurrency", characterName, EMA.currentCurrencyValues.currGold )
	local parentFrame = EMAToonCurrencyListFrame
	-- Get (or create and get) the character information.
	local currencyFrameCharacterInfo = EMA.currencyFrameCharacterInfo[characterName]
		--EMA.Print("Frame", characterName)
	if currencyFrameCharacterInfo == nil then
		EMA:CreateEMACurrencyFrameInfo( characterName, parentFrame )
		currencyFrameCharacterInfo = EMA.currencyFrameCharacterInfo[characterName]
	end
	-- Colour white.
	local r = 1.0
	local g = 1.0
	local b = 1.0
	local a = 1.0
	local v = 0

	currencyFrameCharacterInfo.GoldText:SetTextColor( r, g, b, a )
	currencyFrameCharacterInfo.characterNameText:SetTextColor( r, g, b, a )
	currencyFrameCharacterInfo.GoldText:SetTextColor( r, g, b, a )

	if currencyValues.bagSpace == 0 then
		--EMA:Print("SetRed")
		currencyFrameCharacterInfo.BagSpaceText:SetTextColor( r, v, v, a )
	else
		--EMA:Print("SetWhite")
		currencyFrameCharacterInfo.BagSpaceText:SetTextColor( r, g, b, a )
	end
	if currencyValues.durability == "0" then
		currencyFrameCharacterInfo.CharDurrText:SetTextColor( r, v, v, a )
	else
		--EMA:Print("SetWhite")
		currencyFrameCharacterInfo.CharDurrText:SetTextColor( r, g, b, a )
	end

	currencyFrameCharacterInfo.GoldText:SetText( EMAUtilities:FormatMoneyString( currencyValues.currGold ) )
	currencyFrameCharacterInfo.BagSpaceText:SetText( currencyValues.bagSpace..L["/"]..currencyValues.bagSpaceMax )
	currencyFrameCharacterInfo.CharDurrText:SetText ( currencyValues.durability..L["%"] )

	-- Total gold.
	EMA.currencyTotalGold = EMA.currencyTotalGold + currencyValues.currGold
	parentFrame.TotalGoldText:SetText( EMAUtilities:FormatMoneyString( EMA.currencyTotalGold ) )
	-- Update width of currency list.
	EMA:CurrencyListSetColumnWidth()
	EMAToonCurrencyListFrame:Show()
end

-- A EMA command has been received.
function EMA:EMAOnCommandReceived( characterName, commandName, ... )
	if commandName == EMA.COMMAND_REQUEST_CURRENCY then
		EMA:DoSendCurrency( characterName, ... )
	end
	if commandName == EMA.COMMAND_HERE_IS_CURRENCY then
		EMA:DoShowToonsCurrency( characterName, ... )
	end
end