/*
	fxstadium.js
	taichistereo 2010
	（・ω・）
*/

var maxInput = 105;
// var jjj;
function postTweet() {
	if (document.getElementById("inputlength").innerHTML == maxInput) {
		alert("内容が空です");
	} else if (document.getElementById("inputlength").innerHTML >= 0) {
		
		// 投稿ボタンを隠す
		$("a#postBtn").css('display','none');
		// ダミーボタンを表示
		$("a#dammyBtn").css('display','inline');
		
		
		// document.getElementById('tweetTextarea').value
		$.post("/post", { tweet: document.getElementById('tweetTextarea').value },
			function(data){
				// alert("投稿しました " + data);
				
				// 投稿ボタンを表示
				document.getElementById('tweetTextarea').value = '';
				document.getElementById("inputlength").innerHTML = maxInput;
				$("a#postBtn").css('display','inline');
				// ダミーボタンを隠す
				$("a#dammyBtn").css('display','none');
				
				// TLを更新
				$.timer(500, function (timerAfterPost) {
					renderNewTw(0,timer);
					timerAfterPost.stop();
					// alert('renew');
				});
			}
		);
	} else {
		alert("文字数がオーバーしています");
	}
}


function showLength( str, cnt ) {
	comlen = cnt - str.length;
	/*
	if (comlen > 0 ) {
		document.getElementById("inputlength").innerHTML = '<span class="plus">' + comlen + "</span>";
	} else {
		document.getElementById("inputlength").innerHTML = '<span class="minus">' + comlen + "</span>";
	}
	*/
	document.getElementById("inputlength").innerHTML = comlen;
}


/* vars
///////////////////////////////////////////////////////////////////////////////////////// */
var arr_tags = new Array('#FXjp');

var initial_amount = 20;

var isSetInitialStuck = true;
var isUseHtmlStuck = false;
var onImg = "resources/templates/img/bt_pause.gif";
var offImg = "resources/templates/img/bt_play.gif";
var arr_tweet = new Array();
var last_timestamp = new Array();
// タイマー関連
var timer_ms_1st = 2000; // 一番最初のタイマー
var timer_ms = 1000; // タイマー値（これが上書きされる）
var timer_ms_max = 10000; // これ以上は増えない
var timer_ms_increase = 0; // 増分
var timer;
var timerAfterPost;


/* main
///////////////////////////////////////////////////////////////////////////////////////// */
$(function(){
	arr_tweet = [];
	// 初期表示用のツイートを取得
	for (j=0; j<=(arr_tags.length-1); j=j+1) {
		// この欄のキーワード
		var key = arr_tags[j];
		var _type = getType(key);
		key = key.substr(1,key.length-1);
		// ツイートを取得
		// alert(key+'/'+_type+'/');
		getTw(j, initial_amount, key, _type, true);
	}
	
	document.getElementById("inputlength").innerHTML = maxInput;
	
	/*
	$("ul:eq(0)").prepend('<li>AAA</li>');
	$("ul:eq(0) li:eq(0)").css('display','block');
	$("ul:eq(0) li:eq(0)").hide();
	$("ul:eq(0) li:eq(0)").fadeIn("slow");
	*/
	/*
	// ボタンを設定
	$(".bt_pp").hide();
	$(".bt_pp").click(function () {
		if ($(this).attr('src')==onImg) {
			$(this).attr({
				src: offImg
			});
			// arr_tweet = [];
			$(this).parent().parent().parent().css("background-color","#BDECD5");
		} else {
			$(this).attr({
				src: onImg
			});
			// arr_tweet = [];
			$(this).parent().parent().parent().css("background-color","#E3C2EC");
			// alert("まだ開発中です。ごめんなさい！");
		}
	});
	*/
});


/* methods
///////////////////////////////////////////////////////////////////////////////////////// */

function getTw(p_col, p_rpp, p_key, p_type, p_isIncOld) {
	if (!p_isIncOld) {
		// 新しいものだけ
		// alert(p_col); 
	}
	// alert(p_col+'/'+p_rpp+'/'+p_key+'/'+p_type+'/'+p_isIncOld);
	arr_tweet[p_col] = new Array();
	var url = '';
	if (p_type=='tag') {
		url = 'http://search.twitter.com/search.json?q=%23'+p_key+'&lang=ja&page=1&rpp='+p_rpp+'&callback=?';
	} else {
		url = 'http://search.twitter.com/search.json?q=%40'+p_key+'&lang=ja&page=1&rpp='+p_rpp+'&callback=?';
	}
	$.getJSON(url, function(json) {
		
		// alert(json["results"].length-1);
		
		for (ii=json["results"].length-1; ii>=0; ii--) {
			json["results"][ii].text = z2h_word(json["results"][ii].text);
			json['results'][ii].timestamp = getTimestamp(json['results'][ii].created_at);
			json['results'][ii].created_at = convCreatedAt(json['results'][ii].timestamp);
			if (!p_isIncOld) {
				// 新しいものだけ格納
				if (json['results'][ii].timestamp >　last_timestamp[p_col]) {
					arr_tweet[p_col].unshift(json["results"][ii]);
					last_timestamp[p_col] = json['results'][ii].timestamp; // 上書きされて最後のタイムスタンプだけが残る
				}
				// alert( json['results'][ii].timestamp );
			} else {
				// 日時に関わりなく格納
				arr_tweet[p_col].unshift(json["results"][ii]);
				last_timestamp[p_col] = json['results'][ii].timestamp; // 上書きされて最後のタイムスタンプだけが残る
			}
		}
	});
	// alert('length='+arr_tweet[p_col].length);
}

function getType(p_key) {
	var _type = '';
	if (p_key.substr(0,1)=='#') {
		_type = 'tag';
	} else {
		_type = 'account';
	}
	// alert(p_key);
	return _type;
}

function convJSON2tag(P) {
	return '<li><a href="http://twitter.com/'+P.from_user+'" target="_blank"><img alt="Dock_normal" src="'+P.profile_image_url+'" /></a><p>'+P.text+'<span class="screenName">@<a href="http://twitter.com/'+P.from_user+'" target="_blank">'+toA(P.from_user)+'</a> '+P.created_at+'</span></p></li>';
}

function toA(P) {
	P = P.replace(/http(s)?:\/\/[\w-]?/, '<a href="$1">$1</a>');
	return P;
}

function z2h_word(P) {
	P = P.replace(/([Ａ-Ｚａ-ｚ０-９＿＠])/g,
		function ($0){
			return String.fromCharCode($0.charCodeAt(0)-65248);
		});
	return P.replace(/　/g,'');
}


function showTw(p_col,p_isFadeIn) {
	// alert(p_col);
	$("ul:eq("+p_col+")").prepend(convJSON2tag(arr_tweet[p_col].pop()));
	$("ul:eq("+p_col+") li:eq(0)").css('display','block');
	if (p_isFadeIn) {
		$("ul:eq("+p_col+") li:eq(0)").hide();
		$("ul:eq("+p_col+") li:eq(0)").fadeIn("slow");
	}
}

function renderNewTw(p_col,timer) {
	
	// なければとってくる
	if (arr_tweet[p_col].length==0) {
		// この欄のキーワード
		var key = arr_tags[p_col];
		var _type = getType(key);
		key = key.substr(1,key.length-1);
		// alert(key);
		
		// $(".bt_pp").show();
		timer_ms = timer_ms_max;
		// if ( $("#bt_pp_"+p_col).attr('src')==onImg ) {
			getTw(p_col, 10, key, _type, false);
		// }
		timer.reset(timer_ms);
	}
	// あれば表示
	if (arr_tweet[p_col].length>0) showTw(p_col,true);
}



/* 
///////////////////////////////////////////////////////////////////////////////////////// */
var def = 14; // 15個なのはハッシュタグ検索結果だけ？
var i = 0;
$.timer(timer_ms_1st, function (timer) {
	if (isSetInitialStuck) {
		for (j=0; j<arr_tweet.length; j=j+1) {
			// if (arr_tweet[j].length>0) {
			if (arr_tweet[j].length>0) {
				max = arr_tweet[j].length;
				for (jj=0; jj<max; jj=jj+1) {
					showTw(0,false);
				}
				isSetInitialStuck = false;
				timer_ms = timer_ms_max;
				timer.reset(timer_ms);
			}
		}
	} else {
		if ( ((def-i)>=0) && (isUseHtmlStuck) ) {
			/*
			// 初期
			for (j=1; j<=($("ul").length-1); j=j+1) {
				$("ul:eq("+j+") li:eq("+(def-i)+")").css('display','block');
				$("ul:eq("+j+") li:eq("+(def-i)+")").hide();
				$("ul:eq("+j+") li:eq("+(def-i)+")").fadeIn("slow");
			}
			*/
			i = i+1;
		} else {
			// $(".bt_pp").show();
			// alert('初期ロット終了');
			
			if(timer_ms_max >= timer_ms) {
				timer_ms = timer_ms + timer_ms_increase;
			}
			
			timer.reset(timer_ms);
			// timer.stop();
			/*
			for (j=0; j<=($("ul").length); j=j+1) {
				// 再生ONの列だけ処理
				// if ( $("#bt_pp_"+j).attr('src')==onImg ) {
					renderNewTw(j);
				// }
			}
			*/
			renderNewTw(0,timer);
		}
	}
});





/* scroll (OLD FASHION)
///////////////////////////////////////////////////////////////////////////////////////// */

var speed = 5; // スクロールのスピード（1に近いほど速く）
var move = 100; // スクロールのなめらかさ（1に近いほどなめらかに）

// 初期化
var x = 0;
var y = 0;
var nx = 0;
var ny = 0;

function scroll() {
	window.scrollBy(-move, 0); // スクロール処理
	var rep = setTimeout("scroll()", speed);
	// スクロール位置をチェック（IE用）
	if(document.all){
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	// スクロール位置をチェック（NN用）
	else if(document.layers || document.getElementById){
		x = pageXOffset;
		y = pageYOffset;
	}
	if(nx == x && ny == y){ // スクロールし終わっていたら処理を終了
		clearTimeout(rep);
	}
	else{
		nx = x;
		ny = y;
	}
}




function convCreatedAt(timestamp){
	var created = new Date();
	created.setTime(timestamp);

	var now = new Date();
	var t = now.getTime() - created.getTime();

	t = Math.floor(t/1000);
	/*
	if(t<86400){
		if(t < 3600){
			if(t < 60){
				return t + "秒前 ";
			}else{
				return Math.floor(t/60) + "分前 ";
			}
		}else{
			return '約'+Math.floor(t/3600) + "時間前 ";
		}
	}
	*/

	var d = new Date();
	var month = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	var minutes = created.getMinutes();
	if(minutes < 10){minutes = '0'+minutes.toString();}
	t = created.getHours()+':'+minutes+' ';
	t+= (12 <= created.getHours()) ? 'PM ':'AM ';
	t+= month[created.getMonth()]+' ';
	t+= created.getDate()+'th';
	if(now.getFullYear() != created.getFullYear()){
		t += ", "+created.getFullYear();
	}

	return t;
}


function getTimestamp(created_at){
	var twtime = created_at; //'Tue, 10 Nov 2009 03:25:47 +0000';
	twtime = twtime.replace(/^(.*?), /,"");
	twtime = twtime.replace(/ \+(.*?)$/,"");
	twtime = twtime.replace(/^(.*?) (.*?) /,"$1 $2 ");

	var created = new Date(twtime);
	return created.getTime() + 32400000;
}

