var stockList = new Array();
var lastDate = 0;
var _query;
(function($) {
	$.fn.getTwitter = function(options) {
		var o = $.extend({}, $.fn.getTwitter.defaults, options);
		$(this).hide();
		// add twitter list to container element
		$(this).append('<img src="http://ptic.jp/img/channel/free_side_top.png" /><div class="right_side_free02"><div id="right_side_free02_inner"><span class="CSLimitedTimeLine1">'+options.title+'</span><ul id="twitter_update_list" class="CULimitedTimeLine1 pkg"><!-- /CULimitedTimeLine1 --></ul><!-- /right_side_free02 2divs --></div></div><!-- /right_side_free 2divs -->');
		$(this).show();
		_query = options.query;
		checkSearch();
		var r = setInterval(checkSearch, 30000);
	};

	// plugin defaults
	$.fn.getTwitter.defaults = {
		userName: null,
		numTweets: 5,
		preloaderId: "preloader",
		loaderText: "Loading tweets...",
		slideIn: false,
		showHeading: true,
		headingText: "Latest Tweets",
		showProfileLink: true
	};
})(jQuery);

function checkSearch(){
	var dt = new Date();
	var param = "&" + dt.getUTCMilliseconds();
	$.getJSON('/json/sub_timeline/' + _query + ".json", param, callback);
}

function callback(res) {
	var twitters = res.results;
	for (var i=0; i<twitters.length; i++){
		if(lastDate < twitters[i].timestamp){
			var userimage = twitters[i].profile_image_url;
			var username = twitters[i].from_user;
			var create_at = twitters[i].created_at;
			var status = twitters[i].text;
			var tweetData = new Array();
			tweetData["userimage"] = userimage;
			tweetData["username"] = username;
			tweetData["create_at"] = create_at;
			tweetData["sortKey"] = twitters[i].timestamp;
			tweetData["status"] = status;
			tweetData["id"] = twitters[i].id;
			stockList.push(tweetData);
		}
	}
	addSubList();
}

function addSubList() {
	stockList.sort(function(a, b) {return a["sortKey"]-b["sortKey"]});
	for (var i=0 ; i < stockList.length ; i++){
		if(lastDate < stockList[i]["sortKey"]){
			$('#twitter_update_list').prepend('<li class="CLi1"><p class="CPLt1"><img width="30" height="30" src=' + stockList[i]["userimage"] + ' /><p class="CPRt1">'+stockList[i]["status"]+'<span class="CS1">' + relative_time(stockList[i]["create_at"]) + '</span></p></li>');
			lastDate = stockList[i]["sortKey"];
			if($("#twitter_update_list li").size() >= 10){
				stockList.shift();
				$("#twitter_update_list li:last").remove();
			}
		}
	}
}

function relative_time(time_value) {
	var ts = Date.parse(time_value);
	var sub = ((new Date()).getTime()) - ts;
  delta = sub/1000;
  if (delta < 60) {
    return '約1分以内';
  } else if(delta < 120) {
    return '約2分以内';
  } else if(delta < (60*60)) {
    return '約' + (parseInt(delta / 60)).toString() + '分以内';
  } else if(delta < (120*60)) {
    return '約1時間前';
  } else if(delta < (24*60*60)) {
    return '約' + (parseInt(delta / 3600)).toString() + '時間前';
  } else if(delta < (48*60*60)) {
    return '約1日前';
  } else {
    return '約' + (parseInt(delta / 86400)).toString() + '日前';
  }
}
