/*
 *	住所・駅検索／マイホーム関連
*/

var city_list = new Array(		// プルダウン選択用(数が少ないので直書きに変更)
	{ id: "28101", name: "東灘区"},
	{ id: "28102", name: "灘区"},
	{ id: "28105", name: "兵庫区"},
	{ id: "28106", name: "長田区"},
	{ id: "28107", name: "須磨区"},
	{ id: "28108", name: "垂水区"},
	{ id: "28109", name: "北区"},
	{ id: "28110", name: "中央区"},
	{ id: "28111", name: "西区"}
);
var town_list = new Array();	// プルダウン選択用
var block_list = new Array();	// プルダウン選択用
var new_address_list = {		// 東灘区御影等、現在のジオコーダで対応できない住所の緯度経度
	"28101073001": {lat: 34.720244, lon: 135.250289, comment: "御影１丁目"},
	"28101073002": {lat: 34.722808, lon: 135.251039, comment: "御影２丁目"},
	"28101073003": {lat: 34.721922, lon: 135.247483, comment: "御影３丁目"},
	"28101074001": {lat: 34.720419, lon: 135.254455, comment: "御影郡家１丁目"},
	"28101074002": {lat: 34.723777, lon: 135.254433, comment: "御影郡家２丁目"}
};
var address_list = new Array();	// 複数マッチ選択用
var line_list = new Array(		// 駅検索用
	// ＪＲ西日本
	{ id: "6171", name: "東海道線"},
	{ id: "6605", name: "福知山線"},
	{ id: "6611", name: "山陽線"},
	{ id: "6001", name: "山陽新幹線"},
	// 阪神電鉄
	{ id: "6671", name: "阪神本線"},
	// 阪急電鉄
	{ id: "6664", name: "阪急神戸線"},
	// 山陽電気鉄道
	{ id: "6726", name: "山電本線"},
	// 神戸市営
	{ id: "6733", name: "西神山手線"},
	{ id: "6737", name: "海岸線"},
	// 神戸高速鉄道
	{ id: "6731", name: "神戸東西線"},
	{ id: "6732", name: "神戸南北線"},
	// 神戸新交通
	{ id: "6734", name: "ポトライナ"},
	{ id: "6736", name: "アイランド"},
	// 神戸電鉄
	{ id: "6721", name: "神鉄有馬線"},
	{ id: "6722", name: "神鉄三田線"},
	{ id: "6723", name: "神鉄粟生線"},
	// 北神急行
	{ id: "6735", name: "北神急行"}
);
var station_list = new Array();	// 駅検索用
var station_near_list = new Array();	// 駅近隣検索用
var load_status = new Array();			// 同期用(医療機関検索とも共有)
var search_type = null;	// 表示切替時に設定（search_menu_controler.js参照）

/* 場所を特定、地図表示（住所で検索、駅で検索[一部]） */
function search_address(search_type) {
  var addresscode = null;
  var address = null;
  var zip = null;
  var cookies = null;
  var sta_code = null;
  var from_myhome = false;		// search_type = addresscode2, address2, myhome2 のいずれかの場合にtrue
  if(search_type == "addresscode2" || search_type == "address2" || search_type == "myhome2") {
     from_myhome = true;
  }
  load_status['address'] = 0;	// 初期化

  switch(search_type){
    // 住所プルダウン
    case 'addresscode':
    case 'addresscode2':
      addresscode = document.getElementById('BLOCK_CODE').value;

      // エラーチェック
      if(!addresscode){ alert('住所を選択してください'); return; }

      // 検索実行(御影対応)
      if(addresscode.match(/^2810107[34]/)){
        if(from_myhome) {
            myhome_search_address_callback( new Array( new_address_list[addresscode]));
        } else {
            search_address_callback( new Array( new_address_list[addresscode]));
        }
      } else{
        as.searchByAddressCode(addresscode, from_myhome ? myhome_search_address_callback : search_address_callback);
      }
      break;

    // 住所テキスト Or 郵便番号
    case 'address':
    case 'address2':
      address = document.getElementById('ADDR_TEXT').value;

      // エラーチェック
      if(!address){ alert('住所もしくは郵便番号を入力してください'); return; }
      address = Zen2Han(address);	// 全角数字→半角数字変換

      if(address.match(/[^0-9\-]/)){
         // 「区」の文字があって、「神戸市」の表示がないなら、勝手に追加。(マッチング不明対応)
         // 「兵庫県」から始まっている場合もあるので、「/^神戸市/」の「^」をとりました。
         if(address.match(/区/) && !address.match(/神戸市/)) address = "神戸市" + address;
         // 検索実行（テキスト住所）
         as.searchByAddress(address, from_myhome ? myhome_search_address_callback : search_address_callback);
      } else {
         // 検索実行（郵便番号）
         as.searchByZipCode(address, from_myhome ? myhome_search_address_callback : search_address_callback);
      }
      break;
    
/*
    // 郵便番号
    case 'zip':
      zip = document.getElementById('ZIP_TEXT').value;

      // エラーチェック
      if(!zip){ alert('郵便番号を入力してください'); return; }
      zip = Zen2Han(zip);	// 全角数字→半角数字変換
//      if(!chkZipFmt(zip)){ alert('郵便番号は7桁の数字で入力してください'); return; }

      // 検索実行
      as.searchByZipCode(zip, search_address_callback);
      break;
*/

    // マイホーム（検索は行わず、cookieに登録された緯度経度を取得する。登録されていなければエラー）
    case 'myhome':
    case 'myhome2':
      cookies = getCookie("kobemed");
      if(!cookies.result){ alert('マイホームは登録されていません'); return; }
      if(from_myhome) {
          myhome_search_address_callback( new Array({lat: cookies.lat, lon: cookies.lon}));
      } else {
          search_address_callback( new Array({lat: cookies.lat, lon: cookies.lon}));
      }
      break;
      
    // 駅プルダウン
    case 'station':
      sta_code = document.getElementById('STATION_CODE').value;

      // エラーチェック
      if(!sta_code){ alert('駅名を選択してください'); return; }

      // 検索実行
      ss.searchStationByCode(sta_code, search_address_callback);
      break;

    default:
      break;
  }
  
  // 同期処理。複数マッチ時には配列に格納されたデータを基に<table>を記述するため。
  // これがないと、コールバックの処理を待たずにスクリプトの処理が進んでしまい、うまく動作しない。
  var t = setInterval(
    function(){
      if(load_status['address'] >=1){
        clearInterval(t);
        
        // 複数マッチ時
        if(address_list.length > 0){
        /*
            switch(search_type){
              case 'address': el('addr_list').innerHTML = buildAddrList(); break;	// 住所テキスト
              case 'zip': el('zip_list').innerHTML = buildZipList(); break;		// 郵便番号
            }
        */
          el('addr_list').innerHTML = document.all ? 
            			buildZipList_for_IE(from_myhome) : buildZipList(from_myhome);	// 郵便番号の場合のみ検索結果が複数になる可能性がある
          if(!from_myhome){
            if(search_panel_height() - 360 < el('addr_list').offsetHeight){
              var tbody_height = search_panel_height() - 360 - 37;
              if(tbody_height < 74){
              	tbody_height = 74;
              	el('addr_search_space').style.height = "471px";		// リストが表示されている状態での最低Height
              }
              el('zip_list_tbody').style.height = tbody_height + "px";
            }
          } else {
            // マイホームの方はリストに気がつかない可能性があるので、absoluteで上部出しする。
            //el('addr_list').style.bottom = "0px";
            el('addr_list').style.marginLeft = "5px";
            el('addr_list').style.display = "block";
            //el('addr_list').style.zIndex = 200;
            el('addr_list').style.border = "1px solid gray";
          }

        }
        load_status['address'] = 0;	// フラグをオフ
      }
    }, 1);
}

// 上記検索コールバック
function search_address_callback(result) {
  // 初期化
  address_list = new Array();

  // 検索失敗
  if(result.errors){
   alert( "101:"+result.message);

  // 複数ヒット時
  } else if(result.length > 1) {
    // ヒットした情報を配列として格納
    for(var i = 0; i < result.length; i++){
      address_list.push({	zipcode: result[i].zipcode, 
      						addrText: result[i].prefName + result[i].cityName + result[i].areaName + result[i].koazaChomeName + result[i].banchiGo,
      						lat: result[i].lat, lon: result[i].lon});
    }
    
  // マッチ成功（ただし、マッチレベル不明の場合もあるので、それを除く。）
  } else if(result[0].lat && result[0].lon) {
    display_map({lat: result[0].lat, lon: result[0].lon});
    
  } else {
    alert("指定の場所が見つかりません。");
  }
  load_status['address']++;	// 値が格納されたらフラグが立つ。
}
// マイホーム用に追加。display_map時にスタイル設定を行わない。
function myhome_search_address_callback(result) {
  // 初期化
  address_list = new Array();

  // 検索失敗
  if(result.errors){
   alert( "101_m:"+result.message);

  // 複数ヒット時
  } else if(result.length > 1) {
    // ヒットした情報を配列として格納
    for(var i = 0; i < result.length; i++){
      address_list.push({	zipcode: result[i].zipcode, 
      						addrText: result[i].prefName + result[i].cityName + result[i].areaName + result[i].koazaChomeName + result[i].banchiGo,
      						lat: result[i].lat, lon: result[i].lon});
    }
    
  // マッチ成功（ただし、マッチレベル不明の場合もあるので、それを除く。）
  } else if(result[0].lat && result[0].lon) {
    display_map({lat: result[0].lat, lon: result[0].lon}, true);
    
  } else {
    alert("指定の場所が見つかりません。");
  }
  load_status['address']++;	// 値が格納されたらフラグが立つ。
}

/* 住所リストから選択 */
function get_address_select(mode){

  load_status['addresslist'] = 0;	// 初期化
  
//  var mode = mode ? mode : 'town';
  var citycode = el('CITY_CODE') ? el('CITY_CODE').value : '28101';
  var towncode = el('TOWN_CODE') ? el('TOWN_CODE').value : '';
  var blockcode = el('BLOCK_CODE') ? el('BLOCK_CODE').value : '';
  
  medical.addressList(mode,citycode,towncode,get_address_select_callback);
  
  // 同期処理。配列に格納されたデータを基に<select>に記述。
  // これがないと、コールバックの処理を待たずにスクリプトの処理が進んでしまい、うまく動作しない。
  var t = setInterval(
    function(){
      if(load_status['addresslist'] >=1){
        clearInterval(t);
        el('city_select').innerHTML = buildCitySelect(citycode);
        el('town_select').innerHTML = buildTownSelect(towncode);
        el('block_select').innerHTML = buildBlockSelect(blockcode);
        load_status['addresslist'] = 0;	// フラグをオフ
      }
    }, 1);
}
// 上記検索コールバック
function get_address_select_callback(result) {
  // 初期化
  //city_list = new Array();
  town_list = new Array();
  block_list = new Array();

  // 検索失敗
  if(result.errors){
   alert("102:"+result.message);

  // 検索成功
  } else {
    // 区(数少ないのでやめました。)
    /*
    for(var i = 0; i < result.city.length; i++){
      city_list.push({	id: result.city[i].id, 
      					name: result.city[i].name});
    }
    */

    // 大字
    for(var i = 0; i < result.town.length; i++){
      town_list.push({	id: result.town[i].id, 
      					name: result.town[i].name});
    }

    // 丁目
    for(var i = 0; i < result.block.length; i++){
      block_list.push({	id: result.block[i].id, 
      					name: result.block[i].name});
    }
  }
  load_status['addresslist']++;	// 値が格納されたらフラグが立つ。
}

// 区リスト
function buildCitySelect(city){
  var selected = '';
  var city_list_select_html = '<select id="CITY_CODE" name="CITY_CODE" onChange="get_address_select(\'town\')">' + "\n";
  for (var i = 0; i < city_list.length; i++) {
    selected = city_list[i].id == city ? " SELECTED" : "";
    city_list_select_html += '<option value="' + city_list[i].id + '"' + selected + '>' + city_list[i].name + '</option>' + "\n";
  }
  city_list_select_html += '</select>' + "\n";
						
  return city_list_select_html;
}

// 大字リスト
function buildTownSelect(town){
  var selected = '';
  var town_list_select_html = '<select id="TOWN_CODE" name="TOWN_CODE" onChange="get_address_select(\'block\')">' + "\n";
  for (var i = 0; i < town_list.length; i++) {
    selected = town_list[i].id == town ? " SELECTED" : "";
    town_list_select_html += '<option value="' + town_list[i].id + '"' + selected + '>' + town_list[i].name + '</option>' + "\n";
  }
  town_list_select_html += '</select>' + "\n";
						
  return town_list_select_html;
}

// 町丁目リスト
function buildBlockSelect(block){
  var selected = '';
  var block_list_select_html = '<select id="BLOCK_CODE" name="BLOCK_CODE">' + "\n";
  for (var i = 0; i < block_list.length; i++) {
   selected = block_list[i].id == block ? " SELECTED" : "";
   block_list_select_html += '<option value="' + block_list[i].id + '"' + selected + '>' + block_list[i].name + '</option>' + "\n";
  }
  block_list_select_html += '</select>' + "\n";
						
  return block_list_select_html;
}

/* 住所テキストで検索(該当住所が複数ある場合) */
function buildAddrList(){
  var addr_list_table_html = '<table class="search_item" cellspacing="1" cellpadding="0">' + "\n" +
							'<tr><td>複数の住所が検索されました。以下から選択してください。</td></tr>' + "\n" +
							'<tr><td>' + "\n" +
							'    <table class="data">' + "\n" +
							'    <tbody id="addr_list_tbody" style="overflow:auto;">' + "\n";

  for (var i = 0; i < address_list.length; i++) {
    addr_list_table_html += '    <tr style="height:auto"><td class="main"><a href="#" onClick="display_map({lat: ' + address_list[i].lat + ', lon: ' + address_list[i].lon + '});">' + address_list[i].addrText + '</a></td></tr>' + "\n";
  }
  
  addr_list_table_html += '    </tbody>' + "\n" +
						'    </table>' + "\n" +
						'</td></tr>' + "\n" +
						'</table>' + "\n";
						
  return addr_list_table_html;
}

/* 郵便番号で検索(該当住所が複数ある場合) */
function buildZipList_for_IE(from_myhome){
  var zip_list_table_html = '<table class="search_item" cellspacing="1" cellpadding="0">' + "\n" +
							'<tr><td>複数の住所が検索されました。以下から選択してください。';
  // あった方が便利そうなのでこの位置に「閉じる」ボタン追加（マイホームページ用）
  if(from_myhome){
	zip_list_table_html += build_close_button('list_close');
  }
  zip_list_table_html +=    '</td></tr>' + "\n" +
							'<tr><td>' + "\n" +
							'    <table class="data">' + "\n" +
							'    <thead><tr><th style="width:49px">〒</th><th style="width:169px">住所</th></tr></thead>' + "\n" +
							'    <tr><td colspan="2" style="padding:0px;border:none">' + "\n" +
							'    <div id="zip_list_tbody" style="overflow:auto;margin:0px;padding:0px;border:none">' + "\n" +
							'    <table class="data" style="width:100%;margin:0px;border:none">' + "\n" +
							'    <tbody>' + "\n";

  for (var i = 0; i < address_list.length; i++) {
    zip_list_table_html += '    <tr><td class="main" style="width:45px">' + address_list[i].zipcode + '</td><td style="width:auto"><a href="#" onClick="display_map({lat: ' + address_list[i].lat + ', lon: ' + address_list[i].lon + '},' + from_myhome + ');';
    // マイホームからの呼び出しの際は、クリックと同時にリストを消去（使い回しの利かないだめソース）
    if(from_myhome) zip_list_table_html += 'list_close();';
    zip_list_table_html += '">' + address_list[i].addrText + '</a></td></tr>' + "\n";
  }
  
  zip_list_table_html += '    </tbody>' + "\n" +
						'    </table>' + "\n" +
						'    </div>' + "\n" +
						'</td></tr>' + "\n" +
						'</table>' + "\n";
						
  // あった方が便利そうなので「閉じる」ボタン追加（マイホームページ用）
  if(from_myhome){
	zip_list_table_html += '<p align="center"><input type="button" value="閉じる" onClick="list_close();"></p>' + "\n";
  }
						
  return zip_list_table_html;
}
function buildZipList(from_myhome){
  var zip_list_table_html = '<table class="search_item" cellspacing="1" cellpadding="0">' + "\n" +
							'<tr><td>複数の住所が検索されました。以下から選択してください。';
  // あった方が便利そうなのでこの位置に「閉じる」ボタン追加（マイホームページ用）
  if(from_myhome){
	zip_list_table_html += build_close_button('list_close');
  }
  zip_list_table_html +=    '</td></tr>' + "\n" +
							'<tr><td>' + "\n" +
							'    <table class="data">' + "\n" +
							'    <thead><tr><th>〒</th><th>住所</th></tr></thead>' + "\n" +
							'    <tbody id="zip_list_tbody" style="overflow:auto;">' + "\n";

  for (var i = 0; i < address_list.length; i++) {
    zip_list_table_html += '    <tr style="height:auto"><td class="main">' + address_list[i].zipcode + '</td><td><a href="#" onClick="display_map({lat: ' + address_list[i].lat + ', lon: ' + address_list[i].lon + '},' + from_myhome + ');';
    // マイホームからの呼び出しの際は、クリックと同時にリストを消去（使い回しの利かないだめソース）
    if(from_myhome) zip_list_table_html += 'list_close();';
    zip_list_table_html += '">' + address_list[i].addrText + '</a></td></tr>' + "\n";
  }
  
  zip_list_table_html += '    </tbody>' + "\n" +
						'    </table>' + "\n" +
						'</td></tr>' + "\n" +
						'</table>' + "\n";
						
  // あった方が便利そうなので「閉じる」ボタン追加（マイホームページ用）
  if(from_myhome){
	zip_list_table_html += '<p align="center"><input type="button" value="閉じる" onClick="list_close();"></p>' + "\n";
  }
						
  return zip_list_table_html;
}
function list_close(){
  el('addr_list').style.display = "none";
  el('addr_list').innerHTML = '';
}

/* 現在地表示 */
function where_is_here() {
  var here_address = "";
  var myhome2here = "";
  var cookies = getCookie("kobemed");
  load_status['here'] = 0;	// 初期化
  
  // 緯度・経度から住所を取得
  as.searchByPoint(netmap.getCenter(),
  		// callback
 		function(result){
		  // 検索失敗
		  if(result.errors){
		   alert("103:"+result.message);

		  // ヒット時(単数・複数問わず)
		  } else {
		    // 単数・複数問わず、最初の情報だけを取得
		    here_address = result[0].prefName + result[0].cityName + result[0].areaName + result[0].koazaChomeName;
		  }
		  load_status['here']++;	// 値が格納されたらフラグが立つ。
	  	}
  );
  // マイホーム登録されていたら、マイホームからの距離を計算・表示
  if(cookies.result){
  	medical.calcDistance({lat: cookies.lat, lon: cookies.lon}, netmap.getCenter(),
		// callback
		function(result){
		  myhome2here = "（<img src='image/myhome.gif' border='0' width='20' height='20'>から" + result.angle + result.distance + "m）";
		  load_status['here']++;	// 値が格納されたらフラグが立つ。
	  	}
	);
  } else {
	load_status['here']++;	// マイホーム登録がなければスルー
  }
  
  // 同期処理。
  var t = setInterval(
    function(){
      if(load_status['here'] >=2){
        clearInterval(t);
        el('here_address').innerHTML = "◆地図中心位置：" + here_address + "近辺" + myhome2here;
        
        load_status['here'] = 0;	// フラグをオフ
      }
    }, 1);
}

/* 駅・路線から検索 */
function get_station_select() {
  load_status['station_select'] = 0;	// 初期化
  
  var linecode = el('LINE_CODE') ? el('LINE_CODE').value : '6001';
  var stationcode = el('STATION_CODE') ? el('STATION_CODE').value : '';

  // 検索実行
  ss.searchStationByLine(linecode, null, null, get_station_select_callback);
  
  // 同期処理。配列に格納されたデータを基に<select>に記述。
  // これがないと、コールバックの処理を待たずにスクリプトの処理が進んでしまい、うまく動作しない。
  var t = setInterval(
    function(){
      if(load_status['station_select'] >=1){
        clearInterval(t);
        el('line_select').innerHTML = buildLineSelect(linecode); 
        el('station_select').innerHTML = buildStationSelect(stationcode); 
        load_status['station_select'] = 0;	// フラグをオフ
      }
    }, 1);
}
// 上記検索コールバック
function get_station_select_callback(result) {
  // 初期化
  station_list = new Array();

  // 検索失敗
  if(result.errors){
   alert("104:"+result.message);

  // ヒット時(単数・複数問わず)
  } else {
    // ヒットした情報を配列として格納
    for(var i = 0; i < result.length; i++){
      if (result[i].addr_code.indexOf("281",0) != 0) continue;	// 神戸市限定！
      station_list.push({	id: result[i].code + result[i].station_code2, 
      						name: result[i].station_name});
    }
  }
  load_status['station_select']++;	// 値が格納されたらフラグが立つ。
}

/* 路線プルダウン表示 */
function buildLineSelect(line){
  var selected = '';
  var line_list_select_html = '<select id="LINE_CODE" name="LINE_CODE" onChange="get_station_select()">' + "\n";
  for (var i = 0; i < line_list.length; i++) {
    selected = line_list[i].id == line ? " SELECTED" : "";
    line_list_select_html += '<option value="' + line_list[i].id + '"' + selected + '>' + line_list[i].name + '</option>' + "\n";
  }
  line_list_select_html += '</select>' + "\n";
						
  return line_list_select_html;
}

/* 駅プルダウン表示 */
function buildStationSelect(station){
  var selected = '';
  var station_list_select_html = '<select id="STATION_CODE" name="STATION_CODE">' + "\n";
  for (var i = 0; i < station_list.length; i++) {
    selected = station_list[i].id == station ? " SELECTED" : "";
    station_list_select_html += '<option value="' + station_list[i].id + '"' + selected + '>' + station_list[i].name + '</option>' + "\n";
  }
  station_list_select_html += '</select>' + "\n";
						
  return station_list_select_html;
}

/* 駅・近隣検索 */
function search_station() {
  load_status['station_near'] = 0;	// 初期化

  // 検索実行
  ss.searchStationByPoint(netmap.getCenter(), 5000, null, 20, search_station_callback);
  
  // 同期処理。配列に格納されたデータを基に<table>に記述。
  // これがないと、コールバックの処理を待たずにスクリプトの処理が進んでしまい、うまく動作しない。
  var t = setInterval(
    function(){
      if(load_status['station_near'] >=1){
        clearInterval(t);
        el('station_list').innerHTML = document.all ? buildStationList_for_IE() : buildStationList();
        if(search_panel_height() - 260 < el('station_list').offsetHeight){
          var tbody_height = search_panel_height() - 260 - 37;
          if(tbody_height < 74){
          	tbody_height = 74;
          	el('st_search_space').style.height = "371px";	// 最低Height
          }
          el('station_list_tbody').style.height = tbody_height + "px";
        }
        load_status['station_near'] = 0;	// フラグをオフ
      }
    }, 1);
}
// 上記検索コールバック
function search_station_callback(result) {
  // 初期化
  station_near_list = new Array();

  // 検索失敗
  if(result.errors){
   alert("105:"+result.message);

  // ヒット時(単数・複数問わず)
  } else {
    // ヒットした情報を配列として格納
    for(var i = 0; i < result.length; i++){
      if (result[i].addr_code.indexOf("281",0) != 0) continue;	// 神戸市限定！
      station_near_list.push({	name: result[i].station_name,
      						line_short: result[i].line_abbreviation,
      						distance: result[i].distance,
      						lat: result[i].lat, lon: result[i].lon});
    }
  }
  load_status['station_near']++;	// 値が格納されたらフラグが立つ。
}

/* 近隣駅リスト表示 */
function buildStationList_for_IE(){
  var station_list_table_html = '<table class="data">' + "\n" +
								'<thead><tr><th style="width:145px">駅名(路線名)</th><th style="width:65px">距離</th></tr></thead>' + "\n" +
								'<tr><td colspan="2" style="padding:0px;border:none">' + "\n" +
								'<div id="station_list_tbody" style="overflow:auto;margin:0px;padding:0px;border:none">' + "\n" +
								'<table class="data" style="width:100%;margin:0px;border:none">' + "\n" +
								'<tbody>' + "\n";

  var max_count = 5 < station_near_list.length ? 5 : station_near_list.length;

  for (var i = 0; i < max_count; i++) {
    station_list_table_html += '<tr><td class="main" style="width:141px"><a href="#" onClick="display_map({lat: ' + station_near_list[i].lat + ', lon: ' + station_near_list[i].lon + '});">' + station_near_list[i].name + '(' + station_near_list[i].line_short + ')</a></td><td style="width:auto">' + station_near_list[i].distance + 'm</td></tr>' + "\n";
  }
  
  station_list_table_html += '</tbody>' + "\n" +
							 '</table>' + "\n" +
							 '</div>' + "\n" +
							 '</td></tr>' + "\n" +
							 '</table>' + "\n";
						
  return station_list_table_html;
}
function buildStationList(){
  var station_list_table_html = '<table class="data">' + "\n" +
								'<thead><tr><th>駅名(路線名)</th><th>距離</th></tr></thead>' + "\n" +
								'<tbody id="station_list_tbody" style="overflow:auto;">' + "\n";
  var max_count = 5 < station_near_list.length ? 5 : station_near_list.length;

  for (var i = 0; i < max_count; i++) {
    station_list_table_html += '<tr style="height:auto"><td class="main"><a href="#" onClick="display_map({lat: ' + station_near_list[i].lat + ', lon: ' + station_near_list[i].lon + '});">' + station_near_list[i].name + '(' + station_near_list[i].line_short + ')</a></td><td>' + station_near_list[i].distance + 'm</td></tr>' + "\n";
  }
  
  station_list_table_html += '</tbody>' + "\n" +
						'</table>' + "\n";
						
  return station_list_table_html;
}

/* マイホーム登録 */
function HomeObject(po){
  // 地図上へのマイホーム表示登録
  myhome = new Netmap.Image( po.lon, po.lat, -10, -10, 20, 20, "http://" + document.domain + "/kobemed/image/myhome.gif",1.0);
  myhome.id = "MyHome";
  myhome.setMouseOverHandler(moveMyHome);
  netmap.addOrReplaceFigure( myhome);
}
function setHome(){
  // 操作説明・指示
  alert("マイホームとして登録する場所をクリックしてください。");
  // イベントの登録
  netmap.addListener( Netmap.CLICKED, setHome_callback);
}
function setHome_callback(evt, point){

  // 地図上へのマイホーム表示登録
  HomeObject(point);
  
  // cookieへの登録（期間２週間）
  var result = setCookie( "kobemed", point);
  
  // 現在地表示への追記
  where_is_here();

  // 完了メッセージ・イベントの解除
  netmap.removeListener( evt, setHome_callback);
  alert("マイホームを登録しました。");
  
}

/* マイホーム移動 */
function moveMyHome(obj,enter){
  var obj_left;
  var obj_top;
  if(enter){
     if(myhomeEvent) netmap.removeHtmlElement(myhomeEvent);
     if(myhomeImage) netmap.removeHtmlElement(myhomeImage);
  
     // 現在のホームの位置をdivに写し取る
     myhomeImage = netmap.addHtmlElement( 'img', obj.x, obj.y, obj.ox, obj.oy, false);
     myhomeImage.src = "image/myhome.gif";
     myhomeImage.style.position = 'absolute';
     myhomeImage.style.border='none';

     // イベント発生範囲
     myhomeEvent = netmap.addHtmlElement( 'div', obj.x, obj.y, obj.ox, obj.oy, true);
     myhomeEvent.style.width = 20;
     myhomeEvent.style.height = 20;
     myhomeEvent.style.border = 'none';
     myhomeEvent.style.backgroundColor = 'white';
     myhomeEvent.style.position = 'absolute';
     if (netmap.myKaMap.isIE4) {
        myhomeEvent.style.filter = "Alpha(opacity=0)";
     } else {
        myhomeEvent.style.opacity=0;
     }


     // イベントの登録
     myhomeEvent.onmousedown = function(e){
     	e = (e)?e:((event)?event:null);
     	// mousemoveに対応するため、イベント発生範囲をMAP全体に拡大
     	myhomeEvent.style.top = "0px";
     	myhomeEvent.style.left = "0px";
     	myhomeEvent.style.height = el('map').offsetHeight;
     	myhomeEvent.style.width = el('map').offsetWidth;

     	// ドラッグ開始！
     	myhomeImage.init = 1;
     	myhomeImage.oX = e.clientX;
     	myhomeImage.oY = e.clientY;
     	var objPoint = netmap.getPixelPoint(obj.x, obj.y);
     	obj_left = objPoint['x'] + obj.ox;
     	obj_top = objPoint['y'] + obj.oy;
     	var amount = 50;
     	if (netmap.myKaMap.isIE4) {
     	   myhomeImage.style.filter = "Alpha(opacity="+amount+")";
     	} else {
     	   myhomeImage.style.opacity=amount/100;
     	}
     	e.cancelBubble = true;
     	e.returnValue = false;
     	if (e.stopPropogation) e.stopPropogation();
     	if (e.preventDefault) e.preventDefault();

     	return false;
     };
     
     myhomeEvent.onmouseup = function(e){
     	e = (e)?e:((event)?event:null);
     	if(myhomeImage.init) {

     		// ドラッグ終了！
        	if (netmap.myKaMap.isIE4) {
     	       myhomeImage.style.filter = "Alpha(opacity=100)";
        	} else {
     	       myhomeImage.style.opacity=1;
        	}
        	myhomeImage.init=0;

     		// マウスアップの位置取得／緯度経度への変換
     		var objBL = netmap.getPoint(obj_left - obj.ox, obj_top - obj.oy);
     		
     		// マイホームdivの移動
     		netmap.moveHtmlElement( myhomeImage, objBL['lon'], objBL['lat'], obj.ox, obj.oy);
     		
     		// イベント発生範囲も変更
     		netmap.moveHtmlElement( myhomeEvent, objBL['lon'], objBL['lat'], obj.ox, obj.oy);
     		myhomeEvent.style.width = "20px";
     		myhomeEvent.style.height = "20px";
     		
     		// マイホーム位置移動
     		obj.x = objBL['lon'];
     		obj.y = objBL['lat'];
     		netmap.addOrReplaceFigure(obj);
     		
     		// cookieへの登録（期間２週間）
     		var result = setCookie( "kobemed", objBL);
  
     		// 現在地表示の変更
     		where_is_here();
     	}
     	return false;
     };
     
     myhomeEvent.onmousemove = function(e){
     	e = (e)?e:((event)?event:null); 
     	// 移動中・・・
     	if(myhomeImage.init) {
        	var xMov=(myhomeImage.oX-e.clientX);
        	var yMov=(myhomeImage.oY-e.clientY);
        	
        	var oX=obj_left;
        	var oY=obj_top;
        	var nX = oX-xMov;
        	var nY = oY-yMov;
        	myhomeImage.oX= e.clientX;
        	myhomeImage.oY= e.clientY;
        	obj_left = nX;
        	obj_top = nY;
        	
     		// マイホームdivの移動
        	var objBL = netmap.getPoint(obj_left - obj.ox, obj_top - obj.oy);
     		netmap.moveHtmlElement( myhomeImage, objBL['lon'], objBL['lat'], obj.ox, obj.oy);
     		
            //myhomeImage.style.top = parseInt(nY+0.5) + parseInt(netmap.myKaMap.theInsideLayer.style.top) + "px";
            //myhomeImage.style.left = parseInt(nX+0.5) + parseInt(netmap.myKaMap.theInsideLayer.style.left) + "px";
       }
        return false;
     };
     
     if (myhomeEvent.captureEvents) {
        myhomeEvent.captureEvents(Event.MOUSEDOWN);
        myhomeEvent.captureEvents(Event.MOUSEUP);
        myhomeEvent.captureEvents(Event.MOUSEMOVE);
     }

  } else {
     netmap.removeHtmlElement(myhomeEvent);
     netmap.removeHtmlElement(myhomeImage);
  }
}



/* マイホーム削除 */
function removeHome(){
   var cookies = getCookie("kobemed");
  if(!cookies.result){ alert('マイホームは登録されていません'); return; }
  // 確認後に削除する
  if( confirm("マイホームを削除します。\nよろしいですか？")){
  
	  // 地図上のマイホーム削除
	  //myhome = netmap.findFigureById("MyHome");
	  netmap.removeFigure( myhome);
	  
	  // cookie削除
	  removeCookie( "kobemed");
	  
	  // 現在地表示から距離等削除
	  where_is_here();
	  
	  // 完了。
	  alert("マイホームを削除しました。");

  }
}

/* マイホーム移動（マイホーム登録ページ用に） */
function go2myhome(){
   var cookies = getCookie("kobemed");
   if(!cookies.result){ alert('マイホームは登録されていません'); return; }
   netmap.zoomTo({lat: cookies.lat, lon: cookies.lon, scale: netmap.getScaleIndex()});
}

// 全角数字→半角数字
function Zen2Han(str) {
	var han = "0123456789-";
	var zen = "０１２３４５６７８９－";
	var ret = "";
	var i = null;
	var c = null;
	var n = null;

	for (var i = 0; i < str.length; i++) {
		c = str.charAt(i);
		n = zen.indexOf(c,0);
		if (n >= 0) c = han.charAt(n);
		ret += c;
	}
	return ret;
}

// 郵便番号7桁チェック(神戸では使ってない)
function chkZipFmt(str) {
	var check_str = null;

	check_str = str.split("-").join("");
	if(check_str.length != 7){ return false;}	// 7桁チェック
	else if(isNaN(check_str)){ return false;}	// 数値チェック
	else { return true;};

}

// cookie操作
function getCookie(ckname) {

	// Cookie情報の読込み
	var theCookie, s, e, ckstr, ckary;
	var orglon,orglat,result;
	ckname += "=";
	theCookie = document.cookie + ";";
	s = theCookie.indexOf(ckname);
	if(s != -1){
		e = theCookie.indexOf(";", s);
		ckstr = unescape(theCookie.substring(s + ckname.length, e));

		// 実際に利用する変数の設定
		ckary = ckstr.split("&");
		for(var i = 0; i < ckary.length; i++){
			if(ckary[i] == "orglon"){
				i++;
				orglon = ckary[i];
			} else if(ckary[i] == "orglat"){
				i++;
				orglat = ckary[i];
			}
		}
		result = true;
	} else {
		result = false;
	}
	return {lat: orglat, lon: orglon, result: result};
}
function setCookie(ckname, po) {

	// Cookie情報のセット
	var orglon = po.lon;
	var orglat = po.lat;
	var expDay = new Date((new Date()).getTime() + (14*1000*60*60*24));
	if(ckname && orglat && orglon){
		document.cookie = ckname + "=" + 
							escape("orglon&" + orglon + "&orglat&" + orglat) + 
							";expires=" + expDay;
		return true;
	} else {
		return false;
	}
}
function removeCookie(ckname) {

	// Cookie情報の削除
	if(ckname){
		document.cookie = ckname + "=;expires=Thu, 01-Jan-70 00:00:01 GMT";
		return true;
	} else {
		return false;
	}
}

/**
 * HTML要素取得.
 *
 *	@param	id	要素ID
 *	@return	要素オブジェクト
 */
function el(id)
{
	return document.getElementById(id);
}



