﻿var account_a = "TKC2012_";
var id_a = "#twitter_text";
var view_cnt = 10;

	function gettkcTweets(){
		getTweets(account_a);
	}

	// アカウントの取得
	function getTweets(screen_name){
		var param = null;
		getTweetsByScreenName(screen_name, view_cnt, onGetJexerTweets, 1, param);
	}
	

	// 
	function onGetJexerTweets(data, status, xhr){
		if ((data == null ||
			data.length <= 0)){
			// 新しいツイートなし。
		}else if(data.error != null){
			// 取得エラー
		}else{
			var tweets_html = "";
			var is_a = false;
			$.each(data , function(i, replace){
				if(i==0 && replace.user.screen_name == account_a) is_a = true;
				tweets_html += prepareJexerTweet(replace.user.screen_name, replace.text, replace.id_str, replace.created_at);
			})
			var target_id = is_a ? id_a : id_b;
			$(target_id).html(tweets_html);
											$('.scroll-pane').jScrollPane();

		}
	}

	// prepare Jexer Tweet
	function prepareJexerTweet(screen_name, tweet_text, tweet_id, created){
		var prepared_tweet = "";
		prepared_tweet = '<li>';
		prepared_tweet += makeTwitterLink(tweet_text);
		prepared_tweet += "<a class=\"link\" href=\"http://twitter.com/" + screen_name + "/status/" +tweet_id + "\" target=\"_blank\">";
		prepared_tweet += "<br><span class=\"time\">（"+ relativeTimeForTimeline(created) +"）</span>";
		prepared_tweet += "</a>";
        prepared_tweet += "</li>";

		return prepared_tweet;
	}

//---------------------- common -----------------------//

	// prepare one Tweet
	function prepareTweet(profile_image_url, user_name, user_tweet, created){
		var prepared_tweet = "";
		prepared_tweet += "<li><a href=\"http://twitter.com/" + user_name + "\"><img src=../../../common/js/\""+ profile_image_url +"\" width=\"48\" height=\"48\" /></a>";
		prepared_tweet += "<span><a href=\"http://twitter.com/" + user_name + "\">" + user_name +"</a></span> ";
		prepared_tweet += user_tweet
			.replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&\'()*+,;=%]+)/ig,'<span><a href="../../../common/js/$1">$1</a></span>')
			.replace(/@+([_A-Za-z0-9-]+)/ig, '<a href="http://twitter.com/$1">@$1</a>')
			.replace(/#+([_A-Za-z0-9-]+)/ig, '<span><b><a href="http://search.twitter.com/search?q=$1">#$1</a></b></span>');
		prepared_tweet += "<br><span class=\"time\">（"+ relative_timeline(created) +"）</span>";
		prepared_tweet += "</li>";

		return prepared_tweet;
	}

	//Local NGWord設定
	function checkNGLocal(from, text){
		var ret = true;
		for(var i = 0; i < rObj.length; i++){
			if(text.match(rObj[i])) ret = false;
		}
		for(var i = 0; i < ngaccounts.length; i++){
			if(from.match(ngaccounts[i])) ret = false;
		}
		for(var i = 0; i < rExceptObj.length; i++){
			if(text.match(rExceptObj[i])) ret = true;
		}
		return ret;
	}

	
	// キーワードを指定してtweet取得
	function getTweetsByQuery(query, cnt, param, callback, page){
		if (page != undefined) {
			page = 1;
		}
		query=(encodeURI(query)).replace('#', '%23');
		
		var tweeturl = "http://search.twitter.com/search.json?q="+ query + (param ? '&' + param : '') + "&page="+ page +"&callback=?&rpp=" + cnt;
		$.getJSON(tweeturl, callback);
	}
	
	// screen_nameを指定してtweet取得
	function getTweetsByScreenName(screen_name, cnt, callback, page, param){
		var tweeturl = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name="+ screen_name + (param ? '&' + param : '') + "&page=" + page +"&callback=?&count=" + cnt;
		$.getJSON(tweeturl, callback);
	}
	
	// local php より list 取得
	function getTweetsByListLocal( target_url, callback ){
		$.getJSON(target_url, callback);
	}
	
	// list を指定してtweet取得
	function getTweetsByList(screen_name, list_name, cnt, callback, page, param){
		var tweeturl = "http://api.twitter.com/1/"+ screen_name + "/lists/" + list_name + "/statuses.json?page=" + page +"&par_page=" + cnt + (param ? '&' + param : '');
		$.getJSON(tweeturl, callback);
	}

	//NGワード && NGアカウント
	function checkNG(from, text){
		var ret = true;

		//NG accounts
		for(var i = 0; i < ngaccountsCommon.length; i++){
			if(from.match(ngaccountsCommon[i])){
				ret = false;
			}
		}

		//NG words
		for(var i = 0; i < rObjsCommon.length; i++){
			if(text.search(rObjsCommon[i]) != -1){
				ret = false;
			}
		}
		return ret;
	}

	function relativeTimeForTimeline(time_value) {
		arr = time_value.split(" ");
		// 投稿日時変換 "Mon Dec 01 14:24:26 +0000 2008" -> "Dec 01, 2008 14:24:26"
		var post_date = arr[1] + " "
					+ arr[2] + ", "
					+ arr[5] + " "
					+ arr[3];
		
		// 日時データ処理
		var date = new Date(post_date);     // 日付文字列 -> オブジェクト変換
		date.setHours(date.getHours() + 9); // UTC -> JST (+9時間)
		return relative_time(date.getTime());
	}

	function relativeTimeForSearch(time_value) {
		if(time_value == '1'){
			return '10秒以内前';
		}
		else{
			var parsed_date = Date.parse(time_value);
			return relative_time(parsed_date);
		}
	}
	
	function relative_time(timestamp){
		var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
		var delta = parseInt((relative_to.getTime() - timestamp) / 1000);
		if (delta < 60) {
			return '1分前';
		}
		else if (delta < 120) {
			return '2分前';
		}
		else if (delta < (45 * 60)) {
			return (parseInt(delta / 60)).toString() + '分前';
		}
		else if (delta < (90 * 60)) {
			return '1時間前';
		}
		else if (delta < (24 * 60 * 60)) {
			return (parseInt(delta / 3600)).toString() + '時間前' //' hours ago';
		}
		else if (delta < (48 * 60 * 60)) {
			return '1日前' //'1 day ago';
		}
		else {
			return (parseInt(delta / 86400)).toString() + '日前' //' days ago';
		}
		return "10秒前以内";
	}

	// get from search_api and view
	function getTweetsByQueryCommon(query, tweet_view_cnt, page){
		if(page == '1'){tweets_html="";}
		var tweeturl = "http://search.twitter.com/search.json?q=%23"+ query +"&page="+ page +"&callback=?&rpp=" + tweet_view_cnt;

		$.getJSON(tweeturl, function(data){
			$.each(data.results , function(i, replace){
				if(checkNG(replace.from_user, replace.text)){
					tweets_html += prepareTweetCommon(replace.profile_image_url, replace.from_user, replace.text, replace.created_at);
				}
			})
			$("#twitter_text").html(tweets_html);
		});
	}

	// prepare one Tweet
	function prepareTweetCommon(profile_image_url, user_name, user_tweet, created){
		var prepared_tweet = "";
		prepared_tweet += "<li><a href=\"http://twitter.com/" + user_name + "\"><img src=../../../common/js/\""+ profile_image_url +"\" width=\"48\" height=\"48\" /></a>";
		prepared_tweet += "<span><a href=\"http://twitter.com/" + user_name + "\">" + user_name +"</a></span> ";
		prepared_tweet += makeTwitterLink(user_tweet);
		prepared_tweet += "<span class=\"time\">（"+ relative_time(created) +"）</span>";
		prepared_tweet += "</li>";

		return prepared_tweet;
	}

	// make twitter link
	function makeTwitterLink(tweet_text){
		return tweet_text.replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&\'()*+,;=%]+)/ig,'<span><a href="../../../common/js/$1" target="_blank">$1</a></span>')
			.replace(/@+([_A-Za-z0-9-]+)/ig, '<a href="http://twitter.com/$1" target="_blank">@$1</a>')
			.replace(/#+([_A-Za-z0-9-]+)/ig, '<span><b><a href="http://search.twitter.com/search?q=$1" target="_blank">#$1</a></b></span>');
	}
