//var map = null;
//var uname = "";
var geocoder = null;
var infowindow = null;
var circle = null;
var lastPosition = null;
var gmarkers = [];
var addmarker = null;
var mapHtmls = [];
var markerUrls = [];
var editHtmls = [];
//var isEditMode = false;
var isLoading = false;
var last_rr_name = "";
var last_line_name = "";
var last_r_type = 5;
var last_pref_cd = 0;
var prefs=  new Array("設定なし","北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県"
		,"東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県"
		,"滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県");
var r_names = new Array("鉄道","鉄道","鉄道","鉄道","鉄道","路線バス","高速バス","フェリー","飛行機","その他");
/*
var small_icon = new google.maps.MarkerImage(
		small_icon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
small_icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
small_icon.iconSize = new GSize(12, 20);
small_icon.shadowSize = new GSize(22, 20);
small_icon.iconAnchor = new GPoint(6, 20);
small_icon.infoWindowAnchor = new GPoint(5, 1);
);*/

function switchInfoWindow(marker,html){
	if(infowindow){
		infowindow.close();
		infowindow = null;
	}
	infowindow = new google.maps.InfoWindow({content:html});
	infowindow.open(map,marker);
	return infowindow;
}

function createMarker (lat, lon, st_name, line_name , html, isSmall,url,idx) {
	var marker = null;
	if(isSmall==true){
		marker = new google.maps.Marker({
			position:new google.maps.LatLng(lat,lon),
			map:map,
			//icon:small_icon
			});//,{title:st_name+"\n"+line_name});
	}else{
		marker = new google.maps.Marker({
			position:new google.maps.LatLng(lat,lon),
			title:st_name+"\n"+line_name});
	}

	google.maps.event.addListener(marker, "click", function(){
		fetchStationMarkerHtml(url,marker,idx);
		//marker.openInfoWindowHtml(html);
		lastPosition = marker.position;
		//document.form_re.spot_longitude.readOnly=true;
	});
	gmarkers.push(marker);
	mapHtmls.push(html);
	marker.setMap(map);
	//map.addOverlay(marker);
}

function clearOverlays(){
	if(gmarkers.length>0){
		for(i in gmarkers){
			//i.setMap(null);
			if(gmarkers[i].setMap!==undefined) gmarkers[i].setMap(null);
		}
	}
	if(infowindow){
		infowindow.close();
		infowindow = null;
	}
	if(circle){
		circle.setMap(null);
		circle=null;
	}
	if(addmarker){
		addmarker.setMap(null);
		addmarker=null;
	}
}

/**
 * 編集画面に切り替える
 */
function switchEditMode(num){

	//infowindow = new google.maps.InfoWindow({content:editHtmls[num]});
	gmarkers[num].setDraggable(true);
	switchInfoWindow(gmarkers[num],editHtmls[num]);
	//gmarkers[num].openInfoWindowHtml(editHtmls[num]);
}

function showEditPosDialog(num,stgcd){
    var winWidth = "450px";
    var winHeight = "500px";
    var options = "dialogWidth=" + winWidth + ";dialogHeight="
    + winHeight + ";center=1;status=1;scroll=1;resizable=1;minimize=0;maximize=0;";

    // ボタンをグレーアウトする
    var url = index_url+"/site-data/editpos.html";
    var argAry = new Array();
    argAry[0] = window;
    argAry[1] = gmarkers[num].position;
    var newpos = showModalDialog(url, argAry, options);
    // 戻り値をアラート
    if(newpos==null) return;

    lastPosition=newpos;
	var url = index_url+"edit-station";
	var callback = myCallBack;
	var params = [];
	params['method'] = 'move_stg';
	params['lon'] = ""+newpos.lng();
	params['lat'] = ""+newpos.lat();
	params['station_g_cd'] = stgcd;
	postUrl(url, callback, buildSendParams(params));
	return false;
}

/**
 * 駅追加用のウィンドウを表示する
 */
function createAddMarker(latlng){
	if(addmarker){
		addmarker.setMap(null);
		addmarker=null;
	}

	addmarker = new google.maps.Marker({
		position:latlng,
		draggable:true,
		title:"編集中"
	});

	var onsubmit = "sendNewStationInfo(this,addmarker.position.lat(),addmarker.position.lng());";
	var html = editForm(onsubmit, last_r_type, "", "", last_pref_cd);

	var iw = switchInfoWindow(addmarker,html);
	google.maps.event.addListener(iw, "closeclick", function(){
		addmarker.setMap(null);
	});

	addmarker.setMap(map);
	//map.addOverlay(marker);

	//var infowindow = new google.maps.InfoWindow({content:html});
	//marker.openInfoWindowHtml(html);
}

/**
 * 新規駅作成リクエストの送信
 */
function sendNewStationInfo(FORM,lat,lng){
	var url = index_url+"/edit-station";
	var callback = myCallBack;
	var params = [];

	try{
		params['method'] = "create_stg";
		params['station_type'] = FORM.station_type.value;
		params['station_g_name'] = ""+FORM.station_g_name.value;
		params['station_g_ruby'] = ""+FORM.station_g_ruby.value;
		params['pref_cd'] = FORM.pref_cd.value;
		last_pref_cd = FORM.pref_cd.value;
		params['lon'] = lng;
		params['lat'] = lat;
	}catch(e){
		alert("POSTリクエストに失敗しました");
	}
	if(params['station_g_name']=='' || params['station_g_ruby']==''){
		alert("情報を全て入力してください");
		return false;
	}
	postUrl(url, callback, buildSendParams(params));
	lastPosition = new google.maps.LatLng(lat,lng);
	return false;
}

/**
 * 駅編集リクエストの送信
 * @param FROM
 * @param st_cd
 * @return
 */
/*
function sendModifiedStationInfo(FORM,station_g_cd,num){
	alert('送信します');
	var url = index_url+"edit-station";
	var callback = myCallBack;
	var params = [];
	params['method'] = 'edit_stg';
	params['station_type'] = FORM.station_type.value;
	//params['rr_name'] = FORM.rr_name.value;
	//params['line_name'] = FORM.line_name.value;
	params['pref_cd'] = FORM.pref_cd.value;
	params['station_g_name'] = ""+FORM.station_g_name.value;
	params['station_g_ruby'] = ""+FORM.station_g_ruby.value;
	params['station_g_cd'] = station_g_cd;
	params['lon'] = gmarkers[num].position.lng();
	params['lat'] = gmarkers[num].position.lat();;

	if(params['station_g_name']=='' || params['station_g_ruby']==''){
		alert("情報を全て入力してください");
		return false;
	}
	lastPosition = new google.maps.LatLng(lat,lng);
	postUrl(url, callback, buildSendParams(params));
	return false;
}
*/

/**
 * 駅削除リクエストの送信
 */
function sendDeleteStationRequest(st_g_cd){
	if(window.confirm('駅を削除すると、それに関連付けられている時刻表やWiFi情報も削除されます。本当に削除しますか？')){
		var url = index_url+"edit-station";
		//var callback = myCallBack;
		var params=[];
		params['method'] = 'delete_stg';
		params['station_g_cd'] = st_g_cd;
		postUrl(url, myCallBack, buildSendParams(params));
	}
	return false;
}

/**
 * 路線カラー編集リクエストの送信
 */
function sendSetColorRequest(line_cd,prev_color){
	var ans = prompt('路線カラーをHTMLカラー表記で入力してください\n(例:#FF00FF)',prev_color);
	if (ans == "" || ans == null){
	}else {
		var url = index_url+"edit-station";
		var params=[];
		params['method'] = 'color';
		params['line_cd'] = line_cd;
		params['color'] = ans;
		postUrl(url, myCallBack, buildSendParams(params));
	}
	return true;
}


function buildSendParams(params) {
	var sParam = "";
	if (params != null) {
		var arr = [];
		for (var key in params)  arr.push(key + "=" + encodeURIComponent(params[key]));
		sParam = arr.join("&");
	}
	return sParam;
}

function myCallBack(returnValue, returnCode) {
	if(returnCode<=202){ //作成完了
		var pos = map.getCenter();
		if(lastPosition != null){
			pos = lastPosition;
		}
		showStations(pos);
	} else if(returnCode == -1) {
		alert("タイムアウトしました。再試行してください");
	} else {
		alert("エラー("+returnCode+")"+returnValue);
	}
	return false;
}

function showAddress(address) {
	geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					alert(address + " not found");
				}
				else {
					map.setCenter(point, 13);
				}
			}
	);
}


function getPrefecture(latlng, response_action) {
	var pref_name="";
	geocoder.getLocations(latlng, function(response){
		var place = response.Placemark[0];
		try{
			pref_name = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
		}catch(exception){
			alert("住所が特定できません");
			return;
		}
		alert(pref_name);
	});
}

/** 十字線を描画する */
function drawCross(){
	var cross_px = 30;
	var cross_td = 3;
	var cross_cr = "red";

	//十字の縦線のエレメントを設定
	var cross_h_emt =  document.createElement("div");
	//IE用にfontSizeを最小値
	cross_h_emt.style.fontSize = "1px";
	cross_h_emt.style.margin = "0px";
	cross_h_emt.style.padding = "0px";
	cross_h_emt.style.width = cross_px + "px";
	cross_h_emt.style.height = cross_td + "px";
	cross_h_emt.style.backgroundColor = cross_cr;

	//十字の横線のエレメントを設定
	var cross_v_emt =  document.createElement("div");
	cross_v_emt.style.margin = "0px";
	cross_v_emt.style.padding = "0px";
	cross_v_emt.style.width = cross_td+"px";
	cross_v_emt.style.height = cross_px + "px";
	cross_v_emt.style.backgroundColor = cross_cr;

	//十字（縦・横線）の位置を計算

	var MapPX = document.getElementById("map").style;
	var mycenterHX = MapPX.width  / 2 - cross_px / 2;
	var mycenterHY = MapPX.height / 2 - cross_td / 2;
	var mycenterVX = MapPX.width  / 2 - cross_td / 2;
	var mycenterVY = MapPX.height / 2 - cross_px / 2;

	var mycenter_H = new google.maps.Size(mycenterHX,mycenterHY);
	var myposH = google.maps.ControlPosition.TOP_LEFT + mycenter_H;
	myposH.apply(cross_h_emt);
	map.getContainer().appendChild(cross_h_emt);

	var mycenter_V = new google.maps.Size(mycenterVX,mycenterVY);
	var myposV = new GControlPosition(G_ANCHOR_TOP_LEFT, mycenter_V);
	myposV.apply(cross_v_emt);
	map.getContainer().appendChild(cross_v_emt);
}

/** 円を描画する */
function pseudoGCircle(point, radius, color, weight, opacity) {
	var vertex = 360;
	var latRadius = rad(point.lat());
	var TMP = 1 - 0.00669437999014132 * Math.pow(Math.sin(rad(point.lat())), 2);
	var arc_lat = 110574.2758215944444 / Math.pow(TMP, 3/2);
	var arc_lng = (111319.490793273333 * Math.cos(rad(point.lat()))) / Math.pow(TMP, 1/2);
	var R = radius * 1000;
	var points = new Array(vertex);
	for (i = 0; i <= vertex; i++) {
		var rad1 = (i / (vertex / 2)) * Math.PI;
		var lat = (R / arc_lat) * Math.sin(rad1) + point.lat();
		var lng = (R / arc_lng) * Math.cos(rad1) + point.lng();
		points[i] = new google.maps.LatLng(lat, lng);
	}
	return new google.maps.Polygon({
		paths:points,
		strokeColor:"#0000FF",
		strokeWeight:2,
		strokeOpacity:0.4,
		fillColor:"0000FF",
		fillOpacity:0.1,
		clickable:false
	});//google.maps.Polyline(points, color, weight, opacity);
}

function markerClicked(markerNum){
	fetchStationMarkerHtml(markerUrls[markerNum],gmarkers[markerNum],markerNum);
	//gmarkers[markerNum].openInfoWindowHtml(mapHtmls[markerNum]);
	lastPosition = gmarkers[markerNum].position;
	//getPrefecture(gmarkers[markerNum].getLatLng(),null);
}

function lineClicked(line_cd){
	//eki.locky APIを呼び出して駅を検索
	clearOverlays();
	var url=index_url+"webapi/geotbl?line_cd="+line_cd;
	fetchStations(url,true,false,false);
}

function fetchStationMarkerHtml(url,marker,idx){
	downloadUrl(
		url+"&time="+new Date().getTime(), function(data,responseCode) {
		if(responseCode == 200) {
			var xml = data;//GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("Row");
			for (var i = 0; i < 1; i++) {
				var station_type = parseInt(markers[i].getAttribute("station_type"));
				var station_g_cd = parseInt(markers[i].getAttribute("station_g_cd"));
				var pref_cd = parseInt(markers[i].getAttribute("pref_cd"));
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lon"));
				var pref_name = prefs[pref_cd];
				if(pref_cd==0)pref_name="都道府県設定なし";
				var st_g_name = markers[i].getAttribute("station_g_name");
				var st_g_ruby = markers[i].getAttribute("station_g_ruby");
				var lines = markers[i].getElementsByTagName("Line");

				var html_marker = "";

				for(var p=0;p<lines.length;p++){
					var line_name = lines[p].getAttribute("line_name");
					var line_cd = lines[p].getAttribute("line_cd");
					var color = lines[p].getAttribute("line_color");
					var company_name = lines[p].getAttribute("company_name");
					var company_cd = lines[p].getAttribute("company_cd");
					var comp_pref_cd = lines[p].getAttribute("pref_cd");
					if(comp_pref_cd==null || comp_pref_cd=="") comp_pref_cd="0";

					var tbls = lines[p].getElementsByTagName("TBL");

					if(isEditMode && line_cd != 0){
						html_marker +="<a title='路線カラー変更' href='javascript:void(0)' onclick=\"sendSetColorRequest("+line_cd+",'"+color+"');return false;\"><font color='#"+color+"'>■</font></a>" +
								"<a href='javascript:void(0)' onclick=\"selectedPrefCd="+comp_pref_cd+";selectedCompanyCd="+company_cd+";selectedLineCd="+line_cd+";showList('companies','"+comp_pref_cd+"','true');return false;\">";
					}else if(tbls.length==0) continue;
					else html_marker+="<a href='javascript:void(0)' onclick=\"lineClicked("+line_cd+");return false;\">";

					html_marker += "<b>"+line_name+"</b>";

					if(line_cd!=0) html_marker += "</a>";
					if(line_cd!=0) html_marker += "<span class='smaller low'>" + company_name + "</span>";
					if(isEditMode) html_marker += "<a href='"+index_url+"site/member/edit-tbl?station_g_cd="+station_g_cd+"&line_cd="+line_cd+"&tblid=0' title='時刻表を新しく追加'><img src='../../site-data/img/document.png'></a>";
					if(isEditMode&&line_cd!=0) html_marker += "<a href='javascript:void(0)' onclick=\"deleteRelation("+station_g_cd+","+line_cd+");return false;\" title='路線関係を削除'><img src='../../site-data/img/close.png'></a>";
					html_marker += "<br><ul class='ul-tbllist box'>";

					// 時刻表データ表示
					for(var j=0; j < tbls.length; j++) {
						var direction = tbls[j].getAttribute("direction");
						var stancename = tbls[j].getAttribute("stance_name");
						var tbl_id = tbls[j].getAttribute("id");
						var date = tbls[j].getAttribute("date");
						var uid = tbls[j].getAttribute("uid");
						var tbl_url = index_url + "site/list?pageid=tbl&code=" + tbl_id;

						//if(isEditMode)html_marker += " <img src='../../site-data/img/ico-list.gif'>";
						//else html_marker += " <img src='../site-data/img/ico-list.gif'>";
						html_marker += "<li>";
						html_marker += "<a href='"+ tbl_url +"' target='_blank'>";
						html_marker += direction + "</a>  <span class='smaller low'>";
						html_marker += stancename+" "+date;
						html_marker += "  by: "+uid+"</span>";
						if(isEditMode)html_marker += "<a title=\"路線を変更\" href=\"javascript:void(0)\" onclick=\"changeLine('"+tbl_id+"','"+station_g_cd+"');return false;\"><img src=\"../../site-data/img/switch.gif\"></a>　"
						html_marker += "   <br>";
					}
					html_marker += "</ul>";
				}



				//var header = "<div style='max-height:270px;overflow:auto;'><b><font size='4'>"+st_g_name+"</font></b>";
				var header = "<div><b><font size='4'>"+st_g_name+"</font></b>";


				if(isEditMode){
					header += "<font size='2'>" +
					"<a title='この駅情報を削除' href=\"javascript:void(0)\" onclick=\"sendDeleteStationRequest("+station_g_cd+");return false;\"><img src=\"../../site-data/img/trash.png\"></a>" +
					"<a title='駅情報を編集' href=\"javascript:void(0)\" onclick=\"switchEditMode("+idx+");return false;\"><img src=\"../../site-data/img/edit.png\"></a></font>";
					//"<a title='位置を変更' href=\"javascript:void(0)\" onclick=\"showEditPosDialog("+idx+","+station_g_cd+");return false;\"><img src=\"../../site-data/img/flag.png\"></a></font><br>";
				}
				header += "<span class='smaller low'>"+ st_g_ruby + "("+ pref_name +")<br></span><div class='hx-mapinfo'><span>路線リスト</span></div>";

				html_marker = header + html_marker;// "<div style='max-height:250px;overflow:auto;'>"+html_marker+"</div>";
				if(isEditMode) html_marker += "<a href=\"javascript:void(0)\" onclick=\"addStationGroupToLine('"+station_g_cd+"','"+station_g_cd+"','"+ st_g_name +"');return false;\"><img src='../../site-data/img/plus.gif'>路線を追加</a>";
				html_marker += "</div>";
			}
			//var infowindow = new google.maps.InfoWindow({content:html_marker});
			switchInfoWindow(marker,html_marker);

			//marker.openInfoWindowHtml(html_marker);
		} else if(responseCode == -1) {
			alert("タイムアウトしました。再試行してください");
		} else {
			alert("エラーです");
		}
	});
}


/**
 * 位置を送信して帰ってきた駅情報を解析し、マップ上へのマーカー設置と右側のリスト作成
 */
function fetchStations(url, zoom,notshowinfo,isSmall) {
	fetchStations(url.zoom,notshowinfo,isSmall,null);
}
function fetchStations(url, zoom,notshowinfo,isSmall, cLatLng) {
	showLoadingIcon();
	isLoading = true;
	downloadUrl(url,function(data,responseCode) {
		if(responseCode == 200) {
			var xml = data;//GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("Row");

			gmarkers = [];
			mapHtmls = [];
			editHtmls = [];
			markerUrls = [];
			//side_bar_html="";
			var bounds = new google.maps.LatLngBounds();
			var farDist = 0.0;
			var html = ""; //右側のリストに表示させるHTML
			html+="<div id='mapinfo'><table>";

			var show_index = -1; //r_typeが5以上のものだけ表示する
			for (var i = 0; i < markers.length; i++) {
				var station_type = parseInt(markers[i].getAttribute("station_type"));
				var station_g_cd = parseInt(markers[i].getAttribute("station_g_cd"));
				var pref_cd = parseInt(markers[i].getAttribute("pref_cd"));
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lon"));
				var pref_name = prefs[pref_cd];
				if(pref_cd==0)pref_name="都道府県設定なし";
				var st_g_name = markers[i].getAttribute("station_g_name");
				var st_g_ruby = markers[i].getAttribute("station_g_ruby");

				var html_marker = "";
				var rowtype = (i%2)==0?"even":"odd";

				html += "<tr class='"+rowtype+"' style='padding-left:5px;'>" +
				"<td><b><a href=\"javascript:void(0)\" onclick=\"markerClicked("+i+");return false;\">"+st_g_name+"</a></b></td>" +
				"<td style='width:27px;text-align:right;' >"+r_names[station_type]+"</td></tr>\n";


				if(show_index==-1) show_index=i;

				if(i==markers.length-1 && cLatLng!=null)
					farDist = distHaversine(cLatLng,new google.maps.LatLng(lat,lng));
					//cLatLng.distanceFrom(new google.maps.LatLng(lat,lng));

				var onsubmit = "sendModifiedStationInfo(this,"+station_g_cd+","+i+");";
				var html_edit = editForm(onsubmit, station_type, st_g_name, st_g_ruby, pref_cd);

				editHtmls.push(html_edit);
				var markerurl = index_url+"webapi/geotbl?station_cd="+station_g_cd;
				markerUrls.push(markerurl);

				var point = new google.maps.LatLng(lat,lng);
				//var n = markers[i].getAttribute("n");
				var marker;
				isSmall = (station_type<4)?true:false;

				marker = createMarker(point.lat(), point.lng(), st_g_name, "" , html_marker,isSmall,markerurl,i);

				//map.addOverlay(marker);
				bounds.extend(point);
			}

			html+="</table></div>";

			//小さいマーカーの場合は右側のリストに表示しない
			document.getElementById('station_list').innerHTML = html;

			//一番目のマーカーのInfoウィンドウを表示するかどうか
			if(notshowinfo!=true & show_index>=0){
				fetchStationMarkerHtml(markerUrls[show_index],gmarkers[show_index],show_index);
				lastPosition = gmarkers[show_index].position;
			}

			//ズームオプションが設定されていれば、マーカーの位置にあわせて倍率を変更する
			if(zoom && show_index>=0){
				//map.setCenter(bounds.getCenter());
				map.panToBounds(bounds);
			}

			//中心座標が指定されていれば、円を描画する
			if(cLatLng!=null){
				circle = pseudoGCircle(cLatLng, farDist);
				circle.setMap(map);
				//map.addOverlay(circle);
			}

		} else if(responseCode == -1) {
			alert("タイムアウトしました。再試行してください");
		} else {
			alert("エラーです");
		}
		isLoading = false;
	});
}

function showStations(latlng){
	if(isLoading){
		return;
	}

	//eki.locky APIを呼び出して駅を検索
	clearOverlays();
	var url=index_url+"webapi/geotbl";
	fetchStations(url+"?lat="+latlng.lat()+"&lon="+latlng.lng()+"&range=2",false,false,false,latlng);

	lastPosition = latlng;
}

/** 駅情報編集用のフォームを出力する */
function editForm(onsubmit, station_type, st_g_name, st_g_ruby, pref_cd){
	var ret =
		"<form name='add_st_form' method=\"post\" onsubmit=\"return "+onsubmit+"\"><table>" +
		"   <tr><td align='right'>都道府県：</td><td><select name='pref_cd'>";

	//都道府県
	for(i=0;i<prefs.length;i++){
		var selected = "";
		if(i==pref_cd) selected = "selected";
		ret += "<option value='"+i+"' "+ selected + ">"+ prefs[i] +"</option>";
	}
	ret += "</select></td></tr>";

	ret += "   <tr><td align='right'>乗り物タイプ：</td><td><select name='station_type'>";
	//駅タイプコード
	for(i=5;i<r_names.length;i++){
		var selected = "";
		if(i==station_type) selected = "selected";
		ret += "<option value='"+i+"' "+ selected + ">"+ r_names[i] +"</option>";
	}
	ret += "</select></td></tr>";

	ret +=
		"   <tr><td align='right'>停留所名：</td><td><input type='text' name='station_g_name' value='"+st_g_name+"' /></td></tr>" +
		"   <tr><td align='right'>ふりがな：</td><td><input type='text' name='station_g_ruby' value='"+st_g_ruby+"' /></td></tr>" +
		"	<tr><td colspan='2'>マーカーをドラッグすると位置が変更できます</td></tr>" +
		"   <tr><td colspan='2'><input type='submit'/></td></tr></table>" +
		"</form>";

	ret = "<div style='height:250px;'>"+ret+"</div>";
	return ret;
}

function showLoadingIcon(){
	var html = "<table height='80%'><tr><td align='center'>";
	if(isEditMode)html+="<img src='../../site-data/img/loading.gif'/>";
	else html+="<img src='../site-data/img/loading.gif'/>";
	html+="</td></tr></table>"; //右側のリストに表示させるHTML
	document.getElementById('station_list').innerHTML = html;
}

/**
 * ジオコーディングAPIを利用して文字列から地図上の位置を変更
 */
function codeAddress() {
    var address = document.getElementById("address").value;
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          map.setCenter(results[0].geometry.location);
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }

