function SmartPet_BuildTooltip(id)
	SmartPet_UpdateActionIcons(true);
	if (SmartPet_Config.ToolTips) then
	if (id == SmartPet_Actions["Taunt"].index) then
		SmartPet_BuildGrowlTooltip();
	elseif (id == SmartPet_Actions["Detaunt"].index) then
		SmartPet_BuildCowerTooltip();
	elseif (id == SmartPet_Actions["Burst"].index) then
		SmartPet_BuildClawTooltip();
	elseif (id == SmartPet_Actions["Sustain"].index) then
		SmartPet_BuildBiteTooltip();
	elseif (id == SmartPet_Actions["Nochase"].index) then
		SmartPet_BuildNoChaseTooltip();
	end
	end
end

function SmartPet_BuildGrowlTooltip()
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_ACTIONS_GROWL .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.TauntMan) then
		if (SmartPet_Config.UseTaunt) then
			GameTooltip:AddLine(SMARTPET_TOOLTIP_GROWL1);
			if (SmartPet_Config.AutoCower) then
				if (SmartPet_Actions["Detaunt"].index < 1) then					
					GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_GROWL2 .. COLOR_CLOSE);
				else
					GameTooltip:AddLine(COLOR_GREEN .. string.gsub(SMARTPET_TOOLTIP_AUTOCOWER, '%%h', SmartPet_Config.CowerHealth) .. COLOR_CLOSE);
				end
			end
		elseif (SmartPet_Config.UseDetaunt) then
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_GROWL3 .. COLOR_CLOSE);
		end
	else
		if (SmartPet_Config.AutoCower) then
			GameTooltip:AddLine(COLOR_GREEN .. string.gsub(SMARTPET_TOOLTIP_AUTOCOWER, '%%h', SmartPet_Config.CowerHealth) .. COLOR_CLOSE);
		else
			GameTooltip:AddLine(SMARTPET_TOOLTIP_GROWL4);
		end
	end
	GameTooltip:Show();
end

function SmartPet_BuildCowerTooltip()
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_ACTIONS_COWER .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.TauntMan) then
		if (SmartPet_Config.UseDetaunt) then
			GameTooltip:AddLine(SMARTPET_TOOLTIP_COWER1);
		elseif (SmartPet_Config.UseTaunt) then
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_COWER3 .. COLOR_CLOSE);
			if (SmartPet_Config.AutoCower) then
				GameTooltip:AddLine(COLOR_GREEN .. string.gsub(SMARTPET_TOOLTIP_AUTOCOWER, '%%h', SmartPet_Config.CowerHealth) .. COLOR_CLOSE);
			end
		end
	else
		if (SmartPet_Config.AutoCower) then
			GameTooltip:AddLine(COLOR_GREEN .. string.gsub(SMARTPET_TOOLTIP_AUTOCOWER, '%%h', SmartPet_Config.CowerHealth) .. COLOR_CLOSE);
		else
			GameTooltip:AddLine(SMARTPET_TOOLTIP_COWER4);
		end
	end
	GameTooltip:Show();
end

function SmartPet_BuildClawTooltip()
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_ACTIONS_CLAW .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.TauntMan) then
		if (SmartPet_Config.UseBurst) then
			local mainAction;
			if (SmartPet_Config.UseTaunt) then
				mainAction = SmartPet_Actions["Taunt"].name;
			else
				mainAction = SmartPet_Actions["Detaunt"].name;
			end
			GameTooltip:AddLine(string.gsub(SMARTPET_TOOLTIP_CLAW1, '%%a', mainAction));
		else
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_CLAW2 .. COLOR_CLOSE);
		end
	end
	if (SmartPet_Config.SmartFocus) then
		if (not SmartPet_Config.UseBurst or not SmartPet_Config.UseSustain) then
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_SMARTFOCUS2 .. COLOR_CLOSE);
		else
			GameTooltip:AddLine(COLOR_BLUE .. SMARTPET_TOOLTIP_SMARTFOCUS1 .. COLOR_CLOSE);
		end
	end
	GameTooltip:Show();
end

function SmartPet_BuildBiteTooltip()
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_ACTIONS_BITE .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.TauntMan) then
		if (SmartPet_Config.UseSustain) then
			local mainAction;
			if (SmartPet_Config.UseTaunt) then
				mainAction = SmartPet_Actions["Taunt"].name;
			else
				mainAction = SmartPet_Actions["Detaunt"].name;
			end
			GameTooltip:AddLine(string.gsub(SMARTPET_TOOLTIP_BITE1, '%%a', mainAction));
		else
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_BITE2 .. COLOR_CLOSE);
		end
	end
	if (SmartPet_Config.SmartFocus) then
		if (not SmartPet_Config.UseBurst or not SmartPet_Config.UseSustain) then
			GameTooltip:AddLine(COLOR_RED .. SMARTPET_TOOLTIP_SMARTFOCUS2 .. COLOR_CLOSE);
		else
			GameTooltip:AddLine(COLOR_BLUE .. SMARTPET_TOOLTIP_SMARTFOCUS1 .. COLOR_CLOSE);
		end
	end
	GameTooltip:Show();
end

function SmartPet_BuildNoChaseTooltip()
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_NOCHASE .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.NoChase) then
		GameTooltip:AddLine(SMARTPET_TOOLTIP_NOCHASE1);
	else 
		GameTooltip:AddLine(SMARTPET_TOOLTIP_NOCHASE2);
	end
	GameTooltip:Show();
end

function SmartPet_DefaultTooltip(tooltipID)
	GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
	GameTooltip:SetText(COLOR_WHITE .. SMARTPET_NOCHASE .. " " .. SMARTPET_TOOLTIP_MANAGEMENT .. COLOR_CLOSE);
	if (SmartPet_Config.NoChase) then
		GameTooltip:AddLine(tooltipID..1);
	else 
		GameTooltip:AddLine(tooltipID..2);
	end
	GameTooltip:Show();
end

-- Adds a formatted informational message
function SmartPet_AddInfoMessage(message)
	DEFAULT_CHAT_FRAME:AddMessage(COLOR_YELLOW..message..COLOR_CLOSE);
end


-- Adds a formatted help message
function SmartPet_AddHelpMessage(command, detail, status, enabled)
	message = COLOR_WHITE..command..": "..COLOR_CLOSE..COLOR_GREEN..detail..COLOR_CLOSE;

	if (enabled == nil) then
		DEFAULT_CHAT_FRAME:AddMessage(message);
		return;
	end
	
	if (status == "" or status == nil) then
		if (enabled) then
			DEFAULT_CHAT_FRAME:AddMessage(message..COLOR_WHITE.." (" .. SMARTPET_USAGE_ENABLED.. ")"..COLOR_CLOSE);
		else
			DEFAULT_CHAT_FRAME:AddMessage(message..COLOR_GREY.." (" .. SMARTPET_USAGE_DISABLED .. ")"..COLOR_CLOSE);
		end
	else
		if (enabled) then
			DEFAULT_CHAT_FRAME:AddMessage(message..COLOR_WHITE..status..COLOR_CLOSE);
		else
			DEFAULT_CHAT_FRAME:AddMessage(message..COLOR_GREY..status..COLOR_CLOSE);
		end		
	end
end

--Prints Messages to help in debuging
function SmartPet_AddDebugMessage(message, style)
	if (not SmartPet_Config.ShowDebug) then
		return;
	end
	
	if (strfind (SmartPet_Config.ShowDebugString, style)) then
		DEFAULT_CHAT_FRAME:AddMessage(COLOR_RED..message..COLOR_CLOSE);
	end
end


