Event=function(name)
{
	this.Name=name;
}

Event.prototype.AppendToElement = function(element, script)
{
    if (this.Name == null || element == null)
        return;

    var changeHandler = new Function(script);
    if (element.addEventListener)
        element.addEventListener(this.Name.substr(2), changeHandler, false);
    else if (element.attachEvent)
        element.attachEvent(this.Name, changeHandler);
}
Event.prototype.AddToElement = function(element, script)
{
    if (this.Name == null || element == null)
        return;

    var changeHandler = new Function(script);
    switch (this.Name)
    {
        case 'onmouseover':
            element.onmouseover = script;
            break;
        case 'onmouseout':
            element.onmouseout = script;
            break;
        case 'onchange':
            element.onchange = script;
            break;
        case 'onclick':
            element.onclick = script;
            break;
        case 'onblur':
            element.onblur = script;
            break;
        case 'onfocus':
            element.onfocus = script;
            break;
        case 'onkeyup':
            element.onkeyup = script;
            break;
    }
    if (element.addEventListener)
        element.addEventListener(this.Name.substr(2), changeHandler, false);
    else if (element.attachEvent)
        element.attachEvent(this.Name, changeHandler);
}


Event.prototype.RemoveFromElement=function(element,script)
{
	if(this.Name==null)
		return;	

    var handler=new Function(script);
	if (element.detachEvent)
		element.detachEvent(this.Name,handler); 
	else 
		element.removeEventListener(this.Name.substr(2),handler,false); 

	eval('element.'+this.Name+'=null;'); 
}
 
Event.prototype.ClearAllFromElement=function(element)
{ 
	if(this.Name==null)
		return;
    var fnc=eval('element.'+this.Name);

 	if(fnc==null)
    	return
    	
    if(typeof(fnc)=='string')fnc=new Function(fnc);
   
   	if (element.detachEvent)
        element.detachEvent(this.Name,fnc); 
    else 
        element.removeEventListener(this.Name.substr(2),fnc,false); 
    eval('element.'+this.Name+'=null;'); 
}

Event.prototype.ReplaceOnElement=function(element,script) 
{
	if(this.Name==null)
		return;

    this.ClearFromElement(eventName);
    this.AddToElement(eventName,script);
}

Event.prototype.RefreshAll = function(control)
{
    var control = $(control);
    if (!control) return;

    if (control.onblur && !control.onblur.IsEmpty())
        new Event('onblur').AddToElement(control, control.onblur);

    if (control.onfocus && !control.onfocus.IsEmpty())
        new Event('onfocus').AddToElement(control, control.onfocus);

    if (control.onkeyup && !control.onkeyup.IsEmpty())
        new Event('onkeyup').AddToElement(control, control.onkeyup);

    if (control.onkeydown && !control.onkeydown.IsEmpty())
        new Event('onkeydown').AddToElement(control, control.onkeydown);

    if (control.onchange && !control.onchange.IsEmpty())
        new Event('onchange').AddToElement(control, control.onchange);

    if (control.onclick && !control.onclick.IsEmpty())
        new Event('onclick').AddToElement(control, control.onclick);


    if (control.onmouseout && !control.onmouseout.IsEmpty())
        new Event('onmouseout').AddToElement(control, control.onmouseout);

    if (control.onmouseover && !control.onmouseover.IsEmpty())
        new Event('onmouseover').AddToElement(control, control.onmouseover);

    if (control.onmousedown && !control.onmousedown.IsEmpty())
        new Event('onmousedown').AddToElement(control, control.onmousedown);
}