var tickers;
var CLASSES = new Array("odd","even");
var bgFlag = 0;
var counter = 0;
var loadingCounter = 0;
var complete = false;

//ティッカー切替時に空白を表示する
function clearTicker(){
	$("ticker_text").innerHTML = "&nbsp;";
	setTimeout("toggleBgcolor()", 300);
	setTimeout("setTicker()", 500);
}

//ティッカーを表示する
function setTicker(){
	$("ticker_text").innerHTML = tickers[counter];
	counter = (counter + 1) % tickers.length;
	setTimeout("clearTicker()", 8000);
}

//単一のティッカーを表示する
function setSingleTicker(){
	$("ticker_text").innerHTML = tickers[0];
}

//背景色を切替える
function toggleBgcolor(){
	Element.removeClassName("ticker_text", CLASSES[bgFlag]);
	bgFlag = Math.abs(bgFlag - 1);
	Element.addClassName("ticker_text", CLASSES[bgFlag])
}

//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("（参照可能なデータがありません）");
				if(tickers.length == 1) setSingleTicker();
				else 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);
}

window.onload = function(){
	getTickers();
}
