jQuery(document).ready(function($) {

  Date.prototype.toISO8601String = function (format, offset) {
    /* accepted values for the format [1-6]:
    1 Year:
    YYYY (eg 1997)
    2 Year and month:
    YYYY-MM (eg 1997-07)
    3 Complete date:
    YYYY-MM-DD (eg 1997-07-16)
    4 Complete date plus hours and minutes:
    YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
    5 Complete date plus hours, minutes and seconds:
    YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
    6 Complete date plus hours, minutes, seconds and a decimal
    fraction of a second
    YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
    */
    if (!format) { var format = 6; }
    if (!offset) {
      var offset = 'Z';
      var date = this;
    } else {
      var d = offset.match(/([-+])([0-9]{2}):([0-9]{2})/);
      var offsetnum = (Number(d[2]) * 60) + Number(d[3]);
      offsetnum *= ((d[1] == '-') ? -1 : 1);
      var date = new Date(Number(Number(this) + (offsetnum * 60000)));
    }

    var zeropad = function (num) { return ((num < 10) ? '0' : '') + num; }

    var str = "";
    str += date.getUTCFullYear();
    if (format > 1) { str += "-" + zeropad(date.getUTCMonth() + 1); }
    if (format > 2) { str += "-" + zeropad(date.getUTCDate()); }
    if (format > 3) {
      str += "T" + zeropad(date.getUTCHours()) +
      ":" + zeropad(date.getUTCMinutes());
    }
    if (format > 5) {
      var secs = Number(date.getUTCSeconds() + "." +
      ((date.getUTCMilliseconds() < 100) ? '0' : '') +
      zeropad(date.getUTCMilliseconds()));
      str += ":" + zeropad(secs);
      } else if (format > 4) { str += ":" + zeropad(date.getUTCSeconds()); }

      if (format > 3) { str += offset; }
      return str;
    }

    $('ul.sb-twitter').each(function(){
      var ul = $(this);
      var id = ul.attr('id');
      if (eval(id) != undefined) {
        var options = eval(id);

        $.getJSON('http://twitter.com/statuses/user_timeline/'+options.account+'.json?count='+options.show+'&callback=?',
        function(data){
          $.each(data, function(i,item){
            if (options.hidereplies == false || !item.in_reply_to_user_id) {
              var tweet = item.text;
              if(tweet.search(/(https?:\/\/[-\w\.]+:?\/[\w\/_\.]*(\?\S+)?)/) > -1) {
                tweet = tweet.replace(/(https?:\/\/[-\w\.]+:?\/[\w\/_\.]*(\?\S+)?)/, "<a href='$1'>$1</a>");
              }
              if(tweet.search(/@\w+/) > -1) {
                tweet = tweet.replace(/(@)(\w+)/g, '<a href="http://twitter.com/$2">$1$2</a>');
              }
              if(tweet.search(/#\w+/) > -1) {
                tweet = tweet.replace(/(#)(\w+)/g, '<a href="http://search.twitter.com/search?q=$2">$1$2</a>');
              }
              var dt = new Date(Date.parse(item.created_at));
              var time = $('<abbr>').attr({ title: dt.toISO8601String() }).text(dt.toLocaleDateString());
              ul.append($('<li>').html(tweet).append(time));
            }  
          });
          ul.find('li abbr').timeago();
        });
      }
    });
    
  });