// ==UserScript==
// @name Twitter Trends Explained
// @fullname Twitter Trends Explained
// @namespace http://userscripts.org/scripts/show/51003
// @description Adds a tooltip to each 'Trending Topic' to let you know what the trend is all about (using the 'What The Trend?' service).
// @include http://twitter.com/*
// @include http://search.twitter.com/*
// @version 2009-06-11
// ==/UserScript==
function explainTrends(linkElements) {
$(linkElements).each(function(){
var linkElement = this;
var trendName = encodeURIComponent($(linkElement).text());
var trendURL = "http://www.whatthetrend.com/api/trend/getByName/" + trendName + "/jsonp/callback=?";
$.getJSON(trendURL, function(json){
var explanation;
try {
explanation = (json.api.error) ? json.api.error : json.api.trend.blurb.text;
if (!explanation) explanation = "Trend not explained yet.";
} catch(ex) {
explanation = "Sorry, could not get trend explanation."
}
createTooltip(linkElement, explanation);
});
});
}
function createTooltip(linkElement, explanation) {
$(linkElement).attr('tooltip', $(linkElement).attr('title'))
$(linkElement).attr('title', explanation);
// unfortunately twitter uses @title as query string for their
// ajax search query so we have to toggle between them
var toggleTooltip = function() {
var tooltip = $(this).attr('tooltip');
$(this).attr('tooltip', $(this).attr('title'));
$(this).attr('title', tooltip);
}
$(linkElement).mousedown(toggleTooltip);
$(linkElement).bind('loaded', toggleTooltip);
}
function execJQuery(doc) {
if (doc.location.href.match(/http:\/\/(.*)twitter.com/gi)) {
explainTrends($('#hot p a', doc));
explainTrends($('#hot li a', doc));
explainTrends($('.trends-links li a', doc));
}
}
jetpack.statusBar.append({
html: '<img alt="Twitter Trends Explained" src="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAMQOAADEDgAAAAAAAAAAAACz/v6m0f///8L////C////wv///8L////C////wf///8H////B////wP///8H////B////wP///8D////P////tv7+msT9+P+ysX//sr+V/7POr/+yxab/ssCi/7PZyP+zz7v/tdnB/7Xhzf+x2sn/sd7T/7Th1/+159z/wv38/7f+/prG////sqFs/7Opdv+39O3/tuve/7Xm2/+1593/tdPA/7bYwv+228L/sb6d/7C4of+0u6T/uMOq/8X48/+5/v6ayPz6/7O1kf+ynmj/uv///7n///+5////uf///7n///+4////uP///7n///+5////uP///7f////F////vP7+msfx5/+yqIT/s6N5/7jk1/+8////uvv3/7r9/P+6////uv///7r///+6////uf///7r///+6////yP///7z+/prN////tcSq/7fPuv+0q4n/vfr2/7Sja/+1r37/vf///7z///+8////vP///7z///+8////u////8n////A/v6ayOXZ/7G5m/+/////tr2j/7KYav+74dL/t7yT/7rdyP++////vv///77///+9////vf///73////M////wf7+msrp3v+zvqH/wv///8D///++8ev/wf///7vXv/+4ton/wP///8D////A////v////7////+/////zf///8P+/prR////ucKi/8P////C////wv///8L////B+fb/t6d2/8L////A9vL/tq+F/7/07v/B////wf///8/////F/v6ayde8/7muhf/F////xP///8T////E////xf///7q7mf+6waT/uK59/7mxiv+4roH/w////8P////R////yP7+msvjy/+zonj/x////8X////F////xf///8X////E+PX/tpRk/77RuP/I////urOJ/8Ddyv/G////0////8v+/prR9OT/tKV6/8v////I////yP///8j////H////x////8j////H////x////8Tw5/+7tIj/vsqp/9T////D+/aaybyH/7q5lP/H////x////8j////J////yf///8r////K////yv///8r//v/F3sv/uI1I/7iXW//Z////oP79mq/26v+l6tv/pv///6j///+q////rf///7D///+y////tP///7f///+6////uvXu/7Owf/+1lFb/0P///5n9/qax////pP///6T///+k////pP///6T///+k////pf///6X///+m////p////6j///+r////rP///7r///+c+f5dqP7+mpv6/pqb+v6am/r+mpv7/pqb+/6amfv+mpn7/pqZ/f6amf3+mpj9/pqY/f6amP3+mpb+/pqi/v6agAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAA//8AAA==" />',
width: 16,
onReady: function(widget) {
$(widget).click(function(event) {
if (event.button == 0) {
jetpack.tabs.open("http://whatthetrend.com/").focus();
}
});
jetpack.tabs.onReady(execJQuery);
}
});