function TabGroup(parent, placement)
{
	Component.call(this, parent, "div");

	var self = this;

	this.element.style.overflow = "visible";
	this.element.style.backgroundColor = "var(--panel-color)";

	this.preventDragEvents();
	
	// Buttons
	this.buttons = new Division(this);
	this.buttons.element.style.backgroundColor = "var(--bar-color)";
	this.buttons.element.ondrop = function(event)
	{
		event.preventDefault();

		var uuid = event.dataTransfer.getData("uuid");
		var tab = DragBuffer.get(uuid);

		if (tab instanceof TabComponent)
		{
			self.attachTab(tab);
			DragBuffer.pop(uuid);
		}
	};

	// Tab
	this.tab = new Division(this);

	/**
	 * Division used to display a message indicating that the tab is empty.
	 *
	 * @property empty
	 * @type {Component}
	 */
	this.empty = document.createElement("div");
	this.empty.style.position = "absolute";
	this.empty.style.textAlign = "center";
	this.empty.style.display = "none";
	this.empty.style.width = "100%";
	this.empty.style.height = "100%";
	this.empty.style.flexDirection = "column";
	this.empty.style.justifyContent = "center";
	this.empty.style.pointerEvents = "none";
	this.empty.appendChild(document.createTextNode(Locale.openTabToEditContent));
	this.element.appendChild(this.empty);

	/**
	 * Tab that is currently selected.
	 *
	 * @property selected
	 * @type {TabComponent}
	 */
	this.selected = null;
	
	/**
	 * Base size of the buttons in this group.
	 * 
	 * Size may be ajusted to fit the available space.
	 *
	 * @property buttonSize
	 * @type {Vector2}
	 */
	this.buttonSize = new Vector2(150, 22);

	/**
	 * Tab buttons placement.
	 *
	 * @property placement
	 * @type {number}
	 */
	this.placement = placement !== undefined ? placement : TabGroup.TOP;
	this.setPlacement(this.placement);

	/**
	 * Tab elements attache to this group.
	 * 
	 * @type {Array}
	 */
	this.options = [];

	/**
	 * Indicates if the tab is currently on focus.
	 *
	 * @property focused
	 * @type {boolean}
	 */
	this.focused = false;

	this.element.onmouseenter = function()
	{
		self.focused = true;
	};
	this.element.onmouseleave = function()
	{
		self.focused = false;
	};
}
A tab group contains and manages tab elements.

The group is also responsible for creating and managing the lifecycle of its tab elements.

@class TabGroup
@extends {Component}
@param {Component} parent Parent element.