var NodeBuilder = require ('./node-builder');

module.exports = new Class
({
	Extends: NodeBuilder
	,Properties:
	{
		/**
		 * Main HTML node that represents the widget
		 **/
		node:
		{
			type: Object
			,get: function ()
			{
				this.renderBase ();
				return this._node;
			}
		},
		/**
		 * CSS classes to be appendend to the node classes.
		 **/
		class:
		{
			type: String
			,set: function (x)
			{
				this._cssClass = x;
				this._refreshClass ();
			}
			,get: function ()
			{
				return this._node.className;
			}
		}
	}

	,_node: null
	
	,initialize: function (props)
	{
		this.doc = document;
		this.renderBase ();
		this.parent (props);
	}
	
	,createRoot: function (tagName)
	{
		return this._node = this.createElement (tagName);
	}
	
	,renderBase: function ()
	{
		if (this._node)
			return;

		this.render ();
		this._refreshClass ();
	}

	,_refreshClass: function ()
	{
		if (this._node && this._cssClass)
			this._node.className = this._cssClass +' '+ this._node.className;
	}
	
	,remove: function ()
	{
		Vn.Node.remove (this._node);
	}
});