/*
 * Plugin based on Tweet (http://tweet.seaofclouds.com)
 * Modifified by Part-IT for Facebook integration
*/


(function($) {
 
  $.fn.fbwall = function(o){
    var s = {
	  user: null,							  // [string]   your user id
	  key: null,							  // [string]   your user key
	  limit_to_user: null,					  // [string]   limit posts to a specific user (spelled lowercase)
	  parser_url: "fbwall_feed.php",		  // [string]   location of the feed parser
      avatar_image_url: null,                 // [string]   url of the avatar you would like to use
	  avatar_size: 50,						  // [integer]  height and width of avatar if displayed (50px max)
      limit: 5,                               // [integer]  how many posts to display?
      intro_text: null,                       // [string]   do you want text BEFORE your your posts?
      outro_text: null,                       // [string]   do you want text AFTER your posts?
      loading_text: null,                     // [string]   optional loading text, displayed while posts load
      refresh_interval: null                  // [integer]  optional number of seconds after which to reload posts
    };
    
    if(o) $.extend(s, o);
	
    function relative_time(time_value) {
      var parsed_date = Date.parse(time_value);//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() + ' uren geleden';
      } else if(delta < (48*60*60)) {
	r = 'een dag geleden';
      } else {
	r = (parseInt(delta / 86400, 10)).toString() + ' dagen geleden';
      }
      return 'ongeveer ' + r;
    }
	
    function build_url() {
      return s.parser_url+'?user='+s.user+'&key='+s.key+'&limit='+s.limit+'&limit_to_user='+s.limit_to_user;
    }
	
    return this.each(function(i, widget){
      var list = $('<ul class="fbwall_list">').appendTo(widget);
      var intro = '<p class="fbwall_intro">'+s.intro_text+'</p>';
      var outro = '<p class="fbwall_outro">'+s.outro_text+'</p>';
      var loading = $('<p class="loading">'+s.loading_text+'</p>');
	  
      if (s.loading_text) $(widget).append(loading);
      $(widget).bind("load", function(){
        $.getJSON(build_url(), function(posts){
          if (s.loading_text) loading.remove();
          if (s.intro_text) list.before(intro);
          list.empty();
		  
		  if(posts.length == 0) {
			list.append('<li>Geen recentelijk geplaatste berichten.</li>');
		  } else {
		
			  $.each(posts, function(i,item){
				
				var author = item.author;
				var profile_url = item.link.split('&')[0];
				var avatar_template = '<a class="fbwall_avatar" href="'+profile_url+'"><img src="'+s.avatar_image_url+'" height="'+s.avatar_size+'" width="'+s.avatar_size+'" alt="'+author+'\'s avatar" title="'+author+'\'s avatar" border="0"/></a>';
				var avatar = (s.avatar_image_url ? avatar_template : '');
				var date = '<span class="fbwall_time"><a href="'+item.link+'">'+relative_time(item.pubDate)+'</a></span>';
				var text = '<span class="fbwall_text">' +$([item.description])[0]+ '</span>';
	   
				list.append('<li>' + avatar + text + date + '</li>');
	   
				list.children('li:first').addClass('fbwall_first');
				list.children('li:odd').addClass('fbwall_even');
				list.children('li:even').addClass('fbwall_odd');

			  });
		  }
		  
          if (s.outro_text) list.after(outro);
          $(widget).trigger("loaded").trigger((posts.length == 0 ? "empty" : "full"));
          if (s.refresh_interval) {
            window.setTimeout(function() { $(widget).trigger("load"); }, 1000 * s.refresh_interval);
          };
        });
      }).trigger("load");
    });
  };
})(jQuery);

