function CT_RA_ResetOptions()
	CT_RAMenu_Options = {
		["Default"] = {
			PlayRSSound = 1,
			MenuLocked = 1,
			ShowMTs = { 1, 1, 1, 1, 1 },
			NotifyDebuffsClass = { 1, 1, 1, 1, 1, 1, 1, 1 },
			NotifyDebuffs = { 1, 1, 1, 1, 1, 1, 1, 1 },
			DefaultColor = { r = 0, g = 0.1, b = 0.9, a = 0.5 },
			MemberHeight = 40,
			PercentColor = { r = 1, g = 1, b = 1 },
			DefaultAlertColor = { r = 1, g = 1, b = 1 },
			BGOpacity = 0.4,
			WindowPositions = { },
			BuffArray = {
				{ ["show"] = 1, ["name"] = CT_RA_POWERWORDFORTITUDE, ["index"] = 1 },
				{ ["show"] = 1, ["name"] = CT_RA_MARKOFTHEWILD, ["index"] = 2 },
				{ ["show"] = 1, ["name"] = CT_RA_ARCANEINTELLECT, ["index"] = 3 },
				{ ["show"] = 1, ["name"] = CT_RA_SHADOWPROTECTION, ["index"] = 5 },
				{ ["show"] = 1, ["name"] = CT_RA_POWERWORDSHIELD, ["index"] = 6 },
				{ ["show"] = 1, ["name"] = CT_RA_SOULSTONERESURRECTION, ["index"] = 7 },
				{ ["show"] = 1, ["name"] = CT_RA_DIVINESPIRIT, ["index"] = 8 },
				{ ["show"] = 1, ["name"] = CT_RA_THORNS, ["index"] = 9 },
				{ ["show"] = 1, ["name"] = CT_RA_FEARWARD, ["index"] = 10 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFMIGHT, ["index"] = 11 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFWISDOM, ["index"] = 12 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFKINGS, ["index"] = 13 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFSALVATION, ["index"] = 14 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFLIGHT, ["index"] = 15 },
				{ ["show"] = 1, ["name"] = CT_RA_BLESSINGOFSANCTUARY, ["index"] = 16 },
				{ ["show"] = 1, ["name"] = CT_RA_RENEW, ["index"] = 17 },
				{ ["show"] = 1, ["name"] = CT_RA_REJUVENATION, ["index"] = 18 },
				{ ["show"] = 1, ["name"] = CT_RA_REGROWTH, ["index"] = 19 }
			},
			DebuffColors = {
				{ ["type"] = CT_RA_CURSE, ["r"] = 1, ["g"] = 0, ["b"] = 0.75, ["a"] = 0.5, ["id"] = 4, ["index"] = 1 },
				{ ["type"] = CT_RA_MAGIC, ["r"] = 1, ["g"] = 0, ["b"] = 0, ["a"] = 0.5, ["id"] = 6, ["index"] = 2 },
				{ ["type"] = CT_RA_POISON, ["r"] = 0, ["g"] = 0.5, ["b"] = 0, ["a"] = 0.5, ["id"] = 3, ["index"] = 3 },
				{ ["type"] = CT_RA_DISEASE, ["r"] = 1, ["g"] = 1, ["b"] = 0, ["a"] = 0.5, ["id"] = 5, ["index"] = 4 },
				{ ["type"] = CT_RA_WEAKENEDSOUL, ["r"] = 1, ["g"] = 0, ["b"] = 1, ["a"] = 0.5, ["id"] = 2, ["index"] = 5 },
				{ ["type"] = CT_RA_RECENTLYBANDAGED, ["r"] = 0, ["g"] = 0, ["b"] = 0, ["a"] = 0.5, ["id"] = 1, ["index"] = 6 }
			},
			ShowGroups = { },
			ClassHealings = {
				["en"] = {
					["Priest"] = {
						{ { "Heal", "Lesser Heal", "Greater Heal" }, "Lesser Heal, Heal and Greater Heal", 1 },
						{ "Flash Heal", "Flash Heal", 1 }
					},
					["Shaman"] = {
						{ "Healing Wave", "Healing Wave", 1 },
						{ "Lesser Healing Wave", "Lesser Healing Wave", 1 }
					},
					["Druid"] = {
						{ "Healing Touch", "Healing Touch", 1 },
						{ "Regrowth", "Regrowth", 1 }
					},
					["Paladin"] = {
						{ "Holy Light", "Holy Light", 1 },
						{ "Flash of Light", "Flash of Light", 1 }
					}
				},
				["de"] = {
					["Priester"] = {
						{ { "Heilen", "Geringes Heilen", "Gro\195\159e Heilung" }, "Geringes Heilen, Heilen und Gro\195\159e Heilung", 1 },
						{ "Blitzheilung", "Blitzheilung", 1 }
					},
					["Schamane"] = {
						{ "Welle der Heilung", "Welle der Heilung", 1 },
						{ "Geringe Welle der Heilung", "Geringe Welle der Heilung", 1 }
					},
					["Druide"] = {
						{ "Heilende Ber\195\188hrung", "Heilende Ber\195\188hrung", 1 },
						{ "Nachwachsen", "Nachwachsen", 1 }
					},
					["Paladin"] = {
						{ "Heiliges Licht", "Heiliges Licht", 1 },
						{ "Lichtblitz", "Lichtblitz", 1 }
					}
				},
				["fr"] = {
					["Pr\195\170tre"] = {
						{ { "Soins", "Soins mineurs", "Soins sup\195\169rieurs" }, "Soins mineurs, Soins et Soins sup\195\169rieurs", 1 },
						{ "Soins rapides", "Soins rapides", 1 }
					},
					["Chaman"] = {
						{ "Vague de soins", "Vague de soins", 1 },
						{ "Vague de soins mineurs", "Vague de soins mineurs", 1 }
					},
					["Druide"] = {
						{ "Toucher gu\195\169risseur", "Toucher gu\195\169risseur", 1 },
						{ "R\195\169tablissement", "R\195\169tablissement", 1 }
					},
					["Paladin"] = {
						{ "Lumi\195\168re sacr\195\169e", "Lumi\195\168re sacr\195\169e", 1 },
						{ "Eclair lumineux", "Eclair lumineux", 1 }   
					}
				}
			},
			SpellCastDelay = 0.5,
			SORTTYPE = "group"
		},
		["temp"] = { }
	}
	for k, v in CT_RAMenu_Options["Default"] do
		CT_RAMenu_Options["temp"][k] = v;
	end
	CT_RAMenu_Options["temp"]["unchanged"] = 1;
	CT_RAMenu_CurrSet = "Default";
	
	CT_RASets_ButtonPosition = 16;
end

CT_RA_ResetOptions();

function CT_RASets_MoveButton()
	CT_RASets_Button:SetPoint("TOPLEFT", "Minimap", "TOPLEFT", 52 - (80 * cos(CT_RASets_ButtonPosition)), (80 * sin(CT_RASets_ButtonPosition)) - 52);
end

function CT_RASets_ToggleDropDown()
	CT_RASets_DropDown.point = "TOPRIGHT";
	CT_RASets_DropDown.relativePoint = "BOTTOMLEFT";
	ToggleDropDownMenu(1, nil, CT_RASets_DropDown);
end

function CT_RASets_DropDown_Initialize()
	local dropdown;
	if ( UIDROPDOWNMENU_OPEN_MENU ) then
		dropdown = getglobal(UIDROPDOWNMENU_OPEN_MENU);
	else
		dropdown = this;
	end
	CT_RASets_DropDown_InitButtons();
end

function CT_RASets_DropDown_OnClick()
	local offset = 1;
	if ( ( CT_RASets_OpenedLevel or 0 ) >= 1 ) then
		offset = 0;
	end
	local id = this:GetID();
	if ( id == 2 ) then
		ShowUIPanel(CT_RAMenuFrame);
	elseif ( id == 3 and offset == 0 ) then
		ShowUIPanel(CT_RATargetFrame);
	elseif ( id == 4-offset ) then
		ShowUIPanel(CT_RAMenuFrame);
		CT_RAMenuButton_OnClick(8);
	elseif ( id == 5-offset ) then
		CT_RAMenu_Options["temp"]["LockGroups"] = not CT_RAMenu_Options["temp"]["LockGroups"];
		CT_RAMenu_UpdateOptionSets();
		CT_RA_UpdateRaidGroup();
		CT_RA_UpdateMTs();
		CT_RAMenu_UpdateMenu();
		CT_RAOptions_Update();
	elseif ( id >= 6-offset ) then
		local num = 0;
		for k, v in CT_RAMenu_Options do
			if ( k ~= "temp" ) then
				num = num + 1;
				if ( num == id-5-offset ) then
					
					CT_RAMenu_CurrSet = k;
					CT_RAMenu_Options["temp"] = { };
					for k, v in CT_RAMenu_Options[CT_RAMenu_CurrSet] do
						CT_RAMenu_Options["temp"][k] = v;
					end
					CT_RAMenu_UpdateOptionSets();
					CT_RA_UpdateRaidGroup();
					CT_RA_UpdateMTs();
					CT_RAMenu_UpdateMenu();
					CT_RAOptions_Update();
					return;
				end
			end
		end
	end
end

function CT_RASets_DropDown_InitButtons()
	CT_RASets_OpenedLevel = CT_RA_Level;
	local info = {};

	info.text = "Option Sets";
	info.isTitle = 1;
	info.justifyH = "CENTER";
	info.notCheckable = 1;
	UIDropDownMenu_AddButton(info);
	
	info = { };
	info.text = "Open Options";
	info.notCheckable = 1;
	info.func = CT_RASets_DropDown_OnClick;
	UIDropDownMenu_AddButton(info);
	if ( ( CT_RASets_OpenedLevel or 0 ) >= 1 ) then
		info = { };
		info.text = "Target Management";
		info.notCheckable = 1;
		info.func = CT_RASets_DropDown_OnClick;
		UIDropDownMenu_AddButton(info);
	end
	
	info = { };
	info.text = "Edit Sets";
	info.notCheckable = 1;
	info.func = CT_RASets_DropDown_OnClick;
	UIDropDownMenu_AddButton(info);
	
	info = { };
	if ( CT_RAMenu_Options["temp"]["LockGroups"] ) then
		info.text = "Unlock Windows";
	else
		info.text = "Lock Windows";
	end
	info.notCheckable = 1;
	info.func = CT_RASets_DropDown_OnClick;
	UIDropDownMenu_AddButton(info);

	for k, v in CT_RAMenu_Options do
		if ( k ~= "temp" ) then
			info = { };
			info.text = k;
			info.isTitle = nil;
			if ( CT_RAMenu_CurrSet == k ) then
				info.checked = 1;
			end
			info.func = CT_RASets_DropDown_OnClick;
			UIDropDownMenu_AddButton(info);
		end
	end
end

function CT_RASets_DropDown_OnLoad()
	UIDropDownMenu_Initialize(this, CT_RASets_DropDown_Initialize, "MENU");
end

tinsert(UISpecialFrames, "CT_RAMenu_NewSetFrame");
tinsert(UISpecialFrames, "CT_RAMenu_DeleteSetFrame");
CT_RASetsEditFrame_NumButtons = 7;

function CT_RASetsEditFrame_Update()
	local numEntries = 0;
	for k, v in CT_RAMenu_Options do
		numEntries = numEntries + 1;
	end
	FauxScrollFrame_Update(CT_RASetsEditFrameScrollFrame, numEntries, CT_RASetsEditFrame_NumButtons , 32);

	for i = 1, CT_RASetsEditFrame_NumButtons, 1 do
		local button = getglobal("CT_RASetsEditFrameBackdropButton" .. i);
		local index = i + FauxScrollFrame_GetOffset(CT_RASetsEditFrameScrollFrame);
		local num, name = 0, nil;
		if ( i <= numEntries ) then
			
			for k, v in CT_RAMenu_Options do
				num = num + 1;
				if ( num == index ) then
					name = k;
					break;
				end
			end
			if ( name ) then
				button:Show();
				if ( CT_RASetsEditFrame.selected == name ) then
					getglobal(button:GetName() .. "CheckButton"):SetChecked(1);
				else
					getglobal(button:GetName() .. "CheckButton"):SetChecked(nil);
				end
				getglobal(button:GetName() .. "Name"):SetText(name);
			end
		else
			button:Hide();
		end
	end
end

function CT_RASetsEditCB_Check(id)
	for i = 1, CT_RASetsEditFrame_NumButtons, 1 do
		getglobal("CT_RASetsEditFrameBackdropButton" .. i .. "CheckButton"):SetChecked(nil);
	end
	if ( not id ) then
		return;
	end
	getglobal("CT_RASetsEditFrameBackdropButton" .. id .. "CheckButton"):SetChecked(1);
	local num = 0;
	for k, v in CT_RAMenu_Options do
		if ( k ~= "temp" ) then
			num = num + 1;
			if ( num == id+FauxScrollFrame_GetOffset(CT_RASetsEditFrameScrollFrame) ) then
				CT_RASetsEditFrame.selected = k;
				if ( k == "Default" ) then
					CT_RASetsEditFrame_EnableDelete(nil);
				else
					CT_RASetsEditFrame_EnableDelete(1);
				end
				return;
			end
		end
	end
	CT_RASetsEditFrame_EnableDelete(nil);
end

function CT_RASetsEditFrame_EnableDelete(enable)
	if ( enable ) then
		CT_RASetsEditFrameDeleteButton:Enable();
	else
		CT_RASetsEditFrameDeleteButton:Disable();
	end
end

function CT_RASetsEdit_Delete()
	if ( CT_RASetsEditFrame.selected ) then
		CT_RAMenu_Options[CT_RASetsEditFrame.selected] = nil;
		if ( CT_RASetsEditFrame.selected == CT_RAMenu_CurrSet ) then
			CT_RAMenu_CurrSet = "Default";
			CT_RA_UpdateRaidGroup();
			CT_RAOptions_Update();
			CT_RA_UpdateMTs();
			CT_RAMenu_UpdateMenu();
		end
	end
	CT_RASetsEditFrame.selected = nil;
	CT_RASetsEditFrame_Update();
	CT_RASetsEditFrame_EnableDelete(nil);
end

function CT_RASetsEditNewDropDown_OnLoad()
	UIDropDownMenu_Initialize(this, CT_RASetsEditNew_DropDown_Initialize);
	UIDropDownMenu_SetWidth(180);
	UIDropDownMenu_SetSelectedName(CT_RASetsEditNew_DropDown, "Default");
end

function CT_RASetsEditNew_DropDown_Initialize()
	local info = {};
	for k, v in CT_RAMenu_Options do
		if ( k ~= "temp" ) then
			info = { };
			info.text = k;
			info.func = CT_RASetsEditNew_DropDown_OnClick;
			UIDropDownMenu_AddButton(info);
		end
	end
end

function CT_RASetsEditNew_DropDown_OnClick()
	local num = 0;
	for k, v in CT_RAMenu_Options do
		if ( k ~= "temp" ) then
			num = num + 1;
			if ( num == this:GetID() ) then
				CT_RASetsEditNewFrame.set = k;
				UIDropDownMenu_SetSelectedName(CT_RASetsEditNew_DropDown, k);
				return;
			end
		end
	end
	CT_RASetsEditNewFrame.set = "Default";
	UIDropDownMenu_SetSelectedName(CT_RASetsEditNew_DropDown, "Default");
end

function CT_RASet_New()
	local name = CT_RASetsEditNewFrameNameEB:GetText();
	if ( strlen(name) > 0 and CT_RASetsEditNewFrame.set and CT_RAMenu_Options[CT_RASetsEditNewFrame.set] and not CT_RAMenu_Options[name] ) then
		CT_RAMenu_Options[name] = { };
		for k, v in CT_RAMenu_Options[CT_RASetsEditNewFrame.set] do
			CT_RAMenu_Options[name][k] = v;
		end
	end
	CT_RASetsEditFrame_Update();
end

CT_RA_BuffTextures = {
	[CT_RA_POWERWORDFORTITUDE[1]] = { "Spell_Holy_WordFortitude", 30*60 },
	[CT_RA_POWERWORDFORTITUDE[2]] = { "Spell_Holy_PrayerOfFortitude", 60*60 },
	[CT_RA_MARKOFTHEWILD[1]] = { "Spell_Nature_Regeneration", 30*60 },
	[CT_RA_MARKOFTHEWILD[2]] = { "Spell_Nature_Regeneration", 60*60 },
	[CT_RA_ARCANEINTELLECT[1]] = { "Spell_Holy_MagicalSentry", 30*60 },
	[CT_RA_ARCANEINTELLECT[2]] = { "Spell_Holy_ArcaneIntellect", 60*60 },
	[CT_RA_SHADOWPROTECTION] = { "Spell_Shadow_AntiShadow", 10*60 },
	[CT_RA_POWERWORDSHIELD] = { "Spell_Holy_PowerWordShield", 30 },
	[CT_RA_SOULSTONERESURRECTION] = { "Spell_Shadow_SoulGem", 30*60 },
	[CT_RA_DIVINESPIRIT] = { "Spell_Holy_HolyProtection", 30*60 },
	[CT_RA_THORNS] = { "Spell_Nature_Thorns", 10*60 },
	[CT_RA_FEARWARD] = { "Spell_Holy_Excorcism", 10*60 },
	[CT_RA_BLESSINGOFMIGHT] = { "Spell_Holy_FistOfJustice" },
	[CT_RA_BLESSINGOFWISDOM] = { "Spell_Holy_SealOfWisdom" },
	[CT_RA_BLESSINGOFKINGS] = { "Spell_Magic_MageArmor" },
	[CT_RA_BLESSINGOFSALVATION] = { "Spell_Holy_SealOfSalvation" },
	[CT_RA_BLESSINGOFLIGHT] = { "Spell_Holy_PrayerOfHealing02" },
	[CT_RA_BLESSINGOFSANCTUARY] = { "Spell_Nature_LightningShield" },
	[CT_RA_RENEW] = { "Spell_Holy_Renew", 15 },
	[CT_RA_REJUVENATION] = { "Spell_Nature_Rejuvenation", 12 },
	[CT_RA_REGROWTH] = { "Spell_Nature_ResistNature", 21 },
	[CT_RA_AMPLIFYMAGIC] = { "Spell_Holy_FlashHeal", 10*60 },
	[CT_RA_DAMPENMAGIC] = { "Spell_Nature_AbolishMagic", 10*60 },
};