var handlers = {};
handlers.images = {};
function ImageHandler()
{
    this.image = null;
    this.events = {};
    this.isAttached = function()
    {
        return(this.image!=null);
    };
    this.attach = function(image)
    {
        this.detach();
        if(image!=null)
        {
            this.image = image;
            handlers.images[this.image.id]=this;
            this.synchronizeEvents();
        }
    };
    this.detach = function()
    {
        if(this.isAttached())
        {
            handlers.images[this.image.id]=null;
            delete handlers.images[this.image.id];
            this.image = null;
        }
    };
    this.synchronizeEvents=function()
    {
        var deleteList = [];
        for(var eventName in this.events)
        {
            if(this.events[eventName]==null)
            {
                deleteList.push(eventName);
                this.image[eventName]=function(){};
            }
            else
            {
				try
				{
					this.image[eventName]=eval("function(){handlers.images."+this.image.id+".events."+eventName+"(handlers.images."+this.image.id+");}");
				}
				catch(s)
				{
	                this.image[eventName]=function()
					{
						handlers.images[this.id].events["on"+window.event.type](handlers.images[this.id]);
					};
				}
            }
        }
    }
    this.addEvent=function(eventName,eventFunction)
    {
        this.events[eventName]=eventFunction;
        this.synchronizeEvents();
    };
    this.removeEvent=function(eventName)
    {
        this.events[eventName]=null;
        this.synchronizeEvents();
    };
}
