// headlineB.js (タイプライター風) //

// DOM対応ブラウザ判別
if (document.getElementById) {
	// スタイルシート読み込み
	document.write("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"css/headlines.css\">");
	// ウインドウの読み込み完了時に関数initHeadlines()を実行
	window.onload = initHeadlines;
}

// 初期設定
function initHeadlines() {
	// "headlines"が見つからない場合は初期設定を行わず戻る
	if (!document.getElementById("headlines")) return;

	// 変数の初期化
	act = 0;		// 表示中のリスト項目No.
	wait = 3; 		// 一時停止時間　(秒)
	charNum = 0;	// 文字番号
	pause = 0;		// 一時停止状態フラグ (1:停止、0:再開)

	// li要素を配列listItemsに格納
	listItems = document.getElementById("headlines").getElementsByTagName("li");
	listLength = listItems.length;
	
	// リスト項目の内容のみ配列化
	tempText = new Array();	
	for (i=0; i<listLength; i++){
		tempText[i] = (listItems[i].firstChild.tagName == "A") ? listItems[i].firstChild.innerHTML:listItems[i].innerHTML;
		tempText[i] = tempText[i].replace(/^\s+/, "").replace(/\s+$/, "");
	}

	// 関数updateHeadlines()を繰り返し処理する
	setInterval("updateHeadlines()",100);
}

// 繰り返し処理
function updateHeadlines() {
	curs = (Math.ceil(((new Date()).getTime()%500)/250)-1)?"_":""; // 点滅するカーソル設定
	// 一時停止状態でない場合
	if (!pause) {
		// 1文字ずつ表示する
		if (charNum < tempText[act].length) {
			obj = (listItems[act].firstChild && listItems[act].firstChild.tagName == "A") ? listItems[act].firstChild:listItems[act];	
			obj.innerHTML = tempText[act].substr(0,charNum)+curs;
			listItems[act].style.visibility = "visible";
			charNum++;
		}
		// 1行分を表示完了したら一時停止する
		if (charNum == tempText[act].length) {
			pause = 1;
			resetTime = (new Date()).getTime();
		}
	}
	// 一時停止中の場合
	else {
		releaseTime = (new Date()).getTime();
		// 3秒後に一時停止解除する
		if (releaseTime - resetTime > 1000 * wait ) {
			listItems[act].style.visibility= "hidden";
			act = (act+1)%listLength;
			charNum = 0;
			pause = 0;
			resetTime = (new Date()).getTime();
		}
		// 一時停止中もカーソルを点滅させる
		else {
			obj.innerHTML = tempText[act].substr(0,charNum)+curs;
		}
	}
}