﻿
var _twitterSearchLastItemId = null;
var _twitterSearchResultTemplate = null;
var _twitterSearchKeyword = null;
var _twitterSearchResultCount = 20;
var _twitterSearchResultContrainer = null;
var _twitterSearchResultRecursive = null;
var _twitterSearchPostFunc = null;

function InitSearchTwitter() {
    _twitterSearchLastItemId = null;
    _twitterSearchResultTemplate = null;
    _twitterSearchKeyword = null;
    _twitterSearchResultCount = 20;
    _twitterSearchResultContrainer = null;
    _twitterSearchResultRecursive = null;
    _twitterSearchPostFunc = null;
}

function SearchTwitter(cid, template, keyword, count, recursive, postfunc) {
    if (keyword == null || keyword == undefined || keyword == "") return;
    if (count != null && count != undefined) {
        _twitterSearchResultCount = count;
    }

    if (cid != null && cid != undefined) _twitterSearchResultContrainer = $("#" + cid);
    if (recursive != null && recursive != undefined) _twitterSearchResultRecursive = recursive; else _twitterSearchResultRecursive = null;
    if (postfunc != null && postfunc != undefined) _twitterSearchPostFunc = postfunc; else _twitterSearchPostFunc = null;
    if (_twitterSearchResultContrainer == null || _twitterSearchResultContrainer.length == 0) return;

    if (keyword != null && keyword != undefined) _twitterSearchKeyword = keyword;

    var url = "http://search.twitter.com/search.json?result_type=recent&lang=en&locale=ja&callback=?&q=" + encodeURI(_twitterSearchKeyword);
    if (_twitterSearchResultCount != null) url = url + "&rpp=" + _twitterSearchResultCount;
    if (_twitterSearchLastItemId != null) url = url + "&since_id=" + _twitterSearchLastItemId;

    if (template != null && template != undefined) _twitterSearchResultTemplate = template;

    $.getJSON(url, function (data) {
        var lastId = null;
        var ph = null;
        var added = 0;
        if (_twitterSearchResultContrainer.children().length > 0) ph = _twitterSearchResultContrainer.children(":first");
        $.each(data.results, function (i, item) {
            var c = MergeTwitterSearchResult(item, _twitterSearchResultTemplate);
            if (lastId == null) {
                _twitterSearchLastItemId = item.id_str;
                lastId = _twitterSearchLastItemId;
            }
            added++;
            if (ph == null) {
                _twitterSearchResultContrainer.append(c);
            }
            else {
                ph.before(c);
                ph.prev().hide().addClass("po-twitter-newitem");
            }
        });

        if (added > 0) {

            $(".po-twitter-newitem").each(function () {
                $(this).removeClass("po-twitter-newitem").slideDown("slow");
            });

            while (_twitterSearchResultContrainer.children().length > _twitterSearchResultCount) {
                _twitterSearchResultContrainer.children(":last").remove();
            }
        }

        if (_twitterSearchPostFunc != null) {
            _twitterSearchPostFunc();
        }
    });

    if (_twitterSearchResultRecursive != null && _twitterSearchResultRecursive > 1000) {
        window.setTimeout("SearchTwitter()", _twitterSearchResultRecursive);
    }
}

function MergeTwitterSearchResult(item, template) {
    var c = template;
    c = c.replace(/(\[)Twitter.From(\])/g, item.from_user);
    c = c.replace(/(\[)Twitter.ProfileImg(\])/g, item.profile_image_url);
    c = c.replace(/(\[)Twitter.Text(\])/g, item.text);
    c = c.replace(/(\[)Twitter.CreatedOn(\])/g, item.created_at);
    c = c.replace(/(\[)Twitter.ItemId(\])/g, item.id_str);
    return c;
}

function OpenTwitter(o) {
    window.opne("Twitter", "http://twitter.com/#!/" + o.attr("uid"));
}
