var TOPSY_SEARCH = {};
TOPSY_SEARCH.text = {};
TOPSY_SEARCH.api = {};

/***************************************************************/

/* 表示領域の見出し */
TOPSY_SEARCH.text.header = '「nakenashi.net」を含むつぶやき';

/* 「すべて表示する」の操作をする箇所のテキスト */
TOPSY_SEARCH.text.more   = 'もっと見る...';

/* リスト表示の時に取得する件数 */
TOPSY_SEARCH.api.perpage = 50;

/* 表示形式。icon もしくは list を指定する */
//TOPSY_SEARCH.type = 'icon';
TOPSY_SEARCH.type = 'list';

/* リスト表示の時に最初から表示する件数 */
TOPSY_SEARCH.displayNum = 4;

/***************************************************************/
/* URL生成 */
TOPSY_SEARCH.search = function() {
    var url = [
        'http://otter.topsy.com/search.js?q=nakenashi.net',
        '&tracktype=tweet&perpage=',
        TOPSY_SEARCH.api.perpage
    ].join('');
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'jsonp',
        success: function(json, status) {
            if (!json.response.list.length) {
                return false;
            }

            TOPSY_SEARCH.result = json.response.list;
            /* 日付でソート */
            TOPSY_SEARCH.result.sort(function(b, a) {return a.trackback_date-b.trackback_date});
            if (TOPSY_SEARCH.type == 'icon') {
                TOPSY_SEARCH.showIconList();
            }
            else if (TOPSY_SEARCH.type == 'list') {
                TOPSY_SEARCH.showTweetList();
            }
        }
    });
}




/* アイコンモード */
TOPSY_SEARCH.showIconList = function() {


    var len = TOPSY_SEARCH.result.length;



    $('#topsy-tweet-search-results').append(
        $('<div class="topsy-tweet-search-results-header"></div>').text(TOPSY_SEARCH.text.header)
    );
    for (var i = 0; i < len; i++) {
        var screenName = TOPSY_SEARCH.result[i].trackback_author_url.replace(/http:\/\/twitter.com\//, '');
        var icon = $('<img class="topsy-profile-image-small" style="cursor:pointer;" />')
                    .attr('title', screenName)
                    .attr('src', TOPSY_SEARCH.result[i].topsy_author_img)
                    .data('index', i)
                    .click(function() {
                        $('#topsy-tweet-search-results').children('.topsy-tweet-search-result').remove();
                        $('#topsy-tweet-search-results').append(
                            TOPSY_SEARCH.buildTweetDiv($(this).data('index'))
                        );
                    });
        $('#topsy-tweet-search-results').append(icon);
    }
}
/* リストモード */


TOPSY_SEARCH.showTweetList = function() {

 
    var len = TOPSY_SEARCH.result.length;

    $('#topsy-tweet-search-results').append(
        $('<div class="topsy-tweet-search-results-header"></div>').text(TOPSY_SEARCH.text.header)
    );
    for (var i = 0; i < len; i++) {
        var tweetDiv = TOPSY_SEARCH.buildTweetDiv(i);
        if (i >= TOPSY_SEARCH.displayNum) {
            tweetDiv.hide();
        }
        $('#topsy-tweet-search-results').append(tweetDiv);
    }
    if (len > TOPSY_SEARCH.displayNum) {
        var more = $('<div id="topsy-show-more-tweets"></div>').click(function() {
            $('#topsy-tweet-search-results').children('.topsy-tweet-search-result').show();
            $(this).hide();
        }).text(TOPSY_SEARCH.text.more);
        $('#topsy-tweet-search-results').append(more);
    }
}


/* jsonpの中身を解析して処理 */

TOPSY_SEARCH.buildTweetDiv = function(index) {
    var result = TOPSY_SEARCH.result[index];
    
/* nakenashi以外なら実行 */
     if (result.trackback_author_nick != "nakenashi"){
      
       var screenName = result.trackback_author_nick;
       var d = new Date(result.trackback_date * 1000);
       /* httpから始まる文字をリンクに置き換え */
       result.content = result.content.replace(/(http:\/\/[\x21-\x7e]+)/gi, "<a href='$1'>$1</a>");
       var tweetDiv = $('<div class="topsy-tweet-search-result"></div>').append(
           $('<div class="topsy-tweet-image"></div>').append(
               $('<a target="_blank"></a>').attr('href', result.trackback_author_url).append(
                  $('<img />').attr('src', result.topsy_author_img)
                )
           )
       ).append(
           $('<div class="topsy-tweet-text"></div>').append(
               $('<a target="_blank" class="topsy-tweet-name"></a>')
                   .attr('href', result.trackback_author_url)
                   .text(screenName)
           ).append(' ' + result.content).append('<br />').append(
               $('<span class="topsy-tweet-date"></span>').append(
                   $('<a target="_blank"></a>').attr('href', result.trackback_permalink).text([
                       d.getFullYear(),
                       TOPSY_SEARCH.padZero(d.getMonth() + 1),
                       TOPSY_SEARCH.padZero(d.getDate())
                   ].join('-') + ' ' +[
                       TOPSY_SEARCH.padZero(d.getHours()),
                       TOPSY_SEARCH.padZero(d.getMinutes())
                   ].join(':'))
               )
           )
       );
       return tweetDiv;
       
     }else{
       var tweetDiv = $();
       TOPSY_SEARCH.displayNum++;
     return tweetDiv;}
}

TOPSY_SEARCH.padZero = function(d) {
    return (d < 10) ? '0' + d : d;
}

TOPSY_SEARCH.search();



