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 getEventObject( evt ) {
    return ( ( evt ) ? evt : ( ( window.event ) ? window.event : false ) );
}

function getEventTarget( evt ) {
    return ( ( evt.target ) ? ( ( evt.target.nodeType == 3 ) ? evt.target.parentNode : evt.target ) : evt.srcElement );
}

function getRelatedElement( evt ) {
    return ( evt.relatedTarget ) ? evt.relatedTarget : ( evt.fromElement ) ? evt.fromElement : false;
}