function relative_time(time_value) {
  // Twitter lists give dates in a format IE doesn't understand
  // The correct format has a comma at position 3
  if( time_value.substr(3,1) != "," )
    time_value = correctTime( time_value);

  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  if(delta < 60) {
  return 'less than a minute ago';
  } else if(delta < 120) {
  return 'about a minute ago';
  } else if(delta < (45*60)) {
  return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (90*60)) {
  return 'about an hour ago';
  } else if(delta < (24*60*60)) {
  return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
  return '1 day ago';
  } else {
  return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}

function correctTime( time_value ){
  var dayStr = time_value.substr(0,3);
  var month = time_value.substr(4,3);
  var day = time_value.substr(8,2);
  var time = time_value.substr(11,8);
  var zone = time_value.substr(20,5);
  var year = time_value.substr(26,4);
  return dayStr+", "+day+" "+month+" "+year+" "+time+" "+zone;
}
function parse_UTC_date(string) {
  var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
      "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
      "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
  var d = string.match(new RegExp(regexp));

  var offset = 0;
  var date = new Date(d[1], 0, 1);

  if (d[3]) { date.setMonth(d[3] - 1); }
  if (d[5]) { date.setDate(d[5]); }
  if (d[7]) { date.setHours(d[7]); }
  if (d[8]) { date.setMinutes(d[8]); }
  if (d[10]) { date.setSeconds(d[10]); }
  if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
  return date;
}


(function($) {
  $.fn.twitter = function(o){
    var s = {
      username: ["theofficialfwa"],
	  list: "",	// leave blank if not using a list
      count: 6,
      loading_text: "fetching tweets..."
    };
    if(o) $.extend(s, o);
    
    $.fn.extend({
      linkUrl: function() {
        var returning = [];
        var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
        this.each(function() {
          returning.push(this.replace(regexp,"<a href=\"$1\">$1</a>"))
        });
        return $(returning);
      },
      linkUser: function() {
        var returning = [];
        var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;
        this.each(function() {
          returning.push(this.replace(regexp,"<a href=\"http://twitter.com/$1\">@$1</a>"))
        });
        return $(returning);
      },
      linkHash: function() {
        var returning = [];
        var regexp = / [\#]+([A-Za-z0-9-_]+)/gi;
        this.each(function() {
          returning.push(this.replace(regexp, ' <a href="https://search.twitter.com/search?q=&tag=$1&lang=all&from='+s.username.join("%2BOR%2B")+'">#$1</a>'))
        });
        return $(returning);
      }
    });
 
    return this.each(function(){
      var list = $('<ul class="tweet_list">').appendTo(this);
//      list.after('<p class="tweet_tag">Follow <a rel="external" target="_blank" href="https://twitter.com/'+s.username+'" class="tweet_username">'+s.username+'</a> on twitter</p>');
      var loading = $('<p class="loading">'+s.loading_text+'</p>').appendTo(this);
      if(typeof(s.username) == "string") s.username = [s.username];
      
	  
	  var onSuccess = function(data){
        loading.remove();
		data.results = data.results ? data.results : data; 
		if( data.results.length == 0 )
		list.append("<li>@"+s.username+" hasn't tweeted this week.<br />Click 'Follow Us' above to view older tweets on TheOfficalFWA Twitter page.<br /></li>");
	
	// create each tweet
	var counter = 0;
        $.each(data.results, function(i,item){ if( counter++ < s.count ){ 
          var text = '<span class="tweet_text"># ' +$([item.text]).linkUrl().linkUser().linkHash()[0]+ '</span> ';
          var date = '<a class="tweet_date" target="_blank" href="http://twitter.com/'+item.from_user+'/statuses/'+item.id+'" title="view tweet on twitter">'+relative_time(item.created_at)+'</a>';
		  var author = item.user ? "<br /><a class='tweet_author' target='_blank' href='http://twitter.com/"+item.user.screen_name+"' title='"+item.user.name+"'>@"+item.user.screen_name+"</a> " : "";
          list.append('<li>'+text+author+date+'<br /></li>');
        } });
        list.find("a").attr("target", "_blank");
      };
	  
	  if( s.list == "" )
		$.getJSON('https://search.twitter.com/search.json?&q=from:'+s.username+'&rpp='+(s.count*2)+'&callback=?', onSuccess );
	  else
		$.getJSON('https://api.twitter.com/1/'+s.username+'/lists/'+s.list+'/statuses.json?per_page='+(s.count*2)+'&page=1&callback=?', onSuccess );
    });
  };
})(jQuery);

