Quantcast

- Initial corrections.

HonorGoG [05-24-20 - 20:27]
- Initial corrections.
Filename
myReputation.lua
myReputation.toc
myReputation.xml
myReputationClassic.lua
myReputationClassic.toc
myReputationClassic.xml
myReputationOptions.xml
diff --git a/myReputation.lua b/myReputation.lua
deleted file mode 100755
index 5b41653..0000000
--- a/myReputation.lua
+++ /dev/null
@@ -1,635 +0,0 @@
-----------------------------------------------------------------------
--- Variables
-----------------------------------------------------------------------
-
--- Basic Addon Variables
-MYREP_NAME = "myReputationClassic";
-MYREP_VERSION = GetAddOnMetadata("myReputation", "Version") or "N/A";
-MYREP_VERSION_STRING = "|cffffd700myReputation Classic "..GREEN_FONT_COLOR_CODE..MYREP_VERSION.."|cffffd700 by |cffff8c00HonorGoG";
-MYREP_MSG_FORMAT = "%s |cffffff00%s|r";
-MYREP_REGEXP_CHANGED = string.gsub( FACTION_STANDING_CHANGED, "'?%%[1|2]$s'?", "%(.+)" );
-MYREP_REGEXP_DECREASED = string.gsub( FACTION_STANDING_DECREASED, "'?%%[s|d]'?", "%(.+)" );
-MYREP_REGEXP_DECREASED_GENERIC = string.gsub( FACTION_STANDING_DECREASED_GENERIC, "'?%%[s|d]'?", "%(.+)" );
-MYREP_REGEXP_INCREASED = string.gsub( FACTION_STANDING_INCREASED, "'?%%[s|d]'?", "%(.+)" );
-MYREP_REGEXP_INCREASED_GENERIC = string.gsub( FACTION_STANDING_INCREASED_GENERIC, "'?%%[s|d]'?", "%(.+)" );
-
--- Configuration Variables and their Standard Values
-myReputation_Config = { };
-myReputation_DefaultConfig = { };
-myReputation_DefaultConfig.Enabled = true;
-myReputation_DefaultConfig.More = true;
-myReputation_DefaultConfig.Blizz = false;
-myReputation_DefaultConfig.Splash = true;
-myReputation_DefaultConfig.Debug = false;
-myReputation_DefaultConfig.Frame = 1;
-myReputation_DefaultConfig.Info = 'Text';
-myReputation_DefaultConfig.Tooltip = 'Absolute';
-
--- Temp Variables and Arrays
-myReputations = { };
-mySessionReputations = { };
-myReputation_Var = { };
-myReputation_Var.InWorld = false;
-
--- Function Hooks
-local lOriginal_ReputationFrame_Update;
-local lOriginal_ReputationBar_OnClick;
-local lOriginal_CFAddMessage_General;
-local lOriginal_CFAddMessage_Combat;
-
-local _G = getfenv(0);
-
-----------------------------------------------------------------------
--- OnFoo
-----------------------------------------------------------------------
-
-function myReputation_OnLoad(this)
-    --Slash command
-    SlashCmdList["MYREPCOMMAND"] = myReputation_SlashHandler;
-    SLASH_MYREPCOMMAND1 = "/myreputation";
-    SLASH_MYREPCOMMAND2 = "/myrep";
-
-    -- Register Default Events
-    this:RegisterEvent("ADDON_LOADED");
-    this:RegisterEvent("PLAYER_LOGIN");
-    this:RegisterEvent("PLAYER_ENTERING_WORLD");
-    this:RegisterEvent("UNIT_AURA");
-	this:RegisterEvent("PLAYER_TARGET_CHANGED");
-    this:RegisterEvent("PLAYER_LEAVING_WORLD");
-
-    if (DEFAULT_CHAT_FRAME) then
-        myReputation_ChatMsg(MYREP_VERSION));
-    end
-end
-
-function myReputation_OnEvent(this, event, arg1)
-	if (event == "ADDON_LOADED") then
-		myReputation_AddOptionMt(myReputation_Config, myReputation_DefaultConfig);
-
-		-- Delete Unused Config Values
-		for i,v in pairs(myReputation_Config) do
-			if (myReputation_DefaultConfig[i] == nil) then
-				if (myReputation_Config.Debug == true) then
-					myReputation_ChatMsg('Clean Up Config '..i);
-				end
-				myReputation_Config[i] = nil;
-			end
-		end
-	end
-
-	-- Fired just before PLAYER_ENTERING_WORLD on login and UI Reload
-    if (event == "PLAYER_LOGIN") then
-        if (
-            (myReputation_Config.Frame > 0) and
-            (myReputation_Config.Frame <= FCF_GetNumActiveChatFrames())
-        ) then
-            REPUTATIONS_CHAT_FRAME = _G["ChatFrame"..myReputation_Config.Frame];
-        else
-            REPUTATIONS_CHAT_FRAME = DEFAULT_CHAT_FRAME;
-        end
-        myReputation_Toggle(myReputation_Config.Enabled,true);
-	end
-
-    -- Register Ingame Events
-    if (event == "PLAYER_ENTERING_WORLD") then
-        this:RegisterEvent("UPDATE_FACTION");
-	end
-
-    -- Unregister Ingame Events
-    if (event == "PLAYER_LEAVING_WORLD") then
-        this:UnregisterEvent("UPDATE_FACTION");
-    end
-
-    -- Event UPDATE_FACTION
-    if (
-        (event == "UPDATE_FACTION") and
-        (myReputation_Config.Enabled == true)
-    ) then
-        myReputation_Factions_Update();
-    end
-
-    -- Events which are usable to get numFactions > 0
-    if ((event == "UNIT_AURA") or (event == "PLAYER_TARGET_CHANGED")) then
-		-- Save Session StartRep
-		if (not mySessionReputations["Darnassus"]) then
-
-	        local numFactions = GetNumFactions();
-			local factionIndex;
-	        local name, standingID, barMin, barMax, barValue, isHeader, hasRep;
-
-	        for factionIndex=1, numFactions, 1 do
-				name, _, standingID, barMin, barMax, barValue, _, _, isHeader, _, hasRep = GetFactionInfo(factionIndex);
-
-	            if (not isHeader or hasRep) then
-	                barMax = barMax - barMin;
-	                barValue = barValue - barMin;
-	                barMin = 0;
-	                mySessionReputations[name] = { };
-	                mySessionReputations[name].standingID = standingID;
-	                mySessionReputations[name].barValue = barValue;
-	                mySessionReputations[name].barMax = barMax;
-
-	            end
-	        end
-		end
-
-        this:UnregisterEvent("UNIT_AURA");
-        this:UnregisterEvent("PLAYER_TARGET_CHANGED");
-	end
-end
-
-----------------------------------------------------------------------
--- Metatable Functions
-----------------------------------------------------------------------
-
-function myReputation_AddOptionMt(options, defaults)
-	setmetatable(options, { __index = defaults });
-end
-
-----------------------------------------------------------------------
--- Other Functions
-----------------------------------------------------------------------
-
--- Send Message to Chat Frame
-function myReputation_ChatMsg(message)
-    DEFAULT_CHAT_FRAME:AddMessage(message);
-end
-
--- Send Message to Reputation Chat Frame
-function myReputation_RepMsg(message,r,g,b)
-    REPUTATIONS_CHAT_FRAME:AddMessage(message,r,g,b);
-end
-
--- Send Message to Splash Frame
-function myReputation_SplashMessage(message,r,g,b)
-    myReputation_SplashFrame:AddMessage(message, r,g,b, 1.0, UIERRORS_HOLD_TIME);
-end
-
--- SlashHandler
-function myReputation_SlashHandler(msg)
-	if (msg == MYREP_CMD_STATUS) then
-		myReputation_DisplayStatus();
-	elseif (msg == MYREP_CMD_DEBUG) then
-		myReputation_Toggle_Options("Debug");
-	else
-		InterfaceOptionsFrame_OpenToCategory(MYREP_NAME);
-	end;
-end
-
-function myReputation_DisplayStatus()
-	if (myReputation_Config.Enabled == true) then
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_ON));
-	else
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_OFF));
-	end
-	if (myReputation_Config.Debug == true) then
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_DEBUG,MYREP_MSG_ON));
-	end
-	if (myReputation_Config.Blizz == true) then
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_BLIZZ,MYREP_MSG_ON));
-	else
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_BLIZZ,MYREP_MSG_OFF));
-	end
-	if (myReputation_Config.More == true) then
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_MORE,MYREP_MSG_ON));
-	else
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_MORE,MYREP_MSG_OFF));
-	end
-	if (myReputation_Config.Splash == true) then
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_SPLASH,MYREP_MSG_ON));
-	else
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_SPLASH,MYREP_MSG_OFF));
-	end
-	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_FRAME,myReputation_Config.Frame));
-	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,'Info',myReputation_Config.Info));
-	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,'Tooltip',myReputation_Config.Tooltip));
-end
-
--- Toggles
-function myReputation_Toggle(toggle,init)
-    myReputation_Config.Enabled = toggle;
-
-    if (toggle == true) then
-        --Hook
-        if (not lOriginal_ReputationFrame_Update) then
-            if (init ~= true) then
-                myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_ON,"."));
-            end
-            lOriginal_ReputationFrame_Update = ReputationFrame_Update;
-            ReputationFrame_Update = myReputation_Frame_Update_New;
-        end
-        if (not lOriginal_ReputationBar_OnClick) then
-            lOriginal_ReputationBar_OnClick = ReputationBar_OnClick;
-            ReputationBar_OnClick = myReputation_ReputationBar_OnClick;
-        end
-        if (not lOriginal_CFAddMessage_General) then
-            lOriginal_CFAddMessage_General = _G["ChatFrame1"].AddMessage;
-            _G["ChatFrame1"].AddMessage = myReputation_CFAddMessage_Allgemein;
-        end
-        if (not lOriginal_CFAddMessage_Combat) then
-            lOriginal_CFAddMessage_Combat = _G["ChatFrame2"].AddMessage;
-            _G["ChatFrame2"].AddMessage = myReputation_CFAddMessage_Kampflog;
-        end
-
-		if (ReputationDetailFrame:GetScript("OnShow") == nil) then
-			ReputationDetailFrame:HookScript("OnShow", function(self, event)
-				if (myReputation_Config.Enabled) then
-					myReputation_ReputationDetailFrame:Show();
-				end
-			end)
-		end
-		if (ReputationDetailFrame:GetScript("OnHide") == nil) then
-			ReputationDetailFrame:HookScript("OnHide", function(self, event)
-				myReputation_ReputationDetailFrame:Hide();
-			end)
-		end
-	else
-        --Unhook
-        if (lOriginal_ReputationFrame_Update) then
-            if (init ~= true) then
-                myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_OFF,"."));
-            end
-            ReputationFrame_Update = lOriginal_ReputationFrame_Update;
-            lOriginal_ReputationFrame_Update = nil;
-        end
-        if (lOriginal_CFAddMessage_General) then
-            _G["ChatFrame1"].AddMessage = lOriginal_CFAddMessage_General;
-            lOriginal_CFAddMessage_General = nil;
-        end
-        if (lOriginal_CFAddMessage_Combat) then
-            _G["ChatFrame2"].AddMessage = lOriginal_CFAddMessage_Combat;
-            lOriginal_CFAddMessage_Combat = nil;
-        end
-    end
-end
-
-function myReputation_Toggle_Options(option)
-    if (myReputation_Config[option] == true) then
-        myReputation_Config[option] = false;
-        myReputation_ChatMsg(format(MYREP_MSG_FORMAT,_G["MYREP_MSG_"..string.upper(option)],MYREP_MSG_OFF,"."));
-    else
-        myReputation_Config[option] = true;
-        myReputation_ChatMsg(format(MYREP_MSG_FORMAT,_G["MYREP_MSG_"..string.upper(option)],MYREP_MSG_ON,"."));
-    end
-end
-
-function myReputation_ChatFrame_Change(checked,value)  --Checked will always be 0
-	local number = tonumber(value);
-	if (
-		(value ~= nil) and
-		(number > 0) and
-		(number ~= 2) and
-		(number <= FCF_GetNumActiveChatFrames())
-	) then
-		myReputation_Config.Frame = number;
-		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_FRAME,myReputation_Config.Frame,"."));
-		REPUTATIONS_CHAT_FRAME = _G["ChatFrame"..myReputation_Config.Frame];
-		myReputation_RepMsg(MYREP_MSG_NOTIFY,1.0,1.0,0.0);
-	else
-		myReputation_ChatMsg(format(MYREP_MSG_INVALID_FRAME,FCF_GetNumActiveChatFrames()));
-	end
-end
-
--- Hooked Functions
-function myReputation_CFAddMessage_Allgemein(self, msg, ...)
-    if (
-		(myReputation_Config.Blizz == false) and
-        (msg ~= nil) and
-        (
-            string.find(msg, MYREP_REGEXP_CHANGED) or
-            string.find(msg, MYREP_REGEXP_DECREASED) or
-            string.find(msg, MYREP_REGEXP_DECREASED_GENERIC) or
-            string.find(msg, MYREP_REGEXP_INCREASED) or
-            string.find(msg, MYREP_REGEXP_INCREASED_GENERIC)
-        )
-    ) then
-		if (myReputation_Config.Debug == true) then
-			myReputation_RepMsg("Blizzard Meldung in Frame 1 abgefangen");
-        end
-    else
-        lOriginal_CFAddMessage_General(self, msg, ...);
-    end
-end
-
-function myReputation_CFAddMessage_Kampflog(self, msg, ...)
-    if (
-		(myReputation_Config.Blizz == false) and
-        (msg ~= nil) and
-        (
-            string.find(msg, MYREP_REGEXP_CHANGED) or
-            string.find(msg, MYREP_REGEXP_DECREASED) or
-            string.find(msg, MYREP_REGEXP_DECREASED_GENERIC) or
-            string.find(msg, MYREP_REGEXP_INCREASED) or
-            string.find(msg, MYREP_REGEXP_INCREASED_GENERIC)
-        )
-    ) then
-		if (myReputation_Config.Debug == true) then
-			myReputation_RepMsg("Blizzard Meldung in Frame 2 abgefangen");
-        end
-    else
-        lOriginal_CFAddMessage_Combat(self, msg, ...);
-    end
-end
-
-function myReputation_ReputationBar_OnClick(self)
-	lOriginal_ReputationBar_OnClick(self);
-
-	if (myReputation_Config.Debug == true) then
-		myReputation_RepMsg("ReputationBar_OnClick Faction "..self.index);
-	end
-
-	if (ReputationDetailFrame:IsVisible()) then
-		local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(self.index);
-		local color = FACTION_BAR_COLORS[standingID];
-
-		--Normalize Values
-		barMax = barMax - barMin;
-		barValue = barValue - barMin;
-		barMin = 0;
-
-		local text = GetText("FACTION_STANDING_LABEL"..standingID, gender);
-		local absolute = barValue.."/"..barMax;
-		local percent = format("%.1f%%", barValue / barMax * 100);
-		local difference = 0;
-
-		if (mySessionReputations[name]) then
-			-- No change in standing
-			if (mySessionReputations[name].standingID == standingID) then
-				difference = barValue - mySessionReputations[name].barValue;
-
-			-- Reputation went up and reached next standing
-			elseif (mySessionReputations[name].standingID < standingID) then
-				difference = barValue + mySessionReputations[name].barMax - mySessionReputations[name].barValue;
-
-			-- Reputation went down and reached next standing
-			else
-				difference = barMax - barValue + mySessionReputations[name].barValue;
-			end
-		end
-
-		myReputation_ReputationDetailFrameDetails:SetTextColor(color.r, color.g, color.b);
-		myReputation_ReputationDetailFrameText:SetText(
-			format(MYREP_MSG_FORMAT, MYREP_INFO_TEXT..":", text)
-		);
-		myReputation_ReputationDetailFrameAbsolute:SetText(
-			format(MYREP_MSG_FORMAT, MYREP_INFO_ABSOLUTE..":", absolute)
-		);
-		myReputation_ReputationDetailFramePercent:SetText(
-			format(MYREP_MSG_FORMAT, MYREP_INFO_PERCENT..":", percent)
-		);
-		myReputation_ReputationDetailFrameDifference:SetText(
-			format(MYREP_MSG_FORMAT, MYREP_INFO_DIFFERENCE..":", difference)
-		);
-	end
-end
-
-function myReputation_Frame_Update_New()
-    lOriginal_ReputationFrame_Update();
-
-	local info = myReputation_Explode(myReputation_Config.Info, ',');
-	local tooltip = myReputation_Explode(myReputation_Config.Tooltip, ',');
-
-	local numFactions = GetNumFactions();
-	local factionIndex, factionRow, factionTitle, factionStanding, factionBar, factionButton, factionLeftLine, factionBottomLine, factionBackground, color, tooltipStanding;
-	local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild;
-	local atWarIndicator, rightBarTexture;
-    local factionCompleteInfo, factionTooltip, difference;
-
-	local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame);
-
-	local gender = UnitSex("player");
-	local guildName = GetGuildInfo("player");
-
-	local i;
-
-    for i=1, NUM_FACTIONS_DISPLAYED, 1 do
-        factionIndex = factionOffset + i;
-		factionRow = _G["ReputationBar"..i];
-		factionBar = _G["ReputationBar"..i.."ReputationBar"];
-		factionTitle = _G["ReputationBar"..i.."FactionName"];
-		factionButton = _G["ReputationBar"..i.."ExpandOrCollapseButton"];
-		factionLeftLine = _G["ReputationBar"..i.."LeftLine"];
-		factionBottomLine = _G["ReputationBar"..i.."BottomLine"];
-		factionStanding = _G["ReputationBar"..i.."ReputationBarFactionStanding"];
-		factionBackground = _G["ReputationBar"..i.."Background"];
-
-		if (factionIndex <= numFactions) then
-			name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
-			factionTitle:SetText(name);
-
-			local factionStandingtext = GetText("FACTION_STANDING_LABEL"..standingID, gender);
-
-			--Normalize Values
-			barMax = barMax - barMin;
-			barValue = barValue - barMin;
-			barMin = 0;
-
-			if (
-				(not isHeader or hasRep) and
-				(factionStanding:GetText() ~= nil)
-			) then
-                local difference = 0;
-
-				-- guild name was not available on login
-				if (mySessionReputations[name] == nil and guildName ~= nil and name == guildName) then
-					bakName = name;
-					name = GUILD_REPUTATION;
-				end
-
-				if (mySessionReputations[name]) then
-                    -- No change in standing
-                    if (mySessionReputations[name].standingID == standingID) then
-						difference = barValue - mySessionReputations[name].barValue;
-
-                    -- Reputation went up and reached next standing
-                    elseif (mySessionReputations[name].standingID < standingID) then
-						difference = barValue + mySessionReputations[name].barMax - mySessionReputations[name].barValue;
-
-                    -- Reputation went down and reached next standing
-                    else
-						difference = barMax - barValue + mySessionReputations[name].barValue;
-                    end
-                end
-
-                local join;
-
-				-- guild name should be displayed
-				if (bakName ~= nil) then
-					name = bakName;
-				end
-
-				factionCompleteInfo = factionStandingtext;
-				if (type(info) == 'table') then
-					factionCompleteInfo = '';
-					join = '';
-
-					for i,v in ipairs(info) do
-						if (v == 'Text') then
-							factionCompleteInfo = factionCompleteInfo..join..factionStandingtext;
-						end
-						if (v == 'Percent') then
-							factionCompleteInfo = factionCompleteInfo..join..format("%.1f%%", barValue / barMax * 100);
-						end
-						if (v == 'Absolute') then
-							factionCompleteInfo = factionCompleteInfo..join..barValue.."/"..barMax;
-						end
-						if (v == 'Difference') then
-							if (join ~= '') then
-								factionCompleteInfo = factionCompleteInfo..join..'('..difference..')';
-							else
-								factionCompleteInfo = factionCompleteInfo..join..difference;
-							end
-						end
-						join = ' ';
-					end
-				end
-
-				factionTooltip = barValue.."/"..barMax;
-				if (type(tooltip) == 'table') then
-					factionTooltip = '';
-					join = '';
-
-					for i,v in ipairs(tooltip) do
-						if (v == 'Text') then
-							factionTooltip = factionTooltip..join..factionStandingtext;
-						end
-						if (v == 'Percent') then
-							factionTooltip = factionTooltip..join..format("%.1f%%", barValue / barMax * 100);
-						end
-						if (v == 'Absolute') then
-							factionTooltip = factionTooltip..join..barValue.."/"..barMax;
-						end
-						if (v == 'Difference') then
-							if (join ~= '') then
-								factionTooltip = factionTooltip..join..'('..difference..')';
-							else
-								factionTooltip = factionTooltip..join..difference;
-							end
-						end
-						join = ' ';
-					end
-				end
-
-				factionStanding:SetText(factionCompleteInfo);
-				factionRow.standingText = factionCompleteInfo;
-				factionRow.tooltip = HIGHLIGHT_FONT_COLOR_CODE..factionTooltip..FONT_COLOR_CODE_CLOSE;
-			end
-		end
-	end
-end
-
--- Event UPDATE_FACTION
-function myReputation_Factions_Update()
-    local numFactions = GetNumFactions();
-    local factionIndex, factionStanding, factionBar, factionHeader, color;
-    local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild;
-    local barMax, barMin, barValue;
-    local RepRemains, RepRepeats, RepBefore, RepActual, RepNext;
-
-    for factionIndex=1, numFactions, 1 do
-	    name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
-
-	    if (not isHeader or hasRep) then
-		    barMax = barMax - barMin;
-		    barValue = barValue - barMin;
-		    barMin = 0;
-
-		    if (myReputations[name]) then
-			    if (standingID ~= 1) then
-					RepBefore = _G["FACTION_STANDING_LABEL"..standingID-1];
-			    end
-
-			    RepActual = _G["FACTION_STANDING_LABEL"..standingID];
-
-			    if (standingID ~= 8) then
-					RepNext = _G["FACTION_STANDING_LABEL"..standingID+1];
-			    end
-
-			    local RawTotal = 0;
-
-			    -- No change in standing
-			    if (myReputations[name].standingID == standingID) then
-				    local difference = barValue - myReputations[name].barValue;
-
-				    -- Reputation went up
-				    if ((difference > 0) and (myReputations[name].standingID == standingID)) then
-						myReputation_RepMsg(format(MYREP_NOTIFICATION_GAINED,name,difference,barValue,barMax), 0.5, 0.5, 1.0);
-					    if (standingID ~= 8) then
-						    RepRemains = barMax - barValue;
-						    RepRepeats = RepRemains / difference;
-						    if (RepRepeats > floor(RepRepeats)) then
-								RepRepeats = ceil(RepRepeats);
-						    end
-						    if (myReputation_Config.More == true) then
-								myReputation_RepMsg(format(MYREP_NOTIFICATION_NEEDED,RepRemains,RepRepeats,RepNext), 1.0, 1.0, 0.0);
-						    end
-					    end
-
-				    -- Reputation went down
-				    elseif ((difference < 0) and (myReputations[name].standingID == standingID)) then
-					    difference = abs(difference);
-					    myReputation_RepMsg(format(MYREP_NOTIFICATION_LOST,name,difference,barValue,barMax), 0.5, 0.5, 1.0);
-					    if (standingID ~= 1) then
-						    RepRemains = barValue;
-						    RepRepeats = RepRemains / difference;
-						    if (RepRepeats > floor(RepRepeats)) then
-								RepRepeats = ceil(RepRepeats);
-						    end
-						    if (myReputation_Config.More == true) then
-								myReputation_RepMsg(format(MYREP_NOTIFICATION_LEFT,RepRemains,RepRepeats,RepBefore), 1.0, 1.0, 0.0);
-						    end
-					    end
-				    end
-
-			    -- Reputation went up and reached next standing
-			    elseif (myReputations[name].standingID < standingID) then
-				    RepRemains = barMax - barValue;
-				    RawTotal = barValue + myReputations[name].barMax - myReputations[name].barValue;
-				    myReputation_RepMsg(format(MYREP_NOTIFICATION_GAINED,name,RawTotal,barValue,barMax), 0.5, 0.5, 1.0);
-				    myReputation_RepMsg(format(MYREP_NOTIFICATION_REACHED,RepActual,name), 1.0, 1.0, 0.0);
-				    if (standingID ~= 8) then
-						RepRepeats = RepRemains / RawTotal;
-					    if (RepRepeats > floor(RepRepeats)) then
-							RepRepeats = ceil(RepRepeats);
-					    end
-					    if (myReputation_Config.More == true) then
-							myReputation_RepMsg(format(MYREP_NOTIFICATION_NEEDED,RepRemains,RepRepeats,RepNext), 1.0, 1.0, 0.0);
-					    end
-				    end
-
-				    if (myReputation_Config.Splash == true) then
-						myReputation_SplashMessage(name.." - "..RepActual.."!", 1.0, 1.0, 0.0);
-				    end
-
-			    -- Reputation went down and reached next standing
-			    else
-				    RepRemains = barValue;
-				    RawTotal = barMax - barValue + myReputations[name].barValue;
-				    myReputation_RepMsg(format(MYREP_NOTIFICATION_LOST,name,RawTotal,barValue,barMax), 0.5, 0.5, 1.0);
-				    myReputation_RepMsg(format(MYREP_NOTIFICATION_REACHED,RepActual,name), 1.0, 1.0, 0.0);
-				    if (standingID ~= 1) then
-					    RepRepeats = RepRemains / RawTotal;
-					    if (RepRepeats > floor(RepRepeats)) then
-							RepRepeats = ceil(RepRepeats);
-					    end
-					    if (myReputation_Config.More == true) then
-							myReputation_RepMsg(format(MYREP_NOTIFICATION_LEFT,RepRemains,RepRepeats,RepBefore), 1.0, 1.0, 0.0);
-					    end
-				    end
-
-				    if (myReputation_Config.Splash == true) then
-						myReputation_SplashMessage(name.." - "..RepActual.."!", 1.0, 1.0, 0.0);
-				    end
-			    end
-
-		    else
-				myReputations[name] = { };
-		    end
-
-		    myReputations[name].standingID = standingID;
-		    myReputations[name].barValue = barValue;
-		    myReputations[name].barMax = barMax;
-		    myReputations[name].atWarWith = atWarWith;
-	    end
-    end
-end
\ No newline at end of file
diff --git a/myReputation.toc b/myReputation.toc
deleted file mode 100755
index 19bf123..0000000
--- a/myReputation.toc
+++ /dev/null
@@ -1,20 +0,0 @@
-## Interface: 11304
-## Title: myReputation Classic |cff00aa001.0.0.11304|r
-## Author: HonorGoG of the Titan Panel Development Team
-## Version: 1.0.0.11304
-## SavedVariables: myReputation_Config
-## Notes: Changed display of reputation window and chat messages
-## X-Credits: Egris, Karmond and Larry @ Baelgun.
-## X-Category: Interface Enhancements
-## X-Email: honorgog@gmail.com
-## X-Localizations: enUS, deDE
-## X-License: All rights reserved
-## X-WoWI-ID:
-
-localization.lua
-localization.de.lua
-
-myReputation.xml
-myReputation.lua
-myReputationOptions.xml
-myReputationOptions.lua
diff --git a/myReputation.xml b/myReputation.xml
deleted file mode 100755
index 0de467d..0000000
--- a/myReputation.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
-..\FrameXML\UI.xsd">
-
-	<Frame name="myReputation_Frame" hidden="false" parent="UIParent">
-		<Scripts>
-			<OnLoad>
-				myReputation_OnLoad(self);
-			</OnLoad>
-			<OnEvent>
-				myReputation_OnEvent(self, event, arg1);
-			</OnEvent>
-		</Scripts>
-		<Frames>
-			<MessageFrame name="myReputation_SplashFrame" frameStrata="LOW" insertMode="TOP" parent="UIParent" toplevel="true">
-				<Size>
-					<AbsDimension x="512" y="100"></AbsDimension>
-				</Size>
-				<Anchors>
-					<Anchor point="CENTER">
-						<Offset>
-							<AbsDimension x="0" y="100"></AbsDimension>
-						</Offset>
-					</Anchor>
-				</Anchors>
-				<FontString inherits="NumberFontNormalHuge" justifyH="CENTER"></FontString>
-			</MessageFrame>
-		</Frames>
-	</Frame>
-
-	<Frame name="myReputation_ReputationDetailFrame" enableMouse="true" hidden="true">
-		<Size>
-			<AbsDimension x="172" y="143"/>
-		</Size>
-		<Anchors>
-			<Anchor point="TOPLEFT" relativeTo="ReputationFrame" relativePoint="TOPRIGHT">
-				<Offset>
-					<AbsDimension x="0" y="-188"/>
-				</Offset>
-			</Anchor>
-		</Anchors>
-		<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
-			<BackgroundInsets>
-				<AbsInset left="11" right="12" top="12" bottom="11"/>
-			</BackgroundInsets>
-			<TileSize>
-				<AbsValue val="32"/>
-			</TileSize>
-			<EdgeSize>
-				<AbsValue val="32"/>
-			</EdgeSize>
-		</Backdrop>
-		<Layers>
-			<Layer level="ARTWORK">
-				<FontString name="$parentDetails" inherits="GameFontHighlight" justifyH="LEFT" text="MYREP_MSG_MORE">
-					<Size>
-						<AbsDimension x="140" y="0"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT">
-							<Offset>
-								<AbsDimension x="20" y="-21"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</FontString>
-				<FontString name="$parentText" inherits="GameFontHighlightSmall" justifyH="LEFT">
-					<Size>
-						<AbsDimension x="140" y="0"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT" relativeTo="$parentDetails" relativePoint="BOTTOMLEFT">
-							<Offset>
-								<AbsDimension x="0" y="-8"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</FontString>
-				<FontString name="$parentAbsolute" inherits="GameFontHighlightSmall" justifyH="LEFT">
-					<Size>
-						<AbsDimension x="140" y="0"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT" relativeTo="$parentText" relativePoint="BOTTOMLEFT">
-							<Offset>
-								<AbsDimension x="0" y="-6"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</FontString>
-				<FontString name="$parentPercent" inherits="GameFontHighlightSmall" justifyH="LEFT">
-					<Size>
-						<AbsDimension x="140" y="0"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT" relativeTo="$parentAbsolute" relativePoint="BOTTOMLEFT">
-							<Offset>
-								<AbsDimension x="0" y="-6"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</FontString>
-				<FontString name="$parentDifference" inherits="GameFontHighlightSmall" justifyH="LEFT">
-					<Size>
-						<AbsDimension x="140" y="0"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT" relativeTo="$parentPercent" relativePoint="BOTTOMLEFT">
-							<Offset>
-								<AbsDimension x="0" y="-6"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</FontString>
-				<Texture file="Interface\PaperDollInfoFrame\UI-Character-Reputation-DetailBackground">
-					<Size>
-						<AbsDimension x="211" y="128"/>
-					</Size>
-					<Anchors>
-						<Anchor point="TOPLEFT">
-							<Offset>
-								<AbsDimension x="11" y="-11"/>
-							</Offset>
-						</Anchor>
-					</Anchors>
-				</Texture>
-			</Layer>
-		</Layers>
-	</Frame>
-
-</Ui>
\ No newline at end of file
diff --git a/myReputationClassic.lua b/myReputationClassic.lua
new file mode 100755
index 0000000..4279dba
--- /dev/null
+++ b/myReputationClassic.lua
@@ -0,0 +1,635 @@
+----------------------------------------------------------------------
+-- Variables
+----------------------------------------------------------------------
+
+-- Basic Addon Variables
+MYREP_NAME = "myReputationClassic";
+MYREP_VERSION = GetAddOnMetadata("myReputation", "Version") or "N/A";
+MYREP_VERSION_STRING = "|cffffd700myReputation Classic "..GREEN_FONT_COLOR_CODE..MYREP_VERSION.."|cffffd700 by |cffff8c00HonorGoG";
+MYREP_MSG_FORMAT = "%s |cffffff00%s|r";
+MYREP_REGEXP_CHANGED = string.gsub( FACTION_STANDING_CHANGED, "'?%%[1|2]$s'?", "%(.+)" );
+MYREP_REGEXP_DECREASED = string.gsub( FACTION_STANDING_DECREASED, "'?%%[s|d]'?", "%(.+)" );
+MYREP_REGEXP_DECREASED_GENERIC = string.gsub( FACTION_STANDING_DECREASED_GENERIC, "'?%%[s|d]'?", "%(.+)" );
+MYREP_REGEXP_INCREASED = string.gsub( FACTION_STANDING_INCREASED, "'?%%[s|d]'?", "%(.+)" );
+MYREP_REGEXP_INCREASED_GENERIC = string.gsub( FACTION_STANDING_INCREASED_GENERIC, "'?%%[s|d]'?", "%(.+)" );
+
+-- Configuration Variables and their Standard Values
+myReputation_Config = { };
+myReputation_DefaultConfig = { };
+myReputation_DefaultConfig.Enabled = true;
+myReputation_DefaultConfig.More = true;
+myReputation_DefaultConfig.Blizz = false;
+myReputation_DefaultConfig.Splash = true;
+myReputation_DefaultConfig.Debug = false;
+myReputation_DefaultConfig.Frame = 1;
+myReputation_DefaultConfig.Info = 'Text';
+myReputation_DefaultConfig.Tooltip = 'Absolute';
+
+-- Temp Variables and Arrays
+myReputations = { };
+mySessionReputations = { };
+myReputation_Var = { };
+myReputation_Var.InWorld = false;
+
+-- Function Hooks
+local lOriginal_ReputationFrame_Update;
+local lOriginal_ReputationBar_OnClick;
+local lOriginal_CFAddMessage_General;
+local lOriginal_CFAddMessage_Combat;
+
+local _G = getfenv(0);
+
+----------------------------------------------------------------------
+-- OnFoo
+----------------------------------------------------------------------
+
+function myReputation_OnLoad(this)
+    --Slash command
+    SlashCmdList["MYREPCOMMAND"] = myReputation_SlashHandler;
+    SLASH_MYREPCOMMAND1 = "/myreputation";
+    SLASH_MYREPCOMMAND2 = "/myrep";
+
+    -- Register Default Events
+    this:RegisterEvent("ADDON_LOADED");
+    this:RegisterEvent("PLAYER_LOGIN");
+    this:RegisterEvent("PLAYER_ENTERING_WORLD");
+    this:RegisterEvent("UNIT_AURA");
+	this:RegisterEvent("PLAYER_TARGET_CHANGED");
+    this:RegisterEvent("PLAYER_LEAVING_WORLD");
+
+    if (DEFAULT_CHAT_FRAME) then
+        myReputation_ChatMsg(MYREP_VERSION);
+    end
+end
+
+function myReputation_OnEvent(this, event, arg1)
+	if (event == "ADDON_LOADED") then
+		myReputation_AddOptionMt(myReputation_Config, myReputation_DefaultConfig);
+
+		-- Delete Unused Config Values
+		for i,v in pairs(myReputation_Config) do
+			if (myReputation_DefaultConfig[i] == nil) then
+				if (myReputation_Config.Debug == true) then
+					myReputation_ChatMsg('Clean Up Config '..i);
+				end
+				myReputation_Config[i] = nil;
+			end
+		end
+	end
+
+	-- Fired just before PLAYER_ENTERING_WORLD on login and UI Reload
+    if (event == "PLAYER_LOGIN") then
+        if (
+            (myReputation_Config.Frame > 0) and
+            (myReputation_Config.Frame <= FCF_GetNumActiveChatFrames())
+        ) then
+            REPUTATIONS_CHAT_FRAME = _G["ChatFrame"..myReputation_Config.Frame];
+        else
+            REPUTATIONS_CHAT_FRAME = DEFAULT_CHAT_FRAME;
+        end
+        myReputation_Toggle(myReputation_Config.Enabled,true);
+	end
+
+    -- Register Ingame Events
+    if (event == "PLAYER_ENTERING_WORLD") then
+        this:RegisterEvent("UPDATE_FACTION");
+	end
+
+    -- Unregister Ingame Events
+    if (event == "PLAYER_LEAVING_WORLD") then
+        this:UnregisterEvent("UPDATE_FACTION");
+    end
+
+    -- Event UPDATE_FACTION
+    if (
+        (event == "UPDATE_FACTION") and
+        (myReputation_Config.Enabled == true)
+    ) then
+        myReputation_Factions_Update();
+    end
+
+    -- Events which are usable to get numFactions > 0
+    if ((event == "UNIT_AURA") or (event == "PLAYER_TARGET_CHANGED")) then
+		-- Save Session StartRep
+		if (not mySessionReputations["Darnassus"]) then
+
+	        local numFactions = GetNumFactions();
+			local factionIndex;
+	        local name, standingID, barMin, barMax, barValue, isHeader, hasRep;
+
+	        for factionIndex=1, numFactions, 1 do
+				name, _, standingID, barMin, barMax, barValue, _, _, isHeader, _, hasRep = GetFactionInfo(factionIndex);
+
+	            if (not isHeader or hasRep) then
+	                barMax = barMax - barMin;
+	                barValue = barValue - barMin;
+	                barMin = 0;
+	                mySessionReputations[name] = { };
+	                mySessionReputations[name].standingID = standingID;
+	                mySessionReputations[name].barValue = barValue;
+	                mySessionReputations[name].barMax = barMax;
+
+	            end
+	        end
+		end
+
+        this:UnregisterEvent("UNIT_AURA");
+        this:UnregisterEvent("PLAYER_TARGET_CHANGED");
+	end
+end
+
+----------------------------------------------------------------------
+-- Metatable Functions
+----------------------------------------------------------------------
+
+function myReputation_AddOptionMt(options, defaults)
+	setmetatable(options, { __index = defaults });
+end
+
+----------------------------------------------------------------------
+-- Other Functions
+----------------------------------------------------------------------
+
+-- Send Message to Chat Frame
+function myReputation_ChatMsg(message)
+    DEFAULT_CHAT_FRAME:AddMessage(message);
+end
+
+-- Send Message to Reputation Chat Frame
+function myReputation_RepMsg(message,r,g,b)
+    REPUTATIONS_CHAT_FRAME:AddMessage(message,r,g,b);
+end
+
+-- Send Message to Splash Frame
+function myReputation_SplashMessage(message,r,g,b)
+    myReputation_SplashFrame:AddMessage(message, r,g,b, 1.0, UIERRORS_HOLD_TIME);
+end
+
+-- SlashHandler
+function myReputation_SlashHandler(msg)
+	if (msg == MYREP_CMD_STATUS) then
+		myReputation_DisplayStatus();
+	elseif (msg == MYREP_CMD_DEBUG) then
+		myReputation_Toggle_Options("Debug");
+	else
+		InterfaceOptionsFrame_OpenToCategory(MYREP_NAME);
+	end;
+end
+
+function myReputation_DisplayStatus()
+	if (myReputation_Config.Enabled == true) then
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_ON));
+	else
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_OFF));
+	end
+	if (myReputation_Config.Debug == true) then
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_DEBUG,MYREP_MSG_ON));
+	end
+	if (myReputation_Config.Blizz == true) then
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_BLIZZ,MYREP_MSG_ON));
+	else
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_BLIZZ,MYREP_MSG_OFF));
+	end
+	if (myReputation_Config.More == true) then
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_MORE,MYREP_MSG_ON));
+	else
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_MORE,MYREP_MSG_OFF));
+	end
+	if (myReputation_Config.Splash == true) then
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_SPLASH,MYREP_MSG_ON));
+	else
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_SPLASH,MYREP_MSG_OFF));
+	end
+	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_FRAME,myReputation_Config.Frame));
+	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,'Info',myReputation_Config.Info));
+	myReputation_ChatMsg(format(MYREP_MSG_FORMAT,'Tooltip',myReputation_Config.Tooltip));
+end
+
+-- Toggles
+function myReputation_Toggle(toggle,init)
+    myReputation_Config.Enabled = toggle;
+
+    if (toggle == true) then
+        --Hook
+        if (not lOriginal_ReputationFrame_Update) then
+            if (init ~= true) then
+                myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_ON,"."));
+            end
+            lOriginal_ReputationFrame_Update = ReputationFrame_Update;
+            ReputationFrame_Update = myReputation_Frame_Update_New;
+        end
+        if (not lOriginal_ReputationBar_OnClick) then
+            lOriginal_ReputationBar_OnClick = ReputationBar_OnClick;
+            ReputationBar_OnClick = myReputation_ReputationBar_OnClick;
+        end
+        if (not lOriginal_CFAddMessage_General) then
+            lOriginal_CFAddMessage_General = _G["ChatFrame1"].AddMessage;
+            _G["ChatFrame1"].AddMessage = myReputation_CFAddMessage_Allgemein;
+        end
+        if (not lOriginal_CFAddMessage_Combat) then
+            lOriginal_CFAddMessage_Combat = _G["ChatFrame2"].AddMessage;
+            _G["ChatFrame2"].AddMessage = myReputation_CFAddMessage_Kampflog;
+        end
+
+		if (ReputationDetailFrame:GetScript("OnShow") == nil) then
+			ReputationDetailFrame:HookScript("OnShow", function(self, event)
+				if (myReputation_Config.Enabled) then
+					myReputation_ReputationDetailFrame:Show();
+				end
+			end)
+		end
+		if (ReputationDetailFrame:GetScript("OnHide") == nil) then
+			ReputationDetailFrame:HookScript("OnHide", function(self, event)
+				myReputation_ReputationDetailFrame:Hide();
+			end)
+		end
+	else
+        --Unhook
+        if (lOriginal_ReputationFrame_Update) then
+            if (init ~= true) then
+                myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_NAME,MYREP_MSG_OFF,"."));
+            end
+            ReputationFrame_Update = lOriginal_ReputationFrame_Update;
+            lOriginal_ReputationFrame_Update = nil;
+        end
+        if (lOriginal_CFAddMessage_General) then
+            _G["ChatFrame1"].AddMessage = lOriginal_CFAddMessage_General;
+            lOriginal_CFAddMessage_General = nil;
+        end
+        if (lOriginal_CFAddMessage_Combat) then
+            _G["ChatFrame2"].AddMessage = lOriginal_CFAddMessage_Combat;
+            lOriginal_CFAddMessage_Combat = nil;
+        end
+    end
+end
+
+function myReputation_Toggle_Options(option)
+    if (myReputation_Config[option] == true) then
+        myReputation_Config[option] = false;
+        myReputation_ChatMsg(format(MYREP_MSG_FORMAT,_G["MYREP_MSG_"..string.upper(option)],MYREP_MSG_OFF,"."));
+    else
+        myReputation_Config[option] = true;
+        myReputation_ChatMsg(format(MYREP_MSG_FORMAT,_G["MYREP_MSG_"..string.upper(option)],MYREP_MSG_ON,"."));
+    end
+end
+
+function myReputation_ChatFrame_Change(checked,value)  --Checked will always be 0
+	local number = tonumber(value);
+	if (
+		(value ~= nil) and
+		(number > 0) and
+		(number ~= 2) and
+		(number <= FCF_GetNumActiveChatFrames())
+	) then
+		myReputation_Config.Frame = number;
+		myReputation_ChatMsg(format(MYREP_MSG_FORMAT,MYREP_MSG_FRAME,myReputation_Config.Frame,"."));
+		REPUTATIONS_CHAT_FRAME = _G["ChatFrame"..myReputation_Config.Frame];
+		myReputation_RepMsg(MYREP_MSG_NOTIFY,1.0,1.0,0.0);
+	else
+		myReputation_ChatMsg(format(MYREP_MSG_INVALID_FRAME,FCF_GetNumActiveChatFrames()));
+	end
+end
+
+-- Hooked Functions
+function myReputation_CFAddMessage_Allgemein(self, msg, ...)
+    if (
+		(myReputation_Config.Blizz == false) and
+        (msg ~= nil) and
+        (
+            string.find(msg, MYREP_REGEXP_CHANGED) or
+            string.find(msg, MYREP_REGEXP_DECREASED) or
+            string.find(msg, MYREP_REGEXP_DECREASED_GENERIC) or
+            string.find(msg, MYREP_REGEXP_INCREASED) or
+            string.find(msg, MYREP_REGEXP_INCREASED_GENERIC)
+        )
+    ) then
+		if (myReputation_Config.Debug == true) then
+			myReputation_RepMsg("Blizzard Meldung in Frame 1 abgefangen");
+        end
+    else
+        lOriginal_CFAddMessage_General(self, msg, ...);
+    end
+end
+
+function myReputation_CFAddMessage_Kampflog(self, msg, ...)
+    if (
+		(myReputation_Config.Blizz == false) and
+        (msg ~= nil) and
+        (
+            string.find(msg, MYREP_REGEXP_CHANGED) or
+            string.find(msg, MYREP_REGEXP_DECREASED) or
+            string.find(msg, MYREP_REGEXP_DECREASED_GENERIC) or
+            string.find(msg, MYREP_REGEXP_INCREASED) or
+            string.find(msg, MYREP_REGEXP_INCREASED_GENERIC)
+        )
+    ) then
+		if (myReputation_Config.Debug == true) then
+			myReputation_RepMsg("Blizzard Meldung in Frame 2 abgefangen");
+        end
+    else
+        lOriginal_CFAddMessage_Combat(self, msg, ...);
+    end
+end
+
+function myReputation_ReputationBar_OnClick(self)
+	lOriginal_ReputationBar_OnClick(self);
+
+	if (myReputation_Config.Debug == true) then
+		myReputation_RepMsg("ReputationBar_OnClick Faction "..self.index);
+	end
+
+	if (ReputationDetailFrame:IsVisible()) then
+		local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(self.index);
+		local color = FACTION_BAR_COLORS[standingID];
+
+		--Normalize Values
+		barMax = barMax - barMin;
+		barValue = barValue - barMin;
+		barMin = 0;
+
+		local text = GetText("FACTION_STANDING_LABEL"..standingID, gender);
+		local absolute = barValue.."/"..barMax;
+		local percent = format("%.1f%%", barValue / barMax * 100);
+		local difference = 0;
+
+		if (mySessionReputations[name]) then
+			-- No change in standing
+			if (mySessionReputations[name].standingID == standingID) then
+				difference = barValue - mySessionReputations[name].barValue;
+
+			-- Reputation went up and reached next standing
+			elseif (mySessionReputations[name].standingID < standingID) then
+				difference = barValue + mySessionReputations[name].barMax - mySessionReputations[name].barValue;
+
+			-- Reputation went down and reached next standing
+			else
+				difference = barMax - barValue + mySessionReputations[name].barValue;
+			end
+		end
+
+		myReputation_ReputationDetailFrameDetails:SetTextColor(color.r, color.g, color.b);
+		myReputation_ReputationDetailFrameText:SetText(
+			format(MYREP_MSG_FORMAT, MYREP_INFO_TEXT..":", text)
+		);
+		myReputation_ReputationDetailFrameAbsolute:SetText(
+			format(MYREP_MSG_FORMAT, MYREP_INFO_ABSOLUTE..":", absolute)
+		);
+		myReputation_ReputationDetailFramePercent:SetText(
+			format(MYREP_MSG_FORMAT, MYREP_INFO_PERCENT..":", percent)
+		);
+		myReputation_ReputationDetailFrameDifference:SetText(
+			format(MYREP_MSG_FORMAT, MYREP_INFO_DIFFERENCE..":", difference)
+		);
+	end
+end
+
+function myReputation_Frame_Update_New()
+    lOriginal_ReputationFrame_Update();
+
+	local info = myReputation_Explode(myReputation_Config.Info, ',');
+	local tooltip = myReputation_Explode(myReputation_Config.Tooltip, ',');
+
+	local numFactions = GetNumFactions();
+	local factionIndex, factionRow, factionTitle, factionStanding, factionBar, factionButton, factionLeftLine, factionBottomLine, factionBackground, color, tooltipStanding;
+	local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild;
+	local atWarIndicator, rightBarTexture;
+    local factionCompleteInfo, factionTooltip, difference;
+
+	local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame);
+
+	local gender = UnitSex("player");
+	local guildName = GetGuildInfo("player");
+
+	local i;
+
+    for i=1, NUM_FACTIONS_DISPLAYED, 1 do
+        factionIndex = factionOffset + i;
+		factionRow = _G["ReputationBar"..i];
+		factionBar = _G["ReputationBar"..i.."ReputationBar"];
+		factionTitle = _G["ReputationBar"..i.."FactionName"];
+		factionButton = _G["ReputationBar"..i.."ExpandOrCollapseButton"];
+		factionLeftLine = _G["ReputationBar"..i.."LeftLine"];
+		factionBottomLine = _G["ReputationBar"..i.."BottomLine"];
+		factionStanding = _G["ReputationBar"..i.."ReputationBarFactionStanding"];
+		factionBackground = _G["ReputationBar"..i.."Background"];
+
+		if (factionIndex <= numFactions) then
+			name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
+			factionTitle:SetText(name);
+
+			local factionStandingtext = GetText("FACTION_STANDING_LABEL"..standingID, gender);
+
+			--Normalize Values
+			barMax = barMax - barMin;
+			barValue = barValue - barMin;
+			barMin = 0;
+
+			if (
+				(not isHeader or hasRep) and
+				(factionStanding:GetText() ~= nil)
+			) then
+                local difference = 0;
+
+				-- guild name was not available on login
+				if (mySessionReputations[name] == nil and guildName ~= nil and name == guildName) then
+					bakName = name;
+					name = GUILD_REPUTATION;
+				end
+
+				if (mySessionReputations[name]) then
+                    -- No change in standing
+                    if (mySessionReputations[name].standingID == standingID) then
+						difference = barValue - mySessionReputations[name].barValue;
+
+                    -- Reputation went up and reached next standing
+                    elseif (mySessionReputations[name].standingID < standingID) then
+						difference = barValue + mySessionReputations[name].barMax - mySessionReputations[name].barValue;
+
+                    -- Reputation went down and reached next standing
+                    else
+						difference = barMax - barValue + mySessionReputations[name].barValue;
+                    end
+                end
+
+                local join;
+
+				-- guild name should be displayed
+				if (bakName ~= nil) then
+					name = bakName;
+				end
+
+				factionCompleteInfo = factionStandingtext;
+				if (type(info) == 'table') then
+					factionCompleteInfo = '';
+					join = '';
+
+					for i,v in ipairs(info) do
+						if (v == 'Text') then
+							factionCompleteInfo = factionCompleteInfo..join..factionStandingtext;
+						end
+						if (v == 'Percent') then
+							factionCompleteInfo = factionCompleteInfo..join..format("%.1f%%", barValue / barMax * 100);
+						end
+						if (v == 'Absolute') then
+							factionCompleteInfo = factionCompleteInfo..join..barValue.."/"..barMax;
+						end
+						if (v == 'Difference') then
+							if (join ~= '') then
+								factionCompleteInfo = factionCompleteInfo..join..'('..difference..')';
+							else
+								factionCompleteInfo = factionCompleteInfo..join..difference;
+							end
+						end
+						join = ' ';
+					end
+				end
+
+				factionTooltip = barValue.."/"..barMax;
+				if (type(tooltip) == 'table') then
+					factionTooltip = '';
+					join = '';
+
+					for i,v in ipairs(tooltip) do
+						if (v == 'Text') then
+							factionTooltip = factionTooltip..join..factionStandingtext;
+						end
+						if (v == 'Percent') then
+							factionTooltip = factionTooltip..join..format("%.1f%%", barValue / barMax * 100);
+						end
+						if (v == 'Absolute') then
+							factionTooltip = factionTooltip..join..barValue.."/"..barMax;
+						end
+						if (v == 'Difference') then
+							if (join ~= '') then
+								factionTooltip = factionTooltip..join..'('..difference..')';
+							else
+								factionTooltip = factionTooltip..join..difference;
+							end
+						end
+						join = ' ';
+					end
+				end
+
+				factionStanding:SetText(factionCompleteInfo);
+				factionRow.standingText = factionCompleteInfo;
+				factionRow.tooltip = HIGHLIGHT_FONT_COLOR_CODE..factionTooltip..FONT_COLOR_CODE_CLOSE;
+			end
+		end
+	end
+end
+
+-- Event UPDATE_FACTION
+function myReputation_Factions_Update()
+    local numFactions = GetNumFactions();
+    local factionIndex, factionStanding, factionBar, factionHeader, color;
+    local name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild;
+    local barMax, barMin, barValue;
+    local RepRemains, RepRepeats, RepBefore, RepActual, RepNext;
+
+    for factionIndex=1, numFactions, 1 do
+	    name, description, standingID, barMin, barMax, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
+
+	    if (not isHeader or hasRep) then
+		    barMax = barMax - barMin;
+		    barValue = barValue - barMin;
+		    barMin = 0;
+
+		    if (myReputations[name]) then
+			    if (standingID ~= 1) then
+					RepBefore = _G["FACTION_STANDING_LABEL"..standingID-1];
+			    end
+
+			    RepActual = _G["FACTION_STANDING_LABEL"..standingID];
+
+			    if (standingID ~= 8) then
+					RepNext = _G["FACTION_STANDING_LABEL"..standingID+1];
+			    end
+
+			    local RawTotal = 0;
+
+			    -- No change in standing
+			    if (myReputations[name].standingID == standingID) then
+				    local difference = barValue - myReputations[name].barValue;
+
+				    -- Reputation went up
+				    if ((difference > 0) and (myReputations[name].standingID == standingID)) then
+						myReputation_RepMsg(format(MYREP_NOTIFICATION_GAINED,name,difference,barValue,barMax), 0.5, 0.5, 1.0);
+					    if (standingID ~= 8) then
+						    RepRemains = barMax - barValue;
+						    RepRepeats = RepRemains / difference;
+						    if (RepRepeats > floor(RepRepeats)) then
+								RepRepeats = ceil(RepRepeats);
+						    end
+						    if (myReputation_Config.More == true) then
+								myReputation_RepMsg(format(MYREP_NOTIFICATION_NEEDED,RepRemains,RepRepeats,RepNext), 1.0, 1.0, 0.0);
+						    end
+					    end
+
+				    -- Reputation went down
+				    elseif ((difference < 0) and (myReputations[name].standingID == standingID)) then
+					    difference = abs(difference);
+					    myReputation_RepMsg(format(MYREP_NOTIFICATION_LOST,name,difference,barValue,barMax), 0.5, 0.5, 1.0);
+					    if (standingID ~= 1) then
+						    RepRemains = barValue;
+						    RepRepeats = RepRemains / difference;
+						    if (RepRepeats > floor(RepRepeats)) then
+								RepRepeats = ceil(RepRepeats);
+						    end
+						    if (myReputation_Config.More == true) then
+								myReputation_RepMsg(format(MYREP_NOTIFICATION_LEFT,RepRemains,RepRepeats,RepBefore), 1.0, 1.0, 0.0);
+						    end
+					    end
+				    end
+
+			    -- Reputation went up and reached next standing
+			    elseif (myReputations[name].standingID < standingID) then
+				    RepRemains = barMax - barValue;
+				    RawTotal = barValue + myReputations[name].barMax - myReputations[name].barValue;
+				    myReputation_RepMsg(format(MYREP_NOTIFICATION_GAINED,name,RawTotal,barValue,barMax), 0.5, 0.5, 1.0);
+				    myReputation_RepMsg(format(MYREP_NOTIFICATION_REACHED,RepActual,name), 1.0, 1.0, 0.0);
+				    if (standingID ~= 8) then
+						RepRepeats = RepRemains / RawTotal;
+					    if (RepRepeats > floor(RepRepeats)) then
+							RepRepeats = ceil(RepRepeats);
+					    end
+					    if (myReputation_Config.More == true) then
+							myReputation_RepMsg(format(MYREP_NOTIFICATION_NEEDED,RepRemains,RepRepeats,RepNext), 1.0, 1.0, 0.0);
+					    end
+				    end
+
+				    if (myReputation_Config.Splash == true) then
+						myReputation_SplashMessage(name.." - "..RepActual.."!", 1.0, 1.0, 0.0);
+				    end
+
+			    -- Reputation went down and reached next standing
+			    else
+				    RepRemains = barValue;
+				    RawTotal = barMax - barValue + myReputations[name].barValue;
+				    myReputation_RepMsg(format(MYREP_NOTIFICATION_LOST,name,RawTotal,barValue,barMax), 0.5, 0.5, 1.0);
+				    myReputation_RepMsg(format(MYREP_NOTIFICATION_REACHED,RepActual,name), 1.0, 1.0, 0.0);
+				    if (standingID ~= 1) then
+					    RepRepeats = RepRemains / RawTotal;
+					    if (RepRepeats > floor(RepRepeats)) then
+							RepRepeats = ceil(RepRepeats);
+					    end
+					    if (myReputation_Config.More == true) then
+							myReputation_RepMsg(format(MYREP_NOTIFICATION_LEFT,RepRemains,RepRepeats,RepBefore), 1.0, 1.0, 0.0);
+					    end
+				    end
+
+				    if (myReputation_Config.Splash == true) then
+						myReputation_SplashMessage(name.." - "..RepActual.."!", 1.0, 1.0, 0.0);
+				    end
+			    end
+
+		    else
+				myReputations[name] = { };
+		    end
+
+		    myReputations[name].standingID = standingID;
+		    myReputations[name].barValue = barValue;
+		    myReputations[name].barMax = barMax;
+		    myReputations[name].atWarWith = atWarWith;
+	    end
+    end
+end
\ No newline at end of file
diff --git a/myReputationClassic.toc b/myReputationClassic.toc
new file mode 100755
index 0000000..9e622b7
--- /dev/null
+++ b/myReputationClassic.toc
@@ -0,0 +1,15 @@
+## Interface: 11304
+## Title: myReputation Classic |cff00aa001.0.0.11304|r
+## Author: HonorGoG of the Titan Panel Development Team
+## Version: 1.0.0.11304
+## SavedVariables: myReputation_Config
+## Notes: Changed display of reputation window and chat messages
+## X-Credits: Egris, Karmond and Larry @ Baelgun.
+## X-Category: Interface Enhancements
+## X-Email: honorgog@gmail.com
+## X-Localizations: enUS, deDE
+## X-License: All rights reserved
+## X-WoWI-ID:
+
+myReputationClassic.xml
+myReputationOptions.xml
diff --git a/myReputationClassic.xml b/myReputationClassic.xml
new file mode 100755
index 0000000..8c82539
--- /dev/null
+++ b/myReputationClassic.xml
@@ -0,0 +1,134 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
+..\FrameXML\UI.xsd">
+
+	<Script file="localization.lua"/>
+	<Script file="localization.de.lua"/>
+	<Script file="myReputationClassic.lua"/>
+
+	<Frame name="myReputation_Frame" hidden="false" parent="UIParent">
+		<Scripts>
+			<OnLoad>
+				myReputation_OnLoad(self);
+			</OnLoad>
+			<OnEvent>
+				myReputation_OnEvent(self, event, arg1);
+			</OnEvent>
+		</Scripts>
+		<Frames>
+			<MessageFrame name="myReputation_SplashFrame" frameStrata="LOW" insertMode="TOP" parent="UIParent" toplevel="true">
+				<Size>
+					<AbsDimension x="512" y="100"></AbsDimension>
+				</Size>
+				<Anchors>
+					<Anchor point="CENTER">
+						<Offset>
+							<AbsDimension x="0" y="100"></AbsDimension>
+						</Offset>
+					</Anchor>
+				</Anchors>
+				<FontString inherits="NumberFontNormalHuge" justifyH="CENTER"></FontString>
+			</MessageFrame>
+		</Frames>
+	</Frame>
+
+	<Frame name="myReputation_ReputationDetailFrame" enableMouse="true" hidden="true">
+		<Size>
+			<AbsDimension x="172" y="143"/>
+		</Size>
+		<Anchors>
+			<Anchor point="TOPLEFT" relativeTo="ReputationFrame" relativePoint="TOPRIGHT">
+				<Offset>
+					<AbsDimension x="0" y="-188"/>
+				</Offset>
+			</Anchor>
+		</Anchors>
+		<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
+			<BackgroundInsets>
+				<AbsInset left="11" right="12" top="12" bottom="11"/>
+			</BackgroundInsets>
+			<TileSize>
+				<AbsValue val="32"/>
+			</TileSize>
+			<EdgeSize>
+				<AbsValue val="32"/>
+			</EdgeSize>
+		</Backdrop>
+		<Layers>
+			<Layer level="ARTWORK">
+				<FontString name="$parentDetails" inherits="GameFontHighlight" justifyH="LEFT" text="MYREP_MSG_MORE">
+					<Size>
+						<AbsDimension x="140" y="0"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT">
+							<Offset>
+								<AbsDimension x="20" y="-21"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</FontString>
+				<FontString name="$parentText" inherits="GameFontHighlightSmall" justifyH="LEFT">
+					<Size>
+						<AbsDimension x="140" y="0"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT" relativeTo="$parentDetails" relativePoint="BOTTOMLEFT">
+							<Offset>
+								<AbsDimension x="0" y="-8"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</FontString>
+				<FontString name="$parentAbsolute" inherits="GameFontHighlightSmall" justifyH="LEFT">
+					<Size>
+						<AbsDimension x="140" y="0"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT" relativeTo="$parentText" relativePoint="BOTTOMLEFT">
+							<Offset>
+								<AbsDimension x="0" y="-6"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</FontString>
+				<FontString name="$parentPercent" inherits="GameFontHighlightSmall" justifyH="LEFT">
+					<Size>
+						<AbsDimension x="140" y="0"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT" relativeTo="$parentAbsolute" relativePoint="BOTTOMLEFT">
+							<Offset>
+								<AbsDimension x="0" y="-6"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</FontString>
+				<FontString name="$parentDifference" inherits="GameFontHighlightSmall" justifyH="LEFT">
+					<Size>
+						<AbsDimension x="140" y="0"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT" relativeTo="$parentPercent" relativePoint="BOTTOMLEFT">
+							<Offset>
+								<AbsDimension x="0" y="-6"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</FontString>
+				<Texture file="Interface\PaperDollInfoFrame\UI-Character-Reputation-DetailBackground">
+					<Size>
+						<AbsDimension x="211" y="128"/>
+					</Size>
+					<Anchors>
+						<Anchor point="TOPLEFT">
+							<Offset>
+								<AbsDimension x="11" y="-11"/>
+							</Offset>
+						</Anchor>
+					</Anchors>
+				</Texture>
+			</Layer>
+		</Layers>
+	</Frame>
+
+</Ui>
\ No newline at end of file
diff --git a/myReputationOptions.xml b/myReputationOptions.xml
index 97dacf1..b924ee1 100755
--- a/myReputationOptions.xml
+++ b/myReputationOptions.xml
@@ -1,6 +1,8 @@
 <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
 ..\..\FrameXML\UI.xsd">

+	<Script file="myReputationOptions.lua" />
+
 	<Frame name="myReputation_OptionsPanel" hidden="false">
 		<Layers>
 			<Layer level="ARTWORK">