Tweetwatch

By Chilla42o Last update Aug 22, 2009 — Installed 131 times. Daily Installs: 0, 0, 0, 2, 0, 0, 0, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0

There are 4 previous versions of this script.

// ==UserScript==
// @name           Tweetwatch
// @namespace      Chilla42o
// @description    Replace Google AdSense on Twitter with something more useful
// @include        http://twitter.com/*
// @version        0.4
// ==/UserScript==

tweetwatch = {

  date_locale: {
    'de': {
      monthnames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
      daynames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
      dateformat: '%weekday%, %day%. %month% %year%'
    },
    'it': {
      monthnames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
      daynames: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],
      dateformat: '%weekday%, %day% %month% %year%'
    },
    'en': {
      monthnames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
      daynames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
      dateformat: '%weekday%, %month% %day%, %year%'
    }
  },

  initialize: function() {
    if (typeof unsafeWindow.jQuery == 'undefined') { 
      window.setTimeout(tweetwatch.initialize, 120); 
      return false; 
    }

    $ = unsafeWindow.jQuery;
    jQuery = $;
    twttr = unsafeWindow.twttr;
    tweetwatch.addstyle(['div#side p.promotion { cursor:pointer; }',
      'div#side p.time { color:'+$('a#home_link').css('color')+'; font-size:22px; text-align:center; padding:0; margin:0 0 3px 0; }',
      'div#side p.date { color:#333; font-size:10px; text-align:center; margin:0; padding:0; }'
    ]);

    tweetwatch.targetelement = $('div#side p.promotion:first');
    if (tweetwatch.targetelement.length) {
      tweetwatch.targetelement.livequery('click', tweetwatch.switchcurrentlanguage);
      tweetwatch.setcurrentlanguage();
      tweetwatch.tictac();
      window.setInterval(tweetwatch.tictac, 1000);
    }
    
  },

  tictac: function() {
    if ($('div#side p.promotion').length) {
      var now = new Date();
      var day = now.getDate();
      day = (day < 10) ? '0'+day : day;
      var weekday = tweetwatch.daynames[now.getDay()];
      var month = tweetwatch.monthnames[now.getMonth()];
      var year = now.getFullYear();
      var hours = now.getHours();
      hours = (hours < 10) ? '0'+hours : hours;
      var minutes = now.getMinutes();
      minutes = (minutes < 10) ? '0'+minutes : minutes;
      var seconds = now.getSeconds();
      seconds = (seconds < 10) ? '0'+seconds : seconds;
      $('div#side p.promotion').html('<p class="time">'+hours+':'+minutes+':'+seconds+'</p>'+
                                     '<p class="date">'+tweetwatch.dateformat.replace(/%weekday%/, weekday)
                                                       .replace(/%day%/, day).replace(/%month%/, month)
                                                       .replace(/%year%/, year)+'</p>');
    }
  },
  
  setcurrentlanguage: function(newlanguage) {
    if (typeof newlanguage == 'undefined') {
      newlanguage = $.cookie('Tweetwatch.language');
      if (!newlanguage) newlanguage = 'en';
    }
    tweetwatch.currentlanguage = newlanguage;
    $.cookie('Tweetwatch.language', tweetwatch.currentlanguage,  { expires: 14, domain: 'twitter.com', path:'/' });
    tweetwatch.monthnames = tweetwatch.date_locale[tweetwatch.currentlanguage].monthnames;
    tweetwatch.daynames = tweetwatch.date_locale[tweetwatch.currentlanguage].daynames;
    tweetwatch.dateformat = tweetwatch.date_locale[tweetwatch.currentlanguage].dateformat;
  },

  addstyle: function(styles) { 
    var styleelement = $('style:last');
    styles = styles.join("\n");
    if (!styleelement.length) {
      $('head').append("\n<style type=\"text/css\">\n"+styles+"\n</style>\n");
    } else {
      styleelement.append("\n/*=== TweetWatch ===*/\n"+styles+"\n");
    }
  },

  switchcurrentlanguage: function() {
    var foundcurrent = false, first = null, newlanguage = null;
    for (var i in tweetwatch.date_locale) {
      if (first == null) {
        first = i;
      }
      if (foundcurrent) {
        newlanguage = i;
        break;
      }
      if (i == tweetwatch.currentlanguage) {
        foundcurrent = true;
      }
    }
    if (!newlanguage) newlanguage = first;
    tweetwatch.setcurrentlanguage(newlanguage);
  } 

}

tweetwatch.initialize();
unsafeWindow.tweetwatch = tweetwatch;