// 表示用検索ワードを格納する（iPhone用）
var twitter_search_word = '';

// ポータルから呼び出される関数
// 引数の query はURLエンコード済み文字列でなくてはならない
function TwitterSearch (query) {
	twitter_search_word = query;
	query = query.replace(/%20/g, '+');
	$.jsonp({
    url: 'https://search.twitter.com/search.json?callback=?&q=' + query,
    success: TwitterSearchSuccess,
    error: TwitterSearchError
	});
  $('#tweet-widget').after('<div class="more"><a href="http://search.twitter.com/search?q=' + query + '" target="_blank">もっと見る</a></div>');
}

// Twitterから正常なレスポンスが合った場合に実行される関数
// 検索結果エリアの表示を行う
function TwitterSearchSuccess (json, textStatus) {
  if(json.error == undefined){
    var now = new Date();
    $.each(json.results.reverse(), function(i, tweet){
      // tweetテキストのURLデコードとリンクの作成
      var text = decodeURI(tweet.text);
      text = text.replace(/(http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?)/g, '<a href="' + "$1" + '" target="_blank">' + "$1" + '</a>');
      text = text.replace(/(\@(\w+))/g, '<a href="http://twitter.com/' + "$2" + '" target="_blank">' + "$1" + '</a>');
      text = text.replace(/(\#(\w+))/g, '<a href="http://twitter.com/search?q=%23' + "$2" + '" target="_blank">' + "$1" + '</a>');
      text = '<span class="tweet-text">' + text + '</span>';
      // 画像リンクの作成
      var user_url = 'http://twitter.com/' + tweet.from_user;
      var src  = 'https://api.twitter.com/1/users/profile_image?screen_name=' + tweet.from_user;
      var img  = '<img class="profile_image" align="left" src="' + src + '">';
      img  = '<a href="' + user_url + '" target="_blank">' + img + '</a>';
      // tweet日時を計算、表示テキスト作成
      var date = new Date(tweet.created_at);
      var created_at = parseInt((now.getTime() - date.getTime()) / 1000);
      if(created_at > 3600){
      	created_at = parseInt(created_at / 60 / 60) + "時間以上前";
      }else if(created_at > 60){
      	created_at = parseInt(created_at / 60) + "分前";
      }else{
      	created_at = created_at + "秒前";
      }
      created_at = '<br clear="both"><div><div class="created_at">' + created_at + '</div>';
      // 返信リンク作成
      var reply = '<div class="reply"><a href="http://twitter.com/?status=%40' + tweet.from_user + '+&in_reply_to_status_id=' + 
      				tweet.id + '&in_reply_to=' + tweet.from_user + '" target="_blank">返信</a></div></div><br clear="both">';
      var from_user  = '<span class="from_user"><a href="' + user_url + '" target="_blank">' + tweet.from_user + '</a></span>';
      // 表示エリアに作成したHTMLを追加
      $('#tweet-widget').prepend('<div class="tweet">'+ img + from_user + text + created_at + reply + '</div>');
    });
    if (navigator.userAgent.indexOf('iPhone') != -1){
      $('#twitter_search').text('Twitter検索');
      $('#tweet-widget').prepend('<div id="twitter_search_word"></div>');
      $('#twitter_search_word').html( $('#twitter_search').attr('title') );
    }
  }else{
    // JSONデータにエラーメッセージがある場合
    // エラーメッセージ表示
    var msg = 'Twitter からのエラーメッセージ<br>「' + json.error + '」';
    ShowTwitterSearchError(msg);
  }
}

// Twitterから正常なレスポンスが無かった場合に実行される関数
// エラーメッセージのセットのみ行う
function TwitterSearchError (xOptions, textStatus) {
  var msg = '[' + textStatus + '] Twitter から正常な応答がないため表示できません。';
  ShowTwitterSearchError(msg);
}

// エラーメッセージの表示を行う関数
function ShowTwitterSearchError (msg) {
  $('#tweet-widget').css({height: "50px", textAlign: "center", color: "red"});
  $('#tweet-widget').prepend('<p>' + msg + '</p>')
}

