Quantcast

Messy commit is messy

Adrian L Lange [08-06-09 - 15:42]
Messy commit is messy
Filename
libs/CallbackHandler-1.0.lua
libs/LibSharedMedia-3.0.lua
libs/LibStub.lua
libs/tekKonfig/tekKonfig.xml
pMinimap.lua
pMinimap.toc
diff --git a/libs/CallbackHandler-1.0.lua b/libs/CallbackHandler-1.0.lua
index ca21919..06befb3 100644
--- a/libs/CallbackHandler-1.0.lua
+++ b/libs/CallbackHandler-1.0.lua
@@ -1,239 +1,239 @@
---[[ $Id: CallbackHandler-1.0.lua 504 2008-02-07 11:04:06Z nevcairiel $ ]]
-local MAJOR, MINOR = "CallbackHandler-1.0", 3
-local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not CallbackHandler then return end -- No upgrade needed
-
-local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
-
-local type = type
-local pcall = pcall
-local pairs = pairs
-local assert = assert
-local concat = table.concat
-local loadstring = loadstring
-local next = next
-local select = select
-local type = type
-local xpcall = xpcall
-
-local function errorhandler(err)
-	return geterrorhandler()(err)
-end
-
-local function CreateDispatcher(argCount)
-	local code = [[
-	local next, xpcall, eh = ...
-
-	local method, ARGS
-	local function call() method(ARGS) end
-
-	local function dispatch(handlers, ...)
-		local index
-		index, method = next(handlers)
-		if not method then return end
-		local OLD_ARGS = ARGS
-		ARGS = ...
-		repeat
-			xpcall(call, eh)
-			index, method = next(handlers, index)
-		until not method
-		ARGS = OLD_ARGS
-	end
-
-	return dispatch
-	]]
-
-	local ARGS, OLD_ARGS = {}, {}
-	for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
-	code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
-	return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
-end
-
-local Dispatchers = setmetatable({}, {__index=function(self, argCount)
-	local dispatcher = CreateDispatcher(argCount)
-	rawset(self, argCount, dispatcher)
-	return dispatcher
-end})
-
---------------------------------------------------------------------------
--- CallbackHandler:New
---
---   target            - target object to embed public APIs in
---   RegisterName      - name of the callback registration API, default "RegisterCallback"
---   UnregisterName    - name of the callback unregistration API, default "UnregisterCallback"
---   UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
-
-function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
-	-- TODO: Remove this after beta has gone out
-	assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
-
-	RegisterName = RegisterName or "RegisterCallback"
-	UnregisterName = UnregisterName or "UnregisterCallback"
-	if UnregisterAllName==nil then	-- false is used to indicate "don't want this method"
-		UnregisterAllName = "UnregisterAllCallbacks"
-	end
-
-	-- we declare all objects and exported APIs inside this closure to quickly gain access
-	-- to e.g. function names, the "target" parameter, etc
-
-
-	-- Create the registry object
-	local events = setmetatable({}, meta)
-	local registry = { recurse=0, events=events }
-
-	-- registry:Fire() - fires the given event/message into the registry
-	function registry:Fire(eventname, ...)
-		if not rawget(events, eventname) or not next(events[eventname]) then return end
-		local oldrecurse = registry.recurse
-		registry.recurse = oldrecurse + 1
-
-		Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
-
-		registry.recurse = oldrecurse
-
-		if registry.insertQueue and oldrecurse==0 then
-			-- Something in one of our callbacks wanted to register more callbacks; they got queued
-			for eventname,callbacks in pairs(registry.insertQueue) do
-				local first = not rawget(events, eventname) or not next(events[eventname])	-- test for empty before. not test for one member after. that one member may have been overwritten.
-				for self,func in pairs(callbacks) do
-					events[eventname][self] = func
-					-- fire OnUsed callback?
-					if first and registry.OnUsed then
-						registry.OnUsed(registry, target, eventname)
-						first = nil
-					end
-				end
-			end
-			registry.insertQueue = nil
-		end
-	end
-
-	-- Registration of a callback, handles:
-	--   self["method"], leads to self["method"](self, ...)
-	--   self with function ref, leads to functionref(...)
-	--   "addonId" (instead of self) with function ref, leads to functionref(...)
-	-- all with an optional arg, which, if present, gets passed as first argument (after self if present)
-	target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
-		if type(eventname) ~= "string" then
-			error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
-		end
-
-		method = method or eventname
-
-		local first = not rawget(events, eventname) or not next(events[eventname])	-- test for empty before. not test for one member after. that one member may have been overwritten.
-
-		if type(method) ~= "string" and type(method) ~= "function" then
-			error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
-		end
-
-		local regfunc
-
-		if type(method) == "string" then
-			-- self["method"] calling style
-			if type(self) ~= "table" then
-				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
-			elseif self==target then
-				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
-			elseif type(self[method]) ~= "function" then
-				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
-			end
-
-			if select("#",...)>=1 then	-- this is not the same as testing for arg==nil!
-				local arg=select(1,...)
-				regfunc = function(...) self[method](self,arg,...) end
-			else
-				regfunc = function(...) self[method](self,...) end
-			end
-		else
-			-- function ref with self=object or self="addonId"
-			if type(self)~="table" and type(self)~="string" then
-				error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
-			end
-
-			if select("#",...)>=1 then	-- this is not the same as testing for arg==nil!
-				local arg=select(1,...)
-				regfunc = function(...) method(arg,...) end
-			else
-				regfunc = method
-			end
-		end
-
-
-		if events[eventname][self] or registry.recurse<1 then
-		-- if registry.recurse<1 then
-			-- we're overwriting an existing entry, or not currently recursing. just set it.
-			events[eventname][self] = regfunc
-			-- fire OnUsed callback?
-			if registry.OnUsed and first then
-				registry.OnUsed(registry, target, eventname)
-			end
-		else
-			-- we're currently processing a callback in this registry, so delay the registration of this new entry!
-			-- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
-			registry.insertQueue = registry.insertQueue or setmetatable({},meta)
-			registry.insertQueue[eventname][self] = regfunc
-		end
-	end
-
-	-- Unregister a callback
-	target[UnregisterName] = function(self, eventname)
-		if not self or self==target then
-			error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
-		end
-		if type(eventname) ~= "string" then
-			error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
-		end
-		if rawget(events, eventname) and events[eventname][self] then
-			events[eventname][self] = nil
-			-- Fire OnUnused callback?
-			if registry.OnUnused and not next(events[eventname]) then
-				registry.OnUnused(registry, target, eventname)
-			end
-		end
-		if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
-			registry.insertQueue[eventname][self] = nil
-		end
-	end
-
-	-- OPTIONAL: Unregister all callbacks for given selfs/addonIds
-	if UnregisterAllName then
-		target[UnregisterAllName] = function(...)
-			if select("#",...)<1 then
-				error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
-			end
-			if select("#",...)==1 and ...==target then
-				error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
-			end
-
-
-			for i=1,select("#",...) do
-				local self = select(i,...)
-				if registry.insertQueue then
-					for eventname, callbacks in pairs(registry.insertQueue) do
-						if callbacks[self] then
-							callbacks[self] = nil
-						end
-					end
-				end
-				for eventname, callbacks in pairs(events) do
-					if callbacks[self] then
-						callbacks[self] = nil
-						-- Fire OnUnused callback?
-						if registry.OnUnused and not next(callbacks) then
-							registry.OnUnused(registry, target, eventname)
-						end
-					end
-				end
-			end
-		end
-	end
-
-	return registry
-end
-
-
--- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
--- try to upgrade old implicit embeds since the system is selfcontained and
--- relies on closures to work.
-
+--[[ $Id: CallbackHandler-1.0.lua 504 2008-02-07 11:04:06Z nevcairiel $ ]]
+local MAJOR, MINOR = "CallbackHandler-1.0", 3
+local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
+
+if not CallbackHandler then return end -- No upgrade needed
+
+local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
+
+local type = type
+local pcall = pcall
+local pairs = pairs
+local assert = assert
+local concat = table.concat
+local loadstring = loadstring
+local next = next
+local select = select
+local type = type
+local xpcall = xpcall
+
+local function errorhandler(err)
+	return geterrorhandler()(err)
+end
+
+local function CreateDispatcher(argCount)
+	local code = [[
+	local next, xpcall, eh = ...
+
+	local method, ARGS
+	local function call() method(ARGS) end
+
+	local function dispatch(handlers, ...)
+		local index
+		index, method = next(handlers)
+		if not method then return end
+		local OLD_ARGS = ARGS
+		ARGS = ...
+		repeat
+			xpcall(call, eh)
+			index, method = next(handlers, index)
+		until not method
+		ARGS = OLD_ARGS
+	end
+
+	return dispatch
+	]]
+
+	local ARGS, OLD_ARGS = {}, {}
+	for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
+	code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
+	return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
+end
+
+local Dispatchers = setmetatable({}, {__index=function(self, argCount)
+	local dispatcher = CreateDispatcher(argCount)
+	rawset(self, argCount, dispatcher)
+	return dispatcher
+end})
+
+--------------------------------------------------------------------------
+-- CallbackHandler:New
+--
+--   target            - target object to embed public APIs in
+--   RegisterName      - name of the callback registration API, default "RegisterCallback"
+--   UnregisterName    - name of the callback unregistration API, default "UnregisterCallback"
+--   UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
+
+function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
+	-- TODO: Remove this after beta has gone out
+	assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
+
+	RegisterName = RegisterName or "RegisterCallback"
+	UnregisterName = UnregisterName or "UnregisterCallback"
+	if UnregisterAllName==nil then	-- false is used to indicate "don't want this method"
+		UnregisterAllName = "UnregisterAllCallbacks"
+	end
+
+	-- we declare all objects and exported APIs inside this closure to quickly gain access
+	-- to e.g. function names, the "target" parameter, etc
+
+
+	-- Create the registry object
+	local events = setmetatable({}, meta)
+	local registry = { recurse=0, events=events }
+
+	-- registry:Fire() - fires the given event/message into the registry
+	function registry:Fire(eventname, ...)
+		if not rawget(events, eventname) or not next(events[eventname]) then return end
+		local oldrecurse = registry.recurse
+		registry.recurse = oldrecurse + 1
+
+		Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
+
+		registry.recurse = oldrecurse
+
+		if registry.insertQueue and oldrecurse==0 then
+			-- Something in one of our callbacks wanted to register more callbacks; they got queued
+			for eventname,callbacks in pairs(registry.insertQueue) do
+				local first = not rawget(events, eventname) or not next(events[eventname])	-- test for empty before. not test for one member after. that one member may have been overwritten.
+				for self,func in pairs(callbacks) do
+					events[eventname][self] = func
+					-- fire OnUsed callback?
+					if first and registry.OnUsed then
+						registry.OnUsed(registry, target, eventname)
+						first = nil
+					end
+				end
+			end
+			registry.insertQueue = nil
+		end
+	end
+
+	-- Registration of a callback, handles:
+	--   self["method"], leads to self["method"](self, ...)
+	--   self with function ref, leads to functionref(...)
+	--   "addonId" (instead of self) with function ref, leads to functionref(...)
+	-- all with an optional arg, which, if present, gets passed as first argument (after self if present)
+	target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
+		if type(eventname) ~= "string" then
+			error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
+		end
+
+		method = method or eventname
+
+		local first = not rawget(events, eventname) or not next(events[eventname])	-- test for empty before. not test for one member after. that one member may have been overwritten.
+
+		if type(method) ~= "string" and type(method) ~= "function" then
+			error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
+		end
+
+		local regfunc
+
+		if type(method) == "string" then
+			-- self["method"] calling style
+			if type(self) ~= "table" then
+				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
+			elseif self==target then
+				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
+			elseif type(self[method]) ~= "function" then
+				error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
+			end
+
+			if select("#",...)>=1 then	-- this is not the same as testing for arg==nil!
+				local arg=select(1,...)
+				regfunc = function(...) self[method](self,arg,...) end
+			else
+				regfunc = function(...) self[method](self,...) end
+			end
+		else
+			-- function ref with self=object or self="addonId"
+			if type(self)~="table" and type(self)~="string" then
+				error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
+			end
+
+			if select("#",...)>=1 then	-- this is not the same as testing for arg==nil!
+				local arg=select(1,...)
+				regfunc = function(...) method(arg,...) end
+			else
+				regfunc = method
+			end
+		end
+
+
+		if events[eventname][self] or registry.recurse<1 then
+		-- if registry.recurse<1 then
+			-- we're overwriting an existing entry, or not currently recursing. just set it.
+			events[eventname][self] = regfunc
+			-- fire OnUsed callback?
+			if registry.OnUsed and first then
+				registry.OnUsed(registry, target, eventname)
+			end
+		else
+			-- we're currently processing a callback in this registry, so delay the registration of this new entry!
+			-- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
+			registry.insertQueue = registry.insertQueue or setmetatable({},meta)
+			registry.insertQueue[eventname][self] = regfunc
+		end
+	end
+
+	-- Unregister a callback
+	target[UnregisterName] = function(self, eventname)
+		if not self or self==target then
+			error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
+		end
+		if type(eventname) ~= "string" then
+			error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
+		end
+		if rawget(events, eventname) and events[eventname][self] then
+			events[eventname][self] = nil
+			-- Fire OnUnused callback?
+			if registry.OnUnused and not next(events[eventname]) then
+				registry.OnUnused(registry, target, eventname)
+			end
+		end
+		if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
+			registry.insertQueue[eventname][self] = nil
+		end
+	end
+
+	-- OPTIONAL: Unregister all callbacks for given selfs/addonIds
+	if UnregisterAllName then
+		target[UnregisterAllName] = function(...)
+			if select("#",...)<1 then
+				error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
+			end
+			if select("#",...)==1 and ...==target then
+				error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
+			end
+
+
+			for i=1,select("#",...) do
+				local self = select(i,...)
+				if registry.insertQueue then
+					for eventname, callbacks in pairs(registry.insertQueue) do
+						if callbacks[self] then
+							callbacks[self] = nil
+						end
+					end
+				end
+				for eventname, callbacks in pairs(events) do
+					if callbacks[self] then
+						callbacks[self] = nil
+						-- Fire OnUnused callback?
+						if registry.OnUnused and not next(callbacks) then
+							registry.OnUnused(registry, target, eventname)
+						end
+					end
+				end
+			end
+		end
+	end
+
+	return registry
+end
+
+
+-- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
+-- try to upgrade old implicit embeds since the system is selfcontained and
+-- relies on closures to work.
+
diff --git a/libs/LibSharedMedia-3.0.lua b/libs/LibSharedMedia-3.0.lua
index ef062a0..44f6c09 100644
--- a/libs/LibSharedMedia-3.0.lua
+++ b/libs/LibSharedMedia-3.0.lua
@@ -1,230 +1,230 @@
---[[
-Name: LibSharedMedia-3.0
-Revision: $Revision: 58 $
-Author: Elkano (elkano@gmx.de)
-Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
-Website: http://www.wowace.com/projects/libsharedmedia-3-0/
-Description: Shared handling of media data (fonts, sounds, textures, ...) between addons.
-Dependencies: LibStub, CallbackHandler-1.0
-License: LGPL v2.1
-]]
-
-local MAJOR, MINOR = "LibSharedMedia-3.0", 90000 + tonumber(("$Revision: 58 $"):match("(%d+)"))
-local lib = LibStub:NewLibrary(MAJOR, MINOR)
-
-if not lib then return end
-
-local _G = getfenv(0)
-
-local pairs		= _G.pairs
-local type		= _G.type
-
-local band			= _G.bit.band
-
-local table_insert	= _G.table.insert
-local table_sort	= _G.table.sort
-
-local locale = GetLocale()
-local locale_is_western
-local LOCALE_MASK = 0
-lib.LOCALE_BIT_koKR		= 1
-lib.LOCALE_BIT_ruRU		= 2
-lib.LOCALE_BIT_zhCN		= 4
-lib.LOCALE_BIT_zhTW		= 8
-lib.LOCALE_BIT_western	= 128
-
-local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
-
-lib.callbacks		= lib.callbacks			or CallbackHandler:New(lib)
-
-lib.DefaultMedia	= lib.DefaultMedia		or {}
-lib.MediaList		= lib.MediaList			or {}
-lib.MediaTable		= lib.MediaTable		or {}
-lib.MediaType		= lib.MediaType			or {}
-lib.OverrideMedia	= lib.OverrideMedia		or {}
-
-local defaultMedia = lib.DefaultMedia
-local mediaList = lib.MediaList
-local mediaTable = lib.MediaTable
-local overrideMedia = lib.OverrideMedia
-
-
--- create mediatype constants
-lib.MediaType.BACKGROUND	= "background"			-- background textures
-lib.MediaType.BORDER		= "border"				-- border textures
-lib.MediaType.FONT			= "font"				-- fonts
-lib.MediaType.STATUSBAR		= "statusbar"			-- statusbar textures
-lib.MediaType.SOUND			= "sound"				-- sound files
-
--- populate lib with default Blizzard data
--- BACKGROUND
-if not lib.MediaTable.background then lib.MediaTable.background = {} end
-lib.MediaTable.background["Blizzard Dialog Background"]		= [[Interface\DialogFrame\UI-DialogBox-Background]]
-lib.MediaTable.background["Blizzard Low Health"]			= [[Interface\FullScreenTextures\LowHealth]]
-lib.MediaTable.background["Blizzard Out of Control"]		= [[Interface\FullScreenTextures\OutOfControl]]
-lib.MediaTable.background["Blizzard Parchment"]				= [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]]
-lib.MediaTable.background["Blizzard Parchment 2"]			= [[Interface\AchievementFrame\UI-Achievement-Parchment]]
-lib.MediaTable.background["Blizzard Tabard Background"]		= [[Interface\TabardFrame\TabardFrameBackground]]
-lib.MediaTable.background["Blizzard Tooltip"]				= [[Interface\Tooltips\UI-Tooltip-Background]]
-lib.MediaTable.background["Solid"]							= [[Interface\Buttons\WHITE8X8]]
-
--- BORDER
-if not lib.MediaTable.border then lib.MediaTable.border = {} end
-lib.MediaTable.border["None"]								= [[Interface\None]]
-lib.MediaTable.border["Blizzard Achievement Wood"]			= [[Interface\AchievementFrame\UI-Achievement-WoodBorder]]
-lib.MediaTable.border["Blizzard Chat Bubble"]				= [[Interface\Tooltips\ChatBubble-Backdrop]]
-lib.MediaTable.border["Blizzard Dialog"]					= [[Interface\DialogFrame\UI-DialogBox-Border]]
-lib.MediaTable.border["Blizzard Dialog Gold"]				= [[Interface\DialogFrame\UI-DialogBox-Gold-Border]]
-lib.MediaTable.border["Blizzard Party"]						= [[Interface\CHARACTERFRAME\UI-Party-Border]]
-lib.MediaTable.border["Blizzard Tooltip"]					= [[Interface\Tooltips\UI-Tooltip-Border]]
-
--- FONT
-if not lib.MediaTable.font then lib.MediaTable.font = {} end
-local SML_MT_font = lib.MediaTable.font
-if locale == "koKR" then
-	LOCALE_MASK = lib.LOCALE_BIT_koKR
---
-	SML_MT_font["굵은 글꼴"]		= [[Fonts\2002B.TTF]]
-	SML_MT_font["기본 글꼴"]		= [[Fonts\2002.TTF]]
-	SML_MT_font["데미지 글꼴"]		= [[Fonts\K_Damage.TTF]]
-	SML_MT_font["퀘스트 글꼴"]		= [[Fonts\K_Pagetext.TTF]]
---
-	lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed
---
-elseif locale == "zhCN" then
-	LOCALE_MASK = lib.LOCALE_BIT_zhCN
---
-	SML_MT_font["伤害数字"]		= [[Fonts\ZYKai_C.ttf]]
-	SML_MT_font["默认"]			= [[Fonts\ZYKai_T.ttf]]
-	SML_MT_font["聊天"]			= [[Fonts\ZYHei.ttf]]
---
-	lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed
---
-elseif locale == "zhTW" then
-	LOCALE_MASK = lib.LOCALE_BIT_zhTW
---
-	SML_MT_font["提示訊息"]		= [[Fonts\bHEI00M.ttf]]
-	SML_MT_font["聊天"]			= [[Fonts\bHEI01B.ttf]]
-	SML_MT_font["傷害數字"]		= [[Fonts\bKAI00M.ttf]]
-	SML_MT_font["預設"]			= [[Fonts\bLEI00D.ttf]]
---
-	lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed
-
-elseif locale == "ruRU" then
-	LOCALE_MASK = lib.LOCALE_BIT_ruRU
---
-	SML_MT_font["Arial Narrow"]			= [[Fonts\ARIALN.TTF]]
-	SML_MT_font["Friz Quadrata TT"]		= [[Fonts\FRIZQT__.TTF]]
-	SML_MT_font["Morpheus"]				= [[Fonts\MORPHEUS.TTF]]
-	SML_MT_font["Nimrod MT"]			= [[Fonts\NIM_____.ttf]]
-	SML_MT_font["Skurri"]				= [[Fonts\SKURRI.TTF]]
---
-	lib.DefaultMedia.font = "Friz Quadrata TT"
---
-else
-	LOCALE_MASK = lib.LOCALE_BIT_western
-	locale_is_western = true
---
-	SML_MT_font["Arial Narrow"]			= [[Fonts\ARIALN.TTF]]
-	SML_MT_font["Friz Quadrata TT"]		= [[Fonts\FRIZQT__.TTF]]
-	SML_MT_font["Morpheus"]				= [[Fonts\MORPHEUS.TTF]]
-	SML_MT_font["Skurri"]				= [[Fonts\SKURRI.TTF]]
---
-	lib.DefaultMedia.font = "Friz Quadrata TT"
---
-end
-
--- STATUSBAR
-if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end
-lib.MediaTable.statusbar["Blizzard"]						= [[Interface\TargetingFrame\UI-StatusBar]]
-lib.DefaultMedia.statusbar = "Blizzard"
-
--- SOUND
-if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
-lib.MediaTable.sound["None"]								= [[Interface\Quiet.mp3]]	-- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
-lib.DefaultMedia.sound = "None"
-
-local function rebuildMediaList(mediatype)
-	local mtable = mediaTable[mediatype]
-	if not mtable then return end
-	if not mediaList[mediatype] then mediaList[mediatype] = {} end
-	local mlist = mediaList[mediatype]
-	-- list can only get larger, so simply overwrite it
-	local i = 0
-	for k in pairs(mtable) do
-		i = i + 1
-		mlist[i] = k
-	end
-	table_sort(mlist)
-end
-
-function lib:Register(mediatype, key, data, langmask)
-	if type(mediatype) ~= "string" then
-		error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype))
-	end
-	if type(key) ~= "string" then
-		error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key))
-	end
-	if mediatype == lib.MediaType.FONT  and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end
-	mediatype = mediatype:lower()
-	if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
-	local mtable = mediaTable[mediatype]
-	if mtable[key] then return false end
-
-	mtable[key] = data
-	rebuildMediaList(mediatype)
-	self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
-	return true
-end
-
-function lib:Fetch(mediatype, key, noDefault)
-	local mtt = mediaTable[mediatype]
-	local overridekey = overrideMedia[mediatype]
-	local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil
-
-	return result
-end
-
-function lib:IsValid(mediatype, key)
-	return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false
-end
-
-function lib:HashTable(mediatype)
-	return mediaTable[mediatype]
-end
-
-function lib:List(mediatype)
-	if not mediaTable[mediatype] then
-		return nil
-	end
-	if not mediaList[mediatype] then
-		rebuildMediaList(mediatype)
-	end
-	return mediaList[mediatype]
-end
-
-function lib:GetGlobal(mediatype)
-	return overrideMedia[mediatype]
-end
-
-function lib:SetGlobal(mediatype, key)
-	if not mediaTable[mediatype] then
-		return false
-	end
-	overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil
-	self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype])
-	return true
-end
-
-function lib:GetDefault(mediatype)
-	return defaultMedia[mediatype]
-end
-
-function lib:SetDefault(mediatype, key)
-	if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then
-		defaultMedia[mediatype] = key
-		return true
-	else
-		return false
-	end
-end
+--[[
+Name: LibSharedMedia-3.0
+Revision: $Revision: 58 $
+Author: Elkano (elkano@gmx.de)
+Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com)
+Website: http://www.wowace.com/projects/libsharedmedia-3-0/
+Description: Shared handling of media data (fonts, sounds, textures, ...) between addons.
+Dependencies: LibStub, CallbackHandler-1.0
+License: LGPL v2.1
+]]
+
+local MAJOR, MINOR = "LibSharedMedia-3.0", 90000 + tonumber(("$Revision: 58 $"):match("(%d+)"))
+local lib = LibStub:NewLibrary(MAJOR, MINOR)
+
+if not lib then return end
+
+local _G = getfenv(0)
+
+local pairs		= _G.pairs
+local type		= _G.type
+
+local band			= _G.bit.band
+
+local table_insert	= _G.table.insert
+local table_sort	= _G.table.sort
+
+local locale = GetLocale()
+local locale_is_western
+local LOCALE_MASK = 0
+lib.LOCALE_BIT_koKR		= 1
+lib.LOCALE_BIT_ruRU		= 2
+lib.LOCALE_BIT_zhCN		= 4
+lib.LOCALE_BIT_zhTW		= 8
+lib.LOCALE_BIT_western	= 128
+
+local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
+
+lib.callbacks		= lib.callbacks			or CallbackHandler:New(lib)
+
+lib.DefaultMedia	= lib.DefaultMedia		or {}
+lib.MediaList		= lib.MediaList			or {}
+lib.MediaTable		= lib.MediaTable		or {}
+lib.MediaType		= lib.MediaType			or {}
+lib.OverrideMedia	= lib.OverrideMedia		or {}
+
+local defaultMedia = lib.DefaultMedia
+local mediaList = lib.MediaList
+local mediaTable = lib.MediaTable
+local overrideMedia = lib.OverrideMedia
+
+
+-- create mediatype constants
+lib.MediaType.BACKGROUND	= "background"			-- background textures
+lib.MediaType.BORDER		= "border"				-- border textures
+lib.MediaType.FONT			= "font"				-- fonts
+lib.MediaType.STATUSBAR		= "statusbar"			-- statusbar textures
+lib.MediaType.SOUND			= "sound"				-- sound files
+
+-- populate lib with default Blizzard data
+-- BACKGROUND
+if not lib.MediaTable.background then lib.MediaTable.background = {} end
+lib.MediaTable.background["Blizzard Dialog Background"]		= [[Interface\DialogFrame\UI-DialogBox-Background]]
+lib.MediaTable.background["Blizzard Low Health"]			= [[Interface\FullScreenTextures\LowHealth]]
+lib.MediaTable.background["Blizzard Out of Control"]		= [[Interface\FullScreenTextures\OutOfControl]]
+lib.MediaTable.background["Blizzard Parchment"]				= [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]]
+lib.MediaTable.background["Blizzard Parchment 2"]			= [[Interface\AchievementFrame\UI-Achievement-Parchment]]
+lib.MediaTable.background["Blizzard Tabard Background"]		= [[Interface\TabardFrame\TabardFrameBackground]]
+lib.MediaTable.background["Blizzard Tooltip"]				= [[Interface\Tooltips\UI-Tooltip-Background]]
+lib.MediaTable.background["Solid"]							= [[Interface\Buttons\WHITE8X8]]
+
+-- BORDER
+if not lib.MediaTable.border then lib.MediaTable.border = {} end
+lib.MediaTable.border["None"]								= [[Interface\None]]
+lib.MediaTable.border["Blizzard Achievement Wood"]			= [[Interface\AchievementFrame\UI-Achievement-WoodBorder]]
+lib.MediaTable.border["Blizzard Chat Bubble"]				= [[Interface\Tooltips\ChatBubble-Backdrop]]
+lib.MediaTable.border["Blizzard Dialog"]					= [[Interface\DialogFrame\UI-DialogBox-Border]]
+lib.MediaTable.border["Blizzard Dialog Gold"]				= [[Interface\DialogFrame\UI-DialogBox-Gold-Border]]
+lib.MediaTable.border["Blizzard Party"]						= [[Interface\CHARACTERFRAME\UI-Party-Border]]
+lib.MediaTable.border["Blizzard Tooltip"]					= [[Interface\Tooltips\UI-Tooltip-Border]]
+
+-- FONT
+if not lib.MediaTable.font then lib.MediaTable.font = {} end
+local SML_MT_font = lib.MediaTable.font
+if locale == "koKR" then
+	LOCALE_MASK = lib.LOCALE_BIT_koKR
+--
+	SML_MT_font["굵은 글꼴"]		= [[Fonts\2002B.TTF]]
+	SML_MT_font["기본 글꼴"]		= [[Fonts\2002.TTF]]
+	SML_MT_font["데미지 글꼴"]		= [[Fonts\K_Damage.TTF]]
+	SML_MT_font["퀘스트 글꼴"]		= [[Fonts\K_Pagetext.TTF]]
+--
+	lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed
+--
+elseif locale == "zhCN" then
+	LOCALE_MASK = lib.LOCALE_BIT_zhCN
+--
+	SML_MT_font["伤害数字"]		= [[Fonts\ZYKai_C.ttf]]
+	SML_MT_font["默认"]			= [[Fonts\ZYKai_T.ttf]]
+	SML_MT_font["聊天"]			= [[Fonts\ZYHei.ttf]]
+--
+	lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed
+--
+elseif locale == "zhTW" then
+	LOCALE_MASK = lib.LOCALE_BIT_zhTW
+--
+	SML_MT_font["提示訊息"]		= [[Fonts\bHEI00M.ttf]]
+	SML_MT_font["聊天"]			= [[Fonts\bHEI01B.ttf]]
+	SML_MT_font["傷害數字"]		= [[Fonts\bKAI00M.ttf]]
+	SML_MT_font["預設"]			= [[Fonts\bLEI00D.ttf]]
+--
+	lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed
+
+elseif locale == "ruRU" then
+	LOCALE_MASK = lib.LOCALE_BIT_ruRU
+--
+	SML_MT_font["Arial Narrow"]			= [[Fonts\ARIALN.TTF]]
+	SML_MT_font["Friz Quadrata TT"]		= [[Fonts\FRIZQT__.TTF]]
+	SML_MT_font["Morpheus"]				= [[Fonts\MORPHEUS.TTF]]
+	SML_MT_font["Nimrod MT"]			= [[Fonts\NIM_____.ttf]]
+	SML_MT_font["Skurri"]				= [[Fonts\SKURRI.TTF]]
+--
+	lib.DefaultMedia.font = "Friz Quadrata TT"
+--
+else
+	LOCALE_MASK = lib.LOCALE_BIT_western
+	locale_is_western = true
+--
+	SML_MT_font["Arial Narrow"]			= [[Fonts\ARIALN.TTF]]
+	SML_MT_font["Friz Quadrata TT"]		= [[Fonts\FRIZQT__.TTF]]
+	SML_MT_font["Morpheus"]				= [[Fonts\MORPHEUS.TTF]]
+	SML_MT_font["Skurri"]				= [[Fonts\SKURRI.TTF]]
+--
+	lib.DefaultMedia.font = "Friz Quadrata TT"
+--
+end
+
+-- STATUSBAR
+if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end
+lib.MediaTable.statusbar["Blizzard"]						= [[Interface\TargetingFrame\UI-StatusBar]]
+lib.DefaultMedia.statusbar = "Blizzard"
+
+-- SOUND
+if not lib.MediaTable.sound then lib.MediaTable.sound = {} end
+lib.MediaTable.sound["None"]								= [[Interface\Quiet.mp3]]	-- Relies on the fact that PlaySound[File] doesn't error on non-existing input.
+lib.DefaultMedia.sound = "None"
+
+local function rebuildMediaList(mediatype)
+	local mtable = mediaTable[mediatype]
+	if not mtable then return end
+	if not mediaList[mediatype] then mediaList[mediatype] = {} end
+	local mlist = mediaList[mediatype]
+	-- list can only get larger, so simply overwrite it
+	local i = 0
+	for k in pairs(mtable) do
+		i = i + 1
+		mlist[i] = k
+	end
+	table_sort(mlist)
+end
+
+function lib:Register(mediatype, key, data, langmask)
+	if type(mediatype) ~= "string" then
+		error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype))
+	end
+	if type(key) ~= "string" then
+		error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key))
+	end
+	if mediatype == lib.MediaType.FONT  and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end
+	mediatype = mediatype:lower()
+	if not mediaTable[mediatype] then mediaTable[mediatype] = {} end
+	local mtable = mediaTable[mediatype]
+	if mtable[key] then return false end
+
+	mtable[key] = data
+	rebuildMediaList(mediatype)
+	self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key)
+	return true
+end
+
+function lib:Fetch(mediatype, key, noDefault)
+	local mtt = mediaTable[mediatype]
+	local overridekey = overrideMedia[mediatype]
+	local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil
+
+	return result
+end
+
+function lib:IsValid(mediatype, key)
+	return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false
+end
+
+function lib:HashTable(mediatype)
+	return mediaTable[mediatype]
+end
+
+function lib:List(mediatype)
+	if not mediaTable[mediatype] then
+		return nil
+	end
+	if not mediaList[mediatype] then
+		rebuildMediaList(mediatype)
+	end
+	return mediaList[mediatype]
+end
+
+function lib:GetGlobal(mediatype)
+	return overrideMedia[mediatype]
+end
+
+function lib:SetGlobal(mediatype, key)
+	if not mediaTable[mediatype] then
+		return false
+	end
+	overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil
+	self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype])
+	return true
+end
+
+function lib:GetDefault(mediatype)
+	return defaultMedia[mediatype]
+end
+
+function lib:SetDefault(mediatype, key)
+	if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then
+		defaultMedia[mediatype] = key
+		return true
+	else
+		return false
+	end
+end
diff --git a/libs/LibStub.lua b/libs/LibStub.lua
index cfc97de..0a41ac0 100644
--- a/libs/LibStub.lua
+++ b/libs/LibStub.lua
@@ -1,30 +1,30 @@
--- LibStub is a simple versioning stub meant for use in Libraries.  http://www.wowace.com/wiki/LibStub for more info
--- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
-local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2  -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
-local LibStub = _G[LIBSTUB_MAJOR]
-
-if not LibStub or LibStub.minor < LIBSTUB_MINOR then
-	LibStub = LibStub or {libs = {}, minors = {} }
-	_G[LIBSTUB_MAJOR] = LibStub
-	LibStub.minor = LIBSTUB_MINOR
-
-	function LibStub:NewLibrary(major, minor)
-		assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
-		minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
-
-		local oldminor = self.minors[major]
-		if oldminor and oldminor >= minor then return nil end
-		self.minors[major], self.libs[major] = minor, self.libs[major] or {}
-		return self.libs[major], oldminor
-	end
-
-	function LibStub:GetLibrary(major, silent)
-		if not self.libs[major] and not silent then
-			error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
-		end
-		return self.libs[major], self.minors[major]
-	end
-
-	function LibStub:IterateLibraries() return pairs(self.libs) end
-	setmetatable(LibStub, { __call = LibStub.GetLibrary })
-end
+-- LibStub is a simple versioning stub meant for use in Libraries.  http://www.wowace.com/wiki/LibStub for more info
+-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
+local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2  -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
+local LibStub = _G[LIBSTUB_MAJOR]
+
+if not LibStub or LibStub.minor < LIBSTUB_MINOR then
+	LibStub = LibStub or {libs = {}, minors = {} }
+	_G[LIBSTUB_MAJOR] = LibStub
+	LibStub.minor = LIBSTUB_MINOR
+
+	function LibStub:NewLibrary(major, minor)
+		assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
+		minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
+
+		local oldminor = self.minors[major]
+		if oldminor and oldminor >= minor then return nil end
+		self.minors[major], self.libs[major] = minor, self.libs[major] or {}
+		return self.libs[major], oldminor
+	end
+
+	function LibStub:GetLibrary(major, silent)
+		if not self.libs[major] and not silent then
+			error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
+		end
+		return self.libs[major], self.minors[major]
+	end
+
+	function LibStub:IterateLibraries() return pairs(self.libs) end
+	setmetatable(LibStub, { __call = LibStub.GetLibrary })
+end
diff --git a/libs/tekKonfig/tekKonfig.xml b/libs/tekKonfig/tekKonfig.xml
index 023bce7..dbbbb6b 100644
--- a/libs/tekKonfig/tekKonfig.xml
+++ b/libs/tekKonfig/tekKonfig.xml
@@ -1,8 +1,8 @@
-<Ui xmlns='http://blizzard.com/wow/ui/'>
-	<Script file='tekKonfigCheckBox.lua'/>
-	<Script file='tekKonfigDropdown.lua'/>
-	<Script file='tekKonfigGroup.lua'/>
-	<Script file='tekKonfigHeading.lua'/>
-	<Script file='tekKonfigScroll.lua'/>
-	<Script file='tekKonfigSlider.lua'/>
+<Ui xmlns='http://blizzard.com/wow/ui/'>
+	<Script file='tekKonfigCheckBox.lua'/>
+	<Script file='tekKonfigDropdown.lua'/>
+	<Script file='tekKonfigGroup.lua'/>
+	<Script file='tekKonfigHeading.lua'/>
+	<Script file='tekKonfigScroll.lua'/>
+	<Script file='tekKonfigSlider.lua'/>
 </Ui>
\ No newline at end of file
diff --git a/pMinimap.lua b/pMinimap.lua
index 7bd8546..835664b 100644
--- a/pMinimap.lua
+++ b/pMinimap.lua
@@ -1,276 +1,276 @@
---[[
-
- Copyright (c) 2009, Adrian L Lange
- All rights reserved.
-
- You're allowed to use this addon, free of monetary charge,
- but you are not allowed to modify, alter, or redistribute
- this addon without express, written permission of the author.
-
---]]
-
-local addon = CreateFrame('Frame', 'pMinimap', Minimap)
-addon:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end)
-addon:RegisterEvent('ADDON_LOADED')
-
-local SharedMedia = LibStub('LibSharedMedia-3.0')
-local defaults = {
-	font = 'Visitor TT1',
-	fontsize = 13,
-	fontflag = 'OUTLINE',
-	zone = false,
-	zonepoint = 'TOP',
-	zoneoffset = 8,
-	scale = 0.9,
-	level = 2,
-	strata = 'BACKGROUND',
-	borderoffset = 1,
-	bordercolors = {0, 0, 0, 1},
-	mail = true,
-	clock = true,
-	durabilty = true,
-	coordinates = false,
-	coordinatesdecimals = 0,
-}
---[[
-function addon:Clock()
-	if(not IsAddOnLoaded('Blizzard_TimeManager')) then
-		LoadAddOn('Blizzard_TimeManager')
-	end
-
-	TimeManagerClockButton:GetRegions():Hide()
-	TimeManagerClockButton:ClearAllPoints()
-	TimeManagerClockButton:SetPoint(self.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
-	TimeManagerClockButton:SetWidth(40)
-	TimeManagerClockButton:SetHeight(14)
-	TimeManagerClockButton:Show()
-	TimeManagerClockButton:SetScript('OnClick', function(self, button)
-		if(button == 'RightButton') then
-			ToggleCalendar()
-		else
-			if(self.alarmFiring) then
-				PlaySound('igMainMenuQuit')
-				TimeManager_TurnOffAlarm()
-			else
-				ToggleTimeManager()
-			end
-		end
-	end)
-
-	TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton)
-	TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
-	TimeManagerClockTicker:SetShadowOffset(0, 0)
-
-	TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end
-	TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end
-
-	self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES')
-	self.CALENDAR_UPDATE_PENDING_INVITES()
-end
---]]
-function addon:OnClick(button)
-	if(button == 'RightButton') then
-		ToggleBattlefieldMinimap()
-	else
-		ToggleFrame(WorldMapFrame)
-	end
-end
-
-function addon:OnUpdate(elapsed)
-	if(total <= 0) then
-		local x, y = GetPlayerMapPosition('player')
-		if(x ~= 0 and y ~= 0) then
-			MinimapCoordinatesText:SetFormattedText('%.' .. addon.db.coordinatesdecimals .. 'f,%.' .. addon.db.coordinatesdecimals .. 'f', x * 100, y * 100)
-		else
-			MinimapCoordinatesText:SetText()
-		end
-
-		self.total = 0.25
-	else
-		self.total = self.total - elapsed
-	end
-end
-
-function addon:Style()
-	-- Mousewheel zoom
-	MinimapZoomIn:Hide()
-	MinimapZoomOut:Hide()
-	Minimap:EnableMouseWheel()
-	Minimap:SetScript('OnMouseWheel', function(self, direction)
-		if(direction > 0) then
-			MinimapZoomIn:Click()
-		else
-			MinimapZoomOut:Click()
-		end
-	end)
-
-	-- Tracking icon
-	MiniMapTracking:ClearAllPoints()
-	MiniMapTracking:SetParent(Minimap)
-	MiniMapTracking:SetPoint('TOPLEFT', -2, 2)
-	MiniMapTrackingBackground:Hide()
-	MiniMapTrackingButtonBorder:SetTexture(nil)
-	MiniMapTrackingButton:SetHighlightTexture(nil)
-	MiniMapTrackingIconOverlay:SetTexture(nil)
-	MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935)
-
-	-- Battlefield icon
-	MiniMapBattlefieldFrame:ClearAllPoints()
-	MiniMapBattlefieldFrame:SetParent(Minimap)
-	MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2)
-	MiniMapBattlefieldBorder:SetTexture(nil)
-	BattlegroundShine:Hide()
-
-	-- Mail text
-	MiniMapMailFrame:ClearAllPoints()
-	MiniMapMailFrame:SetParent(Minimap)
-	MiniMapMailFrame:SetPoint('TOP', 0, -4)
-	MiniMapMailFrame:SetHeight(8)
-	MiniMapMailBorder:SetTexture(nil)
-
-	MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY')
-	MiniMapMailText:SetPoint('BOTTOM', 0, 2)
-	MiniMapMailText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
-	MiniMapMailText:SetTextColor(1, 1, 1)
-	MiniMapMailText:SetText('New Mail!')
-
-	if(self.db.mail) then
-		MiniMapMailIcon:Hide()
-	else
-		MiniMapMailText:Hide()
-	end
-
-	-- Coordinates
-	MinimapCoordinates = CreateFrame('Button', nil, Minimap)
-	MinimapCoordinates:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
-	MinimapCoordinates:SetWidth(40)
-	MinimapCoordinates:SetHeight(14)
-	MinimapCoordinates:RegisterForClicks('AnyUp')
-	MinimapCoordinates:SetScript('OnClick', self.OnClick)
-	MinimapCoordinates:SetScript('OnUpdate', self.OnUpdate)
-	MinimapCoordinates.total = 0.25
-
-	MinimapCoordinatesText = MinimapCoordinates:CreateFontString(nil, 'OVERLAY')
-	MinimapCoordinatesText:SetPoint('BOTTOMRIGHT', MinimapCoordinates)
-	MinimapCoordinatesText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
-	MinimapCoordinatesText:SetTextColor(1, 1, 1)
-
-	if(not self.db.coordinates) then
-		MinimapCoordinates:Hide()
-	end
-
-	-- Zone text
-	MinimapZoneText:SetAllPoints(MinimapZoneTextButton)
-	MinimapZoneText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
-	MinimapZoneText:SetShadowOffset(0, 0)
-
-	MinimapZoneTextButton:ClearAllPoints()
-	MinimapZoneTextButton:SetParent(Minimap)
-	MinimapZoneTextButton:SetPoint(self.db.zonepoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonepoint, 0, self.db.zoneoffset)
-	MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5)
-
-	if(not self.db.zone) then
-		MinimapZoneTextButton:Hide()
-	end
-
-	-- Misc textures/icons/texts
-	MinimapBorder:SetTexture(nil)
-	MinimapBorderTop:Hide()
-	MinimapToggleButton:Hide()
-	MinimapNorthTag:SetAlpha(0)
-	MiniMapMeetingStoneFrame:SetAlpha(0)
-	MiniMapWorldMapButton:Hide()
-	GameTimeFrame:Hide()
-
-	-- Inject settings
-	Minimap:SetScale(self.db.scale)
-	Minimap:SetFrameLevel(self.db.level)
-	Minimap:SetFrameStrata(self.db.strata)
-	Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=])
-	Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.borderoffset, bottom = - self.db.borderoffset, left = - self.db.borderoffset, right = - self.db.borderoffset}})
-	Minimap:SetBackdropColor(unpack(self.db.bordercolors))
-
-	Minimap:RegisterForDrag('LeftButton')
-	Minimap:SetMovable(true)
-	Minimap:SetScript('OnDragStop', function() if(self.unlocked) then Minimap:StopMovingOrSizing() end end)
-	Minimap:SetScript('OnDragStart', function() if(self.unlocked) then Minimap:StartMoving() end end)
-	MinimapCluster:EnableMouse(false)
-
-	-- Modules
-	if(self.db.durability) then
-		DurabilityFrame:SetAlpha(0)
-
-		self:RegisterEvent('UPDATE_INVENTORY_ALERTS')
-		self.UPDATE_INVENTORY_ALERTS()
-	end
-
-	if(self.db.coordinates) then
-		self:Coordinates()
-	end
---[[
-	if(self.db.clock) then
-		self:Clock()
-	else
-		TimeManagerClockButton:Hide()
-	end --]]
-end
-
-function addon.Command(str)
-	if(str == 'reset') then
-		addon.db = {}
-		print('|cffff8080pMinimap:|r Settings reset. You should reload/relog to affect changes.')
-	else
-		InterfaceOptionsFrame_OpenToCategory(addon:GetName())
-	end
-end
-
-function addon:ADDON_LOADED(event, name)
-	if(name ~= self:GetName()) then return end
-
-	SharedMedia:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\media\font.ttf]=])
-
-	SLASH_pMinimap1 = '/pmm'
-	SLASH_pMinimap2 = '/pminimap'
-	SlashCmdList[name] = self.Command
-
-	self.db = setmetatable(pMinimapDB or {}, {__index = defaults})
-	self:UnregisterEvent(event)
-	self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
---	self:RegisterEvent('PLAYER_LOGOUT')
-
-	self:Style()
-end
-
---function addon:PLAYER_LOGOUT()
---	pMinimapDB = self.db
---end
-
-function addon:CALENDAR_UPDATE_PENDING_INVITES()
-	if(CalendarGetNumPendingInvites() ~= 0) then
-		TimeManagerClockTicker:SetTextColor(0, 1, 0)
-	else
-		TimeManagerClockTicker:SetTextColor(1, 1, 1)
-	end
-end
-
-function addon:UPDATE_INVENTORY_ALERTS()
-	local highstatus = 0
-	for index = 1, #INVENTORY_ALERT_STATUS_SLOTS do
-		local status = GetInventoryAlertStatus(INVENTORY_ALERT_STATUS_SLOTS[index])
-		highstatus = status > highstatus and status
-	end
-
-	local color = INVENTORY_ALERT_COLORS[highstatus]
-	if(color) then
-		Minimap:SetBackdropColor(color.r, color.g, color.b)
-	else
-		Minimap:SetBackdropColor(unpack(self.db.bordercolors))
-	end
-end
-
-function addon:ZONE_CHANGED_NEW_AREA()
-	SetMapToCurrentZone()
-end
-
--- http://www.wowwiki.com/GetMinimapShape
-function GetMinimapShape() return 'SQUARE' end
+--[[
+
+ Copyright (c) 2009, Adrian L Lange
+ All rights reserved.
+
+ You're allowed to use this addon, free of monetary charge,
+ but you are not allowed to modify, alter, or redistribute
+ this addon without express, written permission of the author.
+
+--]]
+
+local addon = CreateFrame('Frame', 'pMinimap', Minimap)
+addon:SetScript('OnEvent', function(self, event, ...) self[event](self, event, ...) end)
+addon:RegisterEvent('ADDON_LOADED')
+
+local SharedMedia = LibStub('LibSharedMedia-3.0')
+local defaults = {
+	font = 'Visitor TT1',
+	fontsize = 13,
+	fontflag = 'OUTLINE',
+	zone = false,
+	zonepoint = 'TOP',
+	zoneoffset = 8,
+	scale = 0.9,
+	level = 2,
+	strata = 'BACKGROUND',
+	borderoffset = 1,
+	bordercolors = {0, 0, 0, 1},
+	mail = true,
+	clock = true,
+	durabilty = true,
+	coordinates = false,
+	coordinatesdecimals = 0,
+}
+--[[
+function addon:Clock()
+	if(not IsAddOnLoaded('Blizzard_TimeManager')) then
+		LoadAddOn('Blizzard_TimeManager')
+	end
+
+	TimeManagerClockButton:GetRegions():Hide()
+	TimeManagerClockButton:ClearAllPoints()
+	TimeManagerClockButton:SetPoint(self.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
+	TimeManagerClockButton:SetWidth(40)
+	TimeManagerClockButton:SetHeight(14)
+	TimeManagerClockButton:Show()
+	TimeManagerClockButton:SetScript('OnClick', function(self, button)
+		if(button == 'RightButton') then
+			ToggleCalendar()
+		else
+			if(self.alarmFiring) then
+				PlaySound('igMainMenuQuit')
+				TimeManager_TurnOffAlarm()
+			else
+				ToggleTimeManager()
+			end
+		end
+	end)
+
+	TimeManagerClockTicker:SetPoint('CENTER', TimeManagerClockButton)
+	TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+	TimeManagerClockTicker:SetShadowOffset(0, 0)
+
+	TimeManagerAlarmFiredTexture.Show = function() TimeManagerClockTicker:SetTextColor(1, 0, 0) end
+	TimeManagerAlarmFiredTexture.Hide = function() TimeManagerClockTicker:SetTextColor(1, 1, 1) end
+
+	self:RegisterEvent('CALENDAR_UPDATE_PENDING_INVITES')
+	self.CALENDAR_UPDATE_PENDING_INVITES()
+end
+--]]
+function addon:OnClick(button)
+	if(button == 'RightButton') then
+		ToggleBattlefieldMinimap()
+	else
+		ToggleFrame(WorldMapFrame)
+	end
+end
+
+function addon:OnUpdate(elapsed)
+	if(total <= 0) then
+		local x, y = GetPlayerMapPosition('player')
+		if(x ~= 0 and y ~= 0) then
+			MinimapCoordinatesText:SetFormattedText('%.' .. addon.db.coordinatesdecimals .. 'f,%.' .. addon.db.coordinatesdecimals .. 'f', x * 100, y * 100)
+		else
+			MinimapCoordinatesText:SetText()
+		end
+
+		self.total = 0.25
+	else
+		self.total = self.total - elapsed
+	end
+end
+
+function addon:Style()
+	-- Mousewheel zoom
+	MinimapZoomIn:Hide()
+	MinimapZoomOut:Hide()
+	Minimap:EnableMouseWheel()
+	Minimap:SetScript('OnMouseWheel', function(self, direction)
+		if(direction > 0) then
+			MinimapZoomIn:Click()
+		else
+			MinimapZoomOut:Click()
+		end
+	end)
+
+	-- Tracking icon
+	MiniMapTracking:ClearAllPoints()
+	MiniMapTracking:SetParent(Minimap)
+	MiniMapTracking:SetPoint('TOPLEFT', -2, 2)
+	MiniMapTrackingBackground:Hide()
+	MiniMapTrackingButtonBorder:SetTexture(nil)
+	MiniMapTrackingButton:SetHighlightTexture(nil)
+	MiniMapTrackingIconOverlay:SetTexture(nil)
+	MiniMapTrackingIcon:SetTexCoord(0.065, 0.935, 0.065, 0.935)
+
+	-- Battlefield icon
+	MiniMapBattlefieldFrame:ClearAllPoints()
+	MiniMapBattlefieldFrame:SetParent(Minimap)
+	MiniMapBattlefieldFrame:SetPoint('TOPRIGHT', -2, -2)
+	MiniMapBattlefieldBorder:SetTexture(nil)
+	BattlegroundShine:Hide()
+
+	-- Mail text
+	MiniMapMailFrame:ClearAllPoints()
+	MiniMapMailFrame:SetParent(Minimap)
+	MiniMapMailFrame:SetPoint('TOP', 0, -4)
+	MiniMapMailFrame:SetHeight(8)
+	MiniMapMailBorder:SetTexture(nil)
+
+	MiniMapMailText = MiniMapMailFrame:CreateFontString(nil, 'OVERLAY')
+	MiniMapMailText:SetPoint('BOTTOM', 0, 2)
+	MiniMapMailText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+	MiniMapMailText:SetTextColor(1, 1, 1)
+	MiniMapMailText:SetText('New Mail!')
+
+	if(self.db.mail) then
+		MiniMapMailIcon:Hide()
+	else
+		MiniMapMailText:Hide()
+	end
+
+	-- Coordinates
+	MinimapCoordinates = CreateFrame('Button', nil, Minimap)
+	MinimapCoordinates:SetPoint(self.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
+	MinimapCoordinates:SetWidth(40)
+	MinimapCoordinates:SetHeight(14)
+	MinimapCoordinates:RegisterForClicks('AnyUp')
+	MinimapCoordinates:SetScript('OnClick', self.OnClick)
+	MinimapCoordinates:SetScript('OnUpdate', self.OnUpdate)
+	MinimapCoordinates.total = 0.25
+
+	MinimapCoordinatesText = MinimapCoordinates:CreateFontString(nil, 'OVERLAY')
+	MinimapCoordinatesText:SetPoint('BOTTOMRIGHT', MinimapCoordinates)
+	MinimapCoordinatesText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+	MinimapCoordinatesText:SetTextColor(1, 1, 1)
+
+	if(not self.db.coordinates) then
+		MinimapCoordinates:Hide()
+	end
+
+	-- Zone text
+	MinimapZoneText:SetAllPoints(MinimapZoneTextButton)
+	MinimapZoneText:SetFont(SharedMedia:Fetch('font', self.db.font), self.db.fontsize, self.db.fontflag)
+	MinimapZoneText:SetShadowOffset(0, 0)
+
+	MinimapZoneTextButton:ClearAllPoints()
+	MinimapZoneTextButton:SetParent(Minimap)
+	MinimapZoneTextButton:SetPoint(self.db.zonepoint == 'BOTTOM' and 'TOP' or 'BOTTOM', Minimap, self.db.zonepoint, 0, self.db.zoneoffset)
+	MinimapZoneTextButton:SetWidth(Minimap:GetWidth() * 1.5)
+
+	if(not self.db.zone) then
+		MinimapZoneTextButton:Hide()
+	end
+
+	-- Misc textures/icons/texts
+	MinimapBorder:SetTexture(nil)
+	MinimapBorderTop:Hide()
+	MinimapToggleButton:Hide()
+	MinimapNorthTag:SetAlpha(0)
+	MiniMapMeetingStoneFrame:SetAlpha(0)
+	MiniMapWorldMapButton:Hide()
+	GameTimeFrame:Hide()
+
+	-- Inject settings
+	Minimap:SetScale(self.db.scale)
+	Minimap:SetFrameLevel(self.db.level)
+	Minimap:SetFrameStrata(self.db.strata)
+	Minimap:SetMaskTexture([=[Interface\ChatFrame\ChatFrameBackground]=])
+	Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - self.db.borderoffset, bottom = - self.db.borderoffset, left = - self.db.borderoffset, right = - self.db.borderoffset}})
+	Minimap:SetBackdropColor(unpack(self.db.bordercolors))
+
+	Minimap:RegisterForDrag('LeftButton')
+	Minimap:SetMovable(true)
+	Minimap:SetScript('OnDragStop', function() if(self.unlocked) then Minimap:StopMovingOrSizing() end end)
+	Minimap:SetScript('OnDragStart', function() if(self.unlocked) then Minimap:StartMoving() end end)
+	MinimapCluster:EnableMouse(false)
+
+	-- Modules
+	if(self.db.durability) then
+		DurabilityFrame:SetAlpha(0)
+
+		self:RegisterEvent('UPDATE_INVENTORY_ALERTS')
+		self.UPDATE_INVENTORY_ALERTS()
+	end
+
+	if(self.db.coordinates) then
+		self:Coordinates()
+	end
+--[[
+	if(self.db.clock) then
+		self:Clock()
+	else
+		TimeManagerClockButton:Hide()
+	end --]]
+end
+
+function addon.Command(str)
+	if(str == 'reset') then
+		pMinimapDB = defaults
+		print('|cffff8080pMinimap:|r Settings reset. You should reload/relog to affect changes.')
+	else
+		InterfaceOptionsFrame_OpenToCategory(addon:GetName())
+	end
+end
+
+function addon:ADDON_LOADED(event, name)
+	if(name ~= self:GetName()) then return end
+
+	SharedMedia:Register('font', 'Visitor TT1', [=[Interface\AddOns\pMinimap\media\font.ttf]=])
+
+	SLASH_pMinimap1 = '/pmm'
+	SLASH_pMinimap2 = '/pminimap'
+	SlashCmdList[name] = self.Command
+
+	self.db = setmetatable(pMinimapDB or {}, {__index = defaults})
+	self:UnregisterEvent(event)
+	self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
+--	self:RegisterEvent('PLAYER_LOGOUT')
+
+	self:Style()
+end
+
+--function addon:PLAYER_LOGOUT()
+--	pMinimapDB = self.db
+--end
+
+function addon:CALENDAR_UPDATE_PENDING_INVITES()
+	if(CalendarGetNumPendingInvites() ~= 0) then
+		TimeManagerClockTicker:SetTextColor(0, 1, 0)
+	else
+		TimeManagerClockTicker:SetTextColor(1, 1, 1)
+	end
+end
+
+function addon:UPDATE_INVENTORY_ALERTS()
+	local highstatus = 0
+	for k in next, INVENTORY_ALERT_STATUS_SLOTS do
+		local status = GetInventoryAlertStatus(k)
+		highstatus = status > highstatus and status
+	end
+
+	local color = INVENTORY_ALERT_COLORS[highstatus]
+	if(color) then
+		Minimap:SetBackdropColor(color.r, color.g, color.b)
+	else
+		Minimap:SetBackdropColor(unpack(self.db.bordercolors))
+	end
+end
+
+function addon:ZONE_CHANGED_NEW_AREA()
+	SetMapToCurrentZone()
+end
+
+-- http://www.wowwiki.com/GetMinimapShape
+function GetMinimapShape() return 'SQUARE' end
diff --git a/pMinimap.toc b/pMinimap.toc
index ab8a4c3..8d9a5ad 100644
--- a/pMinimap.toc
+++ b/pMinimap.toc
@@ -1,17 +1,17 @@
-## Interface: 30100
-## Author: p3lim
-## Version: Alpha
-## Title: |cffff6000p|rMinimap
-## Notes: Yet another square minimap addon
-## SavedVariablesPerCharacter: pMinimapDB
-## OptionalDeps: LibSharedMedia-3.0, SharedMedia
-
-libs\LibStub.lua
-libs\CallbackHandler-1.0.lua
-libs\LibSharedMedia-3.0.lua
-
-pMinimap.lua
-
-libs\tekKonfig\tekKonfig.xml
-
+## Interface: 30100
+## Author: p3lim
+## Version: Alpha
+## Title: |cffff6000p|rMinimap
+## Notes: Yet another square minimap addon
+## SavedVariablesPerCharacter: pMinimapDB
+## OptionalDeps: LibSharedMedia-3.0, SharedMedia
+
+libs\LibStub.lua
+libs\CallbackHandler-1.0.lua
+libs\LibSharedMedia-3.0.lua
+
+pMinimap.lua
+
+libs\tekKonfig\tekKonfig.xml
+
 pMinimap_Config.lua
\ No newline at end of file