/* ティッカー */

var idTimeout1; //-- タイムアウト指定時のID1
var idTimeout2; //-- タイムアウト指定時のID2

var disp_msg = new Array();

function addMsg(addstring) {
	disp_msg.push(addstring);
}

function getObj(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
		this.style = document.layers[name];
	}
}

function startTicker(id, speed, delay){
	
	//-- 外枠
	var scroller = new getObj(id);
	scroller.style.position = "relative";
	scroller.style.overflow = "hidden";
	
	//-- 表示文字列の配列の要素名をランダムに取得
	var msg_rand = Math.floor(Math.random() * disp_msg.length);	
	scroller.obj.innerHTML = "<div id=\"" + id + "_inner\">" + disp_msg[msg_rand] + "</div>";
	
	//-- 内枠(div)[id . _inner]
	var inner = new getObj(id + "_inner");
	inner.style.position = "absolute";
	inner.style.left     = parseInt(scroller.style.width) + "px";
	inner.style.top      = parseInt(scroller.style.height) + "px";
	
	//-- Firefox仕様
	fxpatch = navigator.userAgent.indexOf("Firefox") > -1 ? " left: -9000px;" : ""; // Firefox different CSS (on every other browser since IE5+ isn't needed)
	
	//-- 内枠と外枠の間に中枠(span)を配置
	spanContent = "<span id=\"" + id + "_widthEval\" style=\"visibility: hidden; position: absolute; top: -100px; left: -1px; z-index: -10; white-space: nowrap;" + fxpatch + "\"><nobr>" + inner.obj.innerHTML + "</nobr></span>";
	if (document.createElement) {
		var span = document.createElement('span');
		span.innerHTML = spanContent;
		scroller.obj.appendChild(span);
	} else {
		document.write(spanContent);
	}
	
	//-- 中枠(span)
	var widthEval = new getObj(id + "_widthEval");
	inner.style.top = "0px";
	inner.style.whiteSpace = "nowrap";
	inner.style.width = widthEval.obj.offsetWidth + "px";
	
	clearTimeout(idTimeout2);
	idTimeout1 = setTimeout("scrollTicker(\"" + id + "\", " + speed + ", " + delay + ")", parseInt(speed));
}

function scrollTicker(id, speed, delay){

	if (document.getElementById) {
		//-- 外枠
		var scroller = new getObj(id);
		//-- 内枠
		var inner    = new getObj(id + "_inner");
		
		//-- エラー回避
		if (!inner.style.left) inner.style.left = "0px";
		
		if (parseInt(inner.style.left) <= 0) {
			//-- 表示文字列の初期化
			clearTimeout(idTimeout1);
			idTimeout2 = setTimeout("startTicker(\"" + id + "\", " + speed + ", " + delay + ")", parseInt(delay));
			
		} else if (!scroller.obj.pause || scroller.obj.pause == false) {
			
			var now_left = parseInt(inner.style.left);
			var minus = 1;
			
			//-- 動きの速度調整はこちら
			if (now_left > 400) {
				minus = 30;
			} else if (now_left > 300) {
				minus = 25;
			} else if (now_left > 200) {
				minus = 15;
			} else if (now_left > 100) {
				minus = 10;
			} else if (now_left > 40) {
				minus = 6;
			} else if (now_left > 20) {
				minus = 3;
			} else if (now_left > 10) {
				minus = 2;
			}
			
			inner.style.left = (now_left - minus) + "px";
			
			clearTimeout(idTimeout2);
			idTimeout1 = setTimeout("scrollTicker(\"" + id + "\", " + speed + ", " + delay + ")", parseInt(speed));
		}
	}
}

