//====================================================================
// テーブル処理用ライブラリ jslb_writetable.js
//
// 最新情報 http://jsgt.org/mt/archives/01/000414.html 
// 上記コメント削除不可。商用利用、改造、自由。連絡不要です。
// 


var module='test1.php';
//var module='http://192.168.0.154/kinba/test1.php';

var tableId1 = 'tbl1'; //結果テーブルの出力場所
var tableId2 = 'tbl2'; //配当テーブルの出力場所
var tbTitle1 = 'title1';//テーブルのタイトル出力
var tbTitle2 = 'title2';//テーブルのタイトル出力

var dayAry=new Array();//日付の一覧データ
var dataAry1=new Array();//結果データの格納領域
var dataAry2=new Array();//配当データの格納領域

var selplace;//選択された場所(ex."京都")
var selplaceno;//選択された場所コード
var selrace=1;//選択されたレース
var selday;//選択された日にち
var seldata;//選択されたデータ
var fileno;

// 競馬場コードの定義
var areaAry = new Array(0);
areaAry[0] = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // コード
areaAry[1] = new Array("札幌", "函館", "福島", "新潟", "東京", "中山", "中京", "京都", "阪神", "小倉"); // 地域名


//インジケータインスタンス
var indi = new jsgt_Indicator('./img/indicator.white.gif') ;

//リクエスト送信
function setData()
{
	//Ajax送信と同時にインジケータ開始
	indi.indi_start();
	document.getElementById('indicatstr').firstChild.nodeValue='読み込み中...';

	filename='&fn=data/file';
	sendRequest(onloadedday,filename,'POST',module,false,true);

	filename='&fn=data/'+selday+'/K_'+fileno;
	sendRequest(onloaded1,filename,'POST',module,true,true);

	filename='&fn=data/'+selday+'/H';
	sendRequest(onloaded2,filename,'POST',module,true,true);

	//インジケータ停止
	indi.indi_stop();
	document.getElementById('indicatstr').firstChild.nodeValue='　';
}

//日付データ受信時処理
function onloadedday(res)
{
	var row=new Array();
	var resdata = res.responseText;

	//デコード
	var textdata= decodeURIComponent(resdata)
//dayAry = textdata.split('\r').join('').split('\n')

	row = textdata.split('\r').join('').split('\n')

	//行の処理
	for (i=0; i<row.length; i++) {
		dayAry[i] = new Array();
		dayAry[i] = row[i].split(',')
	}
	

	//最新データの各項目を設定(最初の予想コード=0)
	for (i=0; i<dayAry.length; i++){
		if(dayAry[i][2]==0){break;}
	}
	seldata=i;//最新データの最初の競馬場を設定
	selday=dayAry[seldata][0];
	selplaceno=1;
	selplace=dayAry[seldata][3];

	//file名用に変換
	for (i=0; i<10; i++){
		if(areaAry[1][i]==selplace){break;}
	}
	fileno=areaAry[0][i];

}

//結果データ受信時処理
function onloaded1(res)
{
	var row=new Array();
	var resdata = res.responseText;

	if(!resdata){
		document.getElementById(tbTitle1).firstChild.nodeValue='データがありません';
		return;
	}

	//デコード
	var textdata= decodeURIComponent(resdata)
	row = textdata.split('\r').join('').split('\n')

	if(!!dataAry1){
		delete dataAry1;
		dataAry1=new Array();
	}


	//行の処理
	for (i=0; i<row.length; i++) {
		dataAry1[i] = new Array();
		dataAry1[i] = row[i].split(',')
	}

	if(!dataAry1)return;

	selplace = dayAry[seldata][selplaceno+2];

	//テーブル書き出し
	writeTable1(1);

	//1Rボタンをactive
	document.getElementById('rc1').className='active';

	//1R以外のボタンを非active
	var btnname;
	for (i=2; i<13; i++){
		btnname='rc'+i;
		document.getElementById(btnname).className='';
	}

}


//配当データ受信時処理
function onloaded2(res)
{
	var row=new Array();
	var resdata = res.responseText;

	//デコード
	var textdata= decodeURIComponent(resdata)
	row = textdata.split('\r').join('').split('\n')

	//領域クリア
	if(!!dataAry2){
		delete dataAry2;
		dataAry2=new Array();
	}

	//領域にデータを格納
	for (i=0; i<row.length; i++) {
		dataAry2[i] = new Array();
		dataAry2[i] = row[i].split(',')
	}

	//テーブル書き出し
	 writeTable2(1)
}


// 対象テーブル削除
function removeTable(tableId){
	if (tbl = document.getElementById(tableId)) { 
		while(tbl.lastChild){
  		tbl.removeChild(tbl.lastChild);
		}
	}
}


// テーブル書き出し
function writeTable1(nowrace)
{

	//引数があれば下記を実行
	if(!writeTable1.arguments[0]){
		document.getElementById(tbTitle1).firstChild.nodeValue='レース結果データがありません';
		return;
	}

	//前のボタンのactive解除
	var btnname='rc'+selrace;
	document.getElementById(btnname).className='';

	//新しいボタンのactive解除
	btnname='rc'+nowrace;
	document.getElementById(btnname).className='active';

	selrace=nowrace;

	removeTable(tableId1); //テーブル削除

	if(!dataAry1)return;

	var table, tbody, tr, td, text, i ,j; // ローカル変数
	var row = dataAry1.length; // テーブルデータ行数
	var col; // テーブルデータ列数
	var mydoc = document; // documentオブジェクト

	//tableとtbody要素を生成
	table = mydoc.createElement("TABLE")
	tbody = mydoc.createElement("TBODY")

	//tableへtbody要素を挿入しさらに出力用DIVへ挿入
	table.insertBefore(tbody, null)
	document.getElementById(tableId1).insertBefore(table, null)

	var wflg=0;
	var	cnt=0;

	//行の処理
	for (i=0; i<row; i++) {
		col = dataAry1[0].length;

		wflg = 0; 
		if (i==0) wflg=1; //タイトル行
		if (dataAry1[i][0]==selrace) wflg=1; //抽出
		
		if (wflg==1){
	
		//列の処理
			tr = mydoc.createElement("TR");
			tbody.insertBefore(tr, null);

			for (j=1; j<col; j++) {
				td	 = mydoc.createElement("TD");
				tr.insertBefore(td, null);

				if(j==1 && dataAry1[i][j]>90){
						text = mydoc.createTextNode('-');
				}else{
						text = mydoc.createTextNode(dataAry1[i][j]);
				}
				if(i!=0 && j==9){
					if(dataAry1[i][j]==1){text = mydoc.createTextNode('◎');}
					if(dataAry1[i][j]==2){text = mydoc.createTextNode('○');}
					if(dataAry1[i][j]==3){text = mydoc.createTextNode('▲');}
					if(dataAry1[i][j]==4){text = mydoc.createTextNode('×');}
					if(dataAry1[i][j]==5){text = mydoc.createTextNode('△');}
					if(dataAry1[i][j]==6){text = mydoc.createTextNode('△');}
					if(dataAry1[i][j]<7){td.insertBefore(text, null);}
				}else{
					td.insertBefore(text, null);
				}
				//見出しセル(1列目と1行目)に関するCSS用class名を設定
				var className=(typeof ScriptEngine=='function')?'className':'class';
				// 2列目 (成績)
				if(j==10)td.setAttribute(className,'col1');
				if(j<4)td.setAttribute(className,'col0');
				if(j==8)td.setAttribute(className,'col0');
				if(i==0)td.setAttribute(className,'row0');
				if(j==2){
					if(dataAry1[i][1]==1)td.setAttribute(className,'redcol');
					if(dataAry1[i][1]==2)td.setAttribute(className,'orengecol');
					if(dataAry1[i][1]==3)td.setAttribute(className,'yellowcol');
				}
				if(j==3){
					if(dataAry1[i][1]==1)td.setAttribute(className,'bluecol');
					if(dataAry1[i][1]==2)td.setAttribute(className,'bluecol');
				}
			}
			cnt++;
		}
	}

}


// 配当テーブル書き出し
function writeTable2(raceno)
{
	if(!dataAry2)return;

	var rcd, rcd1;

	//データサーチ
	for(rcd=0; rcd<dataAry2.length; rcd++){
		if(dataAry2[rcd][0]==selplace){
			rcd1=rcd;
			if (dataAry2[rcd][1]==raceno) break;
		}
	}	
	//データが無い場合
	if(rcd>=dataAry2.length)	return;

	//タイトル１
	var month = new String(selday);
	var tuki = eval(month.substr(month.length-4,2));
	var hi=selday%100;
	
	var areatext = tuki+'月'+hi+'日 '+selplace+'競馬場 レース結果';
	document.getElementById(tbTitle1).firstChild.nodeValue=areatext;


	//タイトル２
	var baba;
	if (dataAry2[rcd][6]==0){baba='芝';}
	else {baba='ダート';}

	var cond;
	if (dataAry2[rcd][9]==1)cond='良';
	if (dataAry2[rcd][9]==2)cond='稍';
	if (dataAry2[rcd][9]==3)cond='重';
	if (dataAry2[rcd][9]==4)cond='不良';

	var nod; 
	var prm;

	nod=document.getElementById('title2');
	nod.firstChild.firstChild.nodeValue='　'+raceno+'R　';

	text='　'+parseInt(dataAry2[rcd][4]/100)+':'+dataAry2[rcd][4].slice(-2)+'出走　'+dataAry2[rcd][5]+'  '+baba+dataAry2[rcd][7]+'m  '+dataAry2[rcd][8]+'頭立　馬場状態：'+cond;
	nod.lastChild.nodeValue=text;

	//配当テーブル書き出し
//	var className=(typeof ScriptEngine=='function')?'className':'class';

	//着順と色テーブル
	var lank=new Array();
	for(i=0; i<5; i++){
		lank[i]=new Array();
		lank[i][0]=dataAry2[rcd][i+10];
	}

	lank[0][1]='reds'; //1着
	lank[1][1]='oranges'; //2着
	lank[2][1]='yellows'; //3着
	lank[3][1]='yellows'; //4着(念のため)
	lank[4][1]='yellows';//5着(念のため)

	//イレギュラーの場合
	var flg1=0; //1着が2頭の時：1, 2着が2頭の時：2, 3着が2頭の時：3 

	if(dataAry2[rcd][16]!=0){ 	//単勝が2個（1着が2頭 3着なし）
		flg1=1;
		lank[1][1]='reds';
		lank[2][1]='yellows';
		lank[3][1]='yellows';
	}

	if(dataAry2[rcd][26]!=0){ 	//枠連が2個（1着1頭/2着が2頭/3着なし)
		flg1=2;
		lank[2][1]='oranges';
	}
	
	if(dataAry2[rcd][20]!=0){ 	//複勝が4個（3着が2頭)
		flg1=3;
	}

	//単勝
	removeTable('tansho');
	nod=document.getElementById('tansho');
	nod.appendChild(createSpan(lank[0][0], lank[0][1]));
	nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][15]+'　'));

	if(dataAry2[rcd][16]!=0){//1着が2頭の場合
		nod.appendChild(document.createElement("br"));
		nod.appendChild(createSpan(lank[1][0], lank[1][1]));
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][16]+'　'));
	}

	//複勝
	removeTable('hukusho');
	nod=document.getElementById('hukusho');
	
	for(i=0; i<3; i++){
		nod.appendChild(createSpan(lank[i][0], lank[i][1]));
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][i+17]+'　'));
	}
	if(dataAry2[rcd][20]!=0){ //3着同着
		nod.appendChild(document.createElement("br"));
		nod.appendChild(createSpan(lank[i][0], lank[i][1]));
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][20]+'　'));
	}

	//枠連
	removeTable('waku');
	nod=document.getElementById('waku');

	if(dataAry2[rcd][23]!=0){//枠連がある場合
		nod.appendChild(createSpan(dataAry2[rcd][21],'blues'));
		nod.appendChild(document.createTextNode(' '));
		nod.appendChild(createSpan(dataAry2[rcd][22],'blues'));
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][23]+'　'));
	}

	if(dataAry2[rcd][25]!=0){//2着同着の場合
		nod.appendChild(document.createElement("br"));
		nod.appendChild(createSpan(dataAry2[rcd][24],'blues'));
		nod.appendChild(document.createTextNode(' '));
		nod.appendChild(createSpan(dataAry2[rcd][25],'blues'));
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][26]+'　'));
	}

	//馬連
	removeTable('uma');
	nod=document.getElementById('uma');
	
	nod.appendChild(createSpan(lank[0][0],lank[0][1]));
	prm=(eval(lank[0][0])>eval(lank[1][0]))? nod.firstChild : null;
	nod.insertBefore(createSpan(lank[1][0],lank[1][1]),prm);
	nod.insertBefore(document.createTextNode(' '), nod.childNodes[1]);
	nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][27]+'　'));

	if(dataAry2[rcd][28]!=0){//2着同着の場合
		nod.appendChild(document.createElement("br"));
		nod.appendChild(createSpan(lank[0][0], lank[0][1]));
		prm=(eval(lank[0][0])>eval(lank[2][0]))? nod.childNodes[4] : null;
		nod.insertBefore(createSpan(lank[2][0],lank[2][1]),prm);
		nod.insertBefore(document.createTextNode(' '), nod.childNodes[5]);
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][28]+'　'));
	}

	//ワイド
	removeTable('wide');
	nod=document.getElementById('wide');
	var cnt=(flg1==3)?  4 : 3;
	var sel=29;
	for(i=0; i<2; i++){
		for(j=i+1; j<cnt; j++){
				var ele=document.createElement("span");
				ele.appendChild(createSpan(lank[i][0],lank[i][1]));
				prm=(eval(lank[i][0])>eval(lank[j][0]))? ele.firstChild : null;
				ele.insertBefore(createSpan(lank[j][0],lank[j][1]),prm);
				ele.insertBefore(document.createTextNode(' '),ele.childNodes[1]);
				ele.appendChild(document.createTextNode(' \\'+dataAry2[rcd][sel]+'　'));				nod.appendChild(ele);	
				sel++;
		
		}
	}

	//馬単
	removeTable('umatan');
	nod=document.getElementById('umatan');
	nod.appendChild(createSpan(lank[0][0],lank[0][1]));

	if(dataAry2[rcd][35]!=0){//同着の場合
		if(flg1==1){ //1着同着
			nod.insertBefore(document.createTextNode('-'), null);
			nod.insertBefore(createSpan(lank[2][0],lank[2][1]),null);
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][34]+'　'));

			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
		}
		if(flg1==2){
			nod.insertBefore(document.createTextNode('-'), null);
			nod.insertBefore(createSpan(lank[1][0],lank[1][1]),null);
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][34]+'　'));

			nod.appendChild(createSpan(lank[0][0],lank[0][1]));
		}
		nod.insertBefore(document.createTextNode('-'), null);
		nod.insertBefore(createSpan(lank[2][0],lank[2][1]),null);
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][35]+'　'));
		
	}else{//同着なし
		nod.insertBefore(document.createTextNode('-'), null);
		nod.insertBefore(createSpan(lank[1][0],lank[1][1]),null);
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][34]+'　'));
	}

	//３連複
	removeTable('sanren');
	nod=document.getElementById('sanren');

	nod.appendChild(createSpan(lank[0][0],lank[0][1]));
	prm=(eval(lank[0][0])>eval(lank[1][0]))? nod.firstChild :null;
	nod.insertBefore(createSpan(lank[1][0],lank[1][1]),prm);

	if(eval(nod.firstChild.firstChild.nodeValue)>eval(lank[2][0])){
		prm=nod.firstChild;
	}else{ 
		if(eval(nod.childNodes[1].firstChild.nodeValue)>eval(lank[2][0])){
			prm=nod.childNodes[1]
		}else{
			prm=null;
		}
	}

	nod.insertBefore(createSpan(lank[2][0],lank[2][1]),prm);
	nod.insertBefore(document.createTextNode(' '), nod.childNodes[1]);
	nod.insertBefore(document.createTextNode(' '), nod.childNodes[3]);
	nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][36]+'　'));
	if(dataAry2[rcd][37]!=0){//3着同着
		nod.appendChild(createSpan(lank[0][0],lank[0][1]));
		prm=(eval(lank[0][0])>eval(lank[1][0]))? nod.childNodes[6] : null;
		nod.insertBefore(createSpan(lank[1][0],lank[1][1]),prm);
		nod.insertBefore(document.createTextNode(' '), nod.childNodes[7]);
		
		prm=(eval(lank[1][0])>eval(lank[3][0]))? nod.childNodes[7] : null;
		prm=(eval(lank[0][0])>eval(lank[3][0]))? nod.childNodes[6] : null;
		nod.insertBefore(createSpan(lank[3][0],lank[3][1]),prm);
		nod.insertBefore(document.createTextNode(' '), nod.childNodes[7]);
		nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][37]+'　'));
	}


//３連単
	removeTable('santan');

	if(dataAry2[rcd][38]!=0){
		nod=document.getElementById('santan');

		nod.appendChild(createSpan(lank[0][0],lank[0][1]));
		nod.appendChild(document.createTextNode('-'));

		if(flg1==0){
			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[2][0],lank[2][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][38]+'　'));
		}

		if(flg1==1){
			nod.appendChild(createSpan(lank[2][0],lank[2][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[3][0],lank[3][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][38]+'　'));

			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[2][0],lank[2][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[3][0],lank[3][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][39]+'　'));
		}

		if(flg1==2){
			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[3][0],lank[3][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][38]+'　'));

			nod.appendChild(createSpan(lank[0][0],lank[0][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[2][0],lank[2][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[3][0],lank[3][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][39]+'　'));
		}

		if(flg1==3){
			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[2][0],lank[2][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][38]+'　'));

			nod.appendChild(createSpan(lank[0][0],lank[0][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[1][0],lank[1][1]));
			nod.appendChild(document.createTextNode('-'));
			nod.appendChild(createSpan(lank[3][0],lank[3][1]));
			nod.appendChild(document.createTextNode(' \\'+dataAry2[rcd][39]+'　'));
		}
	}	

}

function writeTable(nowrace)
{
	writeTable1(nowrace);
	writeTable2(nowrace);
}



function onareaclick(dayno, areano)
{
	//同じだったらreturn
　if(selday==dayno && selplaceno==areano)return;

	//インジケータ開始
	indi.indi_start();
	document.getElementById('indicatstr').firstChild.nodeValue='読み込み中...';

	//前のボタンのactive解除
//	var btnname='btn'+selplaceno;
//	document.getElementById(btnname).className='';

	selplaceno=areano;

	//違う日のデータを読み込み
	if(selday!=dayno){

		//入力日を設定
		selday=dayno;

		//日付テーブルで何番目か検索
		for(i=0; dayAry.length; i++){
			if(dayAry[i][0]==selday) break;
		}
		seldata=i;
		selplace = dayAry[seldata][areano+2];

		//ボタンを作る処理
		var ul, li, text, idt;

		//配当データアクセス
		filename='&fn=data/'+selday+'/H';
		sendRequest(onloaded2,filename,'POST',module,false,true);

	}

	//同じ日で違う場所だったら
	selplace = dayAry[seldata][areano+2];

	//結果データアクセス
	//file名用に変換
	for (i=0; i<10; i++){
		if(areaAry[1][i]==selplace){break;}
	}
	fileno=areaAry[0][i];

	filename='&fn=data/'+selday+'/K_'+fileno;
	sendRequest(onloaded1,filename,'POST',module,false,true);

	//配当テーブル書き出し
	writeTable2(1);

	//新しいボタンのactive設定
//	var btnname='btn'+areano;
//	document.getElementById(btnname).className='active';

	//インジケータ停止
	indi.indi_stop();
	document.getElementById('indicatstr').firstChild.nodeValue='　';
}

function createSpan(text, color) {

	var ele;
	var className=(typeof ScriptEngine=='function')?'className':'class';

	ele=document.createElement("span");
	ele.setAttribute(className, color);
	ele.appendChild(document.createTextNode(text));

	return ele;
}
