function AttachEvent(obj, evt, fnc, useCapture) {
    try {
        if (!useCapture)
            useCapture = false;
        if (obj.addEventListener) {
            obj.addEventListener(evt, fnc, useCapture);
            return true;
        } else if (obj.attachEvent) {
            return obj.attachEvent("on" + evt, fnc);
        } else {
            try {
                obj.setAttribute('on' + evt, fnc + ";return " + useCapture + ";");
            } catch (ex) {
                obj['on' + evt] = fnc + ";return " + useCapture + ";";
            }
        }
    } catch (ex) {
        alert(ex);
    }
}

function DetachEvent(obj, evt, fnc, useCapture) {
    try {
        if (!useCapture) useCapture = false;
        if (obj.addEventListener) {
            obj.removeEventListener(evt, fnc, useCapture);
            return true;
        } else if (obj.detachEvent) 
            return obj.detachEvent("on" + evt, fnc);
        else {
            try {
                obj.setAttribute('on' + evt,fnc + ";return " + useCapture + ";");
            } catch (ex) {
                obj['on' + evt] = fnc + ";return " + useCapture + ";";
            }
        }
    } catch (ex) {
        alert(ex);
    }
}
// Send the arguments of the functions and get back the fired event
function GetEvent(Args)
{
    try
    {
        var MainFunction = Args.callee;
        var EvtFunction = MainFunction.caller;           
        if(EvtFunction.toString().indexOf("(event)") > -1 && EvtFunction.toString().indexOf("function on") > -1)
        {
            var Event = EvtFunction.arguments[0];
            return Event;   
        }
        else
        {
            return GetEvent(EvtFunction.arguments);
        }
    }catch(ex)
    {
        return {'target':null};
    }
}

