
vnCustomTags = {};

var Mutators = Class.Mutators;

Mutators.Tag = function (tagName)
{
	vnCustomTags[tagName] = this;
	
	if (this.parent)
	{
		this.implement ({Parent: this.parent.Parent});
		this.implement ({Child: this.parent.Child});
		this.implement ({Properties: {}});
	}

	this.extend ({Tag: tagName});
};

Mutators.Properties = function (props)
{
	var parentProps;
	
	for (var propName in props)
	{
		var prop = props[propName];
		prop.configurable = true;
	
		if (!prop.get && !prop.set && prop.writable === undefined)
			prop.writable = true;
	}

	if (this.parent && (parentProps = this.parent.Properties))
	for (var propName in parentProps)
	if (!props[propName])
		props[propName] = parentProps[propName];
		
	this.extend ({Properties: props});
	Object.defineProperties (this.prototype, props);
};

Mutators.Parent = function (propName)
{
	this.extend ({Parent: propName});
};

Mutators.Child = function (propName)
{
	this.extend ({Child: propName});
};

