var tickers = new Array();
var PRE_IMAGE = "<img src=\"/images/common/ticker_icon.gif\" alt=\"\" width=\"27\" height=\"24\" /> ";
var bgFlag = 0;
var counter = 0;
var loadingCounter = 0;
var MAX_INDENT = 920;
var min_indent = -920;
var indent;
var complete = false;

//ティッカーを表示する
function setTicker(){
	min_indent = (-1) * (27 + getByte(tickers[counter]) * 8);
	$("ticker_text").innerHTML = PRE_IMAGE + tickers[counter];
	indent = MAX_INDENT;
	$("ticker_text").style.textIndent = indent + "px";
	counter = (counter + 1) % tickers.length;
	moveTicker();
}

function getByte(str){
	var byte_count = 0;
	for (i=0; i<str.length; i++){
		n = escape(str.charAt(i));
		if(n.length < 4) byte_count++;
		else byte_count+=2;
	}
	return byte_count;
}

function moveTicker(){
	indent -= 2;
	$("ticker_text").style.textIndent = indent + "px";
	if(indent <= min_indent){
		setTicker();
	}else{
		setTimeout("moveTicker()", 20);
	}
}

//PHPからティッカーのデータをJSON形式で取得する
function getTickers(){
	var url = "/ticker";
	new Ajax.Request(url, {
		onLoading: function(transport){
			loadingMsg();
		},
		onSuccess: function(transport){
			complete = true;
			try{
				tickers = transport.responseText.evalJSON();
				if(tickers.length == 0) tickers = new Array("（参照可能なデータがありません）");
				setTicker();
			}catch(e){
				$("ticker_text").innerHTML = "（データの取得に失敗しました）";
			}
		}});
}

//ローディングメッセージを表示する
function loadingMsg(){
	if(complete) return;
	var msg = "データ取得中";
	for(var i = 0; i < loadingCounter; i++){
		msg += "．";
	}
	loadingCounter = (loadingCounter + 1) % 4;
	$("ticker_text").innerHTML = msg;
	setTimeout("loadingMsg()", 300);
}

Event.observe(window, "load", getTickers, false);
