Twitter official RT to unofficial RT

By fkoji Last update Jan 26, 2010 — Installed 138 times.
// ==UserScript==
// @author         F.Ko-Ji
// @name           Twitter official RT to unofficial RT
// @namespace      http://blog.fkoji.com/
// @description    This script converts official RT to unofficial RT format.
// @version        0.1
// @include        http://twitter.com/
// ==/UserScript==

unsafeWindow.__convertOfficialReTweetToUnofficialReTweet = function() {
    var rtNodes = document.getElementsByClassName('share');
    var rtFromUsers = document.getElementsByClassName('timestamp-title');
  
    for (var i = 0; i < rtNodes.length; i++) {
        if (rtNodes[i].className.match(/replaced/)) {
            continue;
        }
        rtNodes[i].className += ' replaced';
  
        // who retweets?
        var fromUser = rtNodes[i].getElementsByClassName('timestamp-title')[0];

        // add RT, @
        var screenName = rtNodes[i].getElementsByClassName('screen-name')[0];
        rtNodes[i].getElementsByClassName('big-retweet-icon')[0].innerHTML = [
            '<strong><a href="/',
            fromUser.textContent,
            '">',
            fromUser.textContent,
            '</a></strong> ORT '
        ].join('');
        rtNodes[i].getElementsByClassName('big-retweet-icon')[0].className = '';
        screenName.textContent = '@' + screenName.textContent;
  
        // change icon
        rtNodes[i].getElementsByClassName('photo')[0].className += ' callback_target_' + fromUser.textContent;
        rtNodes[i].getElementsByClassName('photo')[0].src = '';
        var url = 'http://twitter.com/users/show.json?screen_name=' + fromUser.textContent;
  
        window.setTimeout(function() {
            GM_xmlhttpRequest({
                method: 'GET',
                url: url,
                onload: function(res) {
                    var json = eval('(' + res.responseText + ')');
                    var target = document.getElementsByClassName('callback_target_' + json.screen_name)[0];
                    target.src = json.profile_image_url;
                    target.className = 'photo fn';
                }
            })
        }, 0);
    }
}
document.body.addEventListener("DOMNodeInserted", function(e) {
    unsafeWindow.__convertOfficialReTweetToUnofficialReTweet();
}, false);
unsafeWindow.__convertOfficialReTweetToUnofficialReTweet();