

function triggerMouseEvent(obj,evtype) {
    var lobj = this;
    if ( obj.fireEvent ) {
        obj.fireEvent('on'+evtype);
        if ( obj.type == "checkbox" ) {
            obj.check = true;
        }
    } else {
        var objevent = document.createEvent('MouseEvents');
        objevent.initEvent(evtype,true,true);
        obj.dispatchEvent(objevent);
    }
}

function getEventTarget(ev) {
    return ev.target;
}

function getEventTopLeft(e) {
    var posx = 0;
    var posy = 0;
    if (!e) e = window.event;
    if (e.pageX || e.pageY)     {
        posx = e.pageX;
        posy = e.pageY;
    }
    else if (e.clientX || e.clientY)    {
        posx = e.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posy = e.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
    return new Array(posx,posy);
}

function getEventClass(evType) {
    var evclass = "";
    if ( evType.match(/(click|mousedown|mouseup|mouseover|mousemove|mouseout)/) ) evclass="MouseEvents";
    else if (evType.match(/(DOMFocusIn|DOMFocusOut|DOMActivate)/)) evclass="UIEvents";
    else if (evType.match(/(DOMSubtreeModified|DOMNodeInserted|DOMNodeRemoved|DOMNodeRemovedFromDocument|DOMNodeInsertedIntoDocument|DOMAttrModified|DOMCharachterDataModified)/)) evclass="MutationEvents";
    else if (evType.match(/(load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)/)) evclass="HTMLEvents";
    return evclass;
}

function eventTrigger(obj,evType,action) {
    if ( obj.fireEvent ) {
        obj.fireEvent('on' + evtype);
    } else {
        var evclass = getEventClass(evType);
        var evt = document.createEvent(evclass);
        evt.initEvent(evType,true,true);
        obj.dispatchEvent(evt);
    }
}

function addEvent(obj, evType, fn){ 
    if (obj.addEventListener){ 
        obj.addEventListener(evType, fn, false); 
        return true; 
    } else if (obj.attachEvent){ 
        var r = obj.attachEvent("on"+evType, fn); 
        return r; 
    } else { 
        return false; 
    } 
}

function removeEvent(obj,evType,fn) {
        obj.removeEventListener(evType,fn,false);
}
