Quantcast

Updated documentation and added documentation files.

F16Gaming [10-23-11 - 21:13]
Updated documentation and added documentation files.

FIXED: Removed @name tag from LuaDoc comments, caused some issues.
ADDED: Added documentation HTML files.
Filename
ChatManager.lua
Command.lua
CommandManager.lua
EventHandler.lua
Events.lua
Events_Chat.lua
GroupTools.lua
Logger.lua
PlayerManager.lua
QueueManager.lua
String.lua
Table.lua
docs/files/ChatManager.html
docs/files/Command.html
docs/files/CommandManager.html
docs/files/EventHandler.html
docs/files/Events.html
docs/files/Events_Chat.html
docs/files/GroupTools.html
docs/files/Logger.html
docs/files/PlayerManager.html
docs/files/QueueManager.html
docs/files/String.html
docs/files/Table.html
docs/index.html
docs/luadoc.css
diff --git a/ChatManager.lua b/ChatManager.lua
index e02f33a..87eb1dc 100644
--- a/ChatManager.lua
+++ b/ChatManager.lua
@@ -19,6 +19,13 @@

 local C = Command

+--- Table holding all ChatManager methods.
+-- This is referenced "CM" in ChatManager.lua.
+-- @name Command.ChatManager
+-- @class table
+-- @field Settings Table holding all settings specific to ChatManager.
+-- @field Default Table containing default settings (used at initial setup)
+--
 C.ChatManager = {
 	Settings = {},
 	Default = {
@@ -34,7 +41,7 @@ local CES = C.Extensions.String

 --- Get the channel to be used as a response channel based on event name.
 -- @param event Full name of the event.
--- @returns The channel to be used as response channel.
+-- @return The channel to be used as response channel.
 --
 function CM:GetRespondChannelByEvent(event)
 	local respondChannel = "SAY"
@@ -110,7 +117,7 @@ end

 --- Parse a message.
 -- @param msg The message to parse.
--- @returns Table with the individual words.
+-- @return Table with the individual words.
 --
 function CM:ParseMessage(msg)
 	return CES:Split(msg)
@@ -118,7 +125,7 @@ end

 --- Parse a command.
 -- @param cmd Command to parse.
--- @returns Parsed command (without the command char)
+-- @return Parsed command (without the command char)
 --
 function CM:ParseCommand(cmd)
 	return cmd:sub(2, cmd:len())
@@ -126,7 +133,7 @@ end

 --- Check if a string is a command.
 -- @param msg String to check.
--- @returns True if the string is a command, false otherwise.
+-- @return True if the string is a command, false otherwise.
 --
 function CM:IsCommand(msg)
 	return CES:StartsWith(msg, self.Settings.CMD_CHAR)
diff --git a/Command.lua b/Command.lua
index 94488eb..0e673df 100644
--- a/Command.lua
+++ b/Command.lua
@@ -17,8 +17,19 @@
 	* along with Command. If not, see <http://www.gnu.org/licenses/>.
 --]]

+--- Table containing all Command methods.
+-- This is referenced "C" in Command.lua
+-- @name Command
+-- @class table
+-- @field Name AddOn name.
+-- @field Version AddOn version.
+-- @field VarVersion SavedVariables version.
+-- @field Enabled Enabled state.
+-- @field Global Contains the saved variables.
+-- @field Settings Contains settings specific to Command.
+-- @field Events Contains all registered event handlers.
+--
 Command = {
-	Logger = nil,
 	Name = "Command",
 	Version = GetAddOnMetadata("Command", "Version"),
 	VarVersion = 1,
@@ -34,7 +45,7 @@ local CM
 local PM
 local log

---- Initialize method.
+--- Initialize Command.
 --
 function C:Init()
 	Cmd = self.CommandManager
diff --git a/CommandManager.lua b/CommandManager.lua
index dd2a14a..d6011c3 100644
--- a/CommandManager.lua
+++ b/CommandManager.lua
@@ -18,8 +18,14 @@
 --]]

 local C = Command
-local CES = C.Extensions.String

+--- Table holding all CommandManager methods.
+-- This is referenced "CM" in CommandManager.lua.
+-- @name Command.CommandManager
+-- @class table
+-- @field Slash List of slash commands to register.
+-- @field Commands Table holding all registered commands.
+--
 C.CommandManager = {
 	Slash = {
 		"command",
@@ -28,11 +34,16 @@ C.CommandManager = {
 	Commands = {}
 }

+
 local CM = C.CommandManager
 local PM = C.PlayerManager
 local QM = C.QueueManager
 local GT = C.GroupTools
+local CES = C.Extensions.String

+--- Initialize CommandManager.
+-- NOTE: Unused.
+--
 function CM:Init()

 end
@@ -56,7 +67,7 @@ end

 --- Gets the callback for a command by name.
 -- @param command Name of the command to get.
--- @returns Callback for the command.
+-- @return Callback for the command.
 --
 function CM:GetCommand(command)
 	if self.Commands[command] then
@@ -70,8 +81,8 @@ end
 -- @param args Table with arguments for the command.
 -- @param isChat Is the command called from chat?
 -- @param player Player object of the calling player (if chat)
--- @returns If successfull, returns result, otherwise false.
--- @returns Error message if not successful, otherwise nil.
+-- @return If successfull, returns result, otherwise false.
+-- @return Error message if not successful, otherwise nil.
 --
 function CM:HandleCommand(command, args, isChat, player)
 	local cmd = self:GetCommand(command)
diff --git a/EventHandler.lua b/EventHandler.lua
index 5b109dd..6db1696 100644
--- a/EventHandler.lua
+++ b/EventHandler.lua
@@ -21,6 +21,7 @@ local C = Command
 local CES = C.Extensions.String

 --- Handles events.
+-- @name Command:OnEvent
 -- @param frame The frame on which the event was registered.
 -- @param event Full name of the event.
 -- @param ... Event arguments.
diff --git a/Events.lua b/Events.lua
index 06822f7..d295201 100644
--- a/Events.lua
+++ b/Events.lua
@@ -28,22 +28,42 @@ function T.Events.CHAT_MSG_ADDON(event, ...)
 end
 --]]

+--- Event handler for ADDON_LOADED
+-- @name Command.Events.ADDON_LOADED
+-- @param self Reference to Command object.
+-- @param ... Event arguments.
+--
 function C.Events.ADDON_LOADED(self, ...)
 	local name = (select(1, ...))
 	if name:lower() ~= self.Name:lower() then return end
 	self:Init()
 end

+--- Event handler for LFG_UPDATE
+-- @name Command.Events.LFG_UPDATE
+-- @param self Reference to Command object.
+-- @param ... Event arguments.
+--
 function C.Events.LFG_UPDATE(self, ...)
 	if not QM.QueuedByCommand then return end
 	QM:AnnounceStatus()
 end

+--- Event handler for LFG_PROPOSAL_SHOW
+-- @name Command.Events.LFG_PROPOSAL_SHOW
+-- @param self Reference to Command object.
+-- @param ... Event arguments.
+--
 function C.Events.LFG_PROPOSAL_SHOW(self, ...)
 	if not QM.QueuedByCommand then return end
 	CM:SendMessage("Group has been found, type !accept to make me accept the invite.", "PARTY")
 end

+--- Event handler for LFG_PROPOSAL_FAILED
+-- @name Command.Events.LFG_PROPOSAL_FAILED
+-- @param self Reference to Command object.
+-- @param ... Event arguments.
+--
 function C.Events.LFG_PROPOSAL_FAILED(self, ...)
 	if not QM.QueuedByCommand then return end
 	QM.QueuedByCommand = false
diff --git a/Events_Chat.lua b/Events_Chat.lua
index e144ba2..4d1500f 100644
--- a/Events_Chat.lua
+++ b/Events_Chat.lua
@@ -50,6 +50,12 @@ function C.Events.CHAT_MSG_CHANNEL(self, event, ...)
 end
 --]]

+--- Event handler for CHAT_MSG_GUILD.
+-- @name Command.Events.CHAT_MSG_GUILD
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_GUILD(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -57,6 +63,12 @@ function C.Events.CHAT_MSG_GUILD(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

+--- Event handler for CHAT_MSG_OFFICER.
+-- @name Command.Events.CHAT_MSG_OFFICER
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_OFFICER(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -64,7 +76,12 @@ function C.Events.CHAT_MSG_OFFICER(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

-
+--- Event handler for CHAT_MSG_PARTY.
+-- @name Command.Events.CHAT_MSG_PARTY
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_PARTY(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -72,6 +89,12 @@ function C.Events.CHAT_MSG_PARTY(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

+--- Event handler for CHAT_MSG_PARTY_LEADER.
+-- @name Command.Events.CHAT_MSG_PARTY_LEADER
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_PARTY_LEADER(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -79,6 +102,12 @@ function C.Events.CHAT_MSG_PARTY_LEADER(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

+--- Event handler for CHAT_MSG_RAID.
+-- @name Command.Events.CHAT_MSG_RAID
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_RAID(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -86,6 +115,12 @@ function C.Events.CHAT_MSG_RAID(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

+--- Event handler for CHAT_MSG_RAID_LEADER.
+-- @name Command.Events.CHAT_MSG_RAID_LEADER
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_RAID_LEADER(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -93,6 +128,12 @@ function C.Events.CHAT_MSG_RAID_LEADER(self, event, ...)
 	CM:HandleMessage(msg, sender, chan)
 end

+--- Event handler for CHAT_MSG_RAID_WARNING.
+-- @name Command.Events.CHAT_MSG_RAID_WARNING
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_RAID_WARNING(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
@@ -109,6 +150,12 @@ function C.Events.CHAT_MSG_SAY(self, event, ...)
 end
 --]]

+--- Event handler for CHAT_MSG_WHISPER.
+-- @name Command.Events.CHAT_MSG_WHISPER
+-- @param self Reference to Command object.
+-- @param event Full name of event.
+-- @param ... Event arguments.
+--
 function C.Events.CHAT_MSG_WHISPER(self, event, ...)
 	local chan = CM:GetRespondChannelByEvent(event)
 	local msg = (select(1, ...))
diff --git a/GroupTools.lua b/GroupTools.lua
index fba7fd9..490fee6 100644
--- a/GroupTools.lua
+++ b/GroupTools.lua
@@ -19,26 +19,31 @@

 local C = Command

+--- Table containing all GroupTools methods.
+-- This is referenced as "GT" in GroupTools.lua.
+-- @name Command.GroupTools
+-- @class table
+--
 C.GroupTools = {}

 local GT = C.GroupTools

 --- Check if player is in a group.
--- @returns True if player is in group, false otherwise.
+-- @return True if player is in group, false otherwise.
 --
 function GT:IsGroup()
 	return UnitExists("party1")
 end

 --- Check if the player is in an LFG group.
--- @returns True if the player is in an LFG group, false otherwise.
+-- @return True if the player is in an LFG group, false otherwise.
 --
 function GT:IsLFGGroup()
 	return (select(1, GetLFGMode())) == "lfgparty"
 end

 --- Check if player is in a raid.
--- @returns True if the player is in a raid, false otherwise.
+-- @return True if the player is in a raid, false otherwise.
 --
 function GT:IsRaid()
 	return UnitInRaid("player")
@@ -46,7 +51,7 @@ end

 --- Check if the unit is the group leader.
 -- @param name Name/Unit to check, defaults to player.
--- @returns True if unit is group leader, false otherwise.
+-- @return True if unit is group leader, false otherwise.
 --
 function GT:IsGroupLeader(name)
 	name = name or "player"
@@ -56,7 +61,7 @@ end
 --- Check if the group is full.
 -- NOTE: Only checks for 5 players in a party and 40 players in a raid.
 -- DOES NOT respect 10 and 25 man raids.
--- @returns True if the group is full, false otherwise.
+-- @return True if the group is full, false otherwise.
 --
 function GT:IsGroupFull()
 	local num = 0
@@ -73,7 +78,7 @@ end

 --- Check if the unit is raid leader or assistant.
 -- @param name Unit to check, defaults to player.
--- @returns True if the unit is raid leader or assistant, false otherwise.
+-- @return True if the unit is raid leader or assistant, false otherwise.
 --
 function GT:IsRaidLeaderOrAssistant(name)
 	name = name or "player"
@@ -89,7 +94,7 @@ end

 --- Check if unit is raid assistant.
 -- @param name Unit to check, defaults to player.
--- @returns True if assistant, false otherwise.
+-- @return True if assistant, false otherwise.
 --
 function GT:IsRaidAssistant(name)
 	name = name or "player"
@@ -98,7 +103,7 @@ end

 --- Check if the unit is in the player's group.
 -- @param name Unit/Player Name to check.
--- @returns True if the unit is in group, false otherwise.
+-- @return True if the unit is in group, false otherwise.
 --
 function GT:IsInGroup(name)
 	if self:IsRaid() then
diff --git a/Logger.lua b/Logger.lua
index bbf8292..7af0e5a 100644
--- a/Logger.lua
+++ b/Logger.lua
@@ -1 +1 @@
---[[
	* Copyright (c) 2011 by Adam Hellberg.
	* 
	* This file is part of Command.
	* 
	* Command is free software: you can redistribute it and/or modify
	* it under the terms of the GNU General Public License as published by
	* the Free Software Foundation, either version 3 of the License, or
	* (at your option) any later version.
	* 
	* Command is distributed in the hope that it will be useful,
	* but WITHOUT ANY WARRANTY; without even the implied warranty of
	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	* GNU General Public License for more details.
	* 
	* You should have received a copy of the GNU General Public License
	* along with Command. If not, see <http://www.gnu.org/licenses/>.
--]]

Command.Logger = {
	Level = {
		Debug = 0,
		Normal = 1,
		Warning = 2,
		Error = 3
	},
	Settings = {
		Debug = false,
		Format = "%s%s: %s",
		Prefix = {
			Main = "\124cff00FF00[Command]\124r",
			Debug = " \124cffBBBBFFDebug\124r",
			Normal = "",
			Warning = " \124cffFFFF00Warning\124r",
			Error = " \124cffFF0000ERROR\124r"
		}
	}
}

local Logger = Command.Logger

------------------------
-- MAIN LOGGER MODULE --
------------------------

--- Print a log message at the specified level.
-- @param msg Message to pring.
-- @param level One of the levels defined in Logger.Level.
--
function Logger:Print(msg, level)
	local prefix
	if level == self.Level.Debug then
		if not self.Settings.Debug then return end
		prefix = self.Settings.Prefix.Debug
	elseif level == self.Level.Normal then
		prefix = self.Settings.Prefix.Normal
	elseif level == self.Level.Warning then
		prefix = self.Settings.Prefix.Warning
	elseif level == self.Level.Error then
		prefix = self.Settings.Prefix.Error
	else
		error(("Undefined logger level passed (%q)"):format(tostring(level)))
		return
	end
	DEFAULT_CHAT_FRAME:AddMessage(self.Settings.Format:format(self.Settings.Prefix.Main, prefix, msg))
end

--- Print a debug message.
-- @param msg Message to print.
--
function Logger:Debug(msg)
	self:Print(msg, self.Level.Debug)
end

--- Print a normal message
-- @param msg Message to print.
--
function Logger:Normal(msg)
	self:Print(msg, self.Level.Normal)
end

--- Print a warning message.
-- @param msg Message to pring.
--
function Logger:Warning(msg)
	self:Print(msg, self.Level.Warning)
end

--- Print an error message.
-- @param msg Message to print.
--
function Logger:Error(msg)
	self:Print(msg, self.Level.Error)
end


--- Control the debug state.
-- Setting debugging to enabled will make debug messages able to be printed.
-- @param enabled Boolean indicating enabled or disabled state.
--
function Logger:SetDebug(enabled)
	self.Settings.Debug = enabled
end

--- Enable debugging.
--
function Logger:EnableDebug()
	self:SetDebug(true)
end

--- Disable debugging.
--
function Logger:DisableDebug()
	self:SetDebug(false)
end

--- Toggle debugging.
--
function Logger:ToggleDebug()
	self:SetDebug(not self.Settings.Debug)
end
\ No newline at end of file
+--[[
	* Copyright (c) 2011 by Adam Hellberg.
	* 
	* This file is part of Command.
	* 
	* Command is free software: you can redistribute it and/or modify
	* it under the terms of the GNU General Public License as published by
	* the Free Software Foundation, either version 3 of the License, or
	* (at your option) any later version.
	* 
	* Command is distributed in the hope that it will be useful,
	* but WITHOUT ANY WARRANTY; without even the implied warranty of
	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	* GNU General Public License for more details.
	* 
	* You should have received a copy of the GNU General Public License
	* along with Command. If not, see <http://www.gnu.org/licenses/>.
--]]

local C = Command

--- Table containing all Logger methods.
-- This is referenced "Logger" in Logger.lua.
-- @name Command.Logger
-- @class table
-- @field Level Table containing all logger levels.
-- @field Settings Table containing all settings specific to Logger.
--
C.Logger = {
	Level = {
		Debug = 0,
		Normal = 1,
		Warning = 2,
		Error = 3
	},
	Settings = {
		Debug = false,
		Format = "%s%s: %s",
		Prefix = {
			Main = "\124cff00FF00[Command]\124r",
			Debug = " \124cffBBBBFFDebug\124r",
			Normal = "",
			Warning = " \124cffFFFF00Warning\124r",
			Error = " \124cffFF0000ERROR\124r"
		}
	}
}

local Logger = C.Logger

------------------------
-- MAIN LOGGER MODULE --
------------------------

--- Print a log message at the specified level.
-- @param msg Message to pring.
-- @param level One of the levels defined in Logger.Level.
--
function Logger:Print(msg, level)
	local prefix
	if level == self.Level.Debug then
		if not self.Settings.Debug then return end
		prefix = self.Settings.Prefix.Debug
	elseif level == self.Level.Normal then
		prefix = self.Settings.Prefix.Normal
	elseif level == self.Level.Warning then
		prefix = self.Settings.Prefix.Warning
	elseif level == self.Level.Error then
		prefix = self.Settings.Prefix.Error
	else
		error(("Undefined logger level passed (%q)"):format(tostring(level)))
		return
	end
	DEFAULT_CHAT_FRAME:AddMessage(self.Settings.Format:format(self.Settings.Prefix.Main, prefix, msg))
end

--- Print a debug message.
-- @param msg Message to print.
--
function Logger:Debug(msg)
	self:Print(msg, self.Level.Debug)
end

--- Print a normal message
-- @param msg Message to print.
--
function Logger:Normal(msg)
	self:Print(msg, self.Level.Normal)
end

--- Print a warning message.
-- @param msg Message to pring.
--
function Logger:Warning(msg)
	self:Print(msg, self.Level.Warning)
end

--- Print an error message.
-- @param msg Message to print.
--
function Logger:Error(msg)
	self:Print(msg, self.Level.Error)
end


--- Control the debug state.
-- Setting debugging to enabled will enable debug messages to be printed.
-- @param enabled Boolean indicating enabled or disabled state.
--
function Logger:SetDebug(enabled)
	self.Settings.Debug = enabled
end

--- Enable debugging.
--
function Logger:EnableDebug()
	self:SetDebug(true)
end

--- Disable debugging.
--
function Logger:DisableDebug()
	self:SetDebug(false)
end

--- Toggle debugging.
--
function Logger:ToggleDebug()
	self:SetDebug(not self.Settings.Debug)
end
\ No newline at end of file
diff --git a/PlayerManager.lua b/PlayerManager.lua
index 3143349..5f64b5a 100644
--- a/PlayerManager.lua
+++ b/PlayerManager.lua
@@ -26,6 +26,13 @@ local GT = C.GroupTools
 local CET = C.Extensions.Table
 local log

+
+--- Table containing all PlayerManager methods.
+-- This is referenced "PM" in PlayerManager.lua.
+-- @name Command.PlayerManager
+-- @class table
+-- @field Access Table containing all available access groups.
+--
 C.PlayerManager = {
 	Access = {
 		Min = 0,
@@ -112,7 +119,7 @@ end

 --- Get or create a player.
 -- @param name Name of player.
--- @returns Player from list of players if exists, otherwise a new player object.
+-- @return Player from list of players if exists, otherwise a new player object.
 --
 function PM:GetOrCreatePlayer(name)
 	name = name:gsub("^%l", string.upper)
@@ -149,8 +156,8 @@ end
 -- @param player Player object of the player to modify.
 -- @param command Name of command to allow or deny.
 -- @param allow True to allow command, false to deny.
--- @returns String stating the result, or false if error.
--- @returns Error message if unsuccessful, otherwise nil.
+-- @return String stating the result, or false if error.
+-- @return Error message if unsuccessful, otherwise nil.
 --
 function PM:PlayerAccess(player, command, allow)
 	if not command then return false, "No command specified" end
@@ -218,7 +225,7 @@ end

 --- Check if the supplied player is in the player's guild.
 -- @param player Player object of the player to check.
--- @returns True if in guild, false otherwise.
+-- @return True if in guild, false otherwise.
 --
 function PM:IsInGuild(player)
 	if not IsInGuild() then return false end
@@ -232,7 +239,7 @@ end

 --- Get the current access level of supplied player.
 -- @param player Player to check.
--- @returns Access level of the player.
+-- @return Access level of the player.
 --
 function PM:GetAccess(player)
 	return self.Access.Groups[player.Info.Group].Level
@@ -241,7 +248,7 @@ end
 --- Check if player has access to command.
 -- @param player Player object of the player to check.
 -- @param command Command object of the command to check.
--- @returns True if player has access, false otherwise.
+-- @return True if player has access, false otherwise.
 --
 function PM:HasAccess(player, command)
 	if player.Info.Name == UnitName("player") then return true end
@@ -266,8 +273,8 @@ end
 --- Set the access group of supplied player.
 -- @param player Player to modify.
 -- @param group Group name to set the player to.
--- @returns String stating the result of the operation, false if error.
--- @returns Error message if unsuccessful, nil otherwise.
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:SetAccessGroup(player, group)
 	group = group:gsub("^%l", string.upper)
@@ -284,7 +291,8 @@ end

 --- Give player Owner access.
 -- @param player Player to modify.
--- @see Command.PlayerManager.SetAccessGroup
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:SetOwner(player)
 	return self:SetAccessGroup(player, self.Access.Groups.Owner.Name)
@@ -292,7 +300,8 @@ end

 --- Give player Admin access.
 -- @param player Player to modify.
--- @see Command.PlayerManager.SetAccessGroup
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:SetAdmin(player)
 	return self:SetAccessGroup(player, self.Access.Groups.Admin.Name)
@@ -300,7 +309,8 @@ end

 --- Give player Op access.
 -- @param player Player to modify.
--- @see Command.PlayerManager.SetAccessGroup
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:SetOp(player)
 	return self:SetAccessGroup(player, self.Access.Groups.Op.Name)
@@ -308,7 +318,8 @@ end

 --- Give player User access.
 -- @param player Player to modify.
--- @see Command.PlayerManager.SetAccessGroup
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:SetUser(player)
 	return self:SetAccessGroup(player, self.Access.Groups.User.Name)
@@ -318,7 +329,8 @@ end
 -- What this really does is set the access level to "Banned", effectively blocking the player from using any commands.
 -- Unless there is a command that requires access level "Banned". (Could be used for appeal commands).
 -- @param player Player to modify.
--- @see Command.PlayerManager.SetAccessGroup
+-- @return String stating the result of the operation, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:BanUser(player)
 	return self:SetAccessGroup(player, self.Access.Groups.Banned.Name)
@@ -328,8 +340,8 @@ end
 -- Also sends a message to the invited player about the event.
 -- @param player Player object of player to invite.
 -- @param isSelf True if player is inviting themselves, nil or false otherwise.
--- @returns String stating the result of the invite, false if error.
--- @returns Error message if unsuccessful, nil otherwise.
+-- @return String stating the result of the invite, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:Invite(player, isSelf)
 	if player.Info.Name == UnitName("player") then
@@ -353,8 +365,8 @@ end

 --- Kick a player from the group.
 -- @param player Player object of the player to kick.
--- @returns String stating the result of the kick, false if error.
--- @returns Error message if unsuccessful, nil otherwise.
+-- @return String stating the result of the kick, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:Kick(player)
 	if player.Info.Name == UnitName("player") then
@@ -373,8 +385,8 @@ end

 --- Promote a player to group leader.
 -- @param player Player object of the player to promote.
--- @returns String stating the result of the promotion, false if error.
--- @returns Error message if unsuccessful, nil otherwise.
+-- @return String stating the result of the promotion, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:PromoteToLeader(player)
 	if player.Info.Name == UnitName("player") then
@@ -393,8 +405,8 @@ end

 --- Promote player to assistant.
 -- @param player Player object of the player to promote.
--- @returns String stating the result of the promotion, false if error.
--- @returns Error message if unsuccessful, nil otherwise.
+-- @return String stating the result of the promotion, false if error.
+-- @return Error message if unsuccessful, nil otherwise.
 --
 function PM:PromoteToAssistant(player)
 	if player.Info.Name == UnitName("player") then
@@ -428,7 +440,7 @@ function PM:ListRemove(command)
 end

 --- Toggle the list between being a blacklist and being a whitelist.
--- @see Command.PlayerManager.SetListMode
+-- @return String stating what mode the list is in.
 --
 function PM:ToggleListMode()
 	if self:GetListMode() == MODE_BLACKLIST then
@@ -440,7 +452,7 @@ end

 --- Set the mode of the list.
 -- @param mode Mode to change to, MODE_WHITELIST for whitelist and MODE_BLACKLIST for blacklist.
--- @returns String stating what mode the list is in.
+-- @return String stating what mode the list is in.
 --
 function PM:SetListMode(mode)
 	if mode == MODE_WHITELIST then
diff --git a/QueueManager.lua b/QueueManager.lua
index 48d63cf..915bfdc 100644
--- a/QueueManager.lua
+++ b/QueueManager.lua
@@ -19,6 +19,16 @@

 local C = Command

+--- Table containing all QueueManager methods.
+-- This is referenced "QM" in QueueManager.lua.
+-- @name Command.QueueManager
+-- @class table
+-- @field QueuedByCommand True if player has been queued by a command, false otherwise.
+-- @field Current The current dungeon for which the group is queued.
+-- @field Running True if announce is running, false otherwise.
+-- @field Time Total time since Announce was called.
+-- @field LastMode Last not-nil value returned by GetLFGMode.
+--
 C.QueueManager = {
 	QueuedByCommand = false,
 	Current = nil,
@@ -27,7 +37,26 @@ C.QueueManager = {
 	LastMode = nil
 }

-local types = {
+local QM = C.QueueManager
+
+--- Contains information about various dungeon types.
+-- Each entry has an Alias table and an Id field.
+-- The Alias table contains names that this dungeon may be referenced by.
+-- The Id field is either a number or a function that gives the index for that dungeon type.
+-- @name Command.QueueManager.Types
+-- @class table
+-- @field ClassicRandom Random Classic Dungeon
+-- @field TBCRandom Random Burning Crusade Dungeon
+-- @field TBCHeroic Random Heroic Burning Crusade Dungeon
+-- @field LKRandom Random Wrath of the Lich king Dungeon
+-- @field LKHeroic Random Heroic Wrath of the Lich King Dungeon
+-- @field CataclysmRandom Random Cataclysm Dungeon
+-- @field CataclysmHeroic Random Heroic Cataclysm Dungeon
+-- @field Zandalari Random Rise of the Zandalari Dungeon
+-- @field Horseman The Headless Horseman Hallow's Eve dungeon
+-- @field BestChoice Let the server decide what dungeon is best for the player
+--
+QM.Types = {
 	ClassicRandom = {
 		Alias = {
 			"classic",
@@ -137,14 +166,12 @@ local types = {
 	}
 }

-local QM = C.QueueManager
-
 --- Gets the numeric index of a dungoen for use with SetLFGDungeon.
 -- @param alias Name/Alias of the dungeon.
--- @returns Index of the dungeon if dungeon was found, false otherwise.
+-- @return Index of the dungeon if dungeon was found, false otherwise.
 --
 function QM:GetIndex(alias)
-	for _,v in pairs(types) do
+	for _,v in pairs(self.Types) do
 		for _,d in pairs(v.Alias) do
 			if alias:lower() == d then
 				if type(v.Id) == "function" then
@@ -159,7 +186,7 @@ end

 --- Queue for the dungeon with supplied index.
 -- @param index Index of dungeon to queue for.
--- @returns String stating that rolecheck has started.
+-- @return String stating that rolecheck has started.
 --
 function QM:Queue(index)
 	local _, t, h, d = GetLFGRoles()
@@ -178,7 +205,7 @@ function QM:Queue(index)
 end

 --- Cancel the queueing/rolechecking.
--- @returns String stating that queue has been cancelled.
+-- @return String stating that queue has been cancelled.
 --
 function QM:Cancel()
 	self.QueuedByCommand = false
@@ -187,7 +214,7 @@ function QM:Cancel()
 end

 --- Causes player to accept a pending LFG invite.
--- @returns String stating that the invite was accepted.
+-- @return String stating that the invite was accepted.
 --
 function QM:Accept()
 	self.QueuedByCommand = false
diff --git a/String.lua b/String.lua
index 75f3d03..c03b5b8 100644
--- a/String.lua
+++ b/String.lua
@@ -21,9 +21,19 @@ if type(Command.Extensions) ~= "table" then
 	Command.Extensions = {}
 end

-Command.Extensions.String = {}
+local C = Command

-local CES = Command.Extensions.String
+--- Table containing all String methods.
+-- This is referenced "CES" in String.lua.
+-- @name Command.Extentions.String
+-- @class table
+-- @field type No current use.
+--
+C.Extensions.String = {
+	type = "ext" -- For future use
+}
+
+local CES = C.Extensions.String

 --- Check if a string starts with a specific string.
 -- @param s String to be checked.
@@ -43,7 +53,7 @@ end

 --- Trim a string, removing whitespace at the beginning of it.
 -- @param s String to be trimmed.
--- @returns The trimmed string.
+-- @return The trimmed string.
 --
 function CES:Trim(s)
 	return (s:gsub("^%s*(.-)%s*$", "%1"))
@@ -51,7 +61,7 @@ end

 --- Split a string with space as delimiter.
 -- @param s String to be split.
--- @returns Table containing the individual words.
+-- @return Table containing the individual words.
 --
 function CES:Split(s)
 	local t = {}
diff --git a/Table.lua b/Table.lua
index 9765109..697ecb7 100644
--- a/Table.lua
+++ b/Table.lua
@@ -17,18 +17,28 @@
 	* along with Command. If not, see <http://www.gnu.org/licenses/>.
 --]]

-if type(Command.Extensions) ~= "table" then
-	Command.Extensions = {}
+local C = Command
+
+if type(C.Extensions) ~= "table" then
+	C.Extensions = {}
 end

-Command.Extensions.Table = {}
+--- Table containing all Table methods.
+-- This is referenced "CET" in Table.lua.
+-- @name Command.Extensions.Table
+-- @class table
+-- @field type No current use.
+--
+C.Extensions.Table = {
+	type = "ext"
+}

-local CET = Command.Extensions.Table
+local CET = C.Extensions.Table

 --- Check if a table has the supplied key.
 -- @param tbl Table to check.
 -- @param key Key to search for.
--- @returns True if the key was found, false otherwise.
+-- @return True if the key was found, false otherwise.
 --
 function CET:HasKey(tbl, key)
 	for k,_ in pairs(tbl) do
@@ -40,7 +50,7 @@ end
 --- Check if a table contains the supplied value.
 -- @param tbl Table to check.
 -- @param value Value to search for.
--- @returns True if the value was found, false otherwise.
+-- @return True if the value was found, false otherwise.
 function CET:HasValue(tbl, value)
 	for _,v in pairs(tbl) do
 		if v == value then return true end
@@ -52,7 +62,7 @@ end
 --- Create a copy of a table.
 -- @param tbl Table to copy.
 -- @param cache Cache used for recursion.
--- @returns A copy of the supplied table without references.
+-- @return A copy of the supplied table without references.
 --
 function CET:Copy(tbl, cache)
 	if type(tbl) ~= "table" then return tbl end
diff --git a/docs/files/ChatManager.html b/docs/files/ChatManager.html
new file mode 100644
index 0000000..cfbf363
--- /dev/null
+++ b/docs/files/ChatManager.html
@@ -0,0 +1,445 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li><strong>ChatManager.lua</strong></li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>ChatManager.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:GetRespondChannelByEvent">CM:GetRespondChannelByEvent</a>&nbsp;(event)</td>
+	<td class="summary">Get the channel to be used as a response channel based on event name.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:HandleMessage">CM:HandleMessage</a>&nbsp;(msg, sender, channel, target, isBN)</td>
+	<td class="summary">Handle a chat message.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:Init">CM:Init</a>&nbsp;()</td>
+	<td class="summary">Initialize ChatManager.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:IsCommand">CM:IsCommand</a>&nbsp;(msg)</td>
+	<td class="summary">Check if a string is a command.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:LoadSavedVars">CM:LoadSavedVars</a>&nbsp;()</td>
+	<td class="summary">Load saved variables.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:ParseCommand">CM:ParseCommand</a>&nbsp;(cmd)</td>
+	<td class="summary">Parse a command.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:ParseMessage">CM:ParseMessage</a>&nbsp;(msg)</td>
+	<td class="summary">Parse a message.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:SendMessage">CM:SendMessage</a>&nbsp;(msg, channel, target)</td>
+	<td class="summary">Send a chat message.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.ChatManager">Command.ChatManager</a></td>
+	<td class="summary">Table holding all ChatManager methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="CM:GetRespondChannelByEvent"></a><strong>CM:GetRespondChannelByEvent</strong>&nbsp;(event)</dt>
+<dd>
+Get the channel to be used as a response channel based on event name.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>event</em></code>: Full name of the event.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>The channel to be used as response channel. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:HandleMessage"></a><strong>CM:HandleMessage</strong>&nbsp;(msg, sender, channel, target, isBN)</dt>
+<dd>
+Handle a chat message.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>msg</em></code>: The message to handle.
+	</li>
+
+	<li>
+	  <code><em>sender</em></code>: Player object of the player who sent the message.
+	</li>
+
+	<li>
+	  <code><em>channel</em></code>: Channel the message was sent from.
+	</li>
+
+	<li>
+	  <code><em>target</em></code>: Player or channel index.
+	</li>
+
+	<li>
+	  <code><em>isBN</em></code>: True if battle.net message, false or nil otherwise.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:Init"></a><strong>CM:Init</strong>&nbsp;()</dt>
+<dd>
+Initialize ChatManager.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:IsCommand"></a><strong>CM:IsCommand</strong>&nbsp;(msg)</dt>
+<dd>
+Check if a string is a command.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>msg</em></code>: String to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the string is a command, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:LoadSavedVars"></a><strong>CM:LoadSavedVars</strong>&nbsp;()</dt>
+<dd>
+Load saved variables.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:ParseCommand"></a><strong>CM:ParseCommand</strong>&nbsp;(cmd)</dt>
+<dd>
+Parse a command.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>cmd</em></code>: Command to parse.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Parsed command (without the command char) </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:ParseMessage"></a><strong>CM:ParseMessage</strong>&nbsp;(msg)</dt>
+<dd>
+Parse a message.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>msg</em></code>: The message to parse.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Table with the individual words. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:SendMessage"></a><strong>CM:SendMessage</strong>&nbsp;(msg, channel, target)</dt>
+<dd>
+Send a chat message. Will echo the msg param locally if LOCAL_ONLY setting is true.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>msg</em></code>: The message to send.
+	</li>
+
+	<li>
+	  <code><em>channel</em></code>: The channel to send to.
+	</li>
+
+	<li>
+	  <code><em>target</em></code>: Player or channel index to send message to.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.ChatManager"></a><strong>Command.ChatManager</strong></dt>
+<dd>Table holding all ChatManager methods. This is referenced "CM" in ChatManager.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>Settings</em></code>: Table holding all settings specific to ChatManager.
+	</li>
+
+	<li>
+	  <code><em>Default</em></code>: Table containing default settings (used at initial setup)
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/Command.html b/docs/files/Command.html
new file mode 100644
index 0000000..d5c93fc
--- /dev/null
+++ b/docs/files/Command.html
@@ -0,0 +1,437 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li><strong>Command.lua</strong></li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>Command.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#C:Disable">C:Disable</a>&nbsp;()</td>
+	<td class="summary">Disable AddOn.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:DisableDebug">C:DisableDebug</a>&nbsp;()</td>
+	<td class="summary">Disable debugging.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:Enable">C:Enable</a>&nbsp;()</td>
+	<td class="summary">Enable AddOn.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:EnableDebug">C:EnableDebug</a>&nbsp;()</td>
+	<td class="summary">Enable debugging.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:Init">C:Init</a>&nbsp;()</td>
+	<td class="summary">Initialize Command.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:LoadSavedVars">C:LoadSavedVars</a>&nbsp;()</td>
+	<td class="summary">Load the saved variables.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:SetDebug">C:SetDebug</a>&nbsp;(enabled)</td>
+	<td class="summary">Control debugging state.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:SetEnabled">C:SetEnabled</a>&nbsp;(enabled)</td>
+	<td class="summary">Control AddOn state.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:Toggle">C:Toggle</a>&nbsp;()</td>
+	<td class="summary">Toggle AddOn on and off.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#C:ToggleDebug">C:ToggleDebug</a>&nbsp;()</td>
+	<td class="summary">Toggle debugging.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command">Command</a></td>
+	<td class="summary">Table containing all Command methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="C:Disable"></a><strong>C:Disable</strong>&nbsp;()</dt>
+<dd>
+Disable AddOn.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:DisableDebug"></a><strong>C:DisableDebug</strong>&nbsp;()</dt>
+<dd>
+Disable debugging.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:Enable"></a><strong>C:Enable</strong>&nbsp;()</dt>
+<dd>
+Enable AddOn.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:EnableDebug"></a><strong>C:EnableDebug</strong>&nbsp;()</dt>
+<dd>
+Enable debugging.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:Init"></a><strong>C:Init</strong>&nbsp;()</dt>
+<dd>
+Initialize Command.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:LoadSavedVars"></a><strong>C:LoadSavedVars</strong>&nbsp;()</dt>
+<dd>
+Load the saved variables. Also call Init() on modules that need it.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:SetDebug"></a><strong>C:SetDebug</strong>&nbsp;(enabled)</dt>
+<dd>
+Control debugging state.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>enabled</em></code>: Boolean indicating enabled or disabled state.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:SetEnabled"></a><strong>C:SetEnabled</strong>&nbsp;(enabled)</dt>
+<dd>
+Control AddOn state.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>enabled</em></code>: Boolean indicating enabled or disabled state.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:Toggle"></a><strong>C:Toggle</strong>&nbsp;()</dt>
+<dd>
+Toggle AddOn on and off.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="C:ToggleDebug"></a><strong>C:ToggleDebug</strong>&nbsp;()</dt>
+<dd>
+Toggle debugging.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command"></a><strong>Command</strong></dt>
+<dd>Table containing all Command methods. This is referenced "C" in Command.lua<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>Name</em></code>: AddOn name.
+	</li>
+
+	<li>
+	  <code><em>Version</em></code>: AddOn version.
+	</li>
+
+	<li>
+	  <code><em>VarVersion</em></code>: SavedVariables version.
+	</li>
+
+	<li>
+	  <code><em>Enabled</em></code>: Enabled state.
+	</li>
+
+	<li>
+	  <code><em>Global</em></code>: Contains the saved variables.
+	</li>
+
+	<li>
+	  <code><em>Settings</em></code>: Contains settings specific to Command.
+	</li>
+
+	<li>
+	  <code><em>Events</em></code>: Contains all registered event handlers.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/CommandManager.html b/docs/files/CommandManager.html
new file mode 100644
index 0000000..70ad222
--- /dev/null
+++ b/docs/files/CommandManager.html
@@ -0,0 +1,326 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li><strong>CommandManager.lua</strong></li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>CommandManager.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:GetCommand">CM:GetCommand</a>&nbsp;(command)</td>
+	<td class="summary">Gets the callback for a command by name.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:HandleCommand">CM:HandleCommand</a>&nbsp;(command, args, isChat, player)</td>
+	<td class="summary">Calls command with supplied args.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:Init">CM:Init</a>&nbsp;()</td>
+	<td class="summary">Initialize CommandManager.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CM:Register">CM:Register</a>&nbsp;(command, access, func)</td>
+	<td class="summary">Register a new command.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.CommandManager">Command.CommandManager</a></td>
+	<td class="summary">Table holding all CommandManager methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="CM:GetCommand"></a><strong>CM:GetCommand</strong>&nbsp;(command)</dt>
+<dd>
+Gets the callback for a command by name.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>command</em></code>: Name of the command to get.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Callback for the command. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:HandleCommand"></a><strong>CM:HandleCommand</strong>&nbsp;(command, args, isChat, player)</dt>
+<dd>
+Calls command with supplied args.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>command</em></code>: Command to call (name)
+	</li>
+
+	<li>
+	  <code><em>args</em></code>: Table with arguments for the command.
+	</li>
+
+	<li>
+	  <code><em>isChat</em></code>: Is the command called from chat?
+	</li>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the calling player (if chat)
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>If successfull, returns result, otherwise false.</li>
+
+	<li>Error message if not successful, otherwise nil. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:Init"></a><strong>CM:Init</strong>&nbsp;()</dt>
+<dd>
+Initialize CommandManager. NOTE: Unused.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CM:Register"></a><strong>CM:Register</strong>&nbsp;(command, access, func)</dt>
+<dd>
+Register a new command.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>command</em></code>: Table containing aliases for the command.
+	</li>
+
+	<li>
+	  <code><em>access</em></code>: Number depicting the access level needed to execute command.
+	</li>
+
+	<li>
+	  <code><em>func</em></code>: Function called to execute command. Called with params args, player and isChat.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.CommandManager"></a><strong>Command.CommandManager</strong></dt>
+<dd>Table holding all CommandManager methods. This is referenced "CM" in CommandManager.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>Slash</em></code>: List of slash commands to register.
+	</li>
+
+	<li>
+	  <code><em>Commands</em></code>: Table holding all registered commands.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/EventHandler.html b/docs/files/EventHandler.html
new file mode 100644
index 0000000..63db675
--- /dev/null
+++ b/docs/files/EventHandler.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li><strong>EventHandler.lua</strong></li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>EventHandler.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command:OnEvent">Command:OnEvent</a>&nbsp;(frame, event, ...)</td>
+	<td class="summary">Handles events.</td>
+	</tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Command:OnEvent"></a><strong>Command:OnEvent</strong>&nbsp;(frame, event, ...)</dt>
+<dd>
+Handles events.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>frame</em></code>: The frame on which the event was registered.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of the event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/Events.html b/docs/files/Events.html
new file mode 100644
index 0000000..72b9148
--- /dev/null
+++ b/docs/files/Events.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li><strong>Events.lua</strong></li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>Events.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.ADDON_LOADED">Command.Events.ADDON_LOADED</a>&nbsp;(self, ...)</td>
+	<td class="summary">Event handler for ADDON_LOADED </td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.LFG_PROPOSAL_FAILED">Command.Events.LFG_PROPOSAL_FAILED</a>&nbsp;(self, ...)</td>
+	<td class="summary">Event handler for LFG_PROPOSAL_FAILED </td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.LFG_PROPOSAL_SHOW">Command.Events.LFG_PROPOSAL_SHOW</a>&nbsp;(self, ...)</td>
+	<td class="summary">Event handler for LFG_PROPOSAL_SHOW </td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.LFG_UPDATE">Command.Events.LFG_UPDATE</a>&nbsp;(self, ...)</td>
+	<td class="summary">Event handler for LFG_UPDATE </td>
+	</tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Command.Events.ADDON_LOADED"></a><strong>Command.Events.ADDON_LOADED</strong>&nbsp;(self, ...)</dt>
+<dd>
+Event handler for ADDON_LOADED
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.LFG_PROPOSAL_FAILED"></a><strong>Command.Events.LFG_PROPOSAL_FAILED</strong>&nbsp;(self, ...)</dt>
+<dd>
+Event handler for LFG_PROPOSAL_FAILED
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.LFG_PROPOSAL_SHOW"></a><strong>Command.Events.LFG_PROPOSAL_SHOW</strong>&nbsp;(self, ...)</dt>
+<dd>
+Event handler for LFG_PROPOSAL_SHOW
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.LFG_UPDATE"></a><strong>Command.Events.LFG_UPDATE</strong>&nbsp;(self, ...)</dt>
+<dd>
+Event handler for LFG_UPDATE
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/Events_Chat.html b/docs/files/Events_Chat.html
new file mode 100644
index 0000000..8d435bc
--- /dev/null
+++ b/docs/files/Events_Chat.html
@@ -0,0 +1,455 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li><strong>Events_Chat.lua</strong></li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>Events_Chat.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_GUILD">Command.Events.CHAT_MSG_GUILD</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_GUILD.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_OFFICER">Command.Events.CHAT_MSG_OFFICER</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_OFFICER.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_PARTY">Command.Events.CHAT_MSG_PARTY</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_PARTY.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_PARTY_LEADER">Command.Events.CHAT_MSG_PARTY_LEADER</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_PARTY_LEADER.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_RAID">Command.Events.CHAT_MSG_RAID</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_RAID.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_RAID_LEADER">Command.Events.CHAT_MSG_RAID_LEADER</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_RAID_LEADER.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_RAID_WARNING">Command.Events.CHAT_MSG_RAID_WARNING</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_RAID_WARNING.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Events.CHAT_MSG_WHISPER">Command.Events.CHAT_MSG_WHISPER</a>&nbsp;(self, event, ...)</td>
+	<td class="summary">Event handler for CHAT_MSG_WHISPER.</td>
+	</tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_GUILD"></a><strong>Command.Events.CHAT_MSG_GUILD</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_GUILD.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_OFFICER"></a><strong>Command.Events.CHAT_MSG_OFFICER</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_OFFICER.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_PARTY"></a><strong>Command.Events.CHAT_MSG_PARTY</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_PARTY.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_PARTY_LEADER"></a><strong>Command.Events.CHAT_MSG_PARTY_LEADER</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_PARTY_LEADER.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_RAID"></a><strong>Command.Events.CHAT_MSG_RAID</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_RAID.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_RAID_LEADER"></a><strong>Command.Events.CHAT_MSG_RAID_LEADER</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_RAID_LEADER.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_RAID_WARNING"></a><strong>Command.Events.CHAT_MSG_RAID_WARNING</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_RAID_WARNING.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="Command.Events.CHAT_MSG_WHISPER"></a><strong>Command.Events.CHAT_MSG_WHISPER</strong>&nbsp;(self, event, ...)</dt>
+<dd>
+Event handler for CHAT_MSG_WHISPER.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>self</em></code>: Reference to Command object.
+	</li>
+
+	<li>
+	  <code><em>event</em></code>: Full name of event.
+	</li>
+
+	<li>
+	  <code><em>...</em></code>: Event arguments.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/GroupTools.html b/docs/files/GroupTools.html
new file mode 100644
index 0000000..bd33ccb
--- /dev/null
+++ b/docs/files/GroupTools.html
@@ -0,0 +1,379 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li><strong>GroupTools.lua</strong></li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>GroupTools.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsGroup">GT:IsGroup</a>&nbsp;()</td>
+	<td class="summary">Check if player is in a group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsGroupFull">GT:IsGroupFull</a>&nbsp;()</td>
+	<td class="summary">Check if the group is full.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsGroupLeader">GT:IsGroupLeader</a>&nbsp;(name)</td>
+	<td class="summary">Check if the unit is the group leader.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsInGroup">GT:IsInGroup</a>&nbsp;(name)</td>
+	<td class="summary">Check if the unit is in the player's group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsLFGGroup">GT:IsLFGGroup</a>&nbsp;()</td>
+	<td class="summary">Check if the player is in an LFG group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsRaid">GT:IsRaid</a>&nbsp;()</td>
+	<td class="summary">Check if player is in a raid.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsRaidAssistant">GT:IsRaidAssistant</a>&nbsp;(name)</td>
+	<td class="summary">Check if unit is raid assistant.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#GT:IsRaidLeaderOrAssistant">GT:IsRaidLeaderOrAssistant</a>&nbsp;(name)</td>
+	<td class="summary">Check if the unit is raid leader or assistant.</td>
+	</tr>
+
+</table>
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="GT:IsGroup"></a><strong>GT:IsGroup</strong>&nbsp;()</dt>
+<dd>
+Check if player is in a group.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if player is in group, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsGroupFull"></a><strong>GT:IsGroupFull</strong>&nbsp;()</dt>
+<dd>
+Check if the group is full. NOTE: Only checks for 5 players in a party and 40 players in a raid. DOES NOT respect 10 and 25 man raids.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the group is full, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsGroupLeader"></a><strong>GT:IsGroupLeader</strong>&nbsp;(name)</dt>
+<dd>
+Check if the unit is the group leader.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>name</em></code>: Name/Unit to check, defaults to player.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if unit is group leader, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsInGroup"></a><strong>GT:IsInGroup</strong>&nbsp;(name)</dt>
+<dd>
+Check if the unit is in the player's group.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>name</em></code>: Unit/Player Name to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the unit is in group, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsLFGGroup"></a><strong>GT:IsLFGGroup</strong>&nbsp;()</dt>
+<dd>
+Check if the player is in an LFG group.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the player is in an LFG group, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsRaid"></a><strong>GT:IsRaid</strong>&nbsp;()</dt>
+<dd>
+Check if player is in a raid.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the player is in a raid, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsRaidAssistant"></a><strong>GT:IsRaidAssistant</strong>&nbsp;(name)</dt>
+<dd>
+Check if unit is raid assistant.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>name</em></code>: Unit to check, defaults to player.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if assistant, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="GT:IsRaidLeaderOrAssistant"></a><strong>GT:IsRaidLeaderOrAssistant</strong>&nbsp;(name)</dt>
+<dd>
+Check if the unit is raid leader or assistant.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>name</em></code>: Unit to check, defaults to player.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the unit is raid leader or assistant, false otherwise. </ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/Logger.html b/docs/files/Logger.html
new file mode 100644
index 0000000..3a88535
--- /dev/null
+++ b/docs/files/Logger.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li><strong>Logger.lua</strong></li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>Logger.lua</code></h1>
+
+
+
+
+
+
+
+
+
+
+
+
+<br/>
+<br/>
+
+
+
+
+
+
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/PlayerManager.html b/docs/files/PlayerManager.html
new file mode 100644
index 0000000..aa616cc
--- /dev/null
+++ b/docs/files/PlayerManager.html
@@ -0,0 +1,1092 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li><strong>PlayerManager.lua</strong></li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>PlayerManager.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:BanUser">PM:BanUser</a>&nbsp;(player)</td>
+	<td class="summary">Ban player.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:GetAccess">PM:GetAccess</a>&nbsp;(player)</td>
+	<td class="summary">Get the current access level of supplied player.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:GetListMode">PM:GetListMode</a>&nbsp;()</td>
+	<td class="summary">Gets the current mode of the list.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:GetOrCreatePlayer">PM:GetOrCreatePlayer</a>&nbsp;(name)</td>
+	<td class="summary">Get or create a player.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:HasAccess">PM:HasAccess</a>&nbsp;(player, command)</td>
+	<td class="summary">Check if player has access to command.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:Init">PM:Init</a>&nbsp;()</td>
+	<td class="summary">Initialize the player manager.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:Invite">PM:Invite</a>&nbsp;(player, isSelf)</td>
+	<td class="summary">Invite a player to group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:IsBNFriend">PM:IsBNFriend</a>&nbsp;(player)</td>
+	<td class="summary">Check if supplied player is on the player's BN friends list.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:IsFriend">PM:IsFriend</a>&nbsp;(player)</td>
+	<td class="summary">Check if supplied player is on the player's friends list.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:IsInGuild">PM:IsInGuild</a>&nbsp;(player)</td>
+	<td class="summary">Check if the supplied player is in the player's guild.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:Kick">PM:Kick</a>&nbsp;(player)</td>
+	<td class="summary">Kick a player from the group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:ListAdd">PM:ListAdd</a>&nbsp;(command)</td>
+	<td class="summary">Add a command to the blacklist/whitelist.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:ListRemove">PM:ListRemove</a>&nbsp;(command)</td>
+	<td class="summary">Remove a command from the blacklist/whitelist.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:LoadSavedVars">PM:LoadSavedVars</a>&nbsp;()</td>
+	<td class="summary">Load saved variables.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:PlayerAccess">PM:PlayerAccess</a>&nbsp;(player, command, allow)</td>
+	<td class="summary">Modify the access of a command for a specific player.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:PlayerAccessRemove">PM:PlayerAccessRemove</a>&nbsp;(player, command)</td>
+	<td class="summary">Completely remove a command from a player's access list.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:PromoteToAssistant">PM:PromoteToAssistant</a>&nbsp;(player)</td>
+	<td class="summary">Promote player to assistant.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:PromoteToLeader">PM:PromoteToLeader</a>&nbsp;(player)</td>
+	<td class="summary">Promote a player to group leader.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetAccessGroup">PM:SetAccessGroup</a>&nbsp;(player, group)</td>
+	<td class="summary">Set the access group of supplied player.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetAdmin">PM:SetAdmin</a>&nbsp;(player)</td>
+	<td class="summary">Give player Admin access.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetListMode">PM:SetListMode</a>&nbsp;(mode)</td>
+	<td class="summary">Set the mode of the list.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetOp">PM:SetOp</a>&nbsp;(player)</td>
+	<td class="summary">Give player Op access.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetOwner">PM:SetOwner</a>&nbsp;(player)</td>
+	<td class="summary">Give player Owner access.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:SetUser">PM:SetUser</a>&nbsp;(player)</td>
+	<td class="summary">Give player User access.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:ToggleListMode">PM:ToggleListMode</a>&nbsp;()</td>
+	<td class="summary">Toggle the list between being a blacklist and being a whitelist.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#PM:UpdatePlayer">PM:UpdatePlayer</a>&nbsp;(player)</td>
+	<td class="summary">Update a player and subsequently save them.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.PlayerManager">Command.PlayerManager</a></td>
+	<td class="summary">Table containing all PlayerManager methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="PM:BanUser"></a><strong>PM:BanUser</strong>&nbsp;(player)</dt>
+<dd>
+Ban player. What this really does is set the access level to "Banned", effectively blocking the player from using any commands. Unless there is a command that requires access level "Banned". (Could be used for appeal commands).
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:GetAccess"></a><strong>PM:GetAccess</strong>&nbsp;(player)</dt>
+<dd>
+Get the current access level of supplied player.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Access level of the player. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:GetListMode"></a><strong>PM:GetListMode</strong>&nbsp;()</dt>
+<dd>
+Gets the current mode of the list.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:GetOrCreatePlayer"></a><strong>PM:GetOrCreatePlayer</strong>&nbsp;(name)</dt>
+<dd>
+Get or create a player.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>name</em></code>: Name of player.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Player from list of players if exists, otherwise a new player object. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:HasAccess"></a><strong>PM:HasAccess</strong>&nbsp;(player, command)</dt>
+<dd>
+Check if player has access to command.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to check.
+	</li>
+
+	<li>
+	  <code><em>command</em></code>: Command object of the command to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if player has access, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:Init"></a><strong>PM:Init</strong>&nbsp;()</dt>
+<dd>
+Initialize the player manager.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:Invite"></a><strong>PM:Invite</strong>&nbsp;(player, isSelf)</dt>
+<dd>
+Invite a player to group. Also sends a message to the invited player about the event.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of player to invite.
+	</li>
+
+	<li>
+	  <code><em>isSelf</em></code>: True if player is inviting themselves, nil or false otherwise.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the invite, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:IsBNFriend"></a><strong>PM:IsBNFriend</strong>&nbsp;(player)</dt>
+<dd>
+Check if supplied player is on the player's BN friends list.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if BN friend, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:IsFriend"></a><strong>PM:IsFriend</strong>&nbsp;(player)</dt>
+<dd>
+Check if supplied player is on the player's friends list.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if friend, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:IsInGuild"></a><strong>PM:IsInGuild</strong>&nbsp;(player)</dt>
+<dd>
+Check if the supplied player is in the player's guild.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to check.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if in guild, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:Kick"></a><strong>PM:Kick</strong>&nbsp;(player)</dt>
+<dd>
+Kick a player from the group.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to kick.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the kick, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:ListAdd"></a><strong>PM:ListAdd</strong>&nbsp;(command)</dt>
+<dd>
+Add a command to the blacklist/whitelist.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>command</em></code>: Name of command to add.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:ListRemove"></a><strong>PM:ListRemove</strong>&nbsp;(command)</dt>
+<dd>
+Remove a command from the blacklist/whitelist.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>command</em></code>: Name of command to remove.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:LoadSavedVars"></a><strong>PM:LoadSavedVars</strong>&nbsp;()</dt>
+<dd>
+Load saved variables.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:PlayerAccess"></a><strong>PM:PlayerAccess</strong>&nbsp;(player, command, allow)</dt>
+<dd>
+Modify the access of a command for a specific player.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to modify.
+	</li>
+
+	<li>
+	  <code><em>command</em></code>: Name of command to allow or deny.
+	</li>
+
+	<li>
+	  <code><em>allow</em></code>: True to allow command, false to deny.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result, or false if error.</li>
+
+	<li>Error message if unsuccessful, otherwise nil. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:PlayerAccessRemove"></a><strong>PM:PlayerAccessRemove</strong>&nbsp;(player, command)</dt>
+<dd>
+Completely remove a command from a player's access list. Removes from both the allow and deny list.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to modify.
+	</li>
+
+	<li>
+	  <code><em>command</em></code>: Name of command to remove.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:PromoteToAssistant"></a><strong>PM:PromoteToAssistant</strong>&nbsp;(player)</dt>
+<dd>
+Promote player to assistant.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to promote.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the promotion, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:PromoteToLeader"></a><strong>PM:PromoteToLeader</strong>&nbsp;(player)</dt>
+<dd>
+Promote a player to group leader.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object of the player to promote.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the promotion, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetAccessGroup"></a><strong>PM:SetAccessGroup</strong>&nbsp;(player, group)</dt>
+<dd>
+Set the access group of supplied player.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+	<li>
+	  <code><em>group</em></code>: Group name to set the player to.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetAdmin"></a><strong>PM:SetAdmin</strong>&nbsp;(player)</dt>
+<dd>
+Give player Admin access.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetListMode"></a><strong>PM:SetListMode</strong>&nbsp;(mode)</dt>
+<dd>
+Set the mode of the list.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>mode</em></code>: Mode to change to, MODE_WHITELIST for whitelist and MODE_BLACKLIST for blacklist.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>String stating what mode the list is in. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetOp"></a><strong>PM:SetOp</strong>&nbsp;(player)</dt>
+<dd>
+Give player Op access.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetOwner"></a><strong>PM:SetOwner</strong>&nbsp;(player)</dt>
+<dd>
+Give player Owner access.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:SetUser"></a><strong>PM:SetUser</strong>&nbsp;(player)</dt>
+<dd>
+Give player User access.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player to modify.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return values:</h3>
+<ol>
+
+	<li>String stating the result of the operation, false if error.</li>
+
+	<li>Error message if unsuccessful, nil otherwise. </li>
+
+</ol>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:ToggleListMode"></a><strong>PM:ToggleListMode</strong>&nbsp;()</dt>
+<dd>
+Toggle the list between being a blacklist and being a whitelist.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>String stating what mode the list is in. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="PM:UpdatePlayer"></a><strong>PM:UpdatePlayer</strong>&nbsp;(player)</dt>
+<dd>
+Update a player and subsequently save them.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>player</em></code>: Player object to update.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.PlayerManager"></a><strong>Command.PlayerManager</strong></dt>
+<dd>Table containing all PlayerManager methods. This is referenced "PM" in PlayerManager.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>Access</em></code>: Table containing all available access groups.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/QueueManager.html b/docs/files/QueueManager.html
new file mode 100644
index 0000000..1b21cb7
--- /dev/null
+++ b/docs/files/QueueManager.html
@@ -0,0 +1,424 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li><strong>QueueManager.lua</strong></li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>QueueManager.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:Accept">QM:Accept</a>&nbsp;()</td>
+	<td class="summary">Causes player to accept a pending LFG invite.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:Announce">QM:Announce</a>&nbsp;(_, elapsed)</td>
+	<td class="summary">Announce the current status of LFG to group.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:AnnounceStatus">QM:AnnounceStatus</a>&nbsp;()</td>
+	<td class="summary">Trigger method to announce status.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:Cancel">QM:Cancel</a>&nbsp;()</td>
+	<td class="summary">Cancel the queueing/rolechecking.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:GetIndex">QM:GetIndex</a>&nbsp;(alias)</td>
+	<td class="summary">Gets the numeric index of a dungoen for use with SetLFGDungeon.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#QM:Queue">QM:Queue</a>&nbsp;(index)</td>
+	<td class="summary">Queue for the dungeon with supplied index.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.QueueManager">Command.QueueManager</a></td>
+	<td class="summary">Table containing all QueueManager methods.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.QueueManager.Types">Command.QueueManager.Types</a></td>
+	<td class="summary">Contains information about various dungeon types.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="QM:Accept"></a><strong>QM:Accept</strong>&nbsp;()</dt>
+<dd>
+Causes player to accept a pending LFG invite.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>String stating that the invite was accepted. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="QM:Announce"></a><strong>QM:Announce</strong>&nbsp;(_, elapsed)</dt>
+<dd>
+Announce the current status of LFG to group.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>_</em></code>: Not used
+	</li>
+
+	<li>
+	  <code><em>elapsed</em></code>: Time elapsed since last time OnUpdate fired.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="QM:AnnounceStatus"></a><strong>QM:AnnounceStatus</strong>&nbsp;()</dt>
+<dd>
+Trigger method to announce status. This is because the status of LFG is not available straight after LFG_UPDATE event is fired.
+
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="QM:Cancel"></a><strong>QM:Cancel</strong>&nbsp;()</dt>
+<dd>
+Cancel the queueing/rolechecking.
+
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>String stating that queue has been cancelled. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="QM:GetIndex"></a><strong>QM:GetIndex</strong>&nbsp;(alias)</dt>
+<dd>
+Gets the numeric index of a dungoen for use with SetLFGDungeon.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>alias</em></code>: Name/Alias of the dungeon.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Index of the dungeon if dungeon was found, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="QM:Queue"></a><strong>QM:Queue</strong>&nbsp;(index)</dt>
+<dd>
+Queue for the dungeon with supplied index.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>index</em></code>: Index of dungeon to queue for.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>String stating that rolecheck has started. </ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.QueueManager"></a><strong>Command.QueueManager</strong></dt>
+<dd>Table containing all QueueManager methods. This is referenced "QM" in QueueManager.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>QueuedByCommand</em></code>: True if player has been queued by a command, false otherwise.
+	</li>
+
+	<li>
+	  <code><em>Current</em></code>: The current dungeon for which the group is queued.
+	</li>
+
+	<li>
+	  <code><em>Running</em></code>: True if announce is running, false otherwise.
+	</li>
+
+	<li>
+	  <code><em>Time</em></code>: Total time since Announce was called.
+	</li>
+
+	<li>
+	  <code><em>LastMode</em></code>: Last not-nil value returned by GetLFGMode.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+<dt><a name="Command.QueueManager.Types"></a><strong>Command.QueueManager.Types</strong></dt>
+<dd>Contains information about various dungeon types. Each entry has an Alias table and an Id field. The Alias table contains names that this dungeon may be referenced by. The Id field is either a number or a function that gives the index for that dungeon type.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>ClassicRandom</em></code>: Random Classic Dungeon
+	</li>
+
+	<li>
+	  <code><em>TBCRandom</em></code>: Random Burning Crusade Dungeon
+	</li>
+
+	<li>
+	  <code><em>TBCHeroic</em></code>: Random Heroic Burning Crusade Dungeon
+	</li>
+
+	<li>
+	  <code><em>LKRandom</em></code>: Random Wrath of the Lich king Dungeon
+	</li>
+
+	<li>
+	  <code><em>LKHeroic</em></code>: Random Heroic Wrath of the Lich King Dungeon
+	</li>
+
+	<li>
+	  <code><em>CataclysmRandom</em></code>: Random Cataclysm Dungeon
+	</li>
+
+	<li>
+	  <code><em>CataclysmHeroic</em></code>: Random Heroic Cataclysm Dungeon
+	</li>
+
+	<li>
+	  <code><em>Zandalari</em></code>: Random Rise of the Zandalari Dungeon
+	</li>
+
+	<li>
+	  <code><em>Horseman</em></code>: The Headless Horseman Hallow's Eve dungeon
+	</li>
+
+	<li>
+	  <code><em>BestChoice</em></code>: Let the server decide what dungeon is best for the player
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/String.html b/docs/files/String.html
new file mode 100644
index 0000000..2997b91
--- /dev/null
+++ b/docs/files/String.html
@@ -0,0 +1,313 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li><strong>String.lua</strong></li>
+
+	<li>
+		<a href="../files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>String.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#CES:EndsWith">CES:EndsWith</a>&nbsp;(s, target)</td>
+	<td class="summary">Check if a string ends with a specific string.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CES:Split">CES:Split</a>&nbsp;(s)</td>
+	<td class="summary">Split a string with space as delimiter.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CES:StartsWith">CES:StartsWith</a>&nbsp;(s, target)</td>
+	<td class="summary">Check if a string starts with a specific string.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CES:Trim">CES:Trim</a>&nbsp;(s)</td>
+	<td class="summary">Trim a string, removing whitespace at the beginning of it.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Extentions.String">Command.Extentions.String</a></td>
+	<td class="summary">Table containing all String methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="CES:EndsWith"></a><strong>CES:EndsWith</strong>&nbsp;(s, target)</dt>
+<dd>
+Check if a string ends with a specific string.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>s</em></code>: String to be checked.
+	</li>
+
+	<li>
+	  <code><em>target</em></code>: Stromg to search for at end of s.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CES:Split"></a><strong>CES:Split</strong>&nbsp;(s)</dt>
+<dd>
+Split a string with space as delimiter.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>s</em></code>: String to be split.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>Table containing the individual words. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CES:StartsWith"></a><strong>CES:StartsWith</strong>&nbsp;(s, target)</dt>
+<dd>
+Check if a string starts with a specific string.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>s</em></code>: String to be checked.
+	</li>
+
+	<li>
+	  <code><em>target</em></code>: String to search for at beginning of s.
+	</li>
+
+</ul>
+
+
+
+
+
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CES:Trim"></a><strong>CES:Trim</strong>&nbsp;(s)</dt>
+<dd>
+Trim a string, removing whitespace at the beginning of it.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>s</em></code>: String to be trimmed.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>The trimmed string. </ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.Extentions.String"></a><strong>Command.Extentions.String</strong></dt>
+<dd>Table containing all String methods. This is referenced "CES" in String.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>type</em></code>: No current use.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/files/Table.html b/docs/files/Table.html
new file mode 100644
index 0000000..4b0ebd6
--- /dev/null
+++ b/docs/files/Table.html
@@ -0,0 +1,289 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><a href="../index.html">Index</a></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="../files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="../files/String.html">String.lua</a>
+	</li>
+
+	<li><strong>Table.lua</strong></li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+<h1>File <code>Table.lua</code></h1>
+
+
+
+
+
+
+
+<h2>Functions</h2>
+<table class="function_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#CET:Copy">CET:Copy</a>&nbsp;(tbl, cache)</td>
+	<td class="summary">Create a copy of a table.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CET:HasKey">CET:HasKey</a>&nbsp;(tbl, key)</td>
+	<td class="summary">Check if a table has the supplied key.</td>
+	</tr>
+
+	<tr>
+	<td class="name" nowrap><a href="#CET:HasValue">CET:HasValue</a>&nbsp;(tbl, value)</td>
+	<td class="summary">Check if a table contains the supplied value.</td>
+	</tr>
+
+</table>
+
+
+
+
+<h2>Tables</h2>
+<table class="table_list">
+
+	<tr>
+	<td class="name" nowrap><a href="#Command.Extensions.Table">Command.Extensions.Table</a></td>
+	<td class="summary">Table containing all Table methods.</td>
+	</tr>
+
+</table>
+
+
+
+<br/>
+<br/>
+
+
+
+
+<h2><a name="functions"></a>Functions</h2>
+<dl class="function">
+
+
+
+<dt><a name="CET:Copy"></a><strong>CET:Copy</strong>&nbsp;(tbl, cache)</dt>
+<dd>
+Create a copy of a table.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>tbl</em></code>: Table to copy.
+	</li>
+
+	<li>
+	  <code><em>cache</em></code>: Cache used for recursion.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>A copy of the supplied table without references. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CET:HasKey"></a><strong>CET:HasKey</strong>&nbsp;(tbl, key)</dt>
+<dd>
+Check if a table has the supplied key.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>tbl</em></code>: Table to check.
+	</li>
+
+	<li>
+	  <code><em>key</em></code>: Key to search for.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the key was found, false otherwise. </ul>
+
+
+
+</dd>
+
+
+
+
+<dt><a name="CET:HasValue"></a><strong>CET:HasValue</strong>&nbsp;(tbl, value)</dt>
+<dd>
+Check if a table contains the supplied value.
+
+
+<h3>Parameters:</h3>
+<ul>
+
+	<li>
+	  <code><em>tbl</em></code>: Table to check.
+	</li>
+
+	<li>
+	  <code><em>value</em></code>: Value to search for.
+	</li>
+
+</ul>
+
+
+
+
+
+
+<h3>Return value:</h3>
+<ul>True if the value was found, false otherwise.</ul>
+
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+<h2><a name="tables"></a>Tables</h2>
+<dl class="table">
+
+<dt><a name="Command.Extensions.Table"></a><strong>Command.Extensions.Table</strong></dt>
+<dd>Table containing all Table methods. This is referenced "CET" in Table.lua.<br /><br />
+
+
+<h3>Fields:</h3>
+<ul>
+
+	<li>
+	  <code><em>type</em></code>: No current use.
+	</li>
+
+</ul>
+
+
+</dd>
+
+
+</dl>
+
+
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..a54a6e0
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+    <title>Reference</title>
+    <link rel="stylesheet" href="luadoc.css" type="text/css" />
+	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
+</head>
+
+<body>
+<div id="container">
+
+<div id="product">
+	<div id="product_logo"></div>
+	<div id="product_name"><big><b></b></big></div>
+	<div id="product_description"></div>
+</div> <!-- id="product" -->
+
+<div id="main">
+
+<div id="navigation">
+
+
+<h1>LuaDoc</h1>
+<ul>
+
+	<li><strong>Index</strong></li>
+
+</ul>
+
+
+<!-- Module list -->
+
+
+
+<!-- File list -->
+
+<h1>Files</h1>
+<ul>
+
+	<li>
+		<a href="files/ChatManager.html">ChatManager.lua</a>
+	</li>
+
+	<li>
+		<a href="files/Command.html">Command.lua</a>
+	</li>
+
+	<li>
+		<a href="files/CommandManager.html">CommandManager.lua</a>
+	</li>
+
+	<li>
+		<a href="files/EventHandler.html">EventHandler.lua</a>
+	</li>
+
+	<li>
+		<a href="files/Events.html">Events.lua</a>
+	</li>
+
+	<li>
+		<a href="files/Events_Chat.html">Events_Chat.lua</a>
+	</li>
+
+	<li>
+		<a href="files/GroupTools.html">GroupTools.lua</a>
+	</li>
+
+	<li>
+		<a href="files/Logger.html">Logger.lua</a>
+	</li>
+
+	<li>
+		<a href="files/PlayerManager.html">PlayerManager.lua</a>
+	</li>
+
+	<li>
+		<a href="files/QueueManager.html">QueueManager.lua</a>
+	</li>
+
+	<li>
+		<a href="files/String.html">String.lua</a>
+	</li>
+
+	<li>
+		<a href="files/Table.html">Table.lua</a>
+	</li>
+
+</ul>
+
+
+
+
+
+
+</div> <!-- id="navigation" -->
+
+<div id="content">
+
+
+
+
+
+
+
+<h2>Files</h2>
+<table class="file_list">
+<!--<tr><td colspan="2">Files</td></tr>-->
+
+	<tr>
+		<td class="name"><a href="files/ChatManager.html">ChatManager.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/Command.html">Command.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/CommandManager.html">CommandManager.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/EventHandler.html">EventHandler.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/Events.html">Events.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/Events_Chat.html">Events_Chat.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/GroupTools.html">GroupTools.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/Logger.html">Logger.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/PlayerManager.html">PlayerManager.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/QueueManager.html">QueueManager.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/String.html">String.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+	<tr>
+		<td class="name"><a href="files/Table.html">Table.lua</a></td>
+		<td class="summary"></td>
+	</tr>
+
+</table>
+
+
+</div> <!-- id="content" -->
+
+</div> <!-- id="main" -->
+
+<div id="about">
+	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
+</div> <!-- id="about" -->
+
+</div> <!-- id="container" -->
+</body>
+</html>
diff --git a/docs/luadoc.css b/docs/luadoc.css
new file mode 100644
index 0000000..b82606f
--- /dev/null
+++ b/docs/luadoc.css
@@ -0,0 +1,286 @@
+body {
+    margin-left: 1em;
+    margin-right: 1em;
+    font-family: arial, helvetica, geneva, sans-serif;
+	background-color:#ffffff; margin:0px;
+}
+
+code {
+    font-family: "Andale Mono", monospace;
+}
+
+tt {
+    font-family: "Andale Mono", monospace;
+}
+
+body, td, th { font-size: 11pt; }
+
+h1, h2, h3, h4 { margin-left: 0em; }
+
+textarea, pre, tt { font-size:10pt; }
+body, td, th { color:#000000; }
+small { font-size:0.85em; }
+h1 { font-size:1.5em; }
+h2 { font-size:1.25em; }
+h3 { font-size:1.15em; }
+h4 { font-size:1.06em; }
+
+a:link { font-weight:bold; color: #004080; text-decoration: none; }
+a:visited { font-weight:bold; color: #006699; text-decoration: none; }
+a:link:hover { text-decoration:underline; }
+hr { color:#cccccc }
+img { border-width: 0px; }
+
+
+h3 { padding-top: 1em; }
+
+p { margin-left: 1em; }
+
+p.name {
+    font-family: "Andale Mono", monospace;
+    padding-top: 1em;
+    margin-left: 0em;
+}
+
+blockquote { margin-left: 3em; }
+
+pre.example {
+    background-color: rgb(245, 245, 245);
+    border-top-width: 1px;
+    border-right-width: 1px;
+    border-bottom-width: 1px;
+    border-left-width: 1px;
+    border-top-style: solid;
+    border-right-style: solid;
+    border-bottom-style: solid;
+    border-left-style: solid;
+    border-top-color: silver;
+    border-right-color: silver;
+    border-bottom-color: silver;
+    border-left-color: silver;
+    padding: 1em;
+    margin-left: 1em;
+    margin-right: 1em;
+    font-family: "Andale Mono", monospace;
+    font-size: smaller;
+}
+
+
+hr {
+    margin-left: 0em;
+	background: #00007f;
+	border: 0px;
+	height: 1px;
+}
+
+ul { list-style-type: disc; }
+
+table.index { border: 1px #00007f; }
+table.index td { text-align: left; vertical-align: top; }
+table.index ul { padding-top: 0em; margin-top: 0em; }
+
+table {
+    border: 1px solid black;
+	border-collapse: collapse;
+    margin-left: auto;
+    margin-right: auto;
+}
+th {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+td {
+    border: 1px solid black;
+    padding: 0.5em;
+}
+div.header, div.footer { margin-left: 0em; }
+
+#container
+{
+	margin-left: 1em;
+	margin-right: 1em;
+	background-color: #f0f0f0;
+}
+
+#product
+{
+	text-align: center;
+	border-bottom: 1px solid #cccccc;
+	background-color: #ffffff;
+}
+
+#product big {
+	font-size: 2em;
+}
+
+#product_logo
+{
+}
+
+#product_name
+{
+}
+
+#product_description
+{
+}
+
+#main
+{
+	background-color: #f0f0f0;
+	border-left: 2px solid #cccccc;
+}
+
+#navigation
+{
+	float: left;
+	width: 18em;
+	margin: 0;
+	vertical-align: top;
+	background-color: #f0f0f0;
+	overflow:visible;
+}
+
+#navigation h1 {
+	background-color:#e7e7e7;
+	font-size:1.1em;
+	color:#000000;
+	text-align:left;
+	margin:0px;
+	padding:0.2em;
+	border-top:1px solid #dddddd;
+	border-bottom:1px solid #dddddd;
+}
+
+#navigation ul
+{
+	font-size:1em;
+	list-style-type: none;
+	padding: 0;
+	margin: 1px;
+}
+
+#navigation li
+{
+	text-indent: -1em;
+	margin: 0em 0em 0em 0.5em;
+	display: block;
+	padding: 3px 0px 0px 12px;
+}
+
+#navigation li li a
+{
+	padding: 0px 3px 0px -1em;
+}
+
+#content
+{
+	margin-left: 18em;
+	padding: 1em;
+	border-left: 2px solid #cccccc;
+	border-right: 2px solid #cccccc;
+	background-color: #ffffff;
+}
+
+#about
+{
+	clear: both;
+	margin: 0;
+	padding: 5px;
+	border-top: 2px solid #cccccc;
+	background-color: #ffffff;
+}
+
+@media print {
+	body {
+		font: 12pt "Times New Roman", "TimeNR", Times, serif;
+	}
+	a { font-weight:bold; color: #004080; text-decoration: underline; }
+
+	#main
	{
		background-color: #ffffff;
		border-left: 0px;
	}
+	#container
	{
		margin-left: 2%;
		margin-right: 2%;
		background-color: #ffffff;
	}
+
+	#content
	{
		margin-left: 0px;
		padding: 1em;
		border-left: 0px;
		border-right: 0px;
		background-color: #ffffff;
	}
+
+	#navigation
	{
		display: none;
+	}
+	pre.example {
+		font-family: "Andale Mono", monospace;
+		font-size: 10pt;
+		page-break-inside: avoid;
+	}
+}
+
+table.module_list td
+{
+	border-width: 1px;
+	padding: 3px;
+	border-style: solid;
+	border-color: #cccccc;
+}
+table.module_list td.name { background-color: #f0f0f0; }
+table.module_list td.summary { width: 100%; }
+
+table.file_list
+{
+	border-width: 1px;
+	border-style: solid;
+	border-color: #cccccc;
+	border-collapse: collapse;
+}
+table.file_list td
+{
+	border-width: 1px;
+	padding: 3px;
+	border-style: solid;
+	border-color: #cccccc;
+}
+table.file_list td.name { background-color: #f0f0f0; }
+table.file_list td.summary { width: 100%; }
+
+
+table.function_list
+{
+	border-width: 1px;
+	border-style: solid;
+	border-color: #cccccc;
+	border-collapse: collapse;
+}
+table.function_list td
+{
+	border-width: 1px;
+	padding: 3px;
+	border-style: solid;
+	border-color: #cccccc;
+}
+table.function_list td.name { background-color: #f0f0f0; }
+table.function_list td.summary { width: 100%; }
+
+
+table.table_list
+{
+	border-width: 1px;
+	border-style: solid;
+	border-color: #cccccc;
+	border-collapse: collapse;
+}
+table.table_list td
+{
+	border-width: 1px;
+	padding: 3px;
+	border-style: solid;
+	border-color: #cccccc;
+}
+table.table_list td.name { background-color: #f0f0f0; }
+table.table_list td.summary { width: 100%; }
+
+dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.function dd {padding-bottom: 1em;}
+dl.function h3 {padding-top: 1em; margin: 0; font-size: medium;}
+
+dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;}
+dl.table dd {padding-bottom: 1em;}
+dl.table h3 {padding: 0; margin: 0; font-size: medium;}
+
+#TODO: make module_list, file_list, function_list, table_list inherit from a list
+