------------------------------------------------------------------------------------------------------
-- Necrosis LdC
--
-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-- Implémentation de base (FR) : Tilienna Thorondor
-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
-- 
-- Skins et voix Françaises : Eliah, Ner'zhul
-- Version Allemande par Arne Meier
-- Remerciements spéciaux pour Sadyre (JoL)
-- Version 7.02.2006-2
------------------------------------------------------------------------------------------------------


-- La fonction d'affichage des timers
-- tableau est de la forme suivante :
-- tableau{texte = "Nom du mob ou du sort", TimeMax = "TimeMax du sort", Time = "Time du sort", titre = "vrai si titre, faux sinon", temps = "timer numérique"}
function NecrosisAfficheTimer(tableau)
	-- On définit l'endroit ou apparaitra la première frame
	-- On déclare que la première frame est toujours le premier mob (logique :P)
	
	if tableau ~= nil then
		local TimerTarget = 0;
		local TimerDoT = 1;
		local DebugMesg = "";
		local yPosition = NecrosisConfig.SensListe * 5;

		local PositionTitre = {};

		if NecrosisConfig.SensListe > 0 then
			PositionTitre = {11, 13};
		else
			PositionTitre = {-13, -11};
		end
			
	
		for index =  1, table.getn(tableau.texte), 1 do
			-- Si l'entrée est un titre de mob
			if tableau.titre[index] then
				-- On change de groupe de mob
				TimerTarget = TimerTarget + 1;
				if TimerTarget ~= 1 then yPosition = yPosition - PositionTitre[1]; end
				TimerDoT = 1;
				if TimerTarget == 7 then TimerTarget = 2; end
				-- On affiche le titre
				local frameName = "NecrosisTarget"..TimerTarget.."Text";
				local frameItem = getglobal(frameName);
				-- On place le coin gauche de la frame par rapport au centre du bouton des SpellTimers
				frameItem:ClearAllPoints();
				frameItem:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
				yPosition = yPosition - PositionTitre[2];
				-- On nomme la frame, puis on l'affiche ! :)
				frameItem:SetText(tableau.texte[index]);
				frameItem:Show();
			else
				-- Pareil pour les DoT
				if TimerTarget == 0 then TimerTarget = 1; end
				if TimerDoT == 6 then TimerDoT = 1; end

				local JustifInverse = "LEFT";
				if NecrosisConfig.SpellTimerJust == "LEFT" then JustifInverse = "RIGHT"; end	
			
				local frameName1 = "NecrosisTarget"..TimerTarget.."Timer"..TimerDoT.."Text";
				local frameItem1 = getglobal(frameName1);

				frameItem1:ClearAllPoints();
				frameItem1:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition + 1);
				if not NecrosisConfig.Yellow then
					frameItem1:SetTextColor(1, 1, 1);
				end
				frameItem1:SetJustifyH("LEFT");
				frameItem1:SetText(tableau.texte[index]);
				frameItem1:Show();	
				
				local frameName2 = "NecrosisTarget"..TimerTarget.."Timer"..TimerDoT.."Bar";
				local frameItem2 = getglobal(frameName2);
				frameItem2:ClearAllPoints();
				frameItem2:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
				frameItem2:SetMinMaxValues(tableau.TimeMax[index] - tableau.Time[index], tableau.TimeMax[index]);
				frameItem2:SetValue(2 * tableau.TimeMax[index] - (tableau.Time[index] + floor(GetTime())));
				local r, g;
				local b = 37/255;
				local PercentColor = (tableau.TimeMax[index] - floor(GetTime())) / tableau.Time[index]
				if PercentColor > 0.5 then
					r = (49/255) + (((1 - PercentColor) * 2) * (1 - (49/255)));
					g = 207/255;
				else
					r = 1.0;
					g = (207/255) - (0.5 - PercentColor) * 2 * (207/255);
				end
				frameItem2:SetStatusBarColor(r, g, b)
				frameItem2:Show();

				local frameName3 = "NecrosisTarget"..TimerTarget.."Timer"..TimerDoT.."Texture";
				local frameItem3 = getglobal(frameName3);
				frameItem3:ClearAllPoints();
				frameItem3:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
				frameItem3:Show();
			
				local frameName4 = "NecrosisTarget"..TimerTarget.."Timer"..TimerDoT.."Spark";
				local frameItem4 = getglobal(frameName4);
				frameItem4:Show();

				local frameName5 = "NecrosisTarget"..TimerTarget.."Timer"..TimerDoT.."OutText";
				local frameItem5 = getglobal(frameName5);

				frameItem5:ClearAllPoints();
				frameItem5:SetJustifyH(NecrosisConfig.SpellTimerJust);
				frameItem5:SetPoint(NecrosisConfig.SpellTimerJust, frameItem2, JustifInverse, NecrosisConfig.SpellTimerPos * 5, 1);
				frameItem5:SetText(tableau.temps[index]);
				frameItem5:Show();

				local sparkPosition = 150 - ((floor(GetTime()) - (tableau.TimeMax[index]-tableau.Time[index])) / tableau.Time[index]) * 150;
				if (sparkPosition < 1) then
					sparkPosition = 1;
				end
				frameItem4:SetPoint("CENTER", frameItem2, "LEFT", sparkPosition, 0);

				TimerDoT = TimerDoT + 1;
				yPosition = yPosition - NecrosisConfig.SensListe * 11;				
			end
		end
	end
end
