var tweeter = {
    tweets: [],
    wordwraplimit: 32,
    tweetcount: 5,
    url: "http://search.twitter.com/search.json?rpp=xtweetsx&callback=?&q=%23typo3",
    tweet_template: '\
            <div class="tweet-item" style="display:none">\
                <div class="tweet-item-text-wrapper"><a href="http://twitter.com/xusernamex">xusernamex</a>: xcontentx</div>\
                <img class="tweet-img" src="xuserimagex" alt="Twitter profil billede"/>\
                <div class="tweet-clear"></div>\
            </div>',

    begin: function(){
        $.getJSON(tweeter.url.replace(/xtweets/, tweeter.tweetcount), function(json){
            $.each(json.results, function(i, tweet){
                tweeter.tweets.push(tweet.id);
                $("#tweet-box").append(tweeter.tweet_template.replace(/xusernamex/g, tweet.from_user).replace(/xcontentx/, tweeter.fixText(tweet.text)).replace(/xuserimagex/, tweet.profile_image_url));
            });
            tweeter.scheduleUpdates();
            tweeter.displayTweets();
        });

    },
    displayTweets: function(){
        $("div.tweet-item").slideDown();
    },
    scheduleUpdates: function(){
        window.setInterval(function(){
            $.getJSON(tweeter.url.replace(/xtweets/, 1), function(json){
                $.each(json.results, function(i, tweet){
                    if ($.inArray(tweet.id, tweeter.tweets) == -1)
                    {
                        $("#tweet-box > div.tweet-item:last").slideUp('', function(){$("#tweet-box > div.tweet-item:last").remove()});
                        tweeter.tweets.push(tweet.id);
                        $("#tweet-box > div.tweet-item:first").before(tweeter.tweet_template.replace(/xusernamex/g, tweet.from_user).replace(/xcontentx/, tweeter.fixText(tweet.text)).replace(/xuserimagex/, tweet.profile_image_url));
                        $("#tweet-box > div.tweet-item:first").slideDown();
                    }
                });
            });
        }, 2000);
    },

    wrapWord: function (word){
        var ret = '';
        while (word.length > tweeter.wordwraplimit)
        {
            ret += word.substr(0, tweeter.wordwraplimit) + ' ';
            word = word.substr(tweeter.wordwraplimit);
        }
        ret += word;
        return ret;
    },

    fixText: function (text){
        var parts = [];
        $.each(text.split(/\s+/), function(i, part){
            if (part.substr(0, 1) == '#')
            {
                part = "<a href='http://twitter.com/search?q=%23" + part.substr(1) + "'>" + tweeter.wrapWord(part) + "</a>";
            }
            else if (part.substr(0, 1) == '@')
            {
                part = "@<a href='http://twitter.com/" + part.substr(1) + "'>" + tweeter.wrapWord(part.substr(1)) + "</a>";
            }
            else
            {
                part = tweeter.wrapWord(part);
            }
            parts.push(part);
        });
        return parts.join(' ');;
    }
}

$(document).ready(function(){
    if ($("#tweet-box").length > 0) tweeter.begin();
});

