var triggerEvent,
    mouseButtonsEvent;
if (document.createEventObject) {
    triggerEvent = function(el, type, params) {
        var event = uki.extend(
            document.createEventObject(), 
            params
        );
        
        return el.fireEvent('on' + type, event);
    };
} else {
    triggerEvent = function(el, type, params) {
        var event = document.createEvent('MouseEvents');   
        event.initMouseEvent(
            type,
            true,
            true,
            document.defaultView,
            params.detail    || 0,
            params.screenX   || 0,
            params.screenY   || 0,
            params.clientX   || 0,
            params.clientY   || 0,
            params.ctrlKey   || false,
            params.altKey    || false,
            params.shiftKey  || false,
            params.metaKey   || false,
            params.button    || 0,
            null
        );
        uki.extend(event);
        
        el.dispatchEvent(event);
    };
}