/*
 * other_info.js - 他球場情報 表示用スクリプト
 */

// キャッシュ対策用タイムスタンプ
var set_date = new Date();
var set_time = Date.parse(set_date).toString();
var set_param = '?' + set_time.substring(0, 10);

/*** Script Start  ***/
// OnLoad Function (Main)
WriteOtherInfo = function () {
	// XML URL Path
	var url = "/other.xml" + set_param;
	// Parse Each XMLs
	var http = new JKL.ParseXML(url);
	var func = "";

	// 他球場情報
	func = function(data){
		if(!isEmpty(data.other_game_result)){ displayOtherInfo(data.other_game_result) };
	}
	http.async(func);
	http.parse();
}

// functions
/**
 * 他球場情報表示用関数 displayOtherInfo
 */
function displayOtherInfo(data_node){
	var i, j;
	var type;
	var str = '';
	
	// データ種類判別
	type = DistinctionType(data_node);
	// HTML作成
	if(!isEmpty(type)){
		var pageurl = location.href;

		// 日付判定
		var date_flag = false;
		if(!isEmpty(data_node.gameDate)    &&
		   (data_node.gameDate=='７月23日' ||
		    data_node.gameDate=='７月24日' ||
		    data_node.gameDate=='７月25日' ||
		    data_node.gameDate=='７月26日')
		){
			date_flag = true;
		}

		if(date_flag){
			str += '<div class="other">';
			str += '<h3 class="info">' + data_node.gameDate + 'の試合情報</h3>';
		}else{
			str += '<div class="other">';

			// リアルタイム速報の場合、ヘッダを切り替える
			if(pageurl.indexOf('realtime')!=-1){
				str += '<h3><span class="alt">他球場情報</span></h3>';
			}else{
				str += '<h3></h3>';
			}
		}
		str += '<div class="orange">';
		str += '<div class="bg">';
		// 交流戦
		if(type=='exchange'){
			var exchange_data = data_node.exchange;
			exchange_data = exchange_data.substring(4, exchange_data.length);
			var exchange_dataValue = exchange_data.split('、');
			str += setExchangeHTML(exchange_dataValue, type);
		// オールスター
		}else if(type=='allstar'){
			str += '<table>';
			str += '<tr><th scope="col" class="pl" colspan="2">マツダオールスターゲーム</th></tr>';
			var allstar_data = data_node.allstar;
			allstar_data = allstar_data.substring(8, allstar_data.length);
			str += '<tr><td class="pl">' + allstar_data + '</td></tr>';
			str += '</table>';
		// フレッシュオールスター
		}else if(type=='freshallstar'){
			str += '<table>';
			str += '<tr><th scope="col" class="pl" colspan="2">フレッシュオールスター</th></tr>';
			var freshallstar_data = data_node.freshallstar;
			freshallstar_data = freshallstar_data.substring(13, freshallstar_data.length);
			str += '<tr><td class="pl">' + freshallstar_data + '</td></tr>';
			str += '</table>';
		// オールスター+フレッシュオールスター
		}else if(type=='mixallstar'){
			str += '<table>';
			str += '<tr><th scope="col" class="cl">オールスター</th><th scope="col" class="pl">Fオールスター</th></tr>';
			var allstar_data = data_node.allstar;
			allstar_data = allstar_data.substring(8, allstar_data.length);
			str += '<tr><td class="cl">' + allstar_data + '</td>';
			var freshallstar_data = data_node.freshallstar;
			freshallstar_data = freshallstar_data.substring(13, freshallstar_data.length);
			str += '<td class="pl">' + freshallstar_data + '</td></tr>';
			str += '</table>';
		// オープン戦、公式戦＋オープン戦の場合
		}else if(type.indexOf('open') != -1){
			var open_data = data_node.open;
			var open_dataValue = open_data.split('、');
			
			if(type=='open'){
				str += setExchangeHTML(open_dataValue, type);
			}else if(type=='mixopen1'){
				var central_data = data_node.central;
				central_data = central_data.substring(3, central_data.length);
				var central_dataValue = central_data.split('、');
				str += setOpenHTML(central_dataValue, open_dataValue, type);
			}else if(type=='mixopen2'){
				var pacific_data = data_node.pacific;
				pacific_data = pacific_data.substring(3, pacific_data.length);
				var pacific_dataValue = pacific_data.split('、');
				str += setOpenHTML(pacific_dataValue, open_dataValue, type);
			}
		// 公式戦
		}else{
			// セ・リーグ公式戦 データ取得
			if(type == 'official_all' || type == 'mix_oc1' || type == 'central'){
				var central_data = data_node.central;
				central_data = central_data.substring(3, central_data.length);
				var central_dataValue = central_data.split('、');
			}
			// パ・リーグ公式戦 データ取得
			if(type == 'official_all' || type == 'mix_oc2' || type == 'pacific'){
				var pacific_data = data_node.pacific;
				pacific_data = pacific_data.substring(3, pacific_data.length);
				var pacific_dataValue = pacific_data.split('、');
			}
			// セ・リーグクライマックスシリーズ データ取得
			if(type == 'crimax_all' || type == 'mix_oc2' || type == 'crimax_central'){
				var central_data = data_node.central;
				central_data = central_data.substring(11, central_data.length);
				var central_dataValue = central_data.split('、');
			}
			// パ・リーグクライマックスシリーズ データ取得
			if(type == 'crimax_all' || type == 'mix_oc1' || type == 'crimax_pacific'){
				var pacific_data = data_node.pacific;
				pacific_data = pacific_data.substring(11, pacific_data.length);
				var pacific_dataValue = pacific_data.split('、');
			}
			// HTML設定
			str += setOfficialHTML(central_dataValue, pacific_dataValue);
		}
		str += '</div></div></div>';
	}
	// HTML書き込み(div id='other_info')
	var element = document.getElementById('other_info');
	if(element){ document.getElementById('other_info').innerHTML = str };
}

/**
 * 入力データタイプ判別用関数 DistinctionType
 */
function DistinctionType(data_node){
	var type;
	var flag1 = false;
	var flag2 = false;
	var flag3 = false;
	var flag4 = false;
	
	// 交流戦
	if(!isEmpty(data_node.exchange)){
		type = 'exchange';
	// オールスター
	}else if(!isEmpty(data_node.allstar)){
		type = 'allstar';
		// フレッシュオールスターがあるかどうか
		if(!isEmpty(data_node.freshallstar)){
			type = 'mixallstar';
		}else{
			type = 'allstar';
		}
	// フレッシュオールスター
	}else if(!isEmpty(data_node.freshallstar)){
		if(!isEmpty(data_node.central)){
			type = 'official_all';
		}else if(!isEmpty(data_node.pacific)){
			type = 'official_all';
		}else{
			type = 'freshallstar';
		}
		type = 'freshallstar';
	// オープン戦
	}else if(!isEmpty(data_node.open)){
		// セ・公式戦があるかどうか（クライマックスは送られないものとする）
		if(!isEmpty(data_node.central)){
			type = 'mixopen1';
		// パ・公式戦があるかどうか（クライマックスは送られないものとする）
		}else if(!isEmpty(data_node.pacific)){
			type = 'mixopen2';
		}else{
			type = 'open';
		}
	}
	// セ・リーグ
	if(!isEmpty(data_node.central)){
		if(data_node.central.substring(0,1) == 'セ'){
			flag1 = true;
		}else{
			flag2 = true;
		}
	}
	// パ・リーグ
	if(!isEmpty(data_node.pacific)){
		if(data_node.pacific.substring(0,1) == 'パ'){
			flag3 = true;
		}else{
			flag4 = true;
		}
	}
	// セ・パ公式戦種類判別
	if(isEmpty(type) || type.indexOf('mixopen') == -1){
		if(flag1){
			if(flag3){
				type = 'official_all';
			}else if(flag4){
				type = 'mix_oc1';
			}else{
				type = 'central';
			}
		}else if(flag2){
			if(flag3){
				type = 'mix_oc2';
			}else if(flag4){
				type = 'crimax_all';
			}else{
				type = 'crimax_central';
			}
		}else if(flag3){
			type = 'pacific';
		}else if(flag4){
			type = 'crimax_pacific';
		}
	}
	return type;
}

/**
 * 公式戦テーブル用HTML設定用関数 setOfficialHTML
 */
function setOfficialHTML(leftValue, rightValue){
	var str = '';
	str += '<table>';
	str += '<tr>';
	str += '<th scope="col" class="cl">セ・リーグ</th>';
	str += '<th scope="col" class="pl">パ・リーグ</th>';
	str += '</tr>';
	
	str += '<tr>';
	// セ・リーグ
	str += '<td class="cl">';
	if(isEmpty(leftValue)){
		//str += '<center>本日の試合は<br />ございません。</center>';
	}else{
		for(i=0;i<leftValue.length;i++){
			str += leftValue[i];
			if(i!=leftValue.length-1){ str += '<br />' };
		}
	}
	str += '</td>';
	
	// パ・リーグ
	str += '<td class="pl">';
	if(isEmpty(rightValue)){
		//str += '<center>本日の試合は<br />ございません。</center>';
	}else{
		for(j=0;j<rightValue.length;j++){
			str += rightValue[j];
			if(j!=rightValue.length-1){ str += '<br />' };
		}
	}
	str += '</td>';
	
	str += '</tr></table>';
	return str;
}

/**
 * 交流戦＋オープン戦テーブル用HTML設定用関数 setExchangeHTML
 */
function setExchangeHTML(dataValue, type){
	var str = '';
	str += '<table><tr>';
	if(type=='exchange'){
		str += '<th scope="col" class="pl" colspan="2">交流戦</th>';
	}else if(type=='open'){
		str += '<th scope="col" class="pl" colspan="2">オープン戦</th>';
	}
	str += '</tr>';
	
	str += '<tr>';
	for(i=0;i<dataValue.length;i++){
		if(i==0 && dataValue.length > 3){
			str += '<td class="cl">';
		}else if((i==0 && dataValue.length <= 3) || i==3){
			str += '<td class="pl">';
		}
		str += dataValue[i];
		if(i!=dataValue.length-1 && i!=2){
			str += '<br />';
		}else if(i==dataValue.length-1 || i==2){
			str += '</td>';
		}
	}
	str += '</tr></table>';
	return str;
}

/**
 * （オープン戦＋公式戦）混合テーブル用HTML設定用関数 setOpenHTML
 */
function setOpenHTML(leftValue, rightValue, type){
	var str = '';
	str += '<table><tr>';
	if(type=='mixopen1'){
		str += '<th scope="col" class="cl">セ・リーグ</th>';
	}else if(type=='mixopen2'){
		str += '<th scope="col" class="cl">パ・リーグ</th>';
	}
	str += '<th scope="col" class="pl">オープン戦</th>';
	str += '</tr>';
	
	str += '<tr>';
	str += '<td class="cl">';
	for(i=0;i<leftValue.length;i++){
		str += leftValue[i];
		if(i!=leftValue.length-1){ str += '<br />' };
	}
	str += '</td>';
	
	str += '<td class="pl">';
	for(j=0;j<rightValue.length;j++){
		str += rightValue[j];
		if(j!=rightValue.length-1){ str += '<br />' };
	}
	str += '</td>';
	str += '</tr></table>';
	return str;
}

/**
 * 空判定
 */
function isEmpty(obj){ return (obj == null || obj == undefined || obj == '')? true: false; }
