; (function($) {
    $.fn.jemTweets = function(data, options) {
        var defaults = {
            username: 'jem_id',
            time: false,
            replies: false,
            cycle: true,
            twitterlink: true,
            limit: 3,
            image: false,
            search: false,
            linkTekst: 'Ga naar twitter'
        };
        defaults = $.extend(defaults, options);
        return this.each(function(options) {
            $(this).prepend('<ul class="tweetList">');
            if (!defaults.search) {
                defaults.limit = defaults.limit > data.length ? data.length : defaults.limit;
                for (var a = 0; a < defaults.limit; a++) {
                    build_tweet(a, data[a]);
                }
            }
            else {
                defaults.limit = defaults.limit > data.results.length ? data.results.length : defaults.limit;
                for (var a = 0; a < defaults.limit; a++) {
                    build_tweet(a, data.results[a]);
                }
            }
            if (defaults.twitterlink && !defaults.search) {
                $('.tweetList').append("<li class='twitterLink'><a href='http://twitter.com/#!/" + username + "' target='_blank'>" + defaults.linkTekst + "</a></li>");
            }
        });

        function build_tweet(i, item) {
            if (defaults.replies || !defaults.replies && !item.in_reply_to_status_id) {
                $('.tweetList').append('<li class="tweet_content_' + i + '"><p class="tweet_link_' + i + '">' + item.text.replace(/#(.*?)(\s|$)/g, '<span class="hash">#$1 </span>').replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, '<a target="_blank" href="$&">$&</a> ').replace(/@(.*?)(\s|\(|\)|$)/g, '<a target="_blank" href="http://twitter.com/#!/$1">@$1</a>$2'));
                if (defaults.search) {
                    $('.tweet_content_' + i + ' p').prepend("<a href='http://twitter.com/#!/" + item.from_user + "' target='_blank'>" + item.from_user + ": </a>");
                }
                if (defaults.image) {
                    if (item.user) {
                        $('.tweet_content_' + i).prepend("<img src=\"" + item.user.profile_image_url + "\" alt=\"\" />");
                    } else if (item.profile_image_url) {
                        $('.tweet_content_' + i).prepend("<img src=\"" + item.profile_image_url + "\" alt=\"\" />");
                    }
                }
                if (defaults.time) {
                    $('.tweet_content_' + i).append('<small> ' + relative_time(item.created_at) + '</small>');
                }
            }
        }

        function parse_date(date_str) {
            return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3'));
        }

        function relative_time(time_value) {
            var parsed_date = parse_date(time_value);
            var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
            var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
            var r = '';
            if (delta < 60) {
                r = delta + ' seconden geleden';
            } else if (delta < 120) {
                r = 'een minuut geleden';
            } else if (delta < (45 * 60)) {
                r = (parseInt(delta / 60, 10)).toString() + ' minuten geleden';
            } else if (delta < (2 * 60 * 60)) {
                r = 'een uur geleden';
            } else if (delta < (24 * 60 * 60)) {
                r = '' + (parseInt(delta / 3600, 10)).toString() + ' uur geleden';
            } else if (delta < (48 * 60 * 60)) {
                r = 'een dag geleden';
            } else {
                r = (parseInt(delta / 86400, 10)).toString() + ' dagen geleden';
            }
            return '- ' + r;
        }
    }
})(jQuery)
