﻿Type.prototype._createGetter = function(fieldName)
{
    return function()
    {
        return this[fieldName];
    }
}
Type.prototype._createSetter= function(fieldName)
{
    return function(value)
    {
        this[fieldName] = value;
    }
}
Type.prototype.createProperty = function(propName)
{
 var fieldName = "_" + propName;
 var getter = this._createGetter(fieldName);
 var setter = this._createSetter(fieldName);
 this.prototype['get_'+propName] = getter;
 this.prototype['set_'+propName] = setter;
}
Type.prototype._createAddHandler = function(eventName)
{
 return function(handler)
 {
   this.get_events().addHandler(eventName,handler);
 }
}
Type.prototype._createRemoveHandler = function(eventName)
{
 return function(handler)
 {
   this.get_events().removeHandler(eventName,handler);
 }
}
Type.prototype.createEvent = function(eventName)
{
 var addHandler = this._createAddHandler(eventName);
 var removeHandler = this._createRemoveHandler(eventName);
 if(!this.__events)
 {
    if(!this.inheritsFrom(Sys.Component))
    {
        this.prototype.get_events = function()
        {
            if(!this._events)
            {
                this._events = new Sys.EventHandlerList();
            }
            return this._events;
        }
    }
    this.prototype._raiseEvent = function(eventName, eventArgs)
    {
        var handler = this.get_events().getHandler(eventName);
        if(handler)
        {
            if(!eventArgs)
            {
                eventArgs = Sys.EventArghs.Empty;
            }
            handler(this, eventArgs);
        }
    }
    this.__events = true;
 }
}
