require ('mootools'); vnCustomTags = {}; var Mutators = Class.Mutators; var _Extends = Mutators.Extends; Mutators.Extends = function () { _Extends.apply (this, arguments); this.implement ({Properties: {}}); } Mutators.Tag = function (tagName) { vnCustomTags[tagName] = this; this.extend ({Tag: tagName}); var parent = this.parent; if (parent && parent.Classes !== undefined) { var Classes = tagName if (parent.Classes !== '') Classes += ' '+ parent.Classes; this.extend ({Classes: Classes}); } }; Mutators.Properties = function (props) { for (var propName in props) { var prop = props[propName]; prop.configurable = true; if (!prop.get && !prop.set && prop.writable === undefined) prop.writable = true; } var parentProps; 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); };