Thread Tools Display Modes
01-03-23, 06:30 PM   #1
pstatix
A Murloc Raider
Join Date: Jan 2023
Posts: 8
Questions on the history of AddOn creation

Hello!

TL;DR: Is it documented anywhere how Blizzard knows to look in Interface/AddOns, converts XML to Lua and uses a restricted Lua environment?

Long time player, first time AddOn author.

I'm a SWE by day and gamer by night, and wanted to give a go at creating a simple AddOn for my toon.
As I went about searching for documentation, pretty much everything points at the various WoW-wiki sites. While this is extensive and can get you started, I've already fallen into several rabbit holes chasing down how it all works. Since this is the largest forum community for the development, I am hoping somebody can answer some of the questions I've come up with:
  1. No official Blizzard docs, so how was the AddOn load sequence discovered?

    The Interface/AddOns directory seems straight forward, but there is nothing in the WoW root directory, or officially provided by Blizzard that indicates "Create an AddOns folder and place a .toc, .xml/.lua file(s) in it and an AddOn will be loaded". So how/when did the load process for AddOns get exposed?

  2. FrameXML and loading XML to Lua, but how?

    Following the "discovery" mindset of the first question, it would seem that WoW has some sort of XML to Lua parser? We can set references to other functions defined in a .lua to an objects tags (such as <OnLoad>) and those functions are injected to the tables of the instantiated XML layouts. Again, nothing documenting this, so I want to make sure I understand that every addon is a root Frame (typically) and the XML is in fact being parsed by some loader and generating Lua objects.

  3. Lua 5.1, but not really?

    In trying to load multiple files, I initially gave a shot to the "require" keyword, only to find that its not supported. Several Google's lead me to some StackOverflow posts that indicated WoW uses a restricted version of the Lua 5.1 compiler/environment. Again, unfortunately, there isn't anything that documents this environment, so how was this learned/confirmed and what else can't it do?

As you can probably surmise, all my questions are around the history of how AddOn development documentation (as is) came be. Since Blizzard provides no official environment overview/documentation, I'm curious how these elements of AddOn development were discovered and if my understanding of them is correct.

Cheers!

Aeth

Last edited by pstatix : 01-03-23 at 08:55 PM.
  Reply With Quote
01-04-23, 11:14 AM   #2
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2006
Posts: 2,313
Originally Posted by pstatix View Post
As I went about searching for documentation, pretty much everything points at the various WoW-wiki sites. While this is extensive and can get you started, I've already fallen into several rabbit holes chasing down how it all works.
Long story short. It's been almost 20 years. Direct word from Blizzard about how the process works has been lost to time long ago. The best you can get now is from WoWPedia, which is the successor to the old WoWWiki.



Originally Posted by pstatix View Post
1. No official Blizzard docs, so how was the AddOn load sequence discovered?

The Interface/AddOns directory seems straight forward, but there is nothing in the WoW root directory, or officially provided by Blizzard that indicates "Create an AddOns folder and place a .toc, .xml/.lua file(s) in it and an AddOn will be loaded". So how/when did the load process for AddOns get exposed?
I can't say for sure what was the starting point. Even when I got started back in WoW's first year, we had already migrated to "peek at someone else's code and see what they did".



Originally Posted by pstatix View Post
2. FrameXML and loading XML to Lua, but how?

Following the "discovery" mindset of the first question, it would seem that WoW has some sort of XML to Lua parser? We can set references to other functions defined in a .lua to an objects tags (such as <OnLoad>) and those functions are injected to the tables of the instantiated XML layouts.
The XML parser doesn't "convert" anything into Lua. All UI objects are exposed as fresh tables with a userdata "reference" value stored at index zero and a shared metatable assigned according to the created UI object. The actual UI object resides in C.

Originally Posted by pstatix View Post
I want to make sure I understand that every addon is a root Frame (typically) and the XML is in fact being parsed by some loader and generating Lua objects.
A frame is just an object an addon can make. It isn't part of what defines an addon.



Originally Posted by pstatix View Post
3. Lua 5.1, but not really?

In trying to load multiple files, I initially gave a shot to the "require" keyword, only to find that its not supported. Several Google's lead me to some StackOverflow posts that indicated WoW uses a restricted version of the Lua 5.1 compiler/environment.
This is Lua's nature as an extension language. The host program defines which libraries are made available. It is Lua, but the debug, io, os, and package libraries are disabled. package being the one that provides require(), which is a function, not a keyword. loadfile() and dofile() are gone as well. All this is for obvious security reasons.

As for loading multiple files, just list all of them in the ToC file in your preferred loading order.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)

Last edited by SDPhantom : 01-04-23 at 11:16 AM.
  Reply With Quote
01-04-23, 03:05 PM   #3
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 5,892
Phantom pretty much rounded it up .. I came into addon a few years in and used the .. look at the addons and the original wowwiki site and .. when it was around the wowprogramming site which alas is now gone. There is also a World of Warcraft addon writing book which I purchased back then which was useful but may well be so out of date that it might be all but useless with wowpedia being very informative now.

As to how it all started, I can imagine it was a lengthy process as I found when I jumped into Elder Scrolls Online addon writing from day 1 and found there was no such thing as a wiki page for the function information. I can only thank the original wowwiki writers from updating those pages as I may well have given up on the idea of addon writing with no access to what is available or examples rofl.
__________________
  Reply With Quote
01-04-23, 04:36 PM   #4
Gello
A Molten Giant
AddOn Author - Click to view addons
Join Date: Jan 2005
Posts: 521
Here's the contents of a file called BlizzardCommands.xml that's dated 11/22/2004 on this machine:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="BlizzardCommands.xsl"?>
<WowCommands>
	<BlizzardFile>
		<Name>ActionButton.lua</Name>
		<BlizzardGlobal>
			<Name>CURRENT_ACTIONBAR_PAGE</Name>
			<InitialValue>1</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>NUM_ACTIONBAR_PAGES</Name>
			<InitialValue>6</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>NUM_ACTIONBAR_BUTTONS</Name>
			<InitialValue>12</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>ATTACK_BUTTON_FLASH_TIME</Name>
			<InitialValue>.4</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>IN_ATTACK_MODE</Name>
			<InitialValue>0</InitialValue>
		</BlizzardGlobal>
	</BlizzardFile>
	<BlizzardGenericObjectFunction>
		<Name>IsVisible()</Name>
		<Returns>Boolean</Returns>
		<Example>BonusActionBarFrame:IsVisible()</Example>
		<Description>Returns true if the object is visible on the Interface</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardClass>
		<Name>ActionBar</Name>
		<BlizzardFunction>
			<Name>GetButtonState()</Name>
			<Returns>"NORMAL", "PUSHED","DISABLED"</Returns>
			<Example>button:GetButtonState()</Example>
			<Description>Returns the stats of a specified button. Either its up, (normal), down (pushed), or greyed out (disabled)</Description>
			<UsedIn>ActionButton</UsedIn>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetButtonState(Value)</Name>
			<Example>button:SetButtonState("Pushed")</Example>
			<Description>Sets the state of an interface button.</Description>
			<UsedIn>ActionButton</UsedIn>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardGlobalFunction>
		<Name>getglobal(identifier)</Name>
		<Returns>Object</Returns>
		<Example>getglobal("BonusActionButton3");</Example>
		<Description>Returns the object associated with the identifier.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UseAction(identifier, number)</Name>
		<Example>UseAction(ActionButton_GetPagedID(button), 0);</Example>
		<Description>This instructs the interface to use the action associated with the specified ID. The 2nd variables purpose is unknown.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChangeActionBarPage()</Name>
		<Example>ChangeActionBarPage();</Example>
		<Description>This updates the action bar page to be at the correct page. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>RegisterForDrag(button...)</Name>
		<Example>this:RegisterForDrag("LeftButton", "RightButton");</Example>
		<Description>Registers for the event that the mouse is dragged. Values values are (probably) "LeftButton", "RightButton", "MiddleButton"</Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>RegisterForClicks(buttonstate...)</Name>
		<Example>this:RegisterForClicks("LeftButtonUp", "RightButtonDown");</Example>
		<Description>Registers the current object to respond to events of type "LeftButtonUp", "RightButtonUp". "MiddleButtonUp" etc ) </Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>RegisterEvent(eventname)</Name>
		<Example>this:RegisterEvent("UNIT_HEALTH");</Example>
		<Description>Registers the current object to have its OnEvent method called when the specified event is called. Please see the BlizzardEvents listing for the list of events.</Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardEvents>
		<BlizzardEvent>
			<Name>ACTIONBAR_SHOWGRID</Name>
			<Description>Called when the action bar needs to display the current action bar</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_HIDEGRID</Name>
			<Description>Called when the action bar need to hide the current action bar</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_PAGE_CHANGED</Name>
			<Description>Called when the page of an action bar is changed</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_SLOT_CHANGED</Name>
			<Description>Called when the actionbar slot is changed (What's a slot?)</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_UPDATE_STATE</Name>
			<Description>Called when the action bar needs to update the checked or unchecked value of a slot</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_UPDATE_USABLE</Name>
			<Description>Called when the action bar needs to refresh which ActionBar slots can be used again</Description>
			<Arg1></Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>ACTIONBAR_UPDATE_COOLDOWN</Name>
			<Description>Called when the action bars needs to visually refresh the cooldown state of the ActionBar</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>PLAYER_AURAS_CHANGED</Name>
			<Description>Called when a player gains or loses an aura</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>PLAYER_TARGET_CHANGED</Name>
			<Description>Called when a player changes his active target</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_AURASTATE</Name>
			<Description>Called when any units aura state is changed </Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_INVENTORY_CHANGED</Name>
			<Description>Called when any units inventory is changed </Description>
			<Arg1>Units name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>CRAFT_SHOW</Name>
			<Description>Called when the Crafting window is opened</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>CRAFT_CLOSE</Name>
			<Description>Called when the crafting window is closed</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>TRADE_SKILL_SHOW</Name>
			<Description>Called when the trade skill window is opened</Description>
			<Arg1></Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>TRADE_SKILL_CLOSE</Name>
			<Description>Called when the trade skill window is closed</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_HEALTH</Name>
			<Description>Called when any units health is changed </Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_MANA</Name>
			<Description>Called when any units mana is changed</Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_RAGE</Name>
			<Description>Called when any units rage is changed</Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_FOCUS</Name>
			<Description>Called when any units focus is changed</Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UPDATE_BONUS_ACTIONBAR</Name>
			<Description>Called when the bonus action bar needs to be updated</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>PLAYER_ENTER_COMBAT</Name>
			<Description>Called when the player enters combat mode</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>PLAYER_LEAVE_COMBAT</Name>
			<Description>Called when the player leaves combat</Description>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UNIT_COMBO_POINTS</Name>
			<Description>Called when any rogue units combo points changed</Description>
			<Arg1>Unit name</Arg1>
		</BlizzardEvent>
		<BlizzardEvent>
			<Name>UPDATE_BINDINGS</Name>
			<Description>Called when the key bindings are changed</Description>
		</BlizzardEvent>
	</BlizzardEvents>
	<BlizzardGenericObjectFunction>
		<Name>GetID()</Name>
		<Returns>Number</Returns>
		<Example>(null)local action = "ACTIONBUTTON"..this:GetID();</Example>
		<Description>Returns the number Id associated with the current object</Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>GetActionTexture(identifier)</Name>
		<Returns>Object</Returns>
		<Example>local texture = GetActionTexture(ActionButton_GetPagedID(this));</Example>
		<Description>Gets the appropriate texture file associated with the id sent to it</Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>SetTexture(texturefile)</Name>
		<Example>icon:SetTexture(texture);</Example>
		<Description>Sets the texture for the current UI object</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>Show()</Name>
		<Example>this:Show()</Example>
		<Description>Posts the object to display to the screen</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>SetNormalTexture(filename)</Name>
		<Example>this:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2");</Example>
		<Description>Sets the normal texture for this object</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>Hide()</Name>
		<Example>this:Hide();</Example>
		<Description>Hides the current object from view</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>GetName()</Name>
		<Returns>String</Returns>
		<Example>this:GetName();</Example>
		<Description>Returns the name of the object</Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>HasAction(identifier)</Name>
		<Returns>Boolean</Returns>
		<Example>if ( HasAction(ActionButton_GetPagedID(this)) ) then</Example>
		<Description>Returns true if the player has the ability to perform the specified action.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>IsUsableAction(identifier)</Name>
		<Returns>Boolean</Returns>
		<Example>IsUsableAction(ActionButton_GetPagedID(this))</Example>
		<Description>Returns true if the current action is usable</Description>
		<UsedIn>ActionButton</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>GetActionCooldown(identifier)</Name>
		<Returns>Number, Number, Boolean</Returns>
		<Example>start, duration, enable = GetActionCooldown(ActionButton_GetPagedID(this));</Example>
		<Description>This returns the cooldown values of the specified action.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsAttackAction(indentifier)</Name>
		<Returns>Boolean</Returns>
		<Example>IsAttackAction(ActionButton_GetPagedID(this)) </Example>
		<Description>Returns true if the current action is te attack action.</Description>
	</BlizzardGlobalFunction>
	<BlizzardClass>
		<Name>Tooltip</Name>
		<BlizzardFunction>
			<Name>SetOwner(object, anchor)</Name>
			<Example>GameTooltip:SetOwner(this, "ANCHOR_RIGHT");</Example>
			<Description>Sets the owner of the target object to the object passed into the function. Anchor can be "ANCHOR_RIGHT", "ANCHOR_LEFT", "ANCHOR_TOP","ANCHOR_BOTTOM"</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetAction(identifier)</Name>
			<Returns>Boolean</Returns>
			<Example>GameTooltip:SetAction(ActionButton_GetPagedID(this))</Example>
			<Description>Sets the action of the tooltip to respond to the associated identifier</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>IsOwned(identifier)</Name>
			<Example>GameTooltip:IsOwned(this);</Example>
			<Description>Returns true if </Description>
			<Returns>Boolean</Returns>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>GameTooltip:SetInventoryItem(targetname,inventoryslot)</Name>
			<Returns>Boolean</Returns>
			<Example>GameTooltip:SetInventoryItem("player", this:GetInventorySlot())</Example>
			<Description>Returns true if the inventory item slot passed to it is filled already.</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetText(tooltiptext)</Name>
			<Example>GameTooltip:SetText(TEXT(BANK_BAG));</Example>
			<Description>Sets the text of the tooltip to a certain value.</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>Show()</Name>
			<Example>GameTooltip:Show()</Example>
			<Description>Shows the tooltip</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>Hide()</Name>
			<Example>GameTooltip:Hide()</Example>
			<Description>Hides the tooltip</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetPlayerBuff(index)</Name>
			<Example>GameTooltip:SetPlayerBuff(buffIndex);</Example>
			<Description>Sets the players Buff tooltip</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardClass>
		<Name>ActionButton</Name>
		<BlizzardFunction>
			<Name>SetChecked(boolean)</Name>
			<Example>button:SetChecked(1);</Example>
			<Description>This sets the checked value of a button. 1 is  checked, 0 is unchecked.</Description>
			<Returns></Returns>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardClass>
		<Name>Texture</Name>
		<BlizzardFunction>
			<Name>SetVertexColor(red, green, blue)</Name>
			<Returns></Returns>
			<Example>texture:SetVertexColor(red, green, blue)</Example>
			<Description>Sets the "colors" of the vertices that make up an object. Frequently used in color blending with the background. Valid values from 0.0-1.0 under an RGB system</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetTexture(texturename)</Name>
			<Example>texture:SetTexture(textureName);</Example>
			<Description>Sets the current texture to the texture id passed into it</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardClass>
		<Name>Icon</Name>
		<BlizzardFunction>
			<Name>SetVertexColor(red, green, blue)</Name>
			<Returns></Returns>
			<Example>texture:SetVertexColor(red, green, blue)</Example>
			<Description>Sets the "colors" of the vertices that make up an object. Frequently used in color blending with the background. Valid values from 0.0-1.0 under an RGB system</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardFile>
		<Name>AttackButton.lua</Name>
		<BlizzardGlobal>
			<Name>ATTACK_BUTTON_FLASH_TIME</Name>
			<InitialValue>0.4</InitialValue>
		</BlizzardGlobal>
	</BlizzardFile>
	<BlizzardFile>
		<Name>BankFrame.lua</Name>
		<BlizzardGlobal>
			<Name>NUM_BAG_SLOTS</Name>
			<InitialValue>4</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>NUM_BANKGENERIC_SLOTS</Name>
			<InitialValue>24</InitialValue>
		</BlizzardGlobal>
		<BlizzardGlobal>
			<Name>NUM_BANKBAGSLOTS</Name>
			<InitialValue>6</InitialValue>
		</BlizzardGlobal>
	</BlizzardFile>
	<BlizzardEvent>
		<Name>BANKFRAME_OPENED</Name>
		<Description>Called when the bank frame is opened</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>BANKFRAME_CLOSED</Name>
		<Description>Called when the bank window is closed</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_MONEY</Name>
		<Description>Called when any unit gets or loses money</Description>
		<Arg1>Unit name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_LOCK_CHANGED</Name>
		<Description>Called when the focus is changed away from a particular item.</Description>
		<Arg1>Unknown</Arg1>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>function(object, method)</Name>
		<Returns>Unknown</Returns>
		<Example>this.SplitStack = function(button, split)</Example>
		<Description>I'm not sure how this works, but it appears to split a stack of items somehow.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>BankButtonIDToInvSlotID(indentifier,bankboject)</Name>
		<Returns>Identifier</Returns>
		<Example>BankButtonIDToInvSlotID(this:GetID(),this.isBag)</Example>
		<Description>Returns the ID number of a bank button in terms of inventory slot ID</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetInventoryItemTexture(unit,itemid)</Name>
		<Returns>TextureObject</Returns>
		<Example>GetInventoryItemTexture("player",inventoryID);</Example>
		<Description>This function returns the texture file for a an item in the inventory. (Basically its icon image, IIRC)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetInventorySlotInfo(slotname)</Name>
		<Returns>Identifier, TextureName</Returns>
		<Example>id, slotTextureName = GetInventorySlotInfo(strsub(slotName,10));</Example>
		<Description>Returns the information associated with an item slot</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetItemButtonCount(object,number)</Name>
		<Example>SetItemButtonCount(this,0);</Example>
		<Description>This sets the count of the items currently in the inventory to the number passed into it.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetItemButtonTextureVertexColor(buttonobject,r,g,b);</Name>
		<Example>SetItemButtonTextureVertexColor(button, 1.0,1.0,1.0);</Example>
		<Description>This sets the Texture transparency color of an item button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetPortraitTexture(texture,target)</Name>
		<Example>SetPortraitTexture(BankPortraitTexture,"npc");</Example>
		<Description>Sets the portrait texture file of an object</Description>
	</BlizzardGlobalFunction>
	<BlizzardObject>
		<Name>BankFrame</Name>
		<BlizzardObject>
			<Name>BankFrameTitleText</Name>
			<BlizzardObjectFunction>
				<Name>SetText(text)</Name>
				<Example>BankFrameTitleText:SetText(UnitName("npc"));</Example>
				<Description>This sets the title text of the bank</Description>
			</BlizzardObjectFunction>
		</BlizzardObject>
	</BlizzardObject>
	<BlizzardGlobalFunction>
		<Name>ShowUIPanel(object)</Name>
		<Example>ShowUIPanel(this);</Example>
		<Description>Shows the UI panel that is specified</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HideUIPanel(object)</Name>
		<Example>HideUIPanel(this);</Example>
		<Description>Hides the UI panel specified</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetBankSlotCost(slotnumber)</Name>
		<Example>cost = GetBankSlotCost(numSlots);</Example>
		<Description>Passing in the number of slots that exist will return the cost of the next slot</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitMoney(target)</Name>
		<Example>total = UnitMoney("player");</Example>
		<Description>Returns the amount of money the specified target possess. Known targets: "player"</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetMoneyFrameColor(identifier, r,g,b)</Name>
		<Example>SetMoneyFrameColor("BankFrameDetailMoneyFrame", 1.0, 1.0, 1.0);</Example>
		<Description>Sets the transparency colors of a money frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RefreshMoneyFrame(target, cost, 1, 1);</Name>
		<Example>RefreshMoneyFrame("BankFrameDetailMoneyFrame", cost, 1, 1);</Example>
		<Description>This refreshes the money frame with a new bank slot. No idea what the next 2 numbers do.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UpdateBagSlotStatus(numSlots)</Name>
		<Example>UpdateBagSlotStatus(5);</Example>
		<Description>Updates the bag status with the number of slots allowed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsShiftKeyDown()</Name>
		<Returns>Boolean</Returns>
		<Example>if ( IsShiftKeyDown()) return;</Example>
		<Description>Returns true if the shift key is currently depressed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsControlKeyDown()</Name>
		<Returns>Boolean</Returns>
		<Example>if ( IsControlKeyDown()) return;</Example>
		<Description>Returns true if the control key is currently depressed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsAltKeyDown()</Name>
		<Returns>Boolean</Returns>
		<Example>if ( IsAltKeyDown()) return;</Example>
		<Description>Returns true if the alt key is currently depressed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetInventoryItemLink(target, identifier);</Name>
		<Example>GetInventoryItemLink("player", inventoryID)</Example>
		<Description>Returns the item link referring to the item in the specified units possession.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>OpenStackSplitFrame(count,object, anchor, anchor);</Name>
		<Example>OpenStackSplitFrame(this.count, this, "BOTTOMLEFT", "TOPLEFT");</Example>
		<Description>Opens the stack splitting frame, passing it the number of objects, the current object and then a list of places to anchor the window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PickupBankGenericItem(identifier, bank)</Name>
		<Example>PickupBankGenericItem(this:GetID(), this.isBag)</Example>
		<Description>Causes a "pickup" action on the item associated with the identifier.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>GetInventorySlot()</Name>
		<Returns>Number</Returns>
		<Example>this:GetInventorySlot();</Example>
		<Description>Returns the inventory slot number of the item.</Description>
		<UsedIn>Items</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>ToggleBag(identifier);</Name>
		<Example>ToggleBag(1);</Example>
		<Description>Opens or closes the specified bag or bank.</Description>
		<UsedIn>Banks</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>CloseBag(number)</Name>
		<Example>CloseBag(0);</Example>
		<Description>Closes the bag at number specified.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PutItemInBankBag(inventoryId)</Name>
		<Returns>Object</Returns>
		<Example>local hadItem = PutItemInBankBag(inventoryID);</Example>
		<Description>Puts the specified Inventory IDed item into the bank.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PlaySound(filename);</Name>
		<Example>PlaySound("BAGMENUBUTTONPRES");</Example>
		<Description>Plays the specified filename.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UpdateBagButtonHighlight(idenfier);</Name>
		<Example>UpdateBagButtonHighlight(id);</Example>
		<Description>Orders the bag button to update.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PickupBagFromBankSlot(inventoryID)</Name>
		<Example>PickupBagFromBankSlot(inventoryID)</Example>
		<Description>Picks up a bag from the bank inventory</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsInventoryItemLocked(inventoryID)</Name>
		<Returns>Boolean</Returns>
		<Example>IsInventoryItemLocked(inventoryID)</Example>
		<Description>Returns true if the inventory item is immovable.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UPDATE_SHAPESHIFT_FORMS</Name>
		<Description>Called when the player changes his shape</Description>
	</BlizzardEvent>
	<BlizzardGenericObjectFunction>
		<Name>SetFrameLevel(number)</Name>
		<Example>	this:SetFrameLevel(this:GetFrameLevel() + 2);</Example>
		<Description>Sets the frames depth level (how high does it stack)</Description>
		<UsedIn>BonusActionBar</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>GetBonusBarOffset()</Name>
		<Returns>Number</Returns>
		<Example>if ( GetBonusBarOffset() &gt; 0 ) then</Example>
		<Description>Returns the  offset value of the bonus bar. 0 if it should be hidden. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnlockPetActionBar()</Name>
		<Example>UnlockPetActionBar();</Example>
		<Description>Unlocks the pet action bar so it can be changed or displayed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>LockPetActionBar()</Name>
		<Example>LockPetActionBar();</Example>
		<Description>Locks the pet action bar, allowing the UI to update.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowPetActionBar()</Name>
		<Example>ShowPetActionBar()</Example>
		<Description>Displays the pet action bar if the pet exists.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HidePetActionBar()</Name>
		<Example>HidePetActionBar()</Example>
		<Description>Hides the pet action bar. Only works if pet exists.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>SetPoint(Anchor, ParentObject, StretchAnchor, X, Y);</Name>
		<Example>this:SetPoint("TOPLEFT", this:GetParent():GetName(), "BOTTOMLEFT", BONUSACTIONBAR_XPOS, yPos);</Example>
		<Description>Sets the location of the frame object. Make sure you call ClearAllPoints() first. </Description>
		<UsedIn>BonusActionBar</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobal>
		<Name>BONUSACTIONBAR_SLIDETIME</Name>
		<InitialValue>.15</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BONUSACTIONBAR_YPOS</Name>
		<InitialValue>43</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BONUSACTIONBAR_XPOS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_BONUS_ACTION_SLOTS</Name>
		<InitialValue>12</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_SHAPESHIFT_SLOTS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGenericObjectFunction>
		<Name>SetWidth(number)</Name>
		<Example>ShapeshiftBarMiddle:SetWidth(38 * (numForms-2));</Example>
		<Description>Sets the frame width</Description>
		<UsedIn>BonusActionBar</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>SetTextCoord(x, y, width, height)</Name>
		<Example>ShapeshiftBarMiddle:SetTexCoord(0, numForms-2, 0, 1);</Example>
		<Description>Sets the texture coordinates of the current object. Useful for bitmaps that contain multiple textures.</Description>
		<UsedIn>BonusActionBar</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobal>
		<Name>BUFF_FLASH_TIME_ON</Name>
		<InitialValue>0.75</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BUFF_FLASH_TIME_OFF</Name>
		<InitialValue>0.75</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BUFF_MIN_ALPHA</Name>
		<InitialValue>0.3</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BUFF_WARNING_TIME</Name>
		<InitialValue>31</InitialValue>
	</BlizzardGlobal>
	<BlizzardGenericObjectFunction>
		<Name>SetAlpha(number)</Name>
		<Example>SetAlpha(1.0);</Example>
		<Description>Sets the transparency of the object. 0.0-1.0 (1.0 is Solid)</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>GetPlayerBuffTimeLeft(index)</Name>
		<Returns>Number</Returns>
		<Example>local timeLeft = GetPlayerBuffTimeLeft(0);</Example>
		<Description>Returns the time left on the specified buff of the player. Returns 0 if that buff is not set.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelPlayerBuff(index)</Name>
		<Example>CancelPlayerBuff(0);</Example>
		<Description>Cancels the buff at the specified index.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>CASTING_BAR_ALPHA_STEP</Name>
		<InitialValue> 0.05</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CASTING_BAR_FLASH_STEP</Name>
		<InitialValue> 0.2</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>SPELLCAST_START</Name>
		<Description>Called when a spellcast is begun</Description>
		<Arg1>Spell Name</Arg1>
		<Arg2>Duration</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_STOP</Name>
		<Description>Called when  a spell cast stops.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_FAILED</Name>
		<Description>Called when a spell fails</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_INTERRUPTED</Name>
		<Description>Called when a spellcast is  interrupted</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_DELAYED</Name>
		<Description>Called when a spellcast duration is increased</Description>
		<Arg1>Disruption time</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_CHANNEL_START</Name>
		<Description>Called when a spellcaster begins channelling</Description>
		<Arg1>Duration (in milliseconds)</Arg1>
		<Arg2>Spell Name</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SPELLCAST_CHANNEL_UPDATE</Name>
		<Description>Called when a channelling spell is updated.</Description>
		<Arg2></Arg2>
	</BlizzardEvent>
	<BlizzardClass>
		<Name>CastingBarFrameStatusBar</Name>
		<BlizzardFunction>
			<Name>SetStatusBarColor(r,g,b)</Name>
			<Example>CastingBarFrameStatusBar:SetStatusBarColor(1.0, 0.7, 0.0);</Example>
			<Description>Sets the color of the status bar (that bar that fills up on your screen)</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>SetMinMaxValues(min,max)</Name>
			<Example>CastingBarFrameStatusBar:SetMinMaxValues(this.startTime, this.endTime);</Example>
			<Description>Sets the minimum and maximum values for the status bar to fill in.</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardClass>
		<Name>CastingBarSpark</Name>
		<BlizzardFunction>
			<Name>Show()</Name>
			<Example>CastingBarSpark:Show()</Example>
			<Description>Displays the casting bar sparkle?</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardGenericObjectFunction>
		<Name>IsShown()</Name>
		<Returns>Boolean</Returns>
		<Example>if (this:IsShown()) then</Example>
		<Description>Returns true if the object is shown</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobalFunction>
		<Name>GetTime()</Name>
		<Returns>Number</Returns>
		<Example>local time = GetTime();</Example>
		<Description>Returns a number that represents the current time. Don't ask me to explain the system :-) It appears to be in game units. (Roughly half-seconds)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGenericObjectFunction>
		<Name>GetAlpha()</Name>
		<Returns>Number</Returns>
		<Example>CastingBarFrameStatusBar:SetMinMaxValues(this.startTime, this.endTime);</Example>
		<Description>Returns a value from 0.0 to 1.0</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGenericObjectFunction>
		<Name>SetAlpha()</Name>
		<Returns>Number</Returns>
		<Example>	this:SetAlpha(alpha);</Example>
		<Description>Sets the object alpha value</Description>
		<UsedIn>Visuals</UsedIn>
	</BlizzardGenericObjectFunction>
	<BlizzardGlobal>
		<Name>CHARACTERFRAME_SUBFRAMES</Name>
		<InitialValue>"PaperDollFrame", "TalentTrainerFrame", "SkillFrame", "ReputationFrame"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>OpenTrainer()</Name>
		<Example>OpenTrainer()</Example>
		<Description>Opens the talent training window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetButtonPulse(button, 0, 1 );</Name>
		<Example>SetButtonPulse(CharacterMicroButton, 0, 1);</Example>
		<Description>Sets the flashing of a button. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleCharacter(framename)</Name>
		<Example>ToggleCharacter("PaperDollFrame");</Example>
		<Description>Changes the character frame</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UNIT_NAME_UPDATE</Name>
		<Description>Called when a unit's name changed</Description>
		<Arg1>Unit name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_PORTRAIT_UPDATE</Name>
		<Description>Called when a units portait changed.</Description>
		<Arg1>Unit name</Arg1>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>SetTextStatusBarTextPrefix(Bar, value);</Name>
		<Example>SetTextStatusBarTextPrefix(PlayerFrameHealthBar, TEXT(HEALTH));</Example>
		<Description>Sets the Statusbar to the following value and text.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UpdateMicroButtons();</Name>
		<Example>UpdateMicroButtons();</Example>
		<Description>Updates the microbuttons that make up the menu bar listing</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowTextStatusBarText(Bar)</Name>
		<Example>ShowTextStatusBarText(PlayerFrameHealthBar);</Example>
		<Description>Shows the text state of the current progress bar.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HideTextStatusBarText(Bar)</Name>
		<Example>HideTextStatusBarText(PlayerFrameHealthBar);</Example>
		<Description>Hides the text on the specified status bar.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PLAYER_LEVEL_UP</Name>
		<Description>Called when a player recieved a level up</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>MESSAGE_SCROLLBUTTON_INITIAL_DELAY</Name>
		<InitialValue>0</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MESSAGE_SCROLLBUTTON_SCROLL_DELAY</Name>
		<InitialValue>.1</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CHAT_BUTTON_FLASH_TIME</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CHAT_TELL_BUTTON_FLASH_TIME</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_CHAT_WINDOWS</Name>
		<InitialValue>10</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>UnitName(string)</Name>
		<Example>target = UnitName("target");</Example>
		<Description>Returns the name of the unit referred to by the local naming schema</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>InviteByName(target)</Name>
		<Example>	InviteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Invites the specified player to the group sender is currently in.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UninviteByName(target)</Name>
		<Example>UninviteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Uninvites (kicks) the target from the current group if group leader.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PromoteByName(target)</Name>
		<Example>PromoteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Promotes by name the target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SendChatMessage(msg, system, language, channel);</Name>
		<Example>SendChatMessage(msg, "WHISPER", this.language, lastTell);</Example>
		<Description>Sends a chat message of the specifiedtext message, according to the system of "SAY", "YELL", "PARTY", "AFK", "DND", in the language, such as "COMMON" or "DRACONIC" or "ORCISH" etc, with your target channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AssistUnit(target)</Name>
		<Example>AssistUnit("target");</Example>
		<Description>Instructs your character to assist the target player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AssistByName(target)</Name>
		<Example>AssistByName("Marco");</Example>
		<Description>Assists the player whose name is entered.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FollowUnit(target)</Name>
		<Example>FollowUnit("target");</Example>
		<Description>Follows the unit who is set as pointing to the named value, such as "target", "player", etc. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FollowUnitByName(target)</Name>
		<Example>FollowByName("Beeblebrox");</Example>
		<Description>Follows the unit with the specified name.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>InitiateTrade(target)</Name>
		<Example>InitiateTrade("target");</Example>
		<Description>Asks the specified unit to trade.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>InspectUnit(target)</Name>
		<Example>InspectUnit("target");</Example>
		<Description>Loads the player's item list into your own character frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>Logout()</Name>
		<Example>Logout()</Example>
		<Description>Logs the user out of the game.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>Quit()</Name>
		<Example>Quit();</Example>
		<Description>Quits the application, NOT the LUA script.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowSuggestFrame(msg, form)</Name>
		<Example>ShowSuggestFrame("There's a fly in my soup.", "bug);</Example>
		<Description>Sends a suggestion to the specified mailbox.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ReportNote(message)</Name>
		<Example>ReportNote(msg);</Example>
		<Description>I'm not sure how this works. I will need to try it out.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>LeaveChannelByName(channelname)</Name>
		<Example>LeaveChannelByName("Trade");</Example>
		<Description>Leaves the channel with the specified name.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ListChannelByName(channelname)</Name>
		<Example>ListChannelByName("trad")</Example>
		<Description>Lists all of the channels that match the specified regular expression.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ListChannels()</Name>
		<Example>ListChannels();</Example>
		<Description>Lists all of the channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetChannelPassword(username, password)</Name>
		<Example>SetChannelPassword("Xiphoris","cantkeepassecret")l</Example>
		<Description>Changes the password of the current channel if that is a legal action.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelModerator(channel,player)</Name>
		<Example>ChannelModerator("uimods","Kelthan");</Example>
		<Description>Sets the specified player as the channel moderator.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelUnmoderator(channel, player)</Name>
		<Example>ChannelUnmoderator("uimods", "xiphoric");</Example>
		<Description>Takes the specified user away from the moderator status.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelMute(channel, player)</Name>
		<Example>ChannelMute("uimods","zileas");</Example>
		<Description>Turns off the specified player's ability to speak in a channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelUnmute(channel,player)</Name>
		<Example>ChannelUnmute("uimods", "marco");</Example>
		<Description>Unmutes the specified user from the channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelInvite(channel,player)</Name>
		<Example>ChannelInvite("cutestelves","glorfindel");</Example>
		<Description>Invites the specified user to the chatroom.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelKick(channel,player)</Name>
		<Example>ChannelKick("bigllamas", "Strong_Bad_Is_Geh");</Example>
		<Description>Kicks the specified user from the channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelBan(channel,player)</Name>
		<Example>ChannelBan("uimods", "alexyoshi")</Example>
		<Description>Bans a player from the specified channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelUnban(channel, player)</Name>
		<Example>ChannelUnban("uimods", "kat");</Example>
		<Description>Unbans a player from a channel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChannelToggleAnnouncements(channel);</Name>
		<Example>			ChannelToggleAnnouncements(channel);</Example>
		<Description>Sets the channel to display announcements. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildInviteByName(player);</Name>
		<Example>GuildInviteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Invites the player into your guild</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildUninviteByName(player)</Name>
		<Example>GuildUninviteByName("hercules");</Example>
		<Description>Uninvites the specified player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildPromoteByName(player)</Name>
		<Example>	GuildPromoteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Promotes the user by name in the guild. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildDemoteByName(player)</Name>
		<Example>GuildDemoteByName(GetSlashCmdTarget(msg));</Example>
		<Description>Demotes the player in the guild.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildSetLeaderByName(player)</Name>
		<Example>	GuildSetLeaderByName(GetSlashCmdTarget(msg));</Example>
		<Description>Sets the guild leader by player name.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildSetMOTD(message)</Name>
		<Example>GuildSetMOTD("New UI Mods out! Get them now!");</Example>
		<Description>Sets the guild's MOTD.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildLeave()</Name>
		<Example>GuildLeave();</Example>
		<Description>Leave the current guild.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildDisban()</Name>
		<Example>GuildDisband();</Example>
		<Description>Disbands the guild, removing all members.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildInfo()</Name>
		<Example>GuildInfo();</Example>
		<Description>Displays the guild's information in the chat box.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GuildRoser();</Name>
		<Example>GuildRoster();</Example>
		<Description>Displays a list of the Guild's rostered members.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowWhoPanel();</Name>
		<Example>ShowWhoPanel();</Example>
		<Description>Opens the panel that lists nearby names. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PVPPort();</Name>
		<Example>PVPPort();</Example>
		<Description>Begins a PVP arena somehow.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddFriend(name)</Name>
		<Example>AddFriend("kelthan");</Example>
		<Description>Adds the specified friend to the friends list. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowFriends()</Name>
		<Example>ShowFriends();</Example>
		<Description>Displays the friends frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RemoveFriend(name)</Name>
		<Example>RemoveFriend("magess");</Example>
		<Description>Remove people from the friends list.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddOrDelIgnore(name);</Name>
		<Example>AddOrDelIgnore("Marco");</Example>
		<Description>Toggles the ignore state of the specified user.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowIgnorePanel();</Name>
		<Example>ShowIgnorePanel();</Example>
		<Description>Displays the xml frame that establishes who you are ignoring. (not implemented yet?_</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DelIgnore(name)</Name>
		<Example>DelIgnore("Xiphoric");</Example>
		<Description>Unignores a specific user.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>Duel(name)</Name>
		<Example>Duel("Boboubo Bobobo");</Example>
		<Description>Duels a specified user by name.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelDuel();</Name>
		<Example>CancelDuel();</Example>
		<Description>Cancels the duel with the specific user. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetBindZone()</Name>
		<Example>GetBindZone();</Example>
		<Description>Tells you where you are bound. (Outdated?)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RunScript(scripttext);</Name>
		<Example>RunScript("SendChatMessage('hi');");</Example>
		<Description>Runs the specified script. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetLootMethod(methodstring, player)</Name>
		<Example>SetLootMethod("freeforall");</Example>
		<Description>Sets the looting method to either: "freeforall","roundrobin","master", if you use master, you must also specify who the loot master is. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>Stuck();</Name>
		<Example>Stuck();</Example>
		<Description>Hopefully a command that will go away. :-)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RandomRoll(low,high);</Name>
		<Example>RandomRoll("1","100");</Example>
		<Description>Does a random roll between the two values. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CastSpellByName(spellname)</Name>
		<Example>CastSpellByName("Demon Skin");</Example>
		<Description>Casts a specific spell by the name used in the game.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PLAYER_ENTERING_WORLD</Name>
		<Description>Called when the player is entering the WoW world. </Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UPDATE_CHAT_COLOR</Name>
		<Description>Called when the chat colors must be updated.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UPDATE_CHAT_WINDOWS</Name>
		<Description>Called when there's a reason to update the chat windows.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>GetChatTypeIndex(index);</Name>
		<Example>		value.id = GetChatTypeIndex(index);</Example>
		<Description>Gets a chat type by its index. (Not sure what the index is, myself!)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddChatWindowMessage(identifier, group)</Name>
		<Example>AddChatWindowMessages(chatFrame:GetID(), group);</Example>
		<Description>Addes a messaging group to the specified chat window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RemoveChatWindowMessages(identfier, group);</Name>
		<Example>RemoveChatWindowMessages(chatFrame:GetID(), group);</Example>
		<Description>Removes a messaging group from the identified chat window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddChatWindowChannel(identifier, channel);</Name>
		<Example>AddChatWindowChannel(chatFrame:GetID(), channel);</Example>
		<Description>Adds a chat channel to a chat window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RemoveChatWindowChannel(identifier, channel)</Name>
		<Example>RemoveChatWindowChannel(chatFrame:GetID(), channel);</Example>
		<Description>Removes a chat channel from a chat window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetDefaultLanguage();</Name>
		<Returns>String</Returns>
		<Example>this.defaultlanguage = GetDefaultLanguage();</Example>
		<Description>Gets the string associated with the default language of a player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardClass>
		<Name>ChatWindow</Name>
		<BlizzardFunction>
			<Name>AddMessage(string, r, g, b, id)</Name>
			<Example>this:AddMessage(string, info.r, info.g, info.b, info.id);</Example>
			<Description>Adds a message to the specified chat window channel</Description>
			<UsedIn>ChatFrame</UsedIn>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardEvent>
		<Name>TIME_PLAYED_MSG</Name>
		<Description>Called when the client recieved a time played message.</Description>
		<Arg1>Total time</Arg1>
		<Arg2>Current time at this level</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_LOGOUT_FAILED</Name>
		<Description>Called when the player's logout attempt fails</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>GUILD_MOTD</Name>
		<Description>Called when the player recieves a guild's MOTD</Description>
		<Arg1>MOTD</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>EXECUTE_CHAT_LINE</Name>
		<Description>Called when the chat line needs to be processed.</Description>
		<Arg1>Chat line</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UPDATE_CHAT_COLOR</Name>
		<Description>Called when the chat colour needs to be updated.</Description>
		<Arg1>Chat type</Arg1>
		<Arg2>r,g,b (arg2-4)</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHAT_MSG</Name>
		<Description>Called when the client recieves a chat message.</Description>
		<Arg1>unknown, arg4 is the channel length</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRAINER_UPDATE</Name>
		<Description>Called when the trainer window needs to update.</Description>
		<Arg1></Arg1>
		<Arg2></Arg2>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>SetItemRef(link)</Name>
		<Example>SetItemRef(link);</Example>
		<Description>Sends the window that refers to items as a link)</Description>
	</BlizzardGlobalFunction>
	<BlizzardClass>
		<Name>ChatFrame</Name>
		<BlizzardFunction>
			<Name>ScrollUp()</Name>
			<Example>ChatFrame:ScrollUp()</Example>
			<Description>Scrolls the chat frame up once.</Description>
		</BlizzardFunction>
		<BlizzardFunction>
			<Name>ScrollDown()</Name>
			<Example>ChatFrame:ScrollDown()</Example>
			<Description>Scrolls the chat frame down by one block</Description>
		</BlizzardFunction>
	</BlizzardClass>
	<BlizzardGlobalFunction>
		<Name>UIMenu_Initialize();</Name>
		<Example>	UIMenu_Initialize();</Example>
		<Description>Initializes the chat frame's UI.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>CLASS_TRAINER_SKILLS_DISPLAYED</Name>
		<InitialValue>11</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CLASS_TRAINER_SKILL_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>TRAINER_CLOSED</Name>
		<Description>Called when the trainer is closed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHARACTER_POINTS_CHANGED</Name>
		<Description>Called when the player's character points are changed.</Description>
	</BlizzardEvent>
	<BlizzardFunction>
		<Name>GetTrainerSelectionIndex()</Name>
		<Returns>Number</Returns>
		<Example>GetTrainerSelectionIndex() &gt; 1</Example>
		<Description>Returns the selected index on the screen</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>GetNumTrainerServices()</Name>
		<Returns>Number</Returns>
		<Example>GetNumTrainerServices() &gt; 0</Example>
		<Description>Returns the number of trainer services that the window holds.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>UnitCharacterPoints(target)</Name>
		<Returns>Number, Number</Returns>
		<Example>local cp1, cp2 = UnitCharacterPoints("player");</Example>
		<Description>Returns the number of character points as well as the current number of unspent points</Description>
	</BlizzardFunction>
	<BlizzardGlobalFunction>
		<Name>UnitLevel(target);</Name>
		<Returns>Number</Returns>
		<Example>UnitLevel("pet");</Example>
		<Description>Returns the level of the targetted unit.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceLEvelReq(identifier);</Name>
		<Returns>Number</Returns>
		<Example>local reqLevel = GetTrainerServiceLevelReq(id);</Example>
		<Description>Returns the required level for that spell or ability id.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceAbilityReq(identifier, requirementcount)</Name>
		<Returns>Name, Subtext, Ability type</Returns>
		<Example>abilityName, abilitySubText, abilityType = GetTrainerServiceInfo(id);</Example>
		<Description>Returns the name, sub-text and type for the trainer ability.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceStepReq(identifier);</Name>
		<Returns>Step?, Boolean</Returns>
		<Example>local step, met = GetTrainerServiceStepReq(id);</Example>
		<Description>Returns the steps required for a special requirement ability. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceCost(identifier);</Name>
		<Returns>Money, Number, number</Returns>
		<Example>local moneyCost, cpCost1, cpCost2 = GetTrainerServiceCost(id);</Example>
		<Description>Obtains the cost of a specific service from the trainer.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetUnitMoney(target)</Name>
		<Returns>Number</Returns>
		<Example>		if ( UnitMoney("player") &gt;= moneyCost ) then</Example>
		<Description>Obtains the unit's money.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RefreshMoneyFrame(framename, money, 1, 1)</Name>
		<Example>RefreshMoneyFrame("ClassTrainerDetailMoneyFrame", moneyCost, 1, 1);</Example>
		<Description>Refreshes a money frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsTrainerServiceLearnSpell(identifier)</Name>
		<Returns>boolean, boolean</Returns>
		<Example>isLearnSpell, isPetLearnSpell = IsTrainerServiceLearnSpell(id);</Example>
		<Description>Returns whether the spell is a, learnable, and b - a pet spell or not</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCursorMoney()</Name>
		<Returns>Number</Returns>
		<Example>if( GetCursorMoney() &gt; 0 ) then</Example>
		<Description>Returns the amount of money held by the hand cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>COMBATFEEDBACK_FADEINTIME</Name>
		<InitialValue>.2</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBATFEEDBACK_HOLDTIME</Name>
		<InitialValue>0.7</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBATFEEDBACK_FADEOUTTIME</Name>
		<InitialValue>0.3</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>CHAT_MSG_COMBAT_LOG_ENEMY</Name>
		<Description>Called when the enemy performs an action</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHAT_MSG_COMBAT_LOG_SELF</Name>
		<Description>Called when the player's character performs an action</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHAT_MSG_COMBAT_LOG_PARTY</Name>
		<Description>Called when the player's party members perform any action</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHAT_MSG_COMBAT_LOG_ERROR</Name>
		<Description>Called when an error occurs during combat</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CHAT_MSG_COMBAT_MISC_INFO</Name>
		<Description>Called when miscellaneous events occur</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>BAG_UPDATE</Name>
		<Description>Called when a bags inventory changes</Description>
		<Arg1>Container ID(Bag Number)</Arg1>
	</BlizzardEvent>
	<BlizzardFunction>
		<Name>GetCVar("cvarname","defaultvalue")</Name>
		<Returns>String</Returns>
		<Example>GetCVar("combatLogOn")</Example>
		<Description>Returns the string associated with the CVar. If it doesnt exist, return the previous value.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>GetTime()</Name>
		<Returns>GameTimeInSeconds</Returns>
		<Description>Returns the current game time as a large number with 1 being specific to seconds</Description>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>COMBOFRAME_FADE_IN</Name>
		<InitialValue>.3</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBOFRAME_FADE_OUT</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBOFRAME_HIGHLIGHT_FADE_IN</Name>
		<InitialValue>.4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBOFRAME_SHINE_FADE_IN</Name>
		<InitialValue>.3</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COMBOFRAME_SHINE_FADE_OUT</Name>
		<InitialValue>.4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetComboPoints()</Name>
		<Returns>Number</Returns>
		<Example>local comboPoints = GetComboPoints();</Example>
		<Description>Retrieves the current number of combo points the rogue has built up.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UIFrameFadeIn(frame, fadein, fadeout, framename)</Name>
		<Example>UIFrameFadeIn(frame, COMBOFRAME_SHINE_FADE_IN, ComboPointShineFadeOut, frame:GetName());</Example>
		<Description>frame to fade in automatically.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UIFrameFadeOut(frameName, shinefadeout)</Name>
		<Example>UIFrameFadeOut(getglobal(frameName), COMBOFRAME_SHINE_FADE_OUT);</Example>
		<Description>Causes the frame to fade out.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>abs(number)</Name>
		<Returns>Number</Returns>
		<Example>abs(-22);</Example>
		<Description>Returns the absolue value of the number.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>foreach(table)</Name>
		<Example>foreach(Chatcommand) then</Example>
		<Description>Iterates over each item in a list or table</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>getn(table, n)</Name>
		<Returns>Object</Returns>
		<Example>getn(mytable, 4);</Example>
		<Description>Gets the nth element of a table/list</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>tinsert(table, value, index);</Name>
		<Example>tinsert(mytable, "asdf", 2);</Example>
		<Description>Inserts the value at the nth slot.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>tremove(table, index)</Name>
		<Example>tremove(mytable, 4)</Example>
		<Description>Removes the value from the indexed slot</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>sort(table)</Name>
		<Returns>Table</Returns>
		<Example>local sortedtable = sort(mytable);</Example>
		<Description>Sorts a table using default parameters.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>acos(number)</Name>
		<Returns>Number</Returns>
		<Example>myangle = acos(1);</Example>
		<Description>Returns the value of the Arc Cosine of X in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>asin(number)</Name>
		<Returns>Number</Returns>
		<Example>myangle = asin(1);</Example>
		<Description>Returns the value of the Arc Sine of X in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>atan(number)</Name>
		<Returns>Number</Returns>
		<Example>myangle = atan(1);</Example>
		<Description>Returns the value of the Arc Tangent of X in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>atan2(numberx, numbery)</Name>
		<Returns>Number</Returns>
		<Example>myangle = atan2(1,2);</Example>
		<Description>Returns the value of the Arc Tangent of X/Y in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ceil(number)</Name>
		<Returns>Number</Returns>
		<Example>1 == ceil(.8);</Example>
		<Description>Returns the value of a number rounded up to the next integer.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>cos(number)</Name>
		<Returns>Number</Returns>
		<Example>myx = cos(180);</Example>
		<Description>Returns the cos of the value in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>deg(numberinradians)</Name>
		<Returns>Number</Returns>
		<Example>myangle = sin (deg(PI));</Example>
		<Description>Returns the value of the number in radians as degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>exp(base, exponent);</Name>
		<Returns>Number</Returns>
		<Example>if (8 == exp(2,3) ) then</Example>
		<Description>Returns the value base to the exponent power.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>floor(number)</Name>
		<Returns>Number</Returns>
		<Example>0 == floor(.8)</Example>
		<Description>Returns the value of the number rounded down.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>log(number)</Name>
		<Returns>Number</Returns>
		<Example>log(number);</Example>
		<Description>Returns the natural log of the number passed in.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>log10(number)</Name>
		<Returns>Number</Returns>
		<Example>log10(10) == 1</Example>
		<Description>Returns the base10 log of the number passed in.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>mod(number, modulate)</Name>
		<Returns>Number</Returns>
		<Example>mod(7, 5) == 2</Example>
		<Description>Returns the remainder of a division by the modulate.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PI</Name>
		<Returns>Number</Returns>
		<Example>cos(PI) == -1</Example>
		<Description>Contains the value of PI</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>rad(number)</Name>
		<Returns>Number</Returns>
		<Example>rad(180) = 1 * PI</Example>
		<Description>Returns the radian value of an angle in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>random(min, max)</Name>
		<Returns>Number</Returns>
		<Example>random(0,100) </Example>
		<Description>Returns the value of a number randomly chosen from low to high(min to max)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>randomseed(min, max, seedvalue)</Name>
		<Returns>Number</Returns>
		<Example>randomseed(0,100,124)</Example>
		<Description>Returns a random value at a chosen seed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>sin(number)</Name>
		<Returns>Number</Returns>
		<Example>sin(180) == 0</Example>
		<Description>Returns the sine of an angle in degrees.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>sqrt(number)</Name>
		<Returns>Number</Returns>
		<Example>sqrt(4) == 2</Example>
		<Description>Returns the square root of a number</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>tan(number)</Name>
		<Returns>Number</Returns>
		<Example>local mytangent = tan(1);</Example>
		<Description>Returns the value of the angle in degrees as a tangent</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strlower(string)</Name>
		<Returns>String</Returns>
		<Example>strlower("MyMixedCase") == "mymixedcase"</Example>
		<Description>Returns the values of the specified string in lowercase</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strupper(string)</Name>
		<Returns>String</Returns>
		<Example>strupper("mYmiXEDcase") == "MYMIXEDCASE"</Example>
		<Description>Returns the value of the specified string in uppercase</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strsub(string, beginindex, endindex)</Name>
		<Returns>String</Returns>
		<Example>strsub("abcDef",2,4) == "cD"</Example>
		<Description>Returns the substring of the specified string</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strfind(string,searchval,startindex)</Name>
		<Returns>Number</Returns>
		<Example>strfind("abcdefcd","cd", 5) ==  6</Example>
		<Description>Returns the index of a value within a string.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strlen(string)</Name>
		<Returns>Number</Returns>
		<Example>strlen("1234567") == 7</Example>
		<Description>Returns the length of a string.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>strchar(string,charindex)</Name>
		<Returns>String</Returns>
		<Example>strchar("1234567",6) == "7"</Example>
		<Description>Returns the character at a given position</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>NUM_CONTAINER_FRAMES</Name>
		<InitialValue>9</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_BAG_FRAMES</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_CONTAINER_ITEMS</Name>
		<InitialValue>20</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_CONTAINER_COLUMNS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CONTAINER_WIDTH</Name>
		<InitialValue>192</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CONTAINER_SPACING</Name>
		<InitialValue> 0</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>VISIBLE_CONTAINER_SPACING</Name>
		<InitialValue>3</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CONTAINER_OFFSET </Name>
		<InitialValue>70</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>BAG_CLOSED</Name>
		<Description>Called when a bag is closed</Description>
		<Arg1>Container ID</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>BAG_OPEN</Name>
		<Description>Called when a bag is opened</Description>
		<Arg1>Container ID</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>BAG_UPDATE_COOLDOWN</Name>
		<Description>Called when a cooldown update call is sent to a bag</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_LOCK_CHANGED</Name>
		<Description>Called when an item that could not be removed before is now removable.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>CanOpenPanels()</Name>
		<Returns>Boolean</Returns>
		<Example>if ( CanOpenPanels() ) then</Example>
		<Description>Returns true if the player is allowed to open his items.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>NotWhileDeadError()</Name>
		<Example>NotWhileDeadError()</Example>
		<Description>Generates an error message saying you cannot do that while dead.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleBag(bagnumber)</Name>
		<Example>ToggleBag(0);</Example>
		<Description>Toggles the bags open or closed. Bag 0 is your backpack.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>updateContainerFrameAnchors()</Name>
		<Example>	updateContainerFrameAnchors();</Example>
		<Description>Updates the container frame's anchors.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetContainerNumSlots </Name>
		<Description>Returns the number of slots a specified container should have.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetScreenHeight()</Name>
		<Returns>Number</Returns>
		<Example>if( GetScreenHeight() == 600) then ChatFrame:AddMessage("Using 800x600 mode"); end</Example>
		<Description>Returns the size of the window in pixels.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RegisterForClicks(mousebutton, mousebutton2 ... mousebuttonN )l</Name>
		<Returns></Returns>
		<Example>	this:RegisterForClicks("LeftButtonUp", "RightButtonUp");</Example>
		<Description>Registers the frame for a mouse events. ("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "LeftButtonDown", "RightButtonDown", "MiddleButtonDown")</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RegisterForDrag(mousebutton)</Name>
		<Example>this:RegisterForDrag("LeftButton");</Example>
		<Description>Registers the frame for a mouse drag event.</Description>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>Insert(LinkID)</Name>
		<Returns>None</Returns>
		<Example>ChatFrameEditBox:Insert(GetContainerItemLink(this:GetParent():GetID(), this:GetID()));</Example>
		<Description>Inserts an amount of text into an edit box.</Description>
		<UsedIn>contain</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobalFunction>
		<Name>PickupContainerItem(containerid, objectid)</Name>
		<Example>PickupContainerItem(this:GetParent():GetID(), this:GetID());</Example>
		<Description>Picks up an item from the specified slot.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UseContainerItem(containerid, objectid)</Name>
		<Example>UseContainerItem(this:GetParent():GetID(), this:GetID());</Example>
		<Description>Uses an item from the specified container.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowContainerSellCursor(containerid, objectid);</Name>
		<Example>ShowContainerSellCursor(this:GetParent():GetID(),this:GetID());</Example>
		<Description>Shows the icon for a sell-item cursor. </Description>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>SetSequence(number)</Name>
		<Example>this:SetSequence(0);</Example>
		<Description>Sets the value for a timer in a cooldown frame.</Description>
		<UsedIn>cooldownframe</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetSequenceTime(state,totaltime)</Name>
		<Example>this:SetSequenceTime(0, time);</Example>
		<Description>Sets the amount of time already passed out of the total time of the sequence in the cooldown frame.</Description>
		<UsedIn>cooldownframe</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>AdvanceTime()</Name>
		<Example>this:AdvanceTime();</Example>
		<Description>Increments the "time" value of a cooldown frame.</Description>
		<UsedIn>cooldownframe</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>CRAFTS_DISPLAYED</Name>
		<InitialValue>8</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_CRAFT_REAGENTS</Name>
		<InitialValue>8</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CRAFT_SKILL_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>CRAFT_UPDATE</Name>
		<Description>Called when a crafting event is updating.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>GetNumCraftS()</Name>
		<Returns>Number</Returns>
		<Example>GetNumCrafts &gt;0</Example>
		<Description>Returns the number of crafts a player can perform.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCraftSelectionIndex()</Name>
		<Returns>Number</Returns>
		<Example>				CraftFrame_SetSelection(GetCraftSelectionIndex());
</Example>
		<Description>Returns the number of the craft selection index.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>FRIENDS_TO_DISPLAY</Name>
		<InitialValue>9</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>FRIENDS_FRAME_FRIEND_HEIGHT</Name>
		<InitialValue>34</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>IGNORES_TO_DISPLAY</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>FRIENDS_FRAME_IGNORE_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>WHOS_TO_DISPLAY</Name>
		<InitialValue>17</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>FRIENS_FRAME_WHO_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_IGNORE</Name>
		<InitialValue>50</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_WHOS_FROM_SERVER</Name>
		<InitialValue>50</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>ShowFriends()</Name>
		<Example>ShowFriends();</Example>
		<Description>Displays the list of friends in the friends frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetSelectedFriend()</Name>
		<Returns>SelectedFriend</Returns>
		<Example>	FriendsFrame.selectedFriend = GetSelectedFriend();</Example>
		<Description>Returns the currently selected friend object.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetSelectedFriend(number)</Name>
		<Example>SetSelectedFriend(1)</Example>
		<Description>Selects the friend who is selected.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FauxScrollFrame_Update(frameobject, maxitemsshown, numbershownatonetime,pixelheight of each shown, highlightframe, smallhighlightwidht, smallhighlightheight)</Name>
		<Example>	FauxScrollFrame_Update(FriendsFrameFriendsScrollFrame, numFriends, FRIENDS_TO_DISPLAY, FRIENDS_FRAME_FRIEND_HEIGHT );
</Example>
		<Description>Updates the position of a false scroll frame. </Description>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>LockHighlight()</Name>
		<Example>button:LockHightlight();</Example>
		<Description>Sets the object to be highlight for a long period of time.</Description>
		<UsedIn>buttons</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>UnlockHighlight()</Name>
		<Example>button:UnlockHighlight()</Example>
		<Description>Returns the highlighted button to normal state.</Description>
		<UsedIn>buttons</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetWidth(number)</Name>
		<Example>frame:SetWidth(8);</Example>
		<Description>Sets the width of a frame.</Description>
		<UsedIn>frames</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>GetFriendInfo(friendid)</Name>
		<Returns>name, level, class, area, connectedstate</Returns>
		<Example>		name, level, class, area, connected = GetFriendInfo(friendIndex);
</Example>
		<Description>Returns the status of the friend specifed at the index inserted</Description>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>GAMETIME_DAWN</Name>
		<InitialValue>(5*60)+30</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>GAMTIME_DUSK</Name>
		<InitialValue>(21*60)</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetGameTime()</Name>
		<Returns>hour, minute</Returns>
		<Example>local hour, minute = GetGameTime()</Example>
		<Description>Returns the time in-game.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>TOOLTIP_ADD_MONEY</Name>
		<Description>Called when a tooltip has money added to it.</Description>
		<Arg2>money amount</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UPDATE_MOUSEOVER_UNIT</Name>
		<Description>Called when the mouseover object needs to be updated</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CLEAR_TOOLTIP</Name>
		<Description>Called when the tooltip needs to be wiped</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TOOLTIP_ANCHOR_DEFAULT</Name>
		<Description>Called when the tooltip anchor should be reset</Description>
	</BlizzardEvent>
	<BlizzardFunction>
		<Name>SetBackdropBorderColor(r,g,b,a)</Name>
		<Example>		this:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b);
</Example>
		<Description>Sets the backdrop border color for an object</Description>
		<UsedIn>tooltip</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobalFunction>
		<Name>SetPortraitTexture(frameportraitobject, unitname)</Name>
		<Example>SetPortraitTexture(GuildRegistrarFramePortrait, "NPC");</Example>
		<Description>Sets the portrait of a frame. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RefreshMoneyFrame(framename, money amount, 0, 1)</Name>
		<Example>RefreshMoneyFrame("GuildRegistrarMoneyFrame", GetGuildCharterCost(), 0, 1);</Example>
		<Description>Refreshes the money frame for something.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitExists(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>if ( UnitExists(unit) and UnitIsPlayer(unit) ) then</Example>
		<Description>Returns true if the unit specified exists</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsPlayer(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>if ( UnitExists(unit) and UnitIsPlayer(unit) ) then</Example>
		<Description>Returns true if the unit is a player</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>NotifyInspect(unitname)</Name>
		<Example>NotifyInspect("target");</Example>
		<Description>Notifies the target player that they are about to be inspected!</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PARTY_MEMBERS_CHANGED</Name>
		<Description>Called when the party members change</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_PORTRAIT_UPDATE</Name>
		<Description>Called when a unit portrait changes.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_NAME_UPDATE</Name>
		<Description>Called when a unit's named updates</Description>
		<Arg1>Unit Name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_TEXT_BEGIN</Name>
		<Description>Called when an items text begins displaying</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_TEXT_TRANSLATION</Name>
		<Description>Called when an item is in the process of being translated.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_TEXT_READY</Name>
		<Description>Called when the item's text can continue and is ready to be scrolled.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>ITEM_TEXT_CLOSED</Name>
		<Description>Called when the items text has completed its viewing and is done.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>KEY_BINDINGS_DISPLAYED</Name>
		<InitialValue>17</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>KEY_BINGING_HEIGHT</Name>
		<InitialValue>22</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetNumBindings</Name>
		<Returns>Number</Returns>
		<Example>&gt; 0 ) then </Example>
		<Description>Returns the number of keybindings that exist.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_GENDER_INDICES</Name>
		<InitialValue>6</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_PLURAL_INDICES</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>LOOTFRAME_NUMBUTTONS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>LOOT_OPENED</Name>
		<Description>Called when a corpse is looted</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>LOOT_SLOT_CLEARED</Name>
		<Description>Called when loot is removed from a corpse.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>LOOT_CLOSED</Name>
		<Description>Called when a player ceases looting a corpse.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>GetNumLootITems()</Name>
		<Returns>Number</Returns>
		<Example>this.numLootItems = GetNumLootItems();</Example>
		<Description>Returns the number of items available for looting.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>LootSlot(slotidnumber, 0</Name>
		<Example>LootSlot(((LOOTFRAME_NUMBUTTONS - 1) * (LootFrame.page - 1)) + this:GetID(), 0);</Example>
		<Description>Loots a specified slot in the loot window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_MACROS</Name>
		<InitialValue>18</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_MACRO_ICONS_SHOWN</Name>
		<InitialValue>20</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_ICONS_PER_ROW</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_ICON_ROWS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MACRO_ICON_ROW_HEIGHT</Name>
		<InitialValue>36</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>EditMacro(macro, nil, nil, text, 1)</Name>
		<Example>EditMacro(MacroFrame.selectedMacro, nil, nil, MacroFrameText:GetText(), 1);		</Example>
		<Description>Edits a macro with some unknowns parameters.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SaveMacros()</Name>
		<Example>SaveMacros();</Example>
		<Description>Saves the macros.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumMacroIcons()</Name>
		<Returns>Number</Returns>
		<Example>local numMacroIcons = GetNumMacroIcons();</Example>
		<Description>Returns the number of macro icons that exist.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitXP(target)</Name>
		<Returns>Number</Returns>
		<Example>local currXP = UnitXP("player");</Example>
		<Description>Returns the experience of the target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitXPMax(target)</Name>
		<Returns>Number</Returns>
		<Example>local nextXP = UnitXPMax("player");</Example>
		<Description>Returns the maximum xp of the current target</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UPDATE_BINDINGS</Name>
		<Description>Called when the keybindings are changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>MERCHANT_ITEMS_PER_PAGE</Name>
		<InitialValue>14</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>MERCHANT_UPDATE</Name>
		<Description>Called when a merchant updates</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MERCHANT_CLOSED</Name>
		<Description>Called when a merchant frame closes.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MERCHANT_SHOW</Name>
		<Description>Called when the merchant frame is shown.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MINIMAP_PING</Name>
		<Description>Called when the minimap is pinged.</Description>
		<Arg2>x, arg3 is y</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MINIMAP_UPDATE_ZOOM</Name>
		<Description>Called when the minimap zoom is changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>MINIMAPPING_TIMER</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MINIMAPPING_FADE_TIMER</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CURSOR_OFFSET_X</Name>
		<InitialValue>-7</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>CURSOR_OFFSET_Y</Name>
		<InitialValue>-9</InitialValue>
	</BlizzardGlobal>
	<BlizzardFunction>
		<Name>GetZoom()</Name>
		<Returns>Number</Returns>
		<Example>Minimap:GetZoom()</Example>
		<Description>Returns the zoom on the minimap.</Description>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>MIRRORTIMER_NUMTIMERS</Name>
		<InitialValue>3</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>MIRROR_TIMER_PAUSE</Name>
		<Description>Called when the mirror timer is paused.</Description>
		<Arg1>pause duration</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MIRROR_TIMER_STOP</Name>
		<Description>Called when a mirror timer is paused.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_GREETING</Name>
		<Description>Called when a player is given a new quest.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_DETAIL</Name>
		<Description>Called when the player is given a more detailed view of his quest.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_PROGRESS</Name>
		<Description>Called when a player is viewing the status of their quest.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_COMPLETE</Name>
		<Description>Called when a quest is completed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_FINISHED</Name>
		<Description>Called when a quest is turned it to the quest-giver.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_ITEM_UPDATE</Name>
		<Description>Called when a quest item is changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>DeclineQuest()</Name>
		<Example>DeclineQuest()</Example>
		<Description>Declines the currently offered quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CompleteQuest()</Name>
		<Example>CompleteQuest()</Example>
		<Description>Called when the CompleteQuest button is pressed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsQuestCompletable()</Name>
		<Returns>Boolean</Returns>
		<Example>	if ( IsQuestCompletable() ) then
		QuestFrameCompleteButton:Enable();
</Example>
		<Description>Returns true if a quest is possible to complete.</Description>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>GetQuestBackgroundMaterial()</Name>
		<Returns>TextureString</Returns>
		<Example>local material = GetQuestBackgroundMaterial();</Example>
		<Description>Returns the background material selected for the quests.</Description>
		<UsedIn>QuestFrame</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetTextColor(r,g,b,a)</Name>
		<Example>local material = GetQuestBackgroundMaterial();</Example>
		<Description>Sets the color of a text object</Description>
		<UsedIn>Font Strings</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>MONEY_ICON_WIDTH</Name>
		<InitialValue>19</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MONEY_ICON_WIDTH_SMALL</Name>
		<InitialValue>13</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MONEY_BUTTON_SPACING</Name>
		<InitialValue>-4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MONEY_BUTTON_SPACING_SMALL</Name>
		<InitialValue>-4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COPPER_PER_SILVER</Name>
		<InitialValue>100</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>SILVER_PER_GOLD</Name>
		<InitialValue>100</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>COPPER_PER_GOLD</Name>
		<InitialValue>COPPER_PER_SILVER * SILVER_PER_GOLD</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetPlayerTradeMoney()</Name>
		<Returns>Number</Returns>
		<Example>return (UnitMoney("player") - GetCursorMoney() - GetPlayerTradeMoney());</Example>
		<Description>Returns the amount of money the player has in the trade window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCursorMoney()</Name>
		<Returns>Number</Returns>
		<Example>return (UnitMoney("player") - GetCursorMoney() - GetPlayerTradeMoney());</Example>
		<Description>Returns the amount of money held by the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PickupPlayerMoney(amount)</Name>
		<Description>Picks up an amount of money from  the player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DropCursorMoney()</Name>
		<Description>Drops the amount of money held by the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddTradeMoney()</Name>
		<Description>Adds the money dropped into the players trade frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTargetTradeMoney()</Name>
		<Returns>Number</Returns>
		<Description>Returns the amount of money in the trade frame of the target player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PLAYER_TRADE_MONEY</Name>
		<Description>Called when the player trades money</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_MONEY_CHANGED</Name>
		<Description>Called when the trade window's money value is changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>RefreshMoneyFrame(framename, moneyamt, size, </Name>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>SetPoint(anchor, framename, relativeanchor,x,y)</Name>
		<Description>goldButton:SetPoint("RIGHT", frameName.."SilverButton",	"RIGHT", 0, 0); Make sure you call ClearAllPoints() first. </Description>
		<UsedIn>Button</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>OPTIONS_FARCLIP_MIN</Name>
		<InitialValue>177</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>OPTIONS_FARCLIP_MAX</Name>
		<InitialValue>777</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_RESISTANCE_TYPES</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>CVAR_UPDATE</Name>
		<Description>Called when a CVar is changed</Description>
		<Arg1>cvarname</Arg1>
		<Arg2>value</Arg2>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>RegisterCVar(cvarname, defaultvalue);</Name>
		<Example>RegisterCVar("ABC", 123);</Example>
		<Description>Registers a CVar with the environment. However, the value is loaded from  the disk.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetCVar(cvarname,value)</Name>
		<Example>SetCVar("abc",345);</Example>
		<Description>Sets the value of a CVar to the specified amount. Converts into a string, so use +0 or .."" to convert it into the appropriate type.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetGamma(value)</Name>
		<Example>SetGamma(OptionsFrame.gamma)</Example>
		<Description>Sets the screen gamma for WoW.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FauxScrollFrame_OnVerticalScroll(itemHeight,updateFunction, startingoffset)</Name>
		<Example></Example>
		<Description>Adjusts the false scroll frame specified.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FauxScrollFrame_GetOffset(frame)</Name>
		<Returns>Number</Returns>
		<Description>Returns the offset of the specified frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FauxScrollFrame_SetOffset(frame, offset)
</Name>
		<Description>Set the offset of the frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>NUM_STATS</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>ROTATIONS_PER_SECOND</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_SHOPPING_TOOLTIPS</Name>
		<InitialValue>2</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>UNIT_MODEL_CHANGED</Name>
		<Description>Called when the unit's 3d model changes.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_LEVEL</Name>
		<Description>Called when the unit level changs</Description>
		<Arg1>new level</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_RESISTANCE</Name>
		<Description>Called when the units resistance changes</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_RESISTANCE_BUFF_MODS_POSITIVE</Name>
		<Description>Called when a positive buff is cast that affects resistance</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_RESISTANCE_BUFF_MODS_NEGATIVE</Name>
		<Description>Called when a buff exists that hampers resistance to an element</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_RESISTANCE_ITEM_MODS");</Name>
		<Description>Called when an item effets your resistance</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_STATS</Name>
		<Description>Called when  a units stats are being passed to the player/thing</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_DAMAGE</Name>
		<Description>Called when the units damage soaked up has changed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_DAMAGE_DONE_MODS</Name>
		<Description>Called when there is something that affects how much damage you do.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_ATTACK_SPEED</Name>
		<Description>Called when  your attack speed is being listed or affected</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_DEFENSE</Name>
		<Description>Called when a units defense is affected</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_ATTACK</Name>
		<Description>Called when a units attack is affected</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_GUILD_UPDATE</Name>
		<Description>Called when  a players guild changes or the players status within that guild changes.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>AutoEquipCursorItem()</Name>
		<Example>	if ( button == "LeftButton" ) then
		AutoEquipCursorItem();
	end</Example>
		<Description>Causes the equipment on the cursor to be equipped.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PARTY_MEMBERS_CHANGED</Name>
		<Description>Called when the party of the player's member changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>MAX_PARTY_MEMBERS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PARTY_FRAME_SHOWN</Name>
		<InitialValue>1</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_PARTY_MEMBERS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_PARTY_DEBUFFS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_PARTY_TOOLTIP_BUFFS</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_PARTY_TOOLTIP_DEBUFFS</Name>
		<InitialValue>8</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetPartyMember(index[or id])</Name>
		<Returns>Target</Returns>
		<Example>GetPartyMember(3)</Example>
		<Description>Returns the name of the party member at the specified index.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetLootMethod()</Name>
		<Returns>lootMethod, lootMaster</Returns>
		<Example>lootMethod, lootMaster = GetLootMethod();</Example>
		<Description>Returns the style and loot master for looting.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>PARTY_LEADER_CHANGED</Name>
		<Description>Called when the player's leadership changed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_MEMBER_ENABLE</Name>
		<Description>Called when a specific party member is still connected </Description>
		<Arg1>Player Name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_MEMBER_DISABLE</Name>
		<Description>Called when a specific party member is offline or dead</Description>
		<Arg1>Player Name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_LOOT_METHOD_CHANGED</Name>
		<Description>Called when the specified party looting method is changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>SpellIsTargeting()</Name>
		<Returns>Boolean</Returns>
		<Description>Returns true if the spell specified is a targetting spel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SpellStopTargeting()</Name>
		<Description>Instructs the spell to cease targetting.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SpellTargetUnit(target)</Name>
		<Example>			SpellTargetUnit(unit);</Example>
		<Description>Instructs the spell to affect the specified target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TargetUnit(target)</Name>
		<Example>TargetUnit(unit);</Example>
		<Description>Targets the specified unit</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitDebuff(target,index)</Name>
		<Returns>DebuffId</Returns>
		<Example>debuff = UnitDebuff("party"..this:GetID(), i);</Example>
		<Description>Returns the debuff at the specified index on the target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitBuff(target,index)</Name>
		<Returns>BuffId</Returns>
		<Example>buff = UnitBuff("party"..this:GetID(), i);</Example>
		<Description>Returns the buff of the specified unit.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>setglobal(variablename, value);</Name>
		<Example>setglobal("SLASH_"..type..i,myfunc)l;</Example>
		<Description>Sets teh value of a global variable. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>PETACTIONBAR_SLIDETIME </Name>
		<InitialValue> 0.09</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PETACTIONBAR_YPOS</Name>
		<InitialValue>98</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PETACTIONBAR_XPOS</Name>
		<InitialValue>36</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_PET_ACTION_SLOTS</Name>
		<InitialValue>10</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_DEFENSIVE_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Ability_Defend"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_AGGRESSIVE_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Ability_Racial_BloodRage";</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_PASSIVE_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Ability_Seal";</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_ATTACK_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Ability_GhoulFrenzy"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_FOLLOW_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Ability_Tracking"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_WAIT_TEXTURE </Name>
		<InitialValue>"Interface\\Icons\\Spell_Nature_TimeStop"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>PET_DISMISS_TEXTURE</Name>
		<InitialValue>"Interface\\Icons\\Spell_Shadow_Teleport"</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>PET_BAR_UPDATE</Name>
		<Description>Called when the pet bar is updates</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PET_BAR_UPDATE_COOLDOWN</Name>
		<Description>Called when a pet spell cooldown changes</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PET_BAR_SHOWGRID</Name>
		<Description>Called when the Pet bar is supposed to be displayed</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PET_BAR_HIDEGRID</Name>
		<Description>Called when the pet bar should be hidden. (dismiss/die)</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>PetHasActionBar()</Name>
		<Returns>Boolean</Returns>
		<Example>PetHasActionBar()</Example>
		<Description>Returns true when the pet currently used has an action bar.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowPetActionBar();</Name>
		<Example>ShowPetActionBar();</Example>
		<Description>Shows the pets actionbar</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>LockPetActionBar();</Name>
		<Example>LockPetActionBar();</Example>
		<Description>Prevents the position of the action bar from updating.?</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnlockPetActionBar();</Name>
		<Example>UnlockPetActionBar();</Example>
		<Description>Free the pet bar from the grid spot</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HidePetActionBar();</Name>
		<Example>HidePetActionBar();</Example>
		<Description>Don't display the pet action bar.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UNIT_COMBAT</Name>
		<Description>Called when  an npc or player participates in combat</Description>
		<Arg1>Unit Name</Arg1>
		<Arg2>action,dmg,etc</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_SPELLMISS</Name>
		<Description>Called when a spell misses</Description>
		<Arg1>Unit Name</Arg1>
		<Arg2>action</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_PET_CHANGED</Name>
		<Description>Called when a player's pet changes.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PET_ATTACK_START</Name>
		<Description>Called when the player's pet begins attackin</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PET_ATTACK_STOP</Name>
		<Description>Called when the player's pet ceases attack</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>UnitExists("target")</Name>
		<Returns>Boolean</Returns>
		<Example>	if ( UnitExists("pet") ) then</Example>
		<Description>Returns true if the specifed unit actually  exists.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PetCanBeAbandoned()</Name>
		<Returns>Boolean</Returns>
		<Example>if(PetCanBeAbandoned()) then</Example>
		<Description>Retuns true if the pet is abandonable</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_PETITION_SIGNATURES</Name>
		<InitialValue>9</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>CanSignPetition()</Name>
		<Returns>Boolean</Returns>
		<Example>CanSignPetition()</Example>
		<Description>Returns true if the player is not in a guild.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetPetitionInfo()</Name>
		<Returns>petitionType, title, bodyText, maxSignatures, originatorName, isOriginator</Returns>
		<Example>local petitionType, title, bodyText, maxSignatures, originatorName, isOriginator = GetPetitionInfo();</Example>
		<Description>Returns a lot of stuff about the Guild Petition</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>StaticPopup_Show(popupname)</Name>
		<Example>StaticPopup_Show("PETRENAMECONFIRM");</Example>
		<Description>Shows a static popup for pets.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UNIT_MAXMANA</Name>
		<Description>Called when a units mana is maxxed out.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_ENTER_COMBAT</Name>
		<Description>Called when a player attacks or is attacked</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_LEAVES_COMBAT</Name>
		<Description>Called when the players opponents die or he dies</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_ENTER_RESTING</Name>
		<Description>Called when the player begins resting to restore hp/mana more quickly.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_LEAVES_RESTING</Name>
		<Description>Called when a player ceases resting to restore hp/mana</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_MEMBERS_CHANGED</Name>
		<Description>Called when the player's party changes</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_LEADER_CHANGED</Name>
		<Description>Called when the party's leader changes (buggy)</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_LOOT_METHOD_CHANGED</Name>
		<Description>Called when the party's loot method changes</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>IsPartyLeader()</Name>
		<Returns>Boolean</Returns>
		<Example>IsPartyLeader()</Example>
		<Description>Returns true if the player is the party leader.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CursorHasItem()</Name>
		<Returns>Boolean</Returns>
		<Example>CursorHasItem()</Example>
		<Description>Returns true if the cursor currently holds an item</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AutoEquipCursorItem();</Name>
		<Example>AutoEquipCursorItem();</Example>
		<Description>Instructs the player to equip an item held by the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_NUM_QUESTS</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_NUM_ITEMS</Name>
		<InitialValue>10</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_REQUIRED_ITEMS</Name>
		<InitialValue>6</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>QUEST_FADING_ENABLE</Name>
		<InitialValue>1</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>QUEST_DESCRIPTION_GRADIENT_LENGTH</Name>
		<InitialValue>30</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>QUEST_DESCRIPTION_GRADIENT_CPS</Name>
		<InitialValue>40</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>QUESTINFO_FADE_IN</Name>
		<InitialValue>1</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>QUEST_GREETING</Name>
		<Description>Called when a quest is offered</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_DETAIL</Name>
		<Description>Called when a quest is accepted</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_PROGRESS</Name>
		<Description>Called when  a quest is currently in progress</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_COMPLETE</Name>
		<Description>Called when the quest has been completed</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_FINISHED</Name>
		<Description>Called when the quest is finished by returning it to the Quest NPC</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_ITEM_UPDATE</Name>
		<Description>Called when the quest items are updated</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>DeclineQuest();</Name>
		<Example>DeclineQuest();</Example>
		<Description>Declines the current quest</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>QuestChooseRewardError();</Name>
		<Example>QuestChooseRewardError();</Example>
		<Description>Throws an error when the chooe reward method doesn't work.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestReward(itemChoice);</Name>
		<Example>GetQuestReward(QuestFrameRewardPanel.itemChoice);</Example>
		<Description>Gets the quest reward specified.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CompleteQuest();</Name>
		<Example>CompleteQuest();</Example>
		<Description>Completed the specified quest in the quest log window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsQuestCompletable()</Name>
		<Returns>Boolean</Returns>
		<Example>IsQuestCompletable()</Example>
		<Description>Returns true if the currently loaded quest in the quest window is completable</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumQuestItems()</Name>
		<Returns>Number</Returns>
		<Example>local numRequiredItems = GetNumQuestItems()</Example>
		<Description>Returns the number of items nessecary to complete a particular quest. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestItemInfo(type, number)</Name>
		<Returns>Name, Texture, Count</Returns>
		<Example>local name, texture, numItems = GetQuestItemInfo(requiredItem.type, i);</Example>
		<Description>Returns basic information about the quest items. </Description>
	</BlizzardGlobalFunction>
	<BlizzardFunction>
		<Name>SetId(number)</Name>
		<Example>			questTitleButton:SetID(i);</Example>
		<Description>for an object</Description>
		<UsedIn>QuestFrame</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobalFunction>
		<Name>SetItemButtonCount(requiredItem, numItems)</Name>
		<Example>SetItemButtonCount(requiredItem, numItems);</Example>
		<Description>Sets the item button count to the specifed number</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetItemButtonTexture(requiredItem, texture);</Name>
		<Example>SetItemButtonTexture(requiredItem, texture);</Example>
		<Description>Sets the item button texture to the specified texture file.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetGreetingText()</Name>
		<Returns>String</Returns>
		<Example>GreetingText:SetText(GetGreetingText());</Example>
		<Description>Returns the greeting text for the current quest/npc.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumQuestLogRewards()</Name>
		<Returns>Number</Returns>
		<Example>numQuestRewards = GetNumQuestLogRewards();</Example>
		<Description>Returns the count of the rewards for a particular quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumQuestLogChoices();</Name>
		<Returns>Number</Returns>
		<Example>	numQuestChoices = GetNumQuestLogChoices();</Example>
		<Description>Returns the number of options someone has when getting a quest item.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogRewardMoney();</Name>
		<Returns>Number</Returns>
		<Example>money =GetQuestLogRewardMoney();</Example>
		<Description>Returns a number representing the amount of copper returned by a particular quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogChoiceInfo(i);</Name>
		<Returns>name, texture, numItems, quality, isUsable</Returns>
		<Example>name, texture, numItems, quality, isUsable = GetQuestLogChoiceInfo(i);</Example>
		<Description>Returns a bunch of data about the quest log.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestItemInfo(questItem.type, i);</Name>
		<Returns>name, texture, numItems, quality, isUsable</Returns>
		<Example>name, texture, numItems, quality, isUsable = GetQuestItemInfo(questItem.type, i);</Example>
		<Description>Returns a pile of quest item information</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogRewardInfo(i);</Name>
		<Returns>name, texture, numItems, quality, isUsable</Returns>
		<Example>name, texture, numItems, quality, isUsable = GetQuestLogRewardInfo(i);</Example>
		<Description>Returns a pile of reward item info</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestBackgroundMaterial()</Name>
		<Returns>String</Returns>
		<Example>material = GetQuestBackgroundMaterial()</Example>
		<Description>Returns the material string associated with the particular quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>QUESTS_DISPLAYED</Name>
		<InitialValue>6</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_QUESTS</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_OBJECTIVES</Name>
		<InitialValue>10</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>QUESTLOG_QUEST_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UPDATE_DELAY</Name>
		<InitialValue>.1</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>ExpandQuestHeader(questID)</Name>
		<Example>ExpandQuestHeader(questID);</Example>
		<Description>Expands a quest header</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CollapseQuestHeader(questID);</Name>
		<Example>CollapseQuestHeader(questID);</Example>
		<Description>Collapses the quest header?</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogSelection()</Name>
		<Returns>Number</Returns>
		<Example>GetQuestLogSelection()</Example>
		<Description>Returns a number associated with the QuestLogSelection index</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogTitle(questID)</Name>
		<Returns>String</Returns>
		<Example>local questTitle = GetQuestLogTitle(questID)</Example>
		<Description>Returns the string which is associated with the specific QuestLog Title in the game.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestLogQuestText();</Name>
		<Returns>questDescription, questObjectives</Returns>
		<Example>questDescription, questObjectives = GetQuestLogQuestText();</Example>
		<Description>Returns the description and objectives required for the specified quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestTimers();</Name>
		<Returns>Number</Returns>
		<Example>questTimer  GetQuestLogTimeLeft();</Example>
		<Description>Returns the time left to complete a specified mission.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetQuestTimers()</Name>
		<Returns>Strings</Returns>
		<Example>GetQuestTimers() </Example>
		<Description>Returns all of the quest timers currently in progress. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>NUM_FACTIONS_DISPLAYED</Name>
		<InitialValue>14</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>REPUTATIONFRAME_FACTIONHEIGHT</Name>
		<InitialValue>26</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetNumFactions();</Name>
		<Returns>numFactions</Returns>
		<Example>numFactions = GetNumFactions();</Example>
		<Description>Returns the number of actions the player knows about.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>SKILLS_TO_DISPLAY</Name>
		<InitialValue>12</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>SKILLFRAME_SKILL_HEIGHT</Name>
		<InitialValue>15</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>SetSelectedSkill(0);</Name>
		<Example>SetSelectedSkill(0);</Example>
		<Description>Select the currently selected Skill in the SkillFrame</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetSkillLineInfo(SkillIndex)</Name>
		<Returns>skillName, header, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType</Returns>
		<Example>skillName, header, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType = GetSkillLineInfo(skillIndex)</Example>
		<Description>Gets a lot of information about the skill </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitCharacterPoints("player")</Name>
		<Returns>talentPoints, currSkillPoints</Returns>
		<Example>talentPoints, currSkillPoints = UnitCharacterPoints("player")</Example>
		<Description>Returns the talent and skill points of the player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_SPELLS</Name>
		<InitialValue>1024</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>SPELLS_PER_PAGE</Name>
		<InitialValue>14</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_SPELL_PAGES</Name>
		<InitialValue>ceil(MAX_SPELLS / SPELLS_PER_PAGE)</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BOOKTYPE_SPELL</Name>
		<InitialValue>"spell"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BOOKTYPE_ABILITY</Name>
		<InitialValue>"ability"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>BOOKTYPE_PET</Name>
		<InitialValue>"pet"</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>PlayerHasSpells()</Name>
		<Returns>Boolean</Returns>
		<Example> PlayerHasSpells()</Example>
		<Description>Returns true if the player has spells</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HasPetSpells()</Name>
		<Returns>hasPetSpells, petToken</Returns>
		<Example>hasPetSpells, petToken = HasPetSpells()</Example>
		<Description>Returns true if the player has pet spells</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PickupSpell(id, SpellBookFrame.bookType )</Name>
		<Example>PickupSpell(id, SpellBookFrame.bookType )</Example>
		<Description>Picks up the specified spell and places it on the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetSpellName(id, SpellBookFrame.bookType)</Name>
		<Returns> spellName, subSpellName</Returns>
		<Example> spellName, subSpellName = GetSpellName(id, SpellBookFrame.bookType)</Example>
		<Description>Obtains the spell name and rank</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsSpellPassive(id, SpellBookFrame.bookType) </Name>
		<Returns>Boolean</Returns>
		<Example>IsSpellPassive(id, SpellBookFrame.bookType) </Example>
		<Description>Determines if a spell is always active and does not need to be cast.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CastSpell(id, SpellBookFrame.bookType);</Name>
		<Example>CastSpell(id, SpellBookFrame.bookType);</Example>
		<Description>Casts the spell at slot "id" in book "bookType"</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsCurrentCast</Name>
		<Returns>Boolean</Returns>
		<Example>IsCurrentCast(id,  SpellBookFrame.bookType)</Example>
		<Description>Determines if the current spell slot (from the specified book) is the spell currently being cast. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetSpellTexture(id, SpellBookFrame.bookType)</Name>
		<Returns>Texture</Returns>
		<Example>texture = GetSpellTexture(id, SpellBookFrame.bookType)</Example>
		<Description>Obtains the texture file for a specific spell button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetSpellCooldown(id, SpellBookFrame.bookType)</Name>
		<Returns>Number start, Number duration, Boolean enable</Returns>
		<Example>local start, duration, enable = GetSpellCooldown(id, SpellBookFrame.bookType);</Example>
		<Description>Returns the cooldown data for a specified spell. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UpdateSpells();</Name>
		<Returns></Returns>
		<Example>UpdateSpells();</Example>
		<Description>Refreshes the spellbook view.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>STATICPOPUP_NUMDIALOGS </Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>DeleteGMTicket();</Name>
		<Example>DeleteGMTicket();</Example>
		<Description>Removes your GM ticket from the list.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PetRename(name)</Name>
		<Example>PetRename(getglobal(prevFrame:GetName().."EditBox"):GetText());</Example>
		<Description>Renames your pet.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetReleaseTimeRemaining();</Name>
		<Returns>Time to release of spirit.</Returns>
		<Example>this.timeleft=GetReleaseTimeRemaining();</Example>
		<Description>Returns the amount of time left before your ghost is pulled from your body. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RepopMe();</Name>
		<Example>RepopMe();</Example>
		<Description>Releases your ghost to the graveyard.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HasSoulstone()</Name>
		<Returns>Boolean</Returns>
		<Example>if (HasSoulstone() )then</Example>
		<Description>Returns true if your character possess a soulstone.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UseSoulstone();</Name>
		<Example>UseSoulstone();</Example>
		<Description>Returns your character to life upon death. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AcceptResurrect();</Name>
		<Example>AcceptResurrect();</Example>
		<Description>Accepts the resurrection of your character by another player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DeclineResurrect();</Name>
		<Example>DeclineResurrect();</Example>
		<Description>Declines the invitation to return to life.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>BeginTrade();</Name>
		<Example>BeginTrade();</Example>
		<Description>Begins the trade with the target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelTrade();</Name>
		<Example>CancelTrade()</Example>
		<Description>Declines the offer to trade with the other player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AcceptGroup()</Name>
		<Example>AcceptGroup()</Example>
		<Description>Accept the invitation to party</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DeclineGroup()</Name>
		<Example>DeclineGroup()</Example>
		<Description>Decline the invitation to a party</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AcceptGuild()</Name>
		<Example>AcceptGuild()</Example>
		<Description>Accept the invitation to join a guild</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DeclineGuild()</Name>
		<Example>DeclineGuild()</Example>
		<Description>Decline the offer to join a guild</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ForceLogout()</Name>
		<Example>ForceLogout()</Example>
		<Description>Makes your character logout immediately</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelLogout()</Name>
		<Example>CancelLogout()</Example>
		<Description>Refuse the logout attempt</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ForceQuit()</Name>
		<Example>ForceQuit()</Example>
		<Description>Force the game to stop running.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>LootSlot(slot,yesno)</Name>
		<Example>LootSlot(3,1)</Example>
		<Description>Loots the specified slot from the inventory.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>EquipPendingItem(slot);</Name>
		<Example>EquipPendingItem(slot);</Example>
		<Description>Equip the item waiting to be equipped.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelPendingEquip(slot);</Name>
		<Example>CancelPendingEquip(slot);</Example>
		<Description>Drop the item you were going to equip.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>DeleteCursorItem();</Name>
		<Example>DeleteCursorItem();</Example>
		<Description>Destroy the item currently held by the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ConfirmAcceptQuest();</Name>
		<Example>ConfirmAcceptQuest();</Example>
		<Description>Accept the quest. Yes. Really accept it.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PetAbandon();</Name>
		<Example>PetAbandon();</Example>
		<Description>Abandon your pet. Shoo. Get out.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AbandonQuest();</Name>
		<Example>AbandonQuest();</Example>
		<Description>Abandon the specified quest.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddFriend(FriendName);</Name>
		<Example>AddFriend(editBox:GetText());</Example>
		<Description>Add a friend to your friends list.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddIgnore(UserName);</Name>
		<Example>AddIgnore(editBox:GetText());</Example>
		<Description>Add a player to your ignore list.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AcceptDuel();</Name>
		<Example>AcceptDuel();</Example>
		<Description>Accept the challenge to a duel</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CancelDuel()</Name>
		<Example>CancelDuel()</Example>
		<Description>Refuse the invitation to fight a duel.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AbandonSkill(index);</Name>
		<Example>AbandonSkill(index);</Example>
		<Description>Abandon a skill</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AcceptXPLoss();</Name>
		<Example>AcceptXPLoss();</Example>
		<Description>Accept the XP loss to be reborn where you stand.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>RetrieveCorpse();</Name>
		<Example>RetrieveCorpse();</Example>
		<Description>Revive your body and begin moving again if in range.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ReplaceEnchant();</Name>
		<Example>ReplaceEnchant();</Example>
		<Description>Confirm the enchantment replacement.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ReplaceTradeEnchant(data);</Name>
		<Example>ReplaceTradeEnchant(data);</Example>
		<Description>Confirm the replacement of an enchantment via trade.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>OPEN_TABARD_FRAME</Name>
		<Description>Called when the guild dress frame is opened.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>STATSFRAME_UPDATE_TIME</Name>
		<InitialValue>.5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetDebugStats()</Name>
		<Returns>Unknown</Returns>
		<Example>StatsFrameText:SetText(GetDebugStats());</Example>
		<Description>I'm quite curious to find out honestly. It has something to do with stats.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowSuggestFrame(Message)</Name>
		<Example>ShowSuggestFrame("")</Example>
		<Description>Shows the suggest frame with the value specified. </Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>CLOSE_TABARD_FRAME</Name>
		<Description>Called when the guild dress frame is closed</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TABARD_CANSAVE_CHANGED</Name>
		<Description>Called when it is possible to save a tabard</Description>
	</BlizzardEvent>
	<BlizzardFunction>
		<Name>SetBackdropBorderColor(r, g, b);</Name>
		<Example>TabardFrameCostFrame:SetBackdropBorderColor(0.4, 0.4, 0.4);</Example>
		<Description>Sets the backdrop for a frame</Description>
		<UsedIn>Frame</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetBackdropColor(r,g,b)</Name>
		<Example>TabardFrameCostFrame:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b);</Example>
		<Description>Sets the backdrop color for a frame.</Description>
		<UsedIn>Frame</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetRotation(rotation)</Name>
		<Example>TabardModel:SetRotation(this.rotation);</Example>
		<Description>Sets the rotation of a model in radians.</Description>
		<UsedIn>TabardModel</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetUnit(name)</Name>
		<Example>TabardModel:SetUnit("player");</Example>
		<Description>Sets the model object to match the specified target</Description>
		<UsedIn>TabardModel</UsedIn>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>TALENTS_DISPLAYED</Name>
		<InitialValue>11</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>TALENT_TRAINER_SKILL_HEIGHT</Name>
		<InitialValue>16</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobalFunction>
		<Name>GetTrainerSelectionIndex()</Name>
		<Returns>Number</Returns>
		<Example>if ( GetTrainerSelectionIndex() &gt; GetNumTrainerServices() ) then</Example>
		<Description>Returns the selected trainer index.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumTrainerServices()</Name>
		<Returns>Number</Returns>
		<Example>if ( GetTrainerSelectionIndex() &gt; GetNumTrainerServices() ) then</Example>
		<Description>Returns the number of possible services a trainer can have.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceCost(skillIndex);</Name>
		<Returns>moneyCost, talentpointCost, skillpointCost</Returns>
		<Example>local moneyCost, cpCost1, cpCost2 = GetTrainerServiceCost(skillIndex);</Example>
		<Description>Returns the cost in money, skill points and talent points.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceInfo(skillIndex)</Name>
		<Returns>serviceName, serviceSubText, serviceType, isExpanded</Returns>
		<Example>serviceName, serviceSubText, serviceType, isExpanded = GetTrainerServiceInfo(skillIndex);</Example>
		<Description>Returns the info about the training service.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTrainerServiceStepReq(skillId);</Name>
		<Returns>Abilities step, Boolean met</Returns>
		<Example>step, met = GetTrainerServiceStepReq(id);</Example>
		<Description>Returns the required steps and whether they have been accomplished to complete a training.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>IsTrainerServiceLearnSpell(id);</Name>
		<Returns>isLearnSpell, isPetLearnSpell</Returns>
		<Example>isLearnSpell, isPetLearnSpell = IsTrainerServiceLearnSpell(id);</Example>
		<Description>Returns true, ? if the spell is a learnable spell. Returns ?, true if it is a pet teachable spell.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ExpandTrainerSkillLine(0);</Name>
		<Example>ExpandTrainerSkillLine(0);</Example>
		<Description>Expands the trainer skill line. (What is this?)</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CollapseTrainerSkillLine(0);</Name>
		<Example>CollapseTrainerSkillLine(0);</Example>
		<Description>Collapses the trainer skill ine.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetTradeTargetItemInfo(id)</Name>
		<Returns>name, texture, numItems, isEnchanted, quality, isUsable</Returns>
		<Example>name, texture, numItems, isEnchanted, quality, isUsable = GetTradeTargetItemInfo(id)</Example>
		<Description>Returns information about a trade item.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>MAX_COMBO_POINTS</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>MAX_TARGET_DEBUFFS</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>UNIT_FACTION</Name>
		<Description>Called when  a target's faction is announced. </Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_DYNAMIC_FLAGS</Name>
		<Description>Called when the unit's flags are changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>UnitIsPartyLeader(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsPartyLeader("target")</Example>
		<Description>Returns true if the unit is its partyleader.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsPlusMob(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsPlusMob("target")</Example>
		<Description>Returns true if the unti specified is a super strong mob for its level.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsCharmed(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsCharmed("target")</Example>
		<Description>Returns true if the target is currently allied</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsTapped(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsTapped("target")</Example>
		<Description>Returns true if the unit is tapped.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsTappedByPlayer(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsTappedByPlayer("target") </Example>
		<Description>Returns true if the unit is currently tapped by a player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitReaction("target", "player")</Name>
		<Returns>String</Returns>
		<Example>UnitReaction("target", "player")</Example>
		<Description>Returns a type of a reaction - neutral hostile, friendly. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitIsUnit(unitnamea, unitnameB)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitIsUnit("target", "pet") </Example>
		<Description>Returns true if a specific unit is a specific unit.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UnitInParty(unitname)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitInParty("target")</Example>
		<Description>Returns true if the unit is a member of your party.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>TAXI_MAP_WIDTH </Name>
		<InitialValue>280</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>TAXI_MAP_HEIGHT </Name>
		<InitialValue>280</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>TAXI_BUTTONS</Name>
		<InitialValue>20</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>TAXIMAP_OPENED</Name>
		<Description>Called when the taxi viewer is opened</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TAXIMAP_CLOSED</Name>
		<Description>Called when the taxi frame is closed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>SetTaxiMap(TaxiMap);</Name>
		<Example>SetTaxiMap(TaxiMap);</Example>
		<Description>Sets the taxi map to be the image/texture specified.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>NumTaxiNodes();</Name>
		<Returns>NumberOfTaxiNodes</Returns>
		<Example>NumTaxiNodes();</Example>
		<Description>Returns the number of taxi nodes currently available. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TaxiNodeGetType(index)</Name>
		<Returns>String type,</Returns>
		<Example>type = TaxiNodeGetType(index)</Example>
		<Description>Returns the  type of taxi as a string. </Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>TRADE_UPDATE</Name>
		<Description>Called when the trade window is changed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_TARGET_ITEM_CHANGED</Name>
		<Description>Called when a specific item will be altered during the trade.</Description>
		<Arg1>item</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_PLAYER_ITEM_CHANGED</Name>
		<Description>Called when the specified player itme will be changed by the trade.</Description>
		<Arg1>item</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_ACCEPT_UPDATE</Name>
		<Description>Called when a query to confirm a trade is updated.</Description>
		<Arg1>targetagreed</Arg1>
		<Arg2>playeragreed</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_TRADE_MONEY</Name>
		<Description>Called when players trade money with each other.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>CancelTradeAccept();</Name>
		<Example>CancelTradeAccept();</Example>
		<Description>Cancels the trade attempt which required an accept.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CloseTrade();</Name>
		<Example>CloseTrade();</Example>
		<Description>Closes the trade.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AddTradeMoney();</Name>
		<Example>AddTradeMoney();</Example>
		<Description>Adds money to the trade window from the cursor.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ClearTutorials();</Name>
		<Example>ClearTutorials();</Example>
		<Description>Removes the tutorial popups.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FlagTutorial(currentTutorial);</Name>
		<Example>FlagTutorial(currentTutorial);</Example>
		<Description>Flags the tutorial as ready for reading.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>UIERRORS_HOLD_TIME</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>SYSMSG</Name>
		<Description>Called when a system message occurs.</Description>
		<Arg1>message</Arg1>
		<Arg2>r,g,b</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UI_INFO_MESSAGE</Name>
		<Description>Called when the interface generates a message.</Description>
		<Arg1>message</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UI_ERROR_MESSAGE</Name>
		<Description>Called when the interface creates an error message.</Description>
		<Arg1>message</Arg1>
	</BlizzardEvent>
	<BlizzardFunction>
		<Name>GetTextWidth()</Name>
		<Returns>Number</Returns>
		<Example>		width = tab:GetTextWidth() + 24;</Example>
		<Description>Obtains the text width of a text tab</Description>
		<UsedIn>UIPanelTemplates</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetWidth(Width)</Name>
		<Example>	if ( highlightTexture ) then
		highlightTexture:SetWidth(width);</Example>
		<Description>Sets the width of an object</Description>
		<UsedIn>UIPanelTemplates</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>function FauxScrollFrame_Update(frame, numItems, numToDisplay, valueStep, highlightFrame, smallHighlightWidth, bigHighlightWidth )</Name>
		<Example>See any frame code.</Example>
		<Description>-- Function to handle the update of manually calculated scrollframes.  Used mostly for listings with an indeterminate number of items</Description>
		<UsedIn>Everything</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>FauxScrollFrame_GetOffset(frame)</Name>
		<Returns>Number</Returns>
		<Example>See any frame code</Example>
		<Description>Returns the offset currently used for the scrollbar</Description>
		<UsedIn>Frame</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>FauxScrollFrame_SetOffset(frame, offset)</Name>
		<Example>See any frame code</Example>
		<Description>Sets the offset of a scrollbar</Description>
		<UsedIn>Frame</UsedIn>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>FauxScrollFrame_OnVerticalScroll(itemHeight, updateFunction)</Name>
		<Example>See any frame code</Example>
		<Description>Sets an event to occur when the scrollbar is changed.</Description>
		<UsedIn>Frame</UsedIn>
	</BlizzardFunction>
	<BlizzardEvent>
		<Name>UNIT_NAME_UPDATE</Name>
		<Description>Called when a unit changes.</Description>
		<Arg1>unit name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_PORTRAIT_UPDATE</Name>
		<Description>Called when the unit portrait changes</Description>
		<Arg1>unit name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_DISPLAYPOWER</Name>
		<Description>Called when the unit's mana stype is changed.</Description>
		<Arg1>unit name</Arg1>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>SetCursor(cursoricon);</Name>
		<Example>SetCursor("CAST_CURSOR");</Example>
		<Description>Sets the cursor to a specified icon.</Description>
	</BlizzardGlobalFunction>
	<BlizzardEvent>
		<Name>UNIT_ENERGY</Name>
		<Description>Called when the unit's energy is changed.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_MAXFOCUS</Name>
		<Description>Called when a unit's focus bar is maxed out.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_MAXRAGE</Name>
		<Description>Called when a unit's rage bar filled.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>UNIT_MAXENERGY</Name>
		<Description>Called when a unit's maximum energy bar is filled.</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>UNITPOPUP_TITLE_HEIGHT</Name>
		<InitialValue>26</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UNITPOPUP_BUTTON_HEIGHT</Name>
		<InitialValue>15</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UNITPOPUP_BORDER_HEIGHT</Name>
		<InitialValue>8</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UNITPOPUP_BORDER_WIDTH</Name>
		<InitialValue>19</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UNITPOPUP_NUMBUTTONS</Name>
		<InitialValue>8</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>UNITPOPUP_TIMEOUT</Name>
		<InitialValue>5</InitialValue>
	</BlizzardGlobal>
	<BlizzardFunction>
		<Name>UnitCanCooperate(unit1, unit2)</Name>
		<Returns>Boolean</Returns>
		<Example>UnitCanCooperate("player", UnitPopup.unit)</Example>
		<Description>Returns true if the two units can cooperate. (Allied, etc)</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>InitiateTrade(unit);</Name>
		<Example>InitiateTrade(unit);</Example>
		<Description>Begins trading with a unit.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>InspectUnit(unit);</Name>
		<Example>InspectUnit(unit);</Example>
		<Description>Inspects a unit's equipment.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>StartDuelUnit(unit);</Name>
		<Example>StartDuelUnit(unit);</Example>
		<Description>Challenge a unit to a duel.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>InviteToParty(unit);</Name>
		<Example>InviteToParty(unit);</Example>
		<Description>Invite a unit to a party.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>UninviteFromParty(unit);</Name>
		<Example>UninviteFromParty(unit);</Example>
		<Description>Kick a unit from the party.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PromoteToPartyLeader(unit);</Name>
		<Example>PromoteToPartyLeader(unit);</Example>
		<Description>Promote a unit to party leader.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>LeaveParty()</Name>
		<Example>LeaveParty()</Example>
		<Description>Quit the party.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetPassiveMode();</Name>
		<Example>PetPassiveMode();</Example>
		<Description>Set your pet into passive mode.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetDefensiveMode()</Name>
		<Example>PetDefensiveMode()</Example>
		<Description>Set your pet in defensive mode.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetAggressiveMode()</Name>
		<Example>PetAggressiveMode()</Example>
		<Description>Set your pet in aggressive mode.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetWait()</Name>
		<Example>PetWait()</Example>
		<Description>Instruct your pet to remain still.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetFollow()</Name>
		<Example>PetFollow()</Example>
		<Description>Instruct your pet to follow you.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetAttack()</Name>
		<Example>PetAttack()</Example>
		<Description>Instruct your pet to attack your target.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>PetDismiss()</Name>
		<Example>PetDismiss()</Example>
		<Description>Dismiss your pet.</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>SetLootMethod(method, unitname);</Name>
		<Example>SetLootMethod("freeforall");</Example>
		<Description>Set your loot method to roundrobin, master, or freeforall</Description>
	</BlizzardFunction>
	<BlizzardFunction>
		<Name>FollowUnit(unit);</Name>
		<Example>FollowUnit(unit);</Example>
		<Description>Follow the specified unit.</Description>
	</BlizzardFunction>
	<BlizzardGlobal>
		<Name>TOOLTIP_UPDATE_TIME</Name>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>PLAYER_DEAD</Name>
		<Description>Called when the player has died.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_ALIVE</Name>
		<Description>Called when the player is now alive.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_UNGHOST</Name>
		<Description>Called when the player performs a corpse run successfully, and can now return to his body.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>RESURRECT_REQUEST</Name>
		<Description>Called when another player resurrects you</Description>
		<Arg1>player name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_REQUEST</Name>
		<Description>Called when  another player wishes to trade with you.</Description>
		<Arg1>player name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_INVITE_REQUEST</Name>
		<Description>Called when a player invite you to party.</Description>
		<Arg1>team leader name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PARTY_INVITE_CANCEL</Name>
		<Description>Called when you decline a party invite.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>GUILD_INVITE_REQUEST</Name>
		<Description>Called when you are invited to join a guild.</Description>
		<Arg1>guild inviter</Arg1>
		<Arg2>guild name</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>GUILD_INVITE_CANCEL</Name>
		<Description>Called when the guild invitation is declined.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_CAMPING</Name>
		<Description>Called when the player is camping</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_QUITTING</Name>
		<Description>Called when the player hits the quit button.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_STAND</Name>
		<Description>Called when the player's avatar stands up and breaks the camping cycle. </Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>LOOT_BIND_CONFIRM</Name>
		<Description>Called when the player attempts to take 'bind-on-pickup' loot</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>EQUIP_BIND_CONFIRM</Name>
		<Description>Called when the player attempts to equip bind on equip loot.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>AUTOEQUIP_BIND_CONFIRM</Name>
		<Description>Called when the game attempts to autobind bind-on-equip items. </Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>DELETE_ITEM_CONFIRM</Name>
		<Description>Called when the player attempts to destroy an item.</Description>
		<Arg1>item name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>QUEST_ACCEPT_CONFIRM</Name>
		<Description>Called when the player needs to confirm he wishes to accept a quest.</Description>
		<Arg1>npc name?</Arg1>
		<Arg2>quest name?</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CURSOR_UPDATE</Name>
		<Description>Called when the player does something to update the cursor.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>PLAYER_ENTERING_WORLD</Name>
		<Description>Called when the player enters the world.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>MIRROR_TIMER_START</Name>
		<Description>Called when some sort of timer starts.</Description>
		<Arg1>unknown</Arg1>
		<Arg2>unk...6</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>DUEL_REQUESTED</Name>
		<Description>Called when the player is challenged to a duel</Description>
		<Arg1>opponent name</Arg1>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>DUEL_OUTOFBOUNDS</Name>
		<Description>Called when the player leaves the bounds of the duel</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>DUEL_INBOUNDS</Name>
		<Description>Called when the player is still in the bounds of the duel.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>DUEL_FINISHED</Name>
		<Description>Called when a duel is finished.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_REQUEST_CANCEL</Name>
		<Description>Called when a trade attempt is cancelled.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>COMFIRM_XP_LOSS</Name>
		<Description>loss in exchange for his body back.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CORPSE_IN_RANGE</Name>
		<Description>Called when the player is in range of his body.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CORPSE_OUT_OF_RANGE</Name>
		<Description>Called when the player is out of range of his body.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>REPLACE_ENCHANT</Name>
		<Description>Called when the player must confirm an enchantment replacement.</Description>
		<Arg1>enchantmentname</Arg1>
		<Arg2>item name</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>TRADE_REPLACE_ENCHANT</Name>
		<Description>Called when the the player must confirm an enchantment replacement in the trade window.</Description>
		<Arg1>enchantment</Arg1>
		<Arg2>item name</Arg2>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CURRENT_SPELL_CAST_CHANGED</Name>
		<Description>Called when the spell being cast is changed.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>GetFullScreenFrame()</Name>
		<Returns>String name</Returns>
		<Example>GetFullScreenFrame()</Example>
		<Description>Returns the name of the Full Screen frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetFullScreenFrame(frame);</Name>
		<Example>SetFullScreenFrame(nil);</Example>
		<Description>Sets which frame should be taking up the entire screen.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCenterFrame();</Name>
		<Returns>Frame</Returns>
		<Example>local centerFrame = GetCenterFrame();</Example>
		<Description>Gets the frame currently set to the center.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetCenterFrame(frame);</Name>
		<Example>SetCenterFrame(nil);</Example>
		<Description>Sets the center frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetLeftFrame();</Name>
		<Returns>Frame</Returns>
		<Example>GetLeftFrame();</Example>
		<Description>Gets the current left-side frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetLeftFrame(frame)</Name>
		<Example>		SetLeftFrame(frame);</Example>
		<Description>Sets the left side frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MovePanelToCenter();</Name>
		<Example>MovePanelToCenter();</Example>
		<Description>Moves the current left frame to the center.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MovePanelToLefT()</Name>
		<Example>MovePanelToLeft()</Example>
		<Description>Moves the current panel to the left.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>CloseWindows( ignoreCenter)</Name>
		<Example>CloseWindows(true)</Example>
		<Description>Closes all of the currently open frames unless the boolean parameter is set to true, making it ignore the center window.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MouseIsOver(frame, topOffset, bottomOffset, leftOffset, rightOffset)</Name>
		<Returns>Boolean</Returns>
		<Description>Returns true if the mouse is over a specified frame or object. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>FRAMERATE_FREQUENCY</Name>
		<InitialValue>.25</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>SCREENSHOT_STATUS_FADETIME</Name>
		<InitialValue>105</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>SCREENSHOT_SUCCEEDED</Name>
		<Description>Called when a screenshot is successfully taken.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>SCREENSHOT_FAILED</Name>
		<Description>Called when a screenshot fails.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>Screenshot();</Name>
		<Example>Screenshot();</Example>
		<Description>Takes a screenshot of the screen.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobal>
		<Name>AUTOFOLLOW_STATUS_FADETIME</Name>
		<InitialValue>4.0</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>AUTOFOLLOW_BEGIN</Name>
		<Description>Called when you begin automatically following an ally.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>AUTOFOLLOW_END</Name>
		<Description>Called when the player ceases following an ally</Description>
	</BlizzardEvent>
	<BlizzardGlobal>
		<Name>NUM_WORLDMAP_DETAIL_TILES</Name>
		<InitialValue>12</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_WORLDMAP_POIS</Name>
		<InitialValue>32</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_WORLDMAP_POI_COLUMNS</Name>
		<InitialValue>4</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>WORLDMAP_POI_TEXTURE_WIDTH</Name>
		<InitialValue>64</InitialValue>
	</BlizzardGlobal>
	<BlizzardGlobal>
		<Name>NUM_WORLDMAP_OVERLAYS</Name>
		<InitialValue>40</InitialValue>
	</BlizzardGlobal>
	<BlizzardEvent>
		<Name>WORLD_MAP_UPDATE</Name>
		<Description>Called when the world map should be updated.</Description>
	</BlizzardEvent>
	<BlizzardEvent>
		<Name>CLOSE_WORLD_MAP</Name>
		<Description>Called whe n the world map is hidden.</Description>
	</BlizzardEvent>
	<BlizzardGlobalFunction>
		<Name>GetMapInfo();</Name>
		<Returns>mapFileName, textureHeight</Returns>
		<Example>mapFileName, textureHeight = GetMapInfo();</Example>
		<Description>Gets information about the currently selected map.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumMapLandmarks();</Name>
		<Returns>numLandmarks</Returns>
		<Example>	local numPOIs = GetNumMapLandmarks();</Example>
		<Description>Gets the number of landmarks on the map.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetNumMapOverlays();</Name>
		<Returns>numOverlays</Returns>
		<Example>numOverlays = GetNumMapOverlays();</Example>
		<Description>Gets the number of overlays for the current map.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetMapOverlayInfo(index);</Name>
		<Returns>textureName, textureWidth, textureHeight, offsetX, offsetY, mapPointX, mapPointY</Returns>
		<Example>textureName, textureWidth, textureHeight, offsetX, offsetY, mapPointX, mapPointY = GetMapOverlayInfo(i);</Example>
		<Description>Obtains information about the number of map overlays at a current index.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCurrentMapContinent()</Name>
		<Returns>'kalimdor' or 'azeroth'</Returns>
		<Example>	WorldMapFrame_LoadZones(GetMapZones(GetCurrentMapContinent()));</Example>
		<Description>Obtains the current continent</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetMapZones(continent)</Name>
		<Returns>List of Zones</Returns>
		<Example>GetMapZones(GetCurrentMapContinent())</Example>
		<Description>Gets the map zones in the current continent.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCurrentMapZone()</Name>
		<Returns>Returns the current map zone</Returns>
		<Example>GetCurrentMapZone()</Example>
		<Description>Gets the name of the current map zone.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SetMapZoom(continent, id);</Name>
		<Example>SetMapZoom(GetCurrentMapContinent(), this:GetID());</Example>
		<Description>Sets the map zoom level for the current continent.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>UpdateMapHighlight( adjustedX, adjustedY )</Name>
		<Returns>local name, fileName, texPercentageX, texPercentageY, textureX, textureY, scrollChildX, scrollChildY</Returns>
		<Example>local name, fileName, texPercentageX, texPercentageY, textureX, textureY, scrollChildX, scrollChildY = UpdateMapHighlight( adjustedX, adjustedY );</Example>
		<Description>Gets the information about the current map highlight area</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetInventoryItemQuality(target, slot:GetID()); </Name>
		<Returns>quality</Returns>
		<Example>quality = GetInventoryItemQuality(target, slot:GetID()); </Example>
		<Description>Gets the quality of an inventory item.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetPlayerMapPosition(playerid);</Name>
		<Returns>playerX, playerY</Returns>
		<Example>playerX, playerY = GetPlayerMapPosition("player");</Example>
		<Description>Gets the position of the current player.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>GetCorpseMapPosition();</Name>
		<Returns>corpseX, corpseY</Returns>
		<Example>corpseX, corpseY = GetCorpseMapPosition();</Example>
		<Description>Get the location of the players current corpse.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MoveForwardStart(starttime);</Name>
		<Example>MoveForwardStart(arg1);</Example>
		<Description>The player begins moving forward.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MoveForwardStop(time);</Name>
		<Example>MoveForwardStop(arg1);</Example>
		<Description>The player ceases moving forward at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MoveBackwardStart(starttime);</Name>
		<Example>MoveBackwardStart(arg1);</Example>
		<Description>The player begins moving forward at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>MoveBackwardStop(stoptime);</Name>
		<Example>MoveBackwardStop(arg1);</Example>
		<Description>The player stops moving forward at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TurnLeftStart(starttime);</Name>
		<Example>TurnLeftStart(arg1);</Example>
		<Description>The player begins moving forward at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TurnLeftStop(arg1);</Name>
		<Example>TurnLeftStop(arg1);</Example>
		<Description>The player stops turning left at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TurnRightStart(starttime);</Name>
		<Example>TurnRightStart(arg1);</Example>
		<Description>The player begins turning right at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TurnRightStop(stoptime);</Name>
		<Example>TurnRightStop(arg1);</Example>
		<Description>The player stops turning right at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>StrafeLeftStart(StartTime);</Name>
		<Example>StrafeLeftStart(arg1);</Example>
		<Description>The player begins strafing at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>StrafeLeftStop(stoptime);</Name>
		<Example>StrafeLeftStop(arg1);</Example>
		<Description>The player ceases strafing at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>StrafeRightStart(starttime);</Name>
		<Example>StrafeRightStart(arg1);</Example>
		<Description>The player begins strafing right at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>StrafeRightStop(stoptime);</Name>
		<Example>StrafeRightStop(arg1);</Example>
		<Description>The player stops strafing right at the specified time.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>Jump();</Name>
		<Example>Jump();</Example>
		<Description>The player jumps.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>SitOrStand()</Name>
		<Example>SitOrStand()</Example>
		<Description>The player sits or stands.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleSheath();</Name>
		<Example>ToggleSheath();</Example>
		<Description>Toggles sheathed or unsheathed weapons.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleAutoRun();</Name>
		<Example>ToggleAutoRun();</Example>
		<Description>Turns auto-run on or off</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PitchUpStart(StartTime);</Name>
		<Example>PitchUpStart(arg1);</Example>
		<Description>Start rotating your pitch upward</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PitchUpStop(stoptime);</Name>
		<Example>PitchUpStop(arg1);</Example>
		<Description>Stop rotating upward</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PitchDownStart(starttime);</Name>
		<Example>PitchDownStart(arg1)</Example>
		<Description>Start rotating downward</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PitchUpStop(starttime);</Name>
		<Example>PitchUpStop(arg1);</Example>
		<Description>Stop rotating downward</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleRun(time);</Name>
		<Example>ToggleRun(arg1);</Example>
		<Description>Toggle between running and walking.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>FollowUnit(target);</Name>
		<Example>FollowUnit("target");</Example>
		<Description>Follow the specified target unit. Must be a player or the autofollow fails.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ActionButtonDown(buttonID);</Name>
		<Example>ActionButtonDown(1);</Example>
		<Description>Press the specified action button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ActionButtonUp(buttonID)</Name>
		<Example>ActionButtonDown(1);</Example>
		<Description>Release the specified action button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>BonusActionButtonUp(buttonID);</Name>
		<Example>BonusActionButtonUp(1);</Example>
		<Description>Release the specified bonus(pet or minion) action button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>BonusActionButtonDown(buttonID);</Name>
		<Example>BonusActionButtonDown(1);</Example>
		<Description>Trigger the specified bonus(pet or minion) action button.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ChangeActionBarPage();</Name>
		<Example>ChangeActionBarPage();</Example>
		<Description>Changes the action bar page to the page specified in CURRENT_ACTIONBAR_PAGE</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TargetNearestEnemy(reverse);</Name>
		<Example>TargetNearestEnemy(1);</Example>
		<Description>Target the nearest enemy. Pass 1 to the function to cycle backwards.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TargetUnit(targetcode);</Name>
		<Example>TargetUnit("player");</Example>
		<Description>Target the specified unit. Can be "player", "party1".."party5", "npc", "target" </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TargetUnitsPet(targetcode);</Name>
		<Example>TargetUnitsPet("player");</Example>
		<Description>Targest the specified unit's pet.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TargetLastEnemy();</Name>
		<Example>TargetLastEnemy();</Example>
		<Description>Targets the last hostile unit. </Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AssistUnit(targetcode);</Name>
		<Example>AssistUnit("target");</Example>
		<Description>Targets the target of the targeted unit.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>HideNameplates();</Name>
		<Example>HideNameplates();</Example>
		<Description>Hides the HP nameplates of enemies.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ShowNameplates();</Name>
		<Example>ShowNameplates();</Example>
		<Description>Shows the HP nameplates of enemies.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>AttackTarget();</Name>
		<Example>AttackTarget();</Example>
		<Description>Attacks the targetted unit.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>PetAttack();</Name>
		<Example>PetAttack();</Example>
		<Description>Tells your pet to attack the target.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleBackpack();</Name>
		<Example>ToggleBackpack();</Example>
		<Description>Toggles your backpage open/closed.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleBag(bagnumber);</Name>
		<Example>	ToggleBag(1);</Example>
		<Description>Toggles the specified bag.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>OpenAllBags();</Name>
		<Example>OpenAllBags();</Example>
		<Description>Opens every bag that the player has currently.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleCharacter(frame);</Name>
		<Example>ToggleCharacter("SkillFrame");</Example>
		<Description>Toggles the character pane to the specified frame.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleFriendsFrame();</Name>
		<Example>ToggleFriendsFrame();</Example>
		<Description>Opens/closes the friends pane.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleQuestLog();</Name>
		<Example>ToggleQuestLog();</Example>
		<Description>Opens/closes the quest log.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleCombatLog();</Name>
		<Example>ToggleCombatLog();</Example>
		<Description>Opens/closes the combat log.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleGameMenu();</Name>
		<Example>ToggleGameMenu();</Example>
		<Description>Opens/closes the game menu.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleMinimap();</Name>
		<Example>ToggleMinimap();</Example>
		<Description>Turns the minimap display on/off.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>ToggleWorldMap();</Name>
		<Example>ToggleWorldMap();</Example>
		<Description>Turns the world map on/off.</Description>
	</BlizzardGlobalFunction>
	<BlizzardGlobalFunction>
		<Name>TakeScreenshot();</Name>
		<Example>TakeScreenshot();</Example>
		<Description>Takes a screenshot.</Description>
	</BlizzardGlobalFunction>
</WowCommands>
In the early days, the default UI's code was available, albeit not with the ExportInterfaceFiles bit we have nowadays. There was a separate program to extract the code. AddOn Kit.exe is one I have on this machine dated from 2007, though I can't remember specifically if that was used in 2004. I remember the way we extracted code changed a bit now and then.

I do know that the UI's structure was understood/discoverable. One of the first patches of the game was to prevent addons from modifying GLUE. I want to say modifying FrameXML was disabled too but memory is fuzzy. (edit: It may be that GLUE came later and FrameXML was locked down, memory is fuzzy.) One of the earliest patches made it so we couldn't add new files while logged in which I definitely remember because I'm still sore about that one.

And of course while we didn't have /dump back then (or event print!) we could still /script DEFAULT_CHAT_FRAME:AddMessage() globals and poke at stuff. One of my prouder accomplishments was finding out nameplates could be modified by getting the children of the WorldFrame and poking at the results to find out some of those were actually nameplates.

The addon community also had Slouken, who was a Blizzard dev who regularly posted on the NA UI & Macro forums, telling us about new things coming and stepping in now and then to clarify things. Slouken was an enormous source of information.

Originally, addons were required to have XML to have any displayed elements. CreateFrame was a later invention. parentKey was a later invention too. Everything was a global then.

WoW originally used Lua 5.0. It was bumped to 5.1 for BC when the secure/restricted environment was added. (I want to say 5.1 was need to support this but can't remember clearly.)

Back then a computer might have 512MB of memory, or 1GB if it was decent and not very powerful processors/GPUs. Addons were intensely focused on being "efficient", though some to lesser effect--the first group dps meter addon Recap would basically bring the client to a crawl in busy fights because it was parsing chat messages using string statements--there was no combat log events like we have today. (I learned a lot about German pronouns with that addon!)

Last edited by Gello : 01-04-23 at 05:06 PM.
  Reply With Quote
01-04-23, 08:11 PM   #5
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2006
Posts: 2,313
Originally Posted by Gello View Post
In the early days, the default UI's code was available, albeit not with the ExportInterfaceFiles bit we have nowadays. There was a separate program to extract the code.
I remember this back in the day as well. It was hosted in the support section of the old WoW website. It was discontinued for the ExportInterfaceFiles console command when the storage system was switched from MPQ to CASC. This transition was made for the launch of Pandaria.



Originally Posted by Gello View Post
And of course while we didn't have /dump back then (or event print!) we could still /script DEFAULT_CHAT_FRAME:AddMessage() globals and poke at stuff.
I don't think we had any of the stock "DevTools" suite. This means no /fstack, /etrace, or /tinspect either. We had to use GetMouseFocus() to capture a frame and use :GetName() to identify it (if it had a name, this was always optional). We also had to build our own event capture frames and use :RegisterAllEvents() to peek at what was firing.

I still have the custom /dump handler I wrote during those days and I would often write a simple print() handler to pass the call to DEFAULT_CHAT_FRAME:AddMessage().



Originally Posted by Gello View Post
One of my prouder accomplishments was finding out nameplates could be modified by getting the children of the WorldFrame and poking at the results to find out some of those were actually nameplates.
If I had to name an equal accomplishment for me, it would be the discovery of the shared UI object metatables or arguably the originator of the ("string"):format() syntax.



Originally Posted by Gello View Post
The addon community also had Slouken, who was a Blizzard dev who regularly posted on the NA UI & Macro forums, telling us about new things coming and stepping in now and then to clarify things. Slouken was an enormous source of information.
We had a lot of good people in the community back then. Many of which have moved on to other things.



Originally Posted by Gello View Post
Originally, addons were required to have XML to have any displayed elements. CreateFrame was a later invention. parentKey was a later invention too.
Addons also required XML to load Lua files. Initially, the ToC was only able to load XML files and you had to use <Script file=""/> tags to load them. ToC support for Lua files was added later.



Originally Posted by Gello View Post
WoW originally used Lua 5.0. It was bumped to 5.1 for BC when the secure/restricted environment was added.
The restricted environment relies on usage of setfenv(), which was available in Lua 5.0. The only big change 5.1 did was add the vararg. This could've also been used for the restricted environment, but it was also a big player for Blizzard's shift from using globals to pass data to frame scripts to passing them as function parameters.

Lua 5.2 changed how the environment works, removing setfenv() and making it impossible to isolate the environment of a function after it has been compiled. This is why we never got any more upgrades to the Lua engine.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)

Last edited by SDPhantom : 01-06-23 at 12:27 PM.
  Reply With Quote
01-05-23, 09:15 PM   #6
Dridzt
A Pyroguard Emberseer
 
Dridzt's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2005
Posts: 1,359
Everyone has summed it up pretty well.

But the core of the answer is that Slouken was part of the UI team inside Blizzard and communicated with addon authors frequently at the start as already mentioned.

The process was later reciprocal, both the debug tools and secure implementation are in very large part contributions from the author community to Blizzard (Iriel I believe for debug tools and Cladhaire for the secure environment?)


This actually reminded me of a lot of things I'd forgotten and is definitely worth a read.
https://journals.uic.edu/ojs/index.p...load/2971/2529

Last edited by Dridzt : 01-05-23 at 11:19 PM.
  Reply With Quote
01-06-23, 03:03 AM   #7
Xrystal
nUI Maintainer
 
Xrystal's Avatar
Premium Member
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 5,892
Thanks for that link Dridzt, I hadn't seen it before. Very good reading. And as I suspected when I started reading it, nUI was mentioned on there. I know Scott was affected by one of these changes which I personally think was the start of him doing less and me doing more.
__________________
  Reply With Quote

WoWInterface » Developer Discussions » Tutorials & Other Helpful Info. » Questions on the history of AddOn creation

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off