Twitter Status On Twitter

By natu_n Last update Jul 11, 2008 — Installed 73 times.
// ==UserScript==
// @name          Twitter Status On Twitter
// @namespace     natu-n.com
// @description   Twitter Status post on Twitter
// @include       http*://twitter.com/home
// ==/UserScript==

(function(){
    var dsp  = false;
    var yb   = document.evaluate("//div[@class='yellow-box']",
              document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
              null).singleNodeValue || null;
    if (yb) {
        document.styleSheets[document.styleSheets.length - 1].deleteRule(0);
    }
    else {
        yb = document.evaluate("//ul[@class='tabMenu']",
            document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
            null).singleNodeValue;
    };
    GM_xmlhttpRequest({
        method : "GET",
        url    : "http://status.twitter.com/",
        headers: {
                    'User-Agent'  : 'Mozilla/4.0 (compatible) Greasemonkey',
                    'Content-type': 'application/x-www-form-urlencoded'
                 },
        onload : function(response) {

            var htmlDoc = createHTMLDocumentByString(response.responseText);
            var doc = htmlDoc.ownerDocument ? htmlDoc.ownerDocument : htmlDoc;

            var node  = doc.evaluate(
                        "//div[@class='regular']",
                        htmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
                        null).singleNodeValue;
            var title = doc.evaluate(
                        "./h2/a/child::text()",
                        node, null, XPathResult.STRING_TYPE, null);
            var time = doc.evaluate(
                        "./h2/small/child::text()",
                        node, null, XPathResult.STRING_TYPE, null);
            var text = doc.evaluate(
                       "./p/text()", node, null,
                       XPathResult.ORDERED_NODE_SNAPSHOT_TYPE , null);
            if (text.snapshotLength == 0) {
                var text = doc.evaluate(
                           "./text()", node, null,
                           XPathResult.ORDERED_NODE_SNAPSHOT_TYPE , null);
            }
            var disc;
            for (i=0;i<text.snapshotLength;i++) {
                disc += text.snapshotItem(i).textContent;
            };
            title = title.stringValue;
            time  = time.stringValue;
            var df  = document.adoptNode(document.createDocumentFragment());
            var div = document.createElement("div");
            div.appendChild(document.createTextNode(disc));
            df.appendChild(div);
            yb.appendChild(document.createElement("br"));
            yb.appendChild(document.createTextNode(time + " " + title));
            yb.appendChild(df);
            yb.addEventListener("click", dspstatus, false);
            yb.getElementsByTagName("div")[0].style.display = "none";
        }
    })
// utility functions.
function createHTMLDocumentByString(str) {
    var html = str.replace(/<!DOCTYPE.*?>/, '').replace(/<html.*?>/, '').replace(/<\/html>.*/, '')
    var htmlDoc  = document.implementation.createDocument(null, 'html', null)
    var fragment = createDocumentFragmentByString(html)
    try {
        fragment = htmlDoc.adoptNode(fragment)
    } catch(e) {
        fragment = htmlDoc.importNode(fragment, true)
    }
    htmlDoc.documentElement.appendChild(fragment)
   return htmlDoc
}

function createDocumentFragmentByString(str) {
    var range = document.createRange()
    range.setStartAfter(document.body)
    return range.createContextualFragment(str)
}

function dspstatus() {
    var div = this.getElementsByTagName("div")[0];
    div.style.display = div.style.display == "none" ? "" : "none";
}
})();