﻿(function ($) {

    $.fn.tweets = function (options) {


        // Standaard opties
        var defaults = {
            username: "masoutreach",
            maxCharacters: 140,
            maxTweets: 2
        };

        // Standaard URL
        var url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=" + defaults.username + "&callback=?&include_rts=false";


        // Referentie naar "this"
        var target = $(this);

        // Uitrbreiden van standaard opties 
        // met eventueel ingevulde opties
        if (options) $.extend(defaults, options);

        
        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 pluralize = function (singular, plural, n) {
                if (n == 1) {
                    return '' + n + ' ' + singular;
                }
                else {
                    return '' + n + ' ' + plural;
                }
            };
            if (delta < 60) {
                return 'Minder dan een minuut geleden';
            } else if (delta < (60 * 60)) {
                return pluralize("minuut", "minuten", parseInt(delta / 60)) + ' geleden';
            } else if (delta < (24 * 60 * 60)) {
                return pluralize("uur", "uur", parseInt(delta / 3600)) + ' geleden';
            } else {
                return pluralize("dag", "dagen", parseInt(delta / 86400)) + ' geleden';
            }
        }


        

        $.getJSON(url, function (data) {

            if (data) {                           
               var container = $('<ul class="tweet-container"></ul>'); 
               
               $.each(data, function(index, value) {               
               
                  var item = data[index];
                  var time = relative_time(item.created_at);
                  var tweet;                  
                  
                  if(item.text.length > defaults.maxCharacters) {
                     tweet = item.text.substr(0, defaults.maxCharacters -3) + "...";
                  } else {
                     tweet = item.text;
                  }
                  
                  $(container).append('<li class="tweet"><p class="tweet-body">' + tweet + '</p><p class="tweet-timestamp">' + time + '</p></li>');                   
                  
                  if(index == (defaults.maxTweets - 1)) {
                     return false;
                  }
               });
            
                $(target).append(container);
            }
        });


    };
})(jQuery);






