var TimeTable=new function(){
var up_file="data/timetable_up.tsv";
var down_file="data/timetable_down.tsv";
var UpData=new Array();
var DownData=new Array();
this.schedule=function(e){
TimeTable.loading();
var selected_station=$("station").options[$("station").selectedIndex].value;
if(UpData.length==0) UpData=TSVtoArray(ajax.get(up_file));
if(DownData.length==0) DownData=TSVtoArray(ajax.get(down_file));
for(var i=0;i<=28;i++){
if(UpData[0][i]==selected_station){
var key=i;
break;
}
}
var html='<h2>'+selected_station+'駅の時刻表</h2>';
html+='<h3>上り</h3>';
html+='<table border="0" cellspacing="1" cellpadding="2" class="timetable1" id="s_up"><colgroup><col align="center" class="g1" /><col class="g2" /><col align="center" class="g3" /><col class="g2" /><col align="center" class="g1" /></colgroup><thead><tr><td>接続</td><td>始発</td><td><strong>'+selected_station+'</strong></td><td>終着</td><td>接続</td></tr></thead><tbody>';
for(var i=1;i<UpData.length;i++){
if(UpData[i][key]!=""){
var first;
var end;
for(var j=0;j<=28;j++){
if(UpData[i][j]!=""){
first=j;
break;
}
}
for(var j=28;j>=0;j--){
if(UpData[i][j]!=""){
end=j;
break;
}
}
if(UpData[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
if(first==0&&UpData[i][31]!=""){
html+='<td style="text-align:center;"><a href="#" onclick="TimeTable.infobox('+"'up"+"','"+i+"','"+31+"'"+');return false">★</a></td>';
}else{
html+='<td>&nbsp;</td>';
}
if(first==key){
html+='<td>&nbsp;</td>';
html+='<td style="text-align:center;">'+UpData[i][key]+' <em>発</em></td>';
html+='<td style="text-align:right;padding-right:20px;">'+UpData[0][end]+' '+UpData[i][end]+' 着</td>';
}else if(end==key){
html+='<td style="text-align:right;padding-right:20px;">'+UpData[0][first]+' '+UpData[i][first]+' 発</td>';
html+='<td style="text-align:center;">'+UpData[i][key]+' <em>着</em></td>';
html+='<td>&nbsp;</td>';
}else{
html+='<td style="text-align:right;padding-right:20px;">'+UpData[0][first]+' '+UpData[i][first]+' 発</td>';
html+='<td style="text-align:center;">'+UpData[i][key]+' 発</td>';
html+='<td style="text-align:right;padding-right:20px;">'+UpData[0][end]+' '+UpData[i][end]+' 着</td>';
}
if(end==28&&UpData[i][32]!=""){
html+='<td style="text-align:center;"><a href="#" onclick="TimeTable.infobox('+"'up"+"','"+i+"','"+32+"'"+');return false">★</a></td>';
}else{
html+='<td>&nbsp;</td>';
}
html+='</tr>';
}
}
html+='</tbody></table>';
for(var i=0;i<=28;i++){
if(DownData[0][i]==selected_station){
key=i;
break;
}
}
html+='<h3>下り</h3>';
html+='<table border="0" cellspacing="1" cellpadding="2" class="timetable1" id="s_down"><colgroup><col align="center" class="g1" /><col class="g2" /><col align="center" class="g3" /><col class="g2" /><col align="center" class="g1" /></colgroup><thead><tr><td>接続</td><td>始発</td><td><strong>'+selected_station+'</strong></td><td>終着</td><td>接続</td></tr></thead><tbody>';
for(var i=1;i<DownData.length;i++){
if(DownData[i][key]!=""){
var first;
var end;
for(var j=0;j<=28;j++){
if(DownData[i][j]!=""){
first=j;
break;
}
}
for(var j=28;j>=0;j--){
if(DownData[i][j]!=""){
end=j;
break;
}
}
if(DownData[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
if(first==0&&UpData[i][31]!=""){
html+='<td style="text-align:center;"><a href="#" onclick="TimeTable.infobox('+"'down"+"','"+i+"','"+31+"'"+');return false">★</a></td>';
}else{
html+='<td>&nbsp;</td>';
}
if(first==key){
html+='<td>&nbsp;</td>';
html+='<td style="text-align:center;">'+DownData[i][key]+' <em>発</em></td>';
html+='<td style="text-align:right;padding-right:20px;">'+DownData[0][end]+' '+DownData[i][end]+' 着</td>';
}else if(end==key){
html+='<td style="text-align:right;padding-right:20px;">'+DownData[0][first]+' '+DownData[i][first]+' 発</td>';
html+='<td style="text-align:center;">'+DownData[i][key]+' <em>着</em></td>';
html+='<td>&nbsp;</td>';
}else{
html+='<td style="text-align:right;padding-right:20px;">'+DownData[0][first]+' '+DownData[i][first]+' 発</td>';
html+='<td style="text-align:center;">'+DownData[i][key]+' 発</td>';
html+='<td style="text-align:right;padding-right:20px;">'+DownData[0][end]+' '+DownData[i][end]+' 着</td>';
}
if(end==28&&UpData[i][32]!=""){
html+='<td style="text-align:center;"><a href="#" onclick="TimeTable.infobox('+"'down"+"','"+i+"','"+32+"'"+');return false">★</a></td>';
}else{
html+='<td>&nbsp;</td>';
}
html+='</tr>';
}
}
html+='</tbody></table><div class="notice"><p>表示の説明</p><p>赤字は「急行もりよし号」です。</p><p>始発駅、終着駅では「<span>着</span>」「<span>発</span>」が青色で示されています。</p><p>始発駅、終着駅が鷹巣または角館の場合、ＪＲ接続列車の情報があります。「<a href="#" onclick="return false">★</a>」をクリックしてください。</p></div>';
$("result").innerHTML=html;
}
this.transfer=function(){
var dep_num=$("departure").selectedIndex;
var arr_num=$("arrival").selectedIndex;
var selected_departure=$("departure").options[dep_num].value;
var selected_arrival=$("arrival").options[arr_num].value;
var which=dep_num-arr_num;
if(which>0){
if(UpData.length==0) UpData=TSVtoArray(ajax.get(up_file));
var Data=UpData;
var it="up";
}else if(which<0){
if(DownData.length==0) DownData=TSVtoArray(ajax.get(down_file));
var Data=DownData;
var it="down";
}else{
var Data=null;
}
if(Data){
for(var i=0;i<=28;i++){
if(Data[0][i]=="阿仁合"){
var Ani=i;
break;
}
}
for(var i=0;i<=28;i++){
if(Data[0][i]==selected_departure){
var dep_key=i;
}else if(Data[0][i]==selected_arrival){
var arr_key=i;
}
}
if((dep_key>Ani&&arr_key>Ani)||(dep_key<Ani&&arr_key<Ani)||(dep_key==Ani||arr_key==Ani)){
var html='<table cellspacing="1" cellpadding="2" class="timetable2"><thead>';
html+='<tr><td>'+Data[0][dep_key]+'</td><td>&nbsp;</td><td>'+Data[0][arr_key]+'</td></tr></thead><tbody>'
for(var i=1;i<Data.length;i++){
if(Data[i][dep_key]!=""&&Data[i][arr_key]!=""){
for(var j=28;j>=0;j--){
if(Data[i][j]!=""){
end=j;
break;
}
}
if(Data[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
if(dep_key==0&&Data[i][31]!==""){
html+='<td>'+Data[i][dep_key]+' 発 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+31+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][dep_key]+' 発</td>';
}
html+='<td>→</td>';
if(arr_key==end){
if(arr_key==28&&Data[i][32]!==""){
html+='<td>'+Data[i][arr_key]+' 着 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+32+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][arr_key]+' 着</td>';
}
}else if(arr_key==Ani){
html+='<td>'+Data[i][29]+' 着</td>';
}else{
html+='<td>'+Data[i][arr_key]+' <em>着</em></td>';
}
html+='</tr>';
}
}
html+='</tbody></table>';
}else{
var html='<table cellspacing="1" cellpadding="2" class="timetable2"><thead>';
html+='<tr><td>'+Data[0][dep_key]+'</td><td>&nbsp;</td><td>阿仁合 着</td><td>阿仁合 発</td><td>&nbsp;</td><td>'+Data[0][arr_key]+'</td></tr></thead><tbody>'
for(var i=1;i<Data.length;i++){
if(Data[i][dep_key]!=""||Data[i][arr_key]){
for(var j=28;j>=0;j--){
if(Data[i][j]!=""){
end=j;
break;
}
}
if(Data[i][dep_key]!=""&&Data[i][arr_key]!=""){
if(Data[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
if(dep_key==0&&Data[i][31]!==""){
html+='<td>'+Data[i][dep_key]+' 発 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+31+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][dep_key]+' 発</td>';
}
html+='<td>→</td>';
html+='<td>'+Data[i][29]+'</td>';
html+='<td>'+Data[i][Ani]+'</td>';
html+='<td>→</td>';
if(arr_key==end){
if(arr_key==28&&Data[i][32]!==""){
html+='<td>'+Data[i][arr_key]+' 着 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+32+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][arr_key]+' 着</td>';
}
}else{
html+='<td>'+Data[i][arr_key]+' <em>着</em></td>';
}
html+='</tr>';
}else if(Data[i][dep_key]!=""&&Data[i][Ani]!=""){
var cnt=0;
for(j=i;j<Data.length;j++){
if(Data[j][Ani]!=""&&Data[j][arr_key]!=""){
cnt++;
}
}
if(cnt>0){
if(Data[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
if(dep_key==0&&Data[i][31]!==""){
html+='<td>'+Data[i][dep_key]+' 発 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+31+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][dep_key]+' 発</td>';
}
html+='<td>→</td>';
if(Data[i][29]!=""){
html+='<td>'+Data[i][29]+'</td>';
}else{
html+='<td>'+Data[i][Ani]+'</td>';
}
html+='<td>&nbsp;</td>';
html+='<td>&nbsp;</td>';
html+='<td>&nbsp;</td>';
html+='</tr>';
}
}else if(Data[i][Ani]!=""&&Data[i][arr_key]!=""){
var cnt=0;
for(j=1;j<i;j++){
if(Data[j][dep_key]!=""&&Data[j][Ani]!=""){
cnt++;
}
}
if(cnt>0){
if(Data[i][30]=="E"){
html+='<tr style="color:red;">';
}else{
html+='<tr>';
}
html+='<td>&nbsp;</td>';
html+='<td>&nbsp;</td>';
html+='<td>&nbsp;</td>';
html+='<td>'+Data[i][Ani]+'</td>';
html+='<td>→</td>';
if(arr_key==end){
if(arr_key==28&&Data[i][32]!==""){
html+='<td>'+Data[i][arr_key]+' 着 <a href="#" onclick="TimeTable.infobox('+"'"+it+"','"+i+"','"+32+"'"+');return false">★</a></td>';
}else{
html+='<td>'+Data[i][arr_key]+' 着</td>';
}
}else{
html+='<td>'+Data[i][arr_key]+' <em>着</em></td>';
}
html+='</tr>';
}
}
}
}
html+='</tbody></table>';
}
html+='<div class="notice"><p>表示の説明</p><p>赤字は「急行もりよし号」です。</p><p>下車駅で青色の「<span>着</span>」で表示されている時刻は、その駅の出発時刻になります。到着時刻とは若干のズレがある場合もあります。</p><p>乗車駅、下車駅が鷹巣または角館の場合、ＪＲ接続列車の情報があります。「<a href="#" onclick="return false">★</a>」をクリックしてください。</p></div>';
$("result").innerHTML=html;
}
}
this.infobox=function(a,b,c){
if(a&&b&&c){
if(UpData.length==0) UpData=TSVtoArray(ajax.get(up_file));
if(DownData.length==0) DownData=TSVtoArray(ajax.get(down_file));
if(a=="up"){
var info=UpData[b][c].split(",");
}else{
var info=DownData[b][c].split(",");
}
var text='<div><a href="#" onclick="TimeTable.infobox();return false;">閉じる</a></div>';
for(var i=0;i<info.length;i++){
text+="<p>・"+info[i]+"</p>";
}

var c=document.createElement("div");
with(c.style){
backgroundColor="#ffffff";
width=450+"px";
height=150+"px";
position="absolute";
textAlign="left";
zIndex="201";
overflow="auto";
border="3px #888 double";
top=Math.round(scroll_size().y+window_size().h/2-150/2)+"px";
left=Math.round(scroll_size().x+window_size().w/2-450/2)+"px";
}
c.innerHTML=text;
c.setAttribute("id", "info_box");
document.body.appendChild(c);
}else{
if($("info_box")) document.body.removeChild($("info_box"));
}
}
this.tab=function(a,b,c,d){
$(a).style.display = "block";
$(b).style.display = "none";
$(c).style.backgroundColor="#efd";
$(c).style.borderWidth="1px 0px 0px 1px";
$(d).style.backgroundColor="#ad7";
$(d).style.borderWidth="1px 0px 1px 1px";
}
this.loading=function(){
$("result").innerHTML='<div id="loading"><img src="images/loading.gif" alt="読込み中..." /></div>';
}
}