﻿/*
 * realTimelink.js - HTML版速報ページリンク設定 表示用スクリプト
 */

// スケジュールXML配置先
var schedule_xmldir    = '/real/data/';
//var schedule_xmldir    = './';
var schedule_xmlheader = 'DailySchedule';

// 速報ページ配置先
var realtime_dir    = '/real/data/';
var realtime_page = 'realTime.html';

// モード確認用XML配置先
var modedata_dir    = '/';

// 巨人軍チームID
var g_teamid = 1;

// キャッシュ対策用タイムスタンプ
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)
GetRealtimePage = function () {
	var url = modedata_dir + 'toppage.xml' + set_param;
	
	// XML解析でエラーが発生した場合処理を終了する
	try{
		var func = "";
		
		displayRealtimePage();
	}catch(e){
		var player = document.all? window['externaltopmain'] : document['externaltopmain'];
		player.setGameId("");

		//alert('404 Not Found "' + url + '"');
	}
}

// functions
/**
 * 速報ページディレクトリ名表示用関数 displayRealtimePage
 */
function displayRealtimePage(){
	var next_limit = 113000;
	// 現在の時刻（HHMMSS）を取得
	var nowstr  = getDateFormatReal(0, '');
	var nowdate = nowstr.substring(0,8);
	var nowtime = nowstr.substring(8,14);
	var searchdate;

	// 11時30分以前の場合、前日のデータを取得
	if(nowtime <= next_limit){
		searchdate = getDateFormatReal(2, 'before');
	}else{
		searchdate = getDateFormatReal(1, 'before');
	}
	var url = schedule_xmldir + schedule_xmlheader + '_' + searchdate.substring(0,8) + '.xml' + set_param;

	// XML解析でエラーが発生した場合処理を終了する
	try{
		// Parse Each XMLs
		var http = new JKL.ParseXML(url);
		var func = "";

		func = function(data){
			var data_dir = '';
			var data_node = data['Baseball']['GameInfo'];
			
			// 試合が0件の場合
			if(isEmpty(data_node)){
				// 処理なし
			// 試合が1件の場合
			}else if(isEmpty(data_node.length)){
				var check_data = new Array(data_node);
				data_dir = getDataInfo(check_data);
			// 試合が2件の場合
			}else{
				data_dir = getDataInfo(data_node);
			}
			var player = document.all? window['externaltopmain'] : document['externaltopmain'];
			if(!isEmpty(data_dir)){
				var str = '';

				// 表示ページをチェックして使用するXMLを使い分ける
				player.setGameId(data_dir);
			}else{
				player.setGameId("");
			}
		};
		http.async(func);
		http.parse();
	}catch(e){
		var player = document.all? window['externaltopmain'] : document['externaltopmain'];
		player.setGameId("");
		//alert('404 Not Found "' + url + '"');
	}
}

/**
 * 速報ページディレクトリ名取得用関数 getDataInfo
 */
function getDataInfo(data_node){
	var i, j;
	var data_dir = '';
	
	for(i=0;i<data_node.length;i++){
		var game_id = parseInt(data_node[i]['GameTypeID'], 10);

		// チーム情報が2件以上であるか
		if(!isEmpty(data_node[i]['TeamInfo'].length)){
			for(j=0;j<data_node[i]['TeamInfo'].length;j++){
				var team_id = parseInt(data_node[i]['TeamInfo'][j]['ID'], 10);

				// ゲームIDのチェック
				if(team_id == g_teamid){
					data_dir = parseInt(data_node[i]['ID'], 10);
				}
			}
		}
	}
	return data_dir;
}


// 共通関数
/**
 * システム日付取得 + フォーマット設定(yyyymmddHHMMSS)用関数
 * 引数(no, point)
 * 1. no	: 対象日からn日
 * 2. point :'before'：n日前、'after'：n日後、''：当日
 */
function getDateFormatReal(no, point){
	var today_date = '';
	var this_date  = new Date();
	
	if(point=='before'){
		this_date.setTime(this_date.getTime() - (24*60*60*1000)*no);
	}else if(point=='after'){
		this_date.setTime(this_date.getTime() + (24*60*60*1000)*no);
	}
	var currentYear   = this_date.getYear();
	currentYear       = (currentYear < 2000) ? currentYear + 1900 : currentYear;
	var currentMonth  = this_date.getMonth() + 1;
	var currentDay    = this_date.getDate();
	var currentHour   = this_date.getHours();
	var currentMinute = this_date.getMinutes();
	var currentSecond = this_date.getSeconds();
	if(currentMonth<10){
		today_date = currentYear + '0' + currentMonth;
	}else{
		today_date = currentYear + currentMonth.toString();
	}
	if(currentDay<10){
		today_date += '0' + currentDay;
	}else{
		today_date += currentDay.toString();
	}
	if(currentHour<10){
		today_date += '0' + currentHour;
	}else{
		today_date += currentHour.toString();
	}
	if(currentMinute<10){
		today_date += '0' + currentMinute;
	}else{
		today_date += currentMinute.toString();
	}
	if(currentSecond<10){
		today_date += '0' + currentSecond;
	}else{
		today_date += currentSecond.toString();
	}
	return today_date;
}

/**
 * 空判定
 */
function isEmpty(obj){ return (obj == null || obj == undefined || obj == '')? true: false; }

