@@ -4,25 +4,14 @@ ECLIPSE_BAR_TRAVEL = 38;
 ECLIPSE_BAR_SOLAR_BUFF_ID = 48517;
 ECLIPSE_BAR_LUNAR_BUFF_ID = 48518;
 
-
+EQUINOX_TALENT_SPELL_ID = 152220;
 
 ECLIPSE_ICONS =  {};
-ECLIPSE_ICONS["moon"] = { 
-												norm = { x=23, y=23, left=0.55859375, right=0.64843750, top=0.57031250, bottom=0.75000000 } ,
-												dark  = { x=23, y=23, left=0.55859375, right=0.64843750, top=0.37500000, bottom=0.55468750 } ,
-												big    = { x=43, y=45, left=0.73437500, right=0.90234375, top=0.00781250, bottom=0.35937500 } ,
-											}
-ECLIPSE_ICONS["sun"] = { 
-												norm = { x=23, y=23, left=0.65625000, right=0.74609375, top=0.37500000, bottom=0.55468750 } ,
-												dark  = { x=23, y=23, left=0.55859375, right=0.64843750, top=0.76562500, bottom=0.94531250 } ,
-												big    = { x=43, y=45, left=0.55859375, right=0.72656250, top=0.00781250, bottom=0.35937500 } ,
-											}
-											
-											
+													
 ECLIPSE_MARKER_COORDS =  {};
 ECLIPSE_MARKER_COORDS["none"] 		= { 0.914, 1.0, 0.82, 1.0 }; 
-ECLIPSE_MARKER_COORDS["sun"] 		= { 0.914, 1.0, 0.641, 0.82 }; 
-ECLIPSE_MARKER_COORDS["moon"] 	= { 1.0, 0.914, 0.641, 0.82 }; 
+ECLIPSE_MARKER_COORDS["sun"] 		= { 0, 1, 0, 1 }; 
+ECLIPSE_MARKER_COORDS["moon"] 	= { 1, 0, 0, 1 }; 
 
 
 function EclipseBar_UpdateShown(self)
@@ -38,10 +27,10 @@ function EclipseBar_UpdateShown(self)
 		if GetSpecialization() == 1 then
 			self.textDisplay = GetCVar("statusTextDisplay");	
 			if GetCVarBool("playerStatusText") then
-				self.powerText:Show();
+				self.PowerText:Show();
 				self.lockShow = true;
 			else
-				self.powerText:Hide();
+				self.PowerText:Hide();
 				self.lockShow = false;
 			end
 			self:Show();
@@ -57,42 +46,35 @@ end
 function EclipseBar_Update(self)
 	local power = UnitPower( self:GetParent().unit, SPELL_POWER_ECLIPSE );
 	local maxPower = UnitPowerMax( self:GetParent().unit, SPELL_POWER_ECLIPSE );
-	if maxPower == 0 then
+	if (maxPower == 0) then
 		return;--catch divide by zero
 	end
 	
-	if (self.textDisplay == "BOTH") then
-		self.powerText:SetText("("..abs(power/maxPower*100).."%) "..abs(power).." / "..abs(maxPower));
-	elseif (self.textDisplay == "PERCENT") then
-		self.powerText:SetText(abs(power/maxPower*100).."%");
-	else
-		self.powerText:SetText(abs(power));
-	end
+	self.PowerText:SetText(abs(power));
 	
 	local xpos =  ECLIPSE_BAR_TRAVEL*(power/maxPower)
-	self.marker:SetPoint("CENTER", xpos, 0);
+	self.Marker:SetPoint("CENTER", xpos, 0);
 end
 
-
-
-
-
 function EclipseBar_OnLoad(self)
 	self:RegisterEvent("UPDATE_SHAPESHIFT_FORM");
 	self:RegisterEvent("PLAYER_TALENT_UPDATE");
 	self:RegisterEvent("CVAR_UPDATE");
 	self:RegisterEvent("ECLIPSE_DIRECTION_CHANGE");
 	self:RegisterUnitEvent("UNIT_AURA", "player", "vehicle");
+	
+	ECLIPSE_ICONS["moon"] = { atlas="DruidEclipse-LunarMoon", anchor=EclipseBarFrame.Moon }
+	ECLIPSE_ICONS["sun"] = { atlas="DruidEclipse-SolarSun", anchor=EclipseBarFrame.Sun}
 end
 
-
-
-
 function EclipseBar_OnShow(self)
 
 	local direction = GetEclipseDirection();
-	if direction then
-		self.marker:SetTexCoord( unpack(ECLIPSE_MARKER_COORDS[direction]));
+	if (not direction or direction == "none") then
+		self.Marker:SetAtlas("DruidEclipse-Diamond");
+	else
+		self.Marker:SetAtlas("DruidEclipse-Arrow");
+		self.Marker:SetTexCoord(unpack(ECLIPSE_MARKER_COORDS[direction]));
 	end
 	
 	local hasLunarEclipse = false;
@@ -102,47 +84,45 @@ function EclipseBar_OnShow(self)
 	local j = 1;
 	local name, _, _, _, _, _, _, _, _, _, spellID = UnitBuff(unit, j);
 	while name do 
-		if spellID == ECLIPSE_BAR_SOLAR_BUFF_ID then
+		if (spellID == ECLIPSE_BAR_SOLAR_BUFF_ID) then
 			hasSolarEclipse = true;
-		elseif spellID == ECLIPSE_BAR_LUNAR_BUFF_ID then
+		elseif (spellID == ECLIPSE_BAR_LUNAR_BUFF_ID) then
 			hasLunarEclipse = true;
 		end
 		j=j+1;
 		name, _, _, _, _, _, _, _, _, _, spellID = UnitBuff(unit, j);
 	end
 	
-	if hasLunarEclipse then
-		self.glow:ClearAllPoints();
-		local glowInfo = ECLIPSE_ICONS["moon"].big;
-		self.glow:SetPoint("CENTER", self.moon, "CENTER", 0, 0);
-		self.glow:SetWidth(glowInfo.x);
-		self.glow:SetHeight(glowInfo.y);
-		self.glow:SetTexCoord(glowInfo.left, glowInfo.right, glowInfo.top, glowInfo.bottom);
-		self.sunBar:SetAlpha(0);
-		self.darkMoon:SetAlpha(0);
-		self.moonBar:SetAlpha(1);
-		self.darkSun:SetAlpha(1);
-		self.glow:SetAlpha(1);
-		self.glow.pulse:Play();	
-	elseif hasSolarEclipse then
-		self.glow:ClearAllPoints();
-		local glowInfo = ECLIPSE_ICONS["sun"].big;
-		self.glow:SetPoint("CENTER", self.sun, "CENTER", 0, 0);
-		self.glow:SetWidth(glowInfo.x);
-		self.glow:SetHeight(glowInfo.y);
-		self.glow:SetTexCoord(glowInfo.left, glowInfo.right, glowInfo.top, glowInfo.bottom);
-		self.moonBar:SetAlpha(0);
-		self.darkSun:SetAlpha(0);
-		self.sunBar:SetAlpha(1);
-		self.darkMoon:SetAlpha(1);
-		self.glow:SetAlpha(1);
-		self.glow.pulse:Play();
-	else
-		self.sunBar:SetAlpha(0);
-		self.moonBar:SetAlpha(0);
-		self.darkSun:SetAlpha(0);
-		self.darkMoon:SetAlpha(0);
-		self.glow:SetAlpha(0);
+	if (hasLunarEclipse) then
+		EclipseBar_SetGlow(self, "moon");
+		self.SunBar:SetAlpha(0);
+		self.DarkMoon:SetAlpha(0);
+		self.MoonBar:SetAlpha(1);
+		self.DarkSun:SetAlpha(1);
+		self.Glow:SetAlpha(1);
+		self.SunCover:SetAlpha(1);
+		if (IsPlayerSpell(EQUINOX_TALENT_SPELL_ID)) then
+			self.SunCover:Show();
+		end
+		self.pulse:Play();	
+	elseif (hasSolarEclipse) then
+		EclipseBar_SetGlow(self, "sun");
+		self.MoonBar:SetAlpha(0);
+		self.DarkSun:SetAlpha(0);
+		self.SunBar:SetAlpha(1);
+		self.DarkMoon:SetAlpha(1);
+		self.Glow:SetAlpha(1);
+		self.MoonCover:SetAlpha(1);
+		if (IsPlayerSpell(EQUINOX_TALENT_SPELL_ID)) then
+			self.MoonCover:Show();
+		end
+		self.pulse:Play();
+	else
+		self.SunBar:SetAlpha(0);
+		self.MoonBar:SetAlpha(0);
+		self.DarkSun:SetAlpha(0);
+		self.DarkMoon:SetAlpha(0);
+		self.Glow:SetAlpha(0);
 	end
 	
 	self.hasLunarEclipse = hasLunarEclipse;
@@ -151,8 +131,12 @@ function EclipseBar_OnShow(self)
 	EclipseBar_Update(self);
 end
 
-
-
+function EclipseBar_SetGlow(self, icon)
+	self.Glow:ClearAllPoints();
+	local glowInfo = ECLIPSE_ICONS[icon];
+	self.Glow:SetAtlas(glowInfo.atlas, true);
+	self.Glow:SetPoint("CENTER", glowInfo.anchor, "CENTER", 0, 0);
+end
 
 function EclipseBar_CheckBuffs(self) 
 	if not self:IsShown() then
@@ -166,61 +150,69 @@ function EclipseBar_CheckBuffs(self)
 	local j = 1;
 	local name, _, _, _, _, _, _, _, _, _, spellID = UnitBuff(unit, j);
 	while name do 
-		if spellID == ECLIPSE_BAR_SOLAR_BUFF_ID then
+		if (spellID == ECLIPSE_BAR_SOLAR_BUFF_ID) then
 			hasSolarEclipse = true;
-		elseif spellID == ECLIPSE_BAR_LUNAR_BUFF_ID then
+		elseif (spellID == ECLIPSE_BAR_LUNAR_BUFF_ID) then
 			hasLunarEclipse = true;
 		end
 		j=j+1;
 		name, _, _, _, _, _, _, _, _, _, spellID = UnitBuff(unit, j);
 	end
 	
-	if hasLunarEclipse then
-		self.glow:ClearAllPoints();
-		local glowInfo = ECLIPSE_ICONS["moon"].big;
-		self.glow:SetPoint("CENTER", self.moon, "CENTER", 0, 0);
-		self.glow:SetWidth(glowInfo.x);
-		self.glow:SetHeight(glowInfo.y);
-		self.glow:SetTexCoord(glowInfo.left, glowInfo.right, glowInfo.top, glowInfo.bottom);
-		 
-		if self.moonDeactivate:IsPlaying() then
+	local hasEquinox = IsPlayerSpell(EQUINOX_TALENT_SPELL_ID);
+	
+	if (hasLunarEclipse) then
+		EclipseBar_SetGlow(self, "moon");
+		
+		if (hasEquinox) then
+			self.SunCover:Show();
+		else
+			self.SunCover:Hide();
+		end
+		
+		if (self.moonDeactivate:IsPlaying()) then
 			self.moonDeactivate:Stop();
 		end
 		
-		if not self.moonActivate:IsPlaying() and hasLunarEclipse ~= self.hasLunarEclipse then
+		if (hasEquinox and self.hasSolarEclipse) then
+			self.switchToMoon:Play();
+		elseif (not self.moonActivate:IsPlaying() and hasLunarEclipse ~= self.hasLunarEclipse) then
 			self.moonActivate:Play();
 		end
 	else
-		if self.moonActivate:IsPlaying() then
+		if (self.moonActivate:IsPlaying()) then
 			self.moonActivate:Stop();
 		end
 		
-		if not self.moonDeactivate:IsPlaying() and hasLunarEclipse ~= self.hasLunarEclipse then
+		if (not hasSolarEclipse and not self.moonDeactivate:IsPlaying() and hasLunarEclipse ~= self.hasLunarEclipse) then
 			self.moonDeactivate:Play();
 		end
 	end
 
-	if hasSolarEclipse then
-		self.glow:ClearAllPoints();
-		local glowInfo = ECLIPSE_ICONS["sun"].big;
-		self.glow:SetPoint("CENTER", self.sun, "CENTER", 0, 0);
-		self.glow:SetWidth(glowInfo.x);
-		self.glow:SetHeight(glowInfo.y);
-		self.glow:SetTexCoord(glowInfo.left, glowInfo.right, glowInfo.top, glowInfo.bottom);
+	if (hasSolarEclipse) then
+		EclipseBar_SetGlow(self, "sun");
 		
-		if self.sunDeactivate:IsPlaying() then
+		if (hasEquinox) then
+			self.MoonCover:Show();
+		else
+			self.MoonCover:Hide();
+		end
+		
+		if (self.sunDeactivate:IsPlaying()) then
 			self.sunDeactivate:Stop();
 		end
 		
-		if not self.sunActivate:IsPlaying() and hasSolarEclipse ~= self.hasSolarEclipse then
+		if (hasEquinox and self.hasLunarEclipse) then
+			self.switchToSun:Play();
+		elseif (not self.sunActivate:IsPlaying() and hasSolarEclipse ~= self.hasSolarEclipse) then
 			self.sunActivate:Play();
 		end
 	else
-		if self.sunActivate:IsPlaying() then
+		if (self.sunActivate:IsPlaying()) then
 			self.sunActivate:Stop();
 		end
 		
-		if not self.sunDeactivate:IsPlaying() and hasSolarEclipse ~= self.hasSolarEclipse then
+		if (not hasLunarEclipse and not self.sunDeactivate:IsPlaying() and hasSolarEclipse ~= self.hasSolarEclipse) then
 			self.sunDeactivate:Play();
 		end
 	end
@@ -229,17 +221,20 @@ function EclipseBar_CheckBuffs(self)
 	self.hasSolarEclipse = hasSolarEclipse;
 end 
 
-
-
 function EclipseBar_OnEvent(self, event, ...)
-	if event == "UNIT_AURA" then
+	if (event == "UNIT_AURA") then
 		local arg1 = ...;
 		if arg1 ==  PlayerFrame.unit then
 			EclipseBar_CheckBuffs(self);
 		end
-	elseif event == "ECLIPSE_DIRECTION_CHANGE" then
+	elseif (event == "ECLIPSE_DIRECTION_CHANGE") then
 		local status = ...;
-		self.marker:SetTexCoord(unpack(ECLIPSE_MARKER_COORDS[status]));
+		if (status == "none") then
+			self.Marker:SetAtlas("DruidEclipse-Diamond");
+		else
+			self.Marker:SetAtlas("DruidEclipse-Arrow");
+			self.Marker:SetTexCoord(unpack(ECLIPSE_MARKER_COORDS[status]));
+		end
 	else
 		EclipseBar_UpdateShown(self);
 	end