Quantcast
-------------------------------------------------------------------------------
-- Constants.lua
-------------------------------------------------------------------------------
-- File date: @file-date-iso@
-- File hash: @file-abbreviated-hash@
-- Project hash: @project-abbreviated-hash@
-- Project version: @project-version@
-------------------------------------------------------------------------------
-- Please see http://www.wowace.com/addons/arl/ for more information.
-------------------------------------------------------------------------------
-- This source code is released under All Rights Reserved.
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
-- Upvalued Lua API
-------------------------------------------------------------------------------
local _G = getfenv(0)

-------------------------------------------------------------------------------
-- AddOn namespace.
-------------------------------------------------------------------------------
local FOLDER_NAME, private = ...
private.addon_name = "Ackis Recipe List"

local LibStub = _G.LibStub
local L		= LibStub("AceLocale-3.0"):GetLocale(private.addon_name)

-------------------------------------------------------------------------------
-- Profession data.
-------------------------------------------------------------------------------
-- Needed for Smelting kludge.
private.mining_name		= _G.GetSpellInfo(32606)

-- This is needed because the French translation is non-conformant.
private.runeforging_name = _G.GetLocale() == "frFR" and "Runeforger" or _G.GetSpellInfo(53428)

private.professions = {
	["Alchemy"]		= _G.GetSpellInfo(51304),
	["Blacksmithing"]	= _G.GetSpellInfo(51300),
	["Cooking"]		= _G.GetSpellInfo(51296),
	["Enchanting"]		= _G.GetSpellInfo(51313),
	["Engineering"]		= _G.GetSpellInfo(51306),
	["FirstAid"]		= _G.GetSpellInfo(45542),
	["Inscription"]		= _G.GetSpellInfo(45363),
	["Jewelcrafting"]	= _G.GetSpellInfo(51311),
	["Leatherworking"]	= _G.GetSpellInfo(51302),
	["Runeforging"]		= private.runeforging_name,
	["Smelting"]		= _G.GetSpellInfo(2656),
	["Tailoring"]		= _G.GetSpellInfo(51309),
}

private.ordered_professions = {
	private.professions.Alchemy, 		-- 1
	private.professions.Blacksmithing, 	-- 2
	private.professions.Cooking, 		-- 3
	private.professions.Enchanting,		-- 4
	private.professions.Engineering,	-- 5
	private.professions.FirstAid,		-- 6
	private.professions.Inscription,	-- 7
	private.professions.Jewelcrafting, 	-- 8
	private.professions.Leatherworking, 	-- 9
	private.professions.Runeforging,	-- 10
	private.professions.Smelting,		-- 11
	private.professions.Tailoring,		-- 12
}

private.profession_textures = {
	"alchemy",	-- 1
	"blacksmith",	-- 2
	"cooking",	-- 3
	"enchant",	-- 4
	"engineer",	-- 5
	"firstaid",	-- 6
	"inscribe",	-- 7
	"jewel",	-- 8
	"leather",	-- 9
	"runeforge",	-- 10
	"smelting",	-- 11
	"tailor",	-- 12
}

-------------------------------------------------------------------------------
-- Item qualities.
-------------------------------------------------------------------------------
private.item_qualities = {
	["COMMON"]	= 1,
	["UNCOMMON"]	= 2,
	["RARE"]	= 3,
	["EPIC"]	= 4,
	["LEGENDARY"]	= 5,
	["ARTIFACT"]	= 6,
}

private.item_quality_names = {
	[1] = "COMMON",
	[2] = "UNCOMMON",
	[3] = "RARE",
	[4] = "EPIC",
	[5] = "LEGENDARY",
	[6] = "ARTIFACT",
}

-------------------------------------------------------------------------------
-- Game/expansion versions.
-------------------------------------------------------------------------------
private.game_versions = {
	["ORIG"]	= 1,
	["TBC"]		= 2,
	["WOTLK"]	= 3,
	["CATA"]	= 4,
}

private.game_version_names = {
	[1] = "ORIG",
	[2] = "TBC",
	[3] = "WOTLK",
	[4] = "CATA",
}

-------------------------------------------------------------------------------
-- Filter flags.
-------------------------------------------------------------------------------
private.filter_flags = {
	["ALLIANCE"]		= 1,		["HORDE"]	= 2,		["TRAINER"]	= 3,		["VENDOR"]	= 4,
	["INSTANCE"]		= 5,		["RAID"]	= 6,		["SEASONAL"]	= 7,		["QUEST"]	= 8,
	["PVP"]			= 9,		["WORLD_DROP"]	= 10,		["MOB_DROP"]	= 11,		["DISC"]	= 12,
	["RETIRED"]		= 13,		["ACHIEVEMENT"]	= 14,		["RESERVED_15"]	= 15,		["RESERVED_16"]	= 16,
	["RESERVED_17"]		= 17,		["RESERVED_18"]	= 18,		["RESERVED_19"]	= 19,		["RESERVED_20"]	= 20,
	["DK"]			= 21,		["DRUID"]	= 22,		["HUNTER"]	= 23,		["MAGE"]	= 24,
	["PALADIN"]		= 25,		["PRIEST"]	= 26,		["SHAMAN"]	= 27,		["ROGUE"]	= 28,
	["WARLOCK"]		= 29,		["WARRIOR"]	= 30,		["RESERVED_31"]	= 31,		["RESERVED_32"]	= 32,
	["RESERVED_33"]		= 33,		["RESERVED_34"]	= 34,		["RESERVED_35"]	= 35,		["IBOE"]	= 36,
	["IBOP"]		= 37,		["IBOA"]	= 38,		["RESERVED_39"]	= 39,		["RBOE"]	= 40,
	["RBOP"]		= 41,		["RBOA"]	= 42,		["RESERVED_43"]	= 43,		["RESERVED_44"]	= 44,
	["RESERVED_45"]		= 45,		["RESERVED_46"]	= 46,		["RESERVED_47"]	= 47,		["RESERVED_48"]	= 48,
	["RESERVED_49"]		= 49,		["RESERVED_50"]	= 50,		["DPS"]		= 51,		["TANK"]	= 52,
	["HEALER"]		= 53,		["CASTER"]	= 54,		["RESERVED_55"]	= 55,		["CLOTH"]	= 56,
	["LEATHER"]		= 57,		["MAIL"]	= 58,		["PLATE"]	= 59,		["CLOAK"]	= 60,
	["TRINKET"]		= 61,		["RING"]	= 62,		["NECK"]	= 63,		["SHIELD"]	= 64,
	["RESERVED_65"]		= 65,		["ONE_HAND"]	= 66,		["TWO_HAND"]	= 67,		["AXE"]		= 68,
	["SWORD"]		= 69,		["MACE"]	= 70,		["POLEARM"]	= 71,		["DAGGER"]	= 72,
	["STAFF"]		= 73,		["WAND"]	= 74,		["THROWN"]	= 75,		["BOW"]		= 76,
	["XBOW"]		= 77,		["RESERVED_78"]	= 78,		["FIST"]	= 79,		["GUN"]		= 80,
	["RESERVED_81"]		= 81,		["RESERVED_82"]	= 82,		["RESERVED_83"]	= 83,		["RESERVED_84"]	= 84,
	["RESERVED_85"]		= 85,		["RESERVED_86"]	= 86,		["RESERVED_87"]	= 87,		["RESERVED_88"]	= 88,
	["RESERVED_89"]		= 89,		["RESERVED_90"]	= 90,		["RESERVED_91"]	= 91,		["RESERVED_92"]	= 92,
	["RESERVED_93"]		= 93,		["RESERVED_94"]	= 94,		["RESERVED_95"]	= 95,		["ARGENTDAWN"]	= 96,
	["CENARION_CIRCLE"]	= 97,		["THORIUM_BROTHERHOOD"]	= 98,	["TIMBERMAW_HOLD"] = 99,	["ZANDALAR"]    = 100,
	["ALDOR"]		= 101,		["ASHTONGUE"]	= 102,		["CENARION_EXPEDITION"] = 103,	["HELLFIRE"]    = 104,
	["CONSORTIUM"]		= 105,		["KOT"]		= 106,		["LOWERCITY"]	= 107,		["NAGRAND"]     = 108,
	["SCALE_SANDS"]		= 109,		["SCRYER"]	= 110,		["SHATAR"]	= 111,		["SHATTEREDSUN"]= 112,
	["SPOREGGAR"]		= 113,		["VIOLETEYE"]	= 114,		["ARGENTCRUSADE"] = 115,	["FRENZYHEART"] = 116,
	["EBONBLADE"]		= 117,		["KIRINTOR"]	= 118,		["HODIR"]	= 119,		["KALUAK"]	= 120,
	["ORACLES"]		= 121,		["WYRMREST"]	= 122,		["WRATHCOMMON1"]	= 123,	["WRATHCOMMON2"]= 124,
	["WRATHCOMMON3"]	= 125,		["WRATHCOMMON4"]= 126,		["WRATHCOMMON5"]	= 127,	["ASHEN_VERDICT"]=128,
	["CATACOMMON1"]		= 129,		["CATACOMMON2"]	= 130,		["GUARDIANS"]		= 131,	["RAMKAHEN"]	= 132,
	["EARTHEN_RING"]	= 133,		["THERAZANE"]	= 134,
}

private.filter_strings = {
	[1]	= "ALLIANCE",		[2]	= "HORDE",		[3]	= "TRAINER",		[4]	= "VENDOR",
	[5]	= "INSTANCE",		[6]	= "RAID",		[7]	= "SEASONAL",		[8]	= "QUEST",
	[9]	= "PVP",		[10]	= "WORLD_DROP",		[11]	= "MOB_DROP",		[12]	= "DISC",
	[13]	= "RETIRED",		[14]	= "ACHIEVEMENT",	[15]	= "RESERVED_15",	[16]	= "RESERVED_16",
	[17]	= "RESERVED_17",	[18]	= "RESERVED_18",	[19]	= "RESERVED_19",	[20]	= "RESERVED_20",
	[21]	= "DK",			[22]	= "DRUID",		[23]	= "HUNTER",		[24]	= "MAGE",
	[25]	= "PALADIN",		[26]	= "PRIEST",		[27]	= "SHAMAN",		[28]	= "ROGUE",
	[29]	= "WARLOCK",		[30]	= "WARRIOR",		[31]	= "RESERVED_31",	[32]	= "RESERVED_32",
	[33]	= "RESERVED_33",	[34]	= "RESERVED_34",	[35]	= "RESERVED_35",	[36]	= "IBOE",
	[37]	= "IBOP",		[38]	= "IBOA",		[39]	= "RESERVED_39",	[40]	= "RBOE",
	[41]	= "RBOP",		[42]	= "RBOA",		[43]	= "RESERVED_43",	[44]	= "RESERVED_44",
	[45]	= "RESERVED_45",	[46]	= "RESERVED_46",	[47]	= "RESERVED_47",	[48]	= "RESERVED_48",
	[49]	= "RESERVED_49",	[50]	= "RESERVED_50",	[51]	= "DPS",		[52]	= "TANK",
	[53]	= "HEALER",		[54]	= "CASTER",		[55]	= "RESERVED_55",	[56]	= "CLOTH",
	[57]	= "LEATHER",		[58]	= "MAIL",		[59]	= "PLATE",		[60]	= "CLOAK",
	[61]	= "TRINKET",		[62]	= "RING",		[63]	= "NECK",		[64]	= "SHIELD",
	[65]	= "RESERVED_65",	[66]	= "ONE_HAND",		[67]	= "TWO_HAND",		[68]	= "AXE",
	[69]	= "SWORD",		[70]	= "MACE",		[71]	= "POLEARM",		[72]	= "DAGGER",
	[73]	= "STAFF",		[74]	= "WAND",		[75]	= "THROWN",		[76]	= "BOW",
	[77]	= "XBOW",		[78]	= "RESERVED_78",		[79]	= "FIST",		[80]	= "GUN",
	[81]	= "RESERVED_81",	[82]	= "RESERVED_82",	[83]	= "RESERVED_83",	[84]	= "RESERVED_84",
	[85]	= "RESERVED_85",	[86]	= "RESERVED_86",	[87]	= "RESERVED_87",	[88]	= "RESERVED_88",
	[89]	= "RESERVED_89",	[90]	= "RESERVED_90",	[91]	= "RESERVED_91",	[92]	= "RESERVED_92",
	[93]	= "RESERVED_93",	[94]	= "RESERVED_94",	[95]	= "RESERVED_95",	[96]	= "ARGENTDAWN",
	[97]	= "CENARION_CIRCLE",	[98]	= "THORIUM_BROTHERHOOD",[99]	= "TIMBERMAW_HOLD",	[100]	= "ZANDALAR",
	[101]	= "ALDOR",		[102]	= "ASHTONGUE",		[103]	= "CENARION_EXPEDITION",[104]	= "HELLFIRE",
	[105]	= "CONSORTIUM",		[106]	= "KOT",		[107]	= "LOWERCITY",		[108]	= "NAGRAND",
	[109]	= "SCALE_SANDS",	[110]	= "SCRYER",		[111]	= "SHATAR",		[112]	= "SHATTEREDSUN",
	[113]	= "SPOREGGAR",		[114]	= "VIOLETEYE",		[115]	= "ARGENTCRUSADE",	[116]	= "FRENZYHEART",
	[117]	= "EBONBLADE",		[118]	= "KIRINTOR",		[119]	= "HODIR",		[120]	= "KALUAK",
	[121]	= "ORACLES",		[122]	= "WYRMREST",		[123]	= "WRATHCOMMON1",	[124]	= "WRATHCOMMON2",
	[125]	= "WRATHCOMMON3",	[126]	= "WRATHCOMMON4",	[127]	= "WRATHCOMMON5",	[128]	= "ASHEN_VERDICT",
	[129]	= "CATACOMMON1",	[130]	= "CATACOMMON2",	[131]	= "GUARDIANS",		[132]	= "RAMKAHEN",
	[133]	= "EARTHEN_RING",	[134]	= "THERAZANE",
}

-------------------------------------------------------------------------------
-- Common filter bitfield word 1.
-------------------------------------------------------------------------------
private.common_flags_word1 = {
	ALLIANCE	= 0x00000001,	-- 1
	HORDE		= 0x00000002,	-- 2
	TRAINER		= 0x00000004,	-- 3
	VENDOR		= 0x00000008,	-- 4
	INSTANCE	= 0x00000010,	-- 5
	RAID		= 0x00000020,	-- 6
	SEASONAL	= 0x00000040,	-- 7
	QUEST		= 0x00000080,	-- 8
	PVP		= 0x00000100,	-- 9
	WORLD_DROP	= 0x00000200,	-- 10
	MOB_DROP	= 0x00000400,	-- 11
	DISC		= 0x00000800,	-- 12
	RETIRED		= 0x00001000,	-- 13
	IBOE		= 0x00002000,	-- 14
	IBOP		= 0x00004000,	-- 15
	IBOA		= 0x00008000,	-- 16
	RBOE		= 0x00010000,	-- 17
	RBOP		= 0x00020000,	-- 18
	RBOA		= 0x00040000,	-- 19
	DPS		= 0x00080000,	-- 20
	TANK		= 0x00100000,	-- 21
	HEALER		= 0x00200000,	-- 22
	CASTER		= 0x00400000,	-- 23
	ACHIEVEMENT	= 0x00800000,	-- 24
}

-------------------------------------------------------------------------------
-- Class filter bitfield word 1.
-------------------------------------------------------------------------------
private.class_flags_word1 = {
	DK	= 0x00000001,	-- 1
	DRUID	= 0x00000002,	-- 2
	HUNTER	= 0x00000004,	-- 3
	MAGE	= 0x00000008,	-- 4
	PALADIN	= 0x00000010,	-- 5
	PRIEST	= 0x00000020,	-- 6
	SHAMAN	= 0x00000040,	-- 7
	ROGUE	= 0x00000080,	-- 8
	WARLOCK	= 0x00000100,	-- 9
	WARRIOR	= 0x00000200,	-- 10
}

-------------------------------------------------------------------------------
-- Reputation filter bitfield word 1.
-------------------------------------------------------------------------------
private.rep_flags_word1 = {
	ARGENTDAWN		= 0x00000001,	-- 1
	CENARION_CIRCLE		= 0x00000002,	-- 2
	THORIUM_BROTHERHOOD	= 0x00000004,	-- 3
	TIMBERMAW_HOLD		= 0x00000008,	-- 4
	ZANDALAR		= 0x00000010,	-- 5
	ALDOR			= 0x00000020,	-- 6
	ASHTONGUE		= 0x00000040,	-- 7
	CENARION_EXPEDITION	= 0x00000080,	-- 8
	HELLFIRE		= 0x00000100,	-- 9
	CONSORTIUM		= 0x00000200,	-- 10
	KOT			= 0x00000400,	-- 11
	LOWERCITY		= 0x00000800,	-- 12
	NAGRAND			= 0x00001000,	-- 13
	SCALE_SANDS		= 0x00002000,	-- 14
	SCRYER			= 0x00004000,	-- 15
	SHATAR			= 0x00008000,	-- 16
	SHATTEREDSUN		= 0x00010000,	-- 17
	SPOREGGAR		= 0x00020000,	-- 18
	VIOLETEYE		= 0x00040000,	-- 19
	ARGENTCRUSADE		= 0x00080000,	-- 20
	FRENZYHEART		= 0x00100000,	-- 21
	EBONBLADE		= 0x00200000,	-- 22
	KIRINTOR		= 0x00400000,	-- 23
	HODIR			= 0x00800000,	-- 24
	KALUAK			= 0x01000000,	-- 25
	ORACLES			= 0x02000000,	-- 26
	WYRMREST		= 0x04000000,	-- 27
	WRATHCOMMON1		= 0x08000000,	-- 28
	WRATHCOMMON2		= 0x10000000,	-- 29
	WRATHCOMMON3		= 0x20000000,	-- 30
	WRATHCOMMON4		= 0x40000000,	-- 31
	WRATHCOMMON5		= 0x80000000,	-- 32
}

-------------------------------------------------------------------------------
-- Reputation filter bitfield word 2.
-------------------------------------------------------------------------------
private.rep_flags_word2 = {
	ASHEN_VERDICT		= 0x00000001,	-- 1
	CATACOMMON1		= 0x00000002,	-- 2
	CATACOMMON2		= 0x00000004,	-- 3
	GUARDIANS		= 0x00000008,	-- 4
	RAMKAHEN		= 0x00000010,	-- 5
	EARTHEN_RING		= 0x00000020,	-- 6
	THERAZANE		= 0x00000040,	-- 7
}

-------------------------------------------------------------------------------
-- Item filter bitfield word 1.
-------------------------------------------------------------------------------
private.item_flags_word1 = {
	CLOTH		= 0x00000001,	-- 1
	LEATHER		= 0x00000002,	-- 2
	MAIL		= 0x00000004,	-- 3
	PLATE		= 0x00000008,	-- 4
	CLOAK		= 0x00000010,	-- 5
	TRINKET		= 0x00000020,	-- 6
	RING		= 0x00000040,	-- 7
	NECK		= 0x00000080,	-- 8
	SHIELD		= 0x00000100,	-- 9
	ONE_HAND	= 0x00000200,	-- 10
	TWO_HAND	= 0x00000400,	-- 11
	AXE		= 0x00000800,	-- 12
	SWORD		= 0x00001000,	-- 13
	MACE		= 0x00002000,	-- 14
	POLEARM		= 0x00004000,	-- 15
	DAGGER		= 0x00008000,	-- 16
	STAFF		= 0x00010000,	-- 17
	WAND		= 0x00020000,	-- 18
	THROWN		= 0x00040000,	-- 19
	BOW		= 0x00080000,	-- 20
	XBOW		= 0x00100000,	-- 21
	FIST		= 0x00200000,	-- 22
	GUN		= 0x00400000,	-- 23
}

-------------------------------------------------------------------------------
-- Transitory mapping from boolean "flags" to bit flags.
-------------------------------------------------------------------------------
private.bit_flags = {
	private.common_flags_word1,
	private.class_flags_word1,
	private.rep_flags_word1,
	private.rep_flags_word2,
	private.item_flags_word1,
}

-- Member names within a recipe's flags table.
private.flag_members = {
	"common1",
	"class1",
	"reputation1",
	"reputation2",
	"item1",
}

-------------------------------------------------------------------------------
-- Recipe state flags.
-------------------------------------------------------------------------------
private.recipe_state_flags = {
	KNOWN		= 0x00000001,
	RELEVANT	= 0x00000002,
	VISIBLE		= 0x00000004,
	LINKED		= 0x00000008,
}

-------------------------------------------------------------------------------
-- Acquire types.
-------------------------------------------------------------------------------
private.acquire_types = {
	["TRAINER"]	= 1,
	["VENDOR"]	= 2,
	["MOB_DROP"]	= 3,
	["QUEST"]	= 4,
	["SEASONAL"]	= 5,
	["REPUTATION"]	= 6,
	["WORLD_DROP"]	= 7,
	["ACHIEVEMENT"]	= 8,
	["CUSTOM"]	= 9,
}

private.acquire_strings = {
	[1]	= "TRAINER",
	[2]	= "VENDOR",
	[3]	= "MOB_DROP",
	[4]	= "QUEST",
	[5]	= "SEASONAL",
	[6]	= "REPUTATION",
	[7]	= "WORLD_DROP",
	[8]	= "ACHIEVEMENT",
	[9]	= "CUSTOM",
}

private.acquire_names = {
	[1]	= L["Trainer"],
	[2]	= L["Vendor"],
	[3]	= L["Mob Drop"],
	[4]	= L["Quest"],
	[5]	= _G.GetCategoryInfo(155),
	[6]	= _G.REPUTATION,
	[7]	= L["World Drop"],
	[8]	= _G.ACHIEVEMENTS,
	[9]	= _G.MISCELLANEOUS,
}

-------------------------------------------------------------------------------
-- Reputation levels.
-------------------------------------------------------------------------------
private.rep_levels = {
	["FRIENDLY"]	= 1,
	["HONORED"]	= 2,
	["REVERED"]	= 3,
	["EXALTED"]	= 4,
}

private.rep_level_strings = {
	[1]	= "FRIENDLY",
	[2]	= "HONORED",
	[3]	= "REVERED",
	[4]	= "EXALTED",
}

-------------------------------------------------------------------------------
-- Factions.
-------------------------------------------------------------------------------
private.faction_ids = {
	["THORIUM_BROTHERHOOD"]	= 59,
	["ZANDALAR"]		= 270,
	["ARGENTDAWN"]		= 529,
	["TIMBERMAW_HOLD"]	= 576,
	["WINTERSPRING"]	= 589,
	["CENARION_CIRCLE"]	= 609,
	["ALDOR"]		= 932,
	["CONSORTIUM"]		= 933,
	["SCRYER"]		= 934,
	["SHATAR"]		= 935,
	["MAGHAR"]		= 941,
	["CENARION_EXPEDITION"]	= 942,
	["HONOR_HOLD"]		= 946,
	["THRALLMAR"]		= 947,
	["VIOLETEYE"]		= 967,
	["SPOREGGAR"]		= 970,
	["KURENAI"]		= 978,
	["KEEPERS_OF_TIME"]	= 989,
	["SCALE_OF_SANDS"]	= 990,
	["LOWERCITY"]		= 1011,
	["ASHTONGUE"]		= 1012,
	["ALLIANCE_VANGUARD"]	= 1037,
	["HORDE_EXPEDITION"]	= 1052,
	["KALUAK"]		= 1073,
	["SHATTEREDSUN"]	= 1077,
	["KIRINTOR"]		= 1090,
	["WYRMREST"]		= 1091,
	["EBONBLADE"]		= 1098,
	["FRENZYHEART"]		= 1104,
	["ORACLES"]		= 1105,
	["ARGENTCRUSADE"]	= 1106,
	["HODIR"]		= 1119,
	["ASHEN_VERDICT"]	= 1156,
	["EARTHEN_RING"]	= 1135,
	["GUARDIANS"]		= 1158,
	["THERAZANE"]		= 1171,
	["DRAGONMAW"]		= 1172,
	["RAMKAHEN"]		= 1173,
	["WILDHAMMER"]		= 1174,
	["WARDENS"]		= 1177,
	["HELLSCREAM"]		= 1178,
}

private.faction_strings = {
	[59]	= "THORIUM_BROTHERHOOD",
	[270]	= "ZANDALAR",
	[529]	= "ARGENTDAWN",
	[576]	= "TIMBERMAW_HOLD",
	[589]	= "WINTERSPRING",
	[609]	= "CENARION_CIRCLE",
	[932]	= "ALDOR",
	[933]	= "CONSORTIUM",
	[934]	= "SCRYER",
	[935]	= "SHATAR",
	[941]	= "MAGHAR",
	[942]	= "CENARION_EXPEDITION",
	[946]	= "HONOR_HOLD",
	[947]	= "THRALLMAR",
	[967]	= "VIOLETEYE",
	[970]	= "SPOREGGAR",
	[978]	= "KURENAI",
	[989]	= "KEEPERS_OF_TIME",
	[990]	= "SCALE_OF_SANDS",
	[1011]	= "LOWERCITY",
	[1012]	= "ASHTONGUE",
	[1037]	= "ALLIANCE_VANGUARD",
	[1052]	= "HORDE_EXPEDITION",
	[1073]	= "KALUAK",
	[1077]	= "SHATTEREDSUN",
	[1090]	= "KIRINTOR",
	[1091]	= "WYRMREST",
	[1098]	= "EBONBLADE",
	[1104]	= "FRENZYHEART",
	[1105]	= "ORACLES",
	[1106]	= "ARGENTCRUSADE",
	[1119]	= "HODIR",
	[1156]	= "ASHEN_VERDICT",
	[1135]	= "EARTHEN_RING",
	[1158]	= "GUARDIANS",
	[1171]	= "THERAZANE",
	[1172]	= "DRAGONMAW",
	[1173]	= "RAMKAHEN",
	[1174]	= "WILDHAMMER",
	[1177]	= "WARDENS",
	[1178]	= "HELLSCREAM",
}

-------------------------------------------------------------------------------
-- Colors.
-------------------------------------------------------------------------------
local function RGBtoHEX(r, g, b)
	return ("%02x%02x%02x"):format(r * 255, g * 255, b * 255)
end

local function GetColorsFromTable(dict)
	return dict.r, dict.g, dict.b
end

private.reputation_colors = {
	["exalted"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[8])),
	["revered"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[7])),
	["honored"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[6])),
	["friendly"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[5])),
	["neutral"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[4])),
	["unfriendly"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[3])),
	["hostile"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[2])),
	["hated"]	= RGBtoHEX(GetColorsFromTable(_G.FACTION_BAR_COLORS[1])),
}

-- Recipe difficulty colors.
private.difficulty_colors = {
	["trivial"]	= "808080",
	["easy"]	= "40bf40",
	["medium"]	= "ffff00",
	["optimal"]	= "ff8040",
	["impossible"]	= "ff0000",
}

private.basic_colors = {
	["grey"]	= "666666",
	["white"]	= "ffffff",
	["yellow"]	= "ffff00",
	["normal"]	= "ffd100",
}

-- Colors used in tooltips and the recipe list.
private.category_colors = {
	-- Acquire type colors
	["achievement"]	= "faeb98",
	["custom"]	= "73b7ff",
	["mobdrop"]	= "962626",
	["quest"]	= "dbdb2c",

	["reputation"]	= "855a99",
	["seasonal"]	= "80590e",
	["trainer"]	= "c98e26",
	["vendor"]	= "aad372",

	-- Miscellaneous
	["coords"]	= "d1ce6f",
	["location"]	= "ffecc1",
	["repname"]	= "6a9ad9",

}

-- Listing of recipes which overwrite other recipes when you learn them.
-- For example, when you learn Darkglow Embroidery Rank 2 (75175),
-- you no longer know Darkglow Embroidery Rank 1 (55769)

private.spell_overwrite_map = {
	-------------------------------------------------------------------------------
	-- Tailoring
	-------------------------------------------------------------------------------
	[75175] = 55769,	[75172] = 55642,	[75178] = 55777,
	[75154] = 56034,	[75155] = 56039,
}