
function loadTweet(tweet) {
    call('http://pipes.yahoo.com/xeferae/twit?_render=json&_callback=tweetProcessor&id=' + tweet);
}

var re1 = /&#92;/g;
var re2 = /&#92;\//g;
var re3 = /@(.*?)([&\\\',:\\\s\\\)])/g;
var re4 = /http:\/\/(.+?)($|[&\\\',:\\\s\\\)]|\.\s)/g;    

function tweetProcessor(feed)
{
    var tweet = feed.value.items[0];
    if(tweet != null)
    {
        var data = $('#t' + tweet.title);  
        
        var text = tweet.text;
        text = text.replace(re2,'/'); 
        text = text.replace(re1,'%');
        text = unescape(text);  
        text = text.replace(re4, '<a href="http://$1">http://$1</a>$2');
        text = text.replace(re3, '@<a href="http://twitter.com/$1">$1</a>$2');    
        tweet.text = "" + text;
        
        data.html('<a href="http://twitter.com/' + tweet.userid + '">' + tweet.username + '</a>: ' + tweet.text);
        
        var image = $(document.createElement('div'));
        image.addClass('image');
        image.html('<a href="http://xefer.com/twitter/' + tweet.userid + '"><img src="' + tweet.userimage.replace(re2, '/') + '"/></a>');
        
        var msg = $(document.createElement('div'));
        msg.addClass('msg');
        
        var meta = $(document.createElement('div'));
        meta.addClass('meta');
        date = new Date();
        date.setISO8601(tweet.created);
        meta.html('<a href="http://twitter.com/' + tweet.userid + '/status/' + tweet.title + '">' + date.toLocaleString() + '</a>');
          
        data.after(meta).after(msg).after(image);
        msg.append(data);
        
        if(tweet.replyto != null)
        {
            var text = $(document.createElement('span'));
            text.attr('id', 't' + tweet.replyto);
            
            var newone = $(document.createElement('div'));
            newone.addClass('tweet');
            newone.attr('id', '' + tweet.replyto);
            newone.append(text);
            
            $('#' + tweet.title).before(newone);
            
            loadTweet(tweet.replyto);
        }
    }
}

function call(url) {
    script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    
    head = document.getElementsByTagName('head')[0];
    head.appendChild(script);   
}

/*
 * See: http://delete.me.uk/2005/03/iso8601.html
 */
Date.prototype.setISO8601 = function (string)
{
    var regexp = "(.{3}) ((.{3})) ([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2}) ([-+])([0-9]{4}) ([0-9]{4})";
    var d = string.match(new RegExp(regexp));

    var date = new Date(d[10], 0, 1);
    var offset = 0;
    
    date.setMonthStr(d[3]);
    date.setDate(d[4]);
    date.setHours(d[5]);
    date.setMinutes(d[6]);
    date.setSeconds(d[7]);
    
    offset -= date.getTimezoneOffset();
    time = (Number(date) + (offset * 60 * 1000));
    this.setTime(Number(time));
}

Date.prototype.setMonthStr = function (string)
{
    var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    var month = months.indexOf(string);
    this.setMonth(month);
}


