(function($){
  $.fn.TweetSearch = function( options ) {
    var defaults = {
      'query': '%23power_of_photo',
      'maxCount': 5,
      'showIcon': true
    };
    var parameters = $.extend( defaults, options );

    var apiUrl = "http://search.twitter.com/search.json?q=" + parameters.query + "&count=" + parameters.maxCount + "&callback=?";
    var targetList = this;

    return this.each( function() {
      $.getJSON( apiUrl, function( data ){
        var timeObj = new Date;
        var timeline = data.results;
        var readCount = $(timeline).size();
        var addedCount = ( parameters.maxCount < readCount ) ? parameters.maxCount : readCount;
        for( var i = 0; i < addedCount; i++ ) {
          var appendStr = "<li>";
          if( parameters.showIcon ) {
            appendStr += "<a href='http://twitter.com/#!/"+timeline[i].from_user+"' target='_blank'>";
            appendStr += "<img src='"+timeline[i].profile_image_url+"' />";
            appendStr += "</a>";
          }
          appendStr += "<p class='body'>" + twttrUserAnchorStyle(timeline[i].text) + "</p>";
          appendStr += "<p class='time'><a href='http://twitter.com/#!/" + timeline[i].from_user + "/status/" + timeline[i].id_str + "' target='_blank'>"+timeObj.format('m/d H:i:s', timeline[i].created_at)+"</a></p>";
          appendStr += "</li>";
          $(targetList).append( appendStr );
        }
      });
    });
  };

  var twttrUserAnchorStyle = function(tweet) {
    return tweet
      .replace(/(https?\:\/\/[^ 　)]+)/g, '<a href="$1" target="_blank">$1</a>')
      .replace(/(\#[^ 　]+)/g, '<a href="https://twitter.com/search?q=$1" target="_blank">$1</a>')
      .replace(/@(\w{1,15})/g, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');
  };

})(jQuery);

