Quantcast
local ns = select( 2, ... );
function ns:initbn()
	ns.bn = {};
	local module = ns.bn;
	local L = ns.L;
	local e_active = false;
	local bn_active = false;
	local lastsaveid;
	local emergencysaveid;
	local lastactive_blizz_tab;
	local lastactive_blizz_frame;

	function module:ShowBossNotes()
		bn_active = true;

		module:SaveLastTab();
		_G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:Hide();
		_G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:Hide();
		_G["EncounterJournalEncounterFrameInfoBossTab"]:Enable();
		_G["EncounterJournalEncounterFrameInfoLootTab"]:Enable();

		module.scrollframe:Show();
		ns.mainframe.expandbutton:Hide();
		ns.mainframe.collapsebutton:Hide();
		module.notesbutton:Disable();
		if(e_active==false) then
			module.editbutton:Show();
			local saveid = module:GetSaveID();
			module.scrollchild.text:SetText(ns.activeconfig.bn[saveid] or "");
			module.scrollframe:SetScrollChild(module.scrollchild);
			module.scrollchild:Show();
			module.scrollchild.text:Show();
		else
			module.savebutton:Show();
			module.canclebutton:Show();
		end
	end



	--temp
	function module:ShowBossNotes2()
		if(bn_active==false) then
			return;
		end
		if(e_active==true) then
			StaticPopup_Show ("DJE_BN_CONFIRM_NO_SAVE");
			emergencysaveid = lastsaveid;
			EncounterJournal:Hide();
		end
		e_active = false;
		_G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:Hide();
		_G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:Hide();
		_G["EncounterJournalEncounterFrameInfoBossTab"]:Enable();
		_G["EncounterJournalEncounterFrameInfoLootTab"]:Enable();
		module.scrollframe:Show();
		ns.mainframe.expandbutton:Hide();
		ns.mainframe.collapsebutton:Hide();
		module.notesbutton:Disable();
		module.editbutton:Show();
		local saveid = module:GetSaveID();
		module.scrollchild.text:SetText(ns.activeconfig.bn[saveid] or "");
		module.scrollchild:Show();
		module.scrollchild.text:Show();

		module.scrollframe:SetScrollChild(module.scrollchild);
		module.scrollchild:Show();
		module.editchild:Hide();
		module.canclebutton:Hide();
		module.savebutton:Hide();
	end

	function module:SaveLastTab()
		if(_G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:IsVisible()) then
			lastactive_tab = _G["EncounterJournalEncounterFrameInfoLootTab"];
			lastactive_frame =_G["EncounterJournalEncounterFrameInfoLootScrollFrame"];
		elseif(_G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:IsVisible()) then
			lastactive_frame = _G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"];
			lastactive_tab= _G["EncounterJournalEncounterFrameInfoBossTab"];
		--else
		--	lastactive_tab = "self";
		end
	end

	function module:ActivateLastTab()
		if(lastactive_tab) then
				lastactive_tab:Disable();
				lastactive_frame:Show();
		--	end
		end
	end

	function module:HideBossNotes()
		if(e_active==true) then
			StaticPopup_Show ("DJE_BN_CONFIRM_NO_SAVE");
			emergencysaveid = lastsaveid;
			EncounterJournal:Hide();
		end
		e_active = false;
		module:ActivateLastTab()
		module.notesbutton:Enable();
		module.scrollframe:Hide();
		module.scrollframe:SetScrollChild(module.scrollchild);
		module.scrollchild:Show();
		module.editchild:Hide();
		module.canclebutton:Hide();
		module.savebutton:Hide();
		module.editbutton:Hide();

	end
	--temp
	function module:HideBossNotes2()
		module:SaveLastTab();
		bn_active = false;
		module.notesbutton:Enable();
		module.scrollframe:Hide();
		module.canclebutton:Hide();
		module.savebutton:Hide();
		module.editbutton:Hide();
		ns.mainframe.expandbutton:Show();
		ns.mainframe.collapsebutton:Show();
	end

	function module:CancleEditMode()

		e_active = false;
		module.scrollchild.text:SetText(ns.activeconfig.bn[module:GetSaveID()] or "")
		module.scrollchild:Show();
		module.editchild:Hide();
		module.scrollframe:SetScrollChild(module.scrollchild);
		module.canclebutton:Hide();
		module.savebutton:Hide();
		module.editbutton:Show();
	end

	function module:EditMode()
		e_active = true;
		module.editchild:SetText(module.scrollchild.text:GetText() or "");
		module.editchild:Show();
		module.scrollframe:SetScrollChild(module.editchild);
		module.scrollchild:Hide();

		module.canclebutton:Show();
		module.savebutton:Show();
		module.editbutton:Hide();
	end



	function module:GetSaveID()
		local mode,size;

		if(EncounterJournal.isHeroic==true) then
			mode = 'h';
		else
			mode =  'n';
		end

		if(EncounterJournal.is10Man==true) then
			size = '10';
		else
			size = '25';
		end
		lastsaveid = ns.mainframe:GetCurrentEncounterID().."|"..size..mode;
		return lastsaveid;

	end

	function module:SaveNotes()
		e_active=false;
		local saveid = module:GetSaveID();
		if (not ns.activeconfig.bn[saveid]) then
			 ns.activeconfig.bn[saveid] = {};
		end

		ns.activeconfig.bn[saveid] = module.editchild:GetText();

		module.scrollchild.text:SetText(module.editchild:GetText());
		module.scrollframe:SetScrollChild(module.scrollchild);
		module.editchild:Hide();
		module.scrollchild:Show();
		module.canclebutton:Hide();
		module.savebutton:Hide();
		module.editbutton:Show();

	end



	function module:CreateBNFrame()

		local scrollframe = CreateFrame("ScrollFrame","DJE_BNScrollFrame",EncounterJournalEncounterFrameInfo,"UIPanelScrollFrameTemplate");--"UIPanelScrollFrameCodeTemplate");
		scrollframe:SetWidth(350);
		scrollframe:SetHeight(380);
		scrollframe:SetPoint("BOTTOMRIGHT",-5,1);
		scrollframe:SetPoint("CENTER",UIParent,"CENTER",100,100);

		scrollframe.ScrollBar:ClearAllPoints();
		scrollframe.ScrollBar:SetPoint("TOPRIGHT",0,-17);
		scrollframe.ScrollBar:SetPoint("BOTTOMRIGHT",0,17);
		module.scrollframe = scrollframe;

		local scrollchild = CreateFrame("frame","DJE_BNScrollFrameScrollChild",scrollframe);
		scrollchild:SetWidth(320);
		scrollchild:SetHeight(372);
		scrollchild:SetPoint("TOPLEFT",0,0);
		scrollframe:SetScrollChild(scrollchild);
		module.scrollchild = scrollchild;

		local fontstring = scrollchild:CreateFontString( nil, "ARTWORK", "GameFontBlack" );
		fontstring:SetJustifyH("LEFT");
		fontstring:SetPoint("TOPLEFT",0,-8);
		fontstring:SetTextColor(0.25,0.1484375,0.02,1.0);
		fontstring:SetNonSpaceWrap(true);
		fontstring:SetWidth(315);

		scrollchild:Hide();
		scrollchild.text = fontstring;

		local editchild = CreateFrame("EditBox","DJE_BNScrollFrameEditChild",scrollframe);
		editchild:SetWidth(320);
		editchild:SetHeight(372);
		editchild:SetPoint("TOPLEFT",0,0);
		editchild:SetMultiLine(true);

		editchild:SetFontObject("GameFontBlack");
		editchild:SetJustifyH("LEFT");
		editchild:SetTextColor(0.25,0.1484375,0.02,1.0);


		module.editchild = editchild;
		scrollframe:SetScrollChild(editchild);
		editchild:Hide();


		local button1 = CreateFrame("Button","DJE_BN_EDIT_BUTTON",EncounterJournal,"MagicButtonTemplate");
		button1:SetText(L.EDIT);
		button1:SetWidth(_G[button1:GetName().."Text"]:GetWidth()+10);
		button1:SetPoint("BOTTOMRIGHT",EncounterJournal,0,-(button1:GetHeight()));
		button1:SetScript("onclick",module.EditMode);
		button1:Hide();
		module.editbutton = button1;

		local button2 = CreateFrame("Button","DJE_BN_CANCLE_BUTTON",EncounterJournal,"MagicButtonTemplate");
		button2:SetText(L.CANCEL);
		button2:SetWidth(_G[button2:GetName().."Text"]:GetWidth()+10);
		button2:SetPoint("BOTTOMRIGHT",EncounterJournal,0,-(button2:GetHeight()));
		button2:SetScript("onclick",module.CancleEditMode);
		button2:Hide();
		module.canclebutton = button2;

		local button3 = CreateFrame("Button","DJE_BN_SAVE_BUTTON",EncounterJournal,"MagicButtonTemplate");
		button3:SetText(L.SAVE);
		button3:SetWidth(_G[button3:GetName().."Text"]:GetWidth()+10);
		button3:SetPoint("RIGHT",button2,"LEFT",-10,0);
		button3:SetScript("onclick",module.SaveNotes);
		button3:Hide();
		module.savebutton = button3;

	end



	function module:init()
		local notesbutton = CreateFrame("Button","DungenJournalEnhancedBossNotesButton",EncounterJournal,"EncounterTabTemplate");
		notesbutton:SetPoint("TOP",EncounterJournalEncounterFrameInfoLootTab,"BOTTOM",0,2);
		notesbutton.id = "BossNotes";
		notesbutton:SetScript("onclick",module.ShowBossNotes);
		notesbutton:Hide();
		local art1 = notesbutton:CreateTexture(nil,"OVERLAY");
		art1:SetWidth(40);
		art1:SetHeight(43);
		art1:SetTexture([[Interface\AddOns\DungeonJournalEnhanced\images\bnicon_selected]])
		art1:SetHeight(20);
		art1:SetPoint("RIGHT",-6,0);
		notesbutton.selected = art1;

		local art2 = notesbutton:CreateTexture(nil,"OVERLAY");
		art2:SetWidth(40);
		art2:SetHeight(43);
		art2:SetTexture([[Interface\AddOns\DungeonJournalEnhanced\images\bnicon]])
		art2:SetHeight(20);
		art2:SetPoint("RIGHT",-6,0);
		notesbutton.unselected = art2;

		module.notesbutton = notesbutton;
		EncounterJournalEncounterFrameInfoBossTab:HookScript("onclick",module.HideBossNotes2);
		EncounterJournalEncounterFrameInfoLootTab:HookScript("onclick",module.HideBossNotes2);
		EncounterJournalEncounterFrameInfo10ManButton:HookScript("onclick",module.ShowBossNotes2);
		EncounterJournalEncounterFrameInfo25ManButton:HookScript("onclick",module.ShowBossNotes2);
		EncounterJournalEncounterFrameInfoHeroicButton:HookScript("onclick",module.ShowBossNotes2);
		module:CreateBNFrame();
		if(not ns.activeconfig.bn) then
			ns.activeconfig.bn = {};
		end

		StaticPopupDialogs["DJE_BN_CONFIRM_NO_SAVE"] = {
		  text = L.EDIT_LOSS_WARNING,
		  button1 = L.YES,
		  button2 = L.NO,
		  OnAccept = module.SaveNow,
		  OnCancel = function () EncounterJournal:Show();end,
		  timeout = 0,
		  whileDead = true,
		  hideOnEscape = true,
		}

	end

	function module:SaveNow()
		EncounterJournal:Show();
		ns.activeconfig.bn[emergencysaveid] = module.editchild:GetText();
	end


	module:init();
end