
var currentPanel = null;//表示中のパネル

var panel_w    = 600;//パネルの横幅
var panel_h    = 455;//パネルの縦幅

//デバッグ
function tt(m){
	return;
	$("tt").innerHTML += "<br />\n" + m + "\n";
}

//開始
function ss_init(){
	selectPanel(0);
}
//パネル表示切替(切り替え事前処理を含む)
function selectPanel(tgt){
	showPanel(tgt || (flagGotRosenzu ? 1 : 0));
	if(tgt == 3)rm_send();
}
//パネル表示切替(パネルの表示切り替えのみ)
function showPanel(tgt){
	tt("showPanel()>> tgt:" + tgt);
	if(currentPanel == tgt)return;
	currentPanel = tgt;
	for(var i = 0, len = 5; i < len; i++){
		$("panel" + i).style.display = "none";
	}
	$("panel" + tgt).style.display = "block";
	
	//タブの処理
	var tabTgt = 0;
	for(var i = 0; i <= 4; i++){
		if(i == 1)continue;//1のタブはない
		tabTgt = tgt == 1 ? 0 : tgt;
		$("tab" + i).className = "sprite " + (i == tabTgt ? "spTab" + i + "_on" : "spTab" + i);
	}
}


//##############################################################################
//##
//##  検索前画面
//##
//##############################################################################

/******************************************************************************/
//検索前画面：フォーム
/******************************************************************************/
var flagFromTo = 0;//出発地・到着地入力フラグ(0:出発地登録待ち状態　1:到着地登録待ち状態)
var COLOR_INPUT_FORM = "#ffec99"

//フォームを送信
function sendForm(tgt){
	if( !($('fnm').value || $('sx').value || $('sy').value) || !($('tnm').value || $('ex').value || $('ey').value) ){
		alertErr("出発地、目的地の両方を選択してください。");
		return;
	}else if( ($('fnm').value == $('tnm').value) && ($('sx').value == $('ex').value) && ($('sy').value == $('ey').value) ){
		alertErr("同じ出発地、目的地が選択されています。選択を確認して再度検索してください。");
		return;
	}
	var ym = new Array;
	ym = $F('syearmonth').split(',');
	$('syear').value = ym[0];
	$('smonth').value = ym[1];
	$('searchForm').submit();
	
	/*
	var buff = "";
	
	buff += "mode=" + ($("Mthd").value || 0)
	      + "&sx=" + ($('sx').value || "")
	      + "&sy=" + ($('sy').value || "")
	      + "&ex=" + ($('ex').value || "")
	      + "&ey=" + ($('ey').value || "")
	      + "&sname=" + ($('fnm').value || "")
	      + "&ename=" + ($('tnm').value || "")
	      + "&syear=" + ($('syear').value || "")
	      + "&smonth=" + ($('smonth').value || "")
	      + "&sday=" + ($('sday').value || "")
	      + "&shour=" + ($('shour').value || "")
	      + "&smin=" + ($('sminute').value || "")
	      + "&basis=" + ($('basis').value || "")
	      + ($("Mthd").value ? "" : "&sort=" + ($('srt').value || ""));
	location.href = "/RouteSearchPlus?" + buff;
	
	
	location.href = "./c_search_result.html";
	*/
}
//フォーカスの設定
function setFocus(){
	setCommonCookie(RT_COOKIE_KEY_FOCUS, flagFromTo);//フォーカス維持用cookieセット
	var cond = $('latLanMenuCond');
	if(flagFromTo){
		//フォーカスをtoに移動する場合
		$('panelFrom').style.background = "";
		$('f_box').style.background = "";
		$('f_ttl').className = "sprite spTtlFrom";
		$('f_arrow').className = "spArrow";
		$('panelTo').style.background = "#fff7d1";
		$('t_box').style.background = COLOR_INPUT_FORM;
		$('t_ttl').className = "sprite spTtlTo_on";
		$('t_arrow').className = "sprite spArrow_on";
		if(cond)cond.innerHTML = "目的地";
	}else{
		//フォーカスをfromに移動する場合
		$('panelFrom').style.background = "#fff7d1";
		$('f_box').style.background = COLOR_INPUT_FORM;
		$('f_ttl').className = "sprite spTtlFrom_on";
		$('f_arrow').className = "sprite spArrow_on";
		$('panelTo').style.background = "";
		$('t_box').style.background = "";
		$('t_ttl').className = "sprite spTtlTo";
		$('t_arrow').className = "spArrow";
		if(cond)cond.innerHTML = "出発地";
	}
}
//フォーカスの移動
function changeFocus(tgt){
	flagFromTo = tgt;
	setFocus();
}
//任意の座標をsetFromToに渡す
function setLatLng(lat, lng, type, addr){
	if((lat < 34.98532390804601) || (lat > 35.290079148072884) || (lng < 137.04341863390334) || (lng > 137.5830534596335)){
		//指定できる範囲を限定
		alert("指定された地点は検索の対象外です。");
		return;
	}
	setFromTo(addr ? addr + "付近" : "北緯" + roundLatLng(lat) + "度・東経" + roundLatLng(lng) + "度", type, Math.floor(lng * 3600000), Math.floor(lat * 3600000));
}
//出発地・目的地をセット
function setFromTo(nm, type, x, y){
	if(rz_flagDragging)return;//路線図ドラッグ中のクリックを除外
	if(flagFromTo){
		//Toを選択
		$('tnm').value = nm;
		$('ex').value = x || "";
		$('ey').value = y || "";
		setRtCookieTo(nm, x || "", y || "", type);//cookieの設定
		flagFromTo = 0;
	}else{
		//Fromを選択
		$('fnm').value = nm;
		$('sx').value = x || "";
		$('sy').value = y || "";
		setRtCookieFrom(nm, x || "", y || "", type);//cookieの設定
		flagFromTo = 1;
	}
	updateFromToBox()//boxを更新
	updateMaps();//地図を更新
	setFocus();
}
//出発地・目的地を入れ替え
function swapFromTo(){
	var vfnm = $('fnm').value;
	var vfx = $('sx').value;
	var vfy = $('sy').value;
	var vtnm = $('tnm').value;
	var vtx = $('ex').value;
	var vty = $('ey').value;
	$('fnm').value = vtnm;
	$('sx').value = vtx;
	$('sy').value = vty;
	$('tnm').value = vfnm;
	$('ex').value = vfx;
	$('ey').value = vfy;
	setRtCookieAll(vtnm || "", vtx || "", vty || "", vfnm || "", vfx || "", vfy || "", PAGE_ROUTE);//cookieの入れ替え
	swapSrchParamCookie();//選択方法記録入れ替え
	updateFromToBox()//boxを更新
	updateMaps();//地図を更新
}
//出発地・目的地をクリア
function clearForm(){
	$('fnm').value = "";
	$('sx').value = "";
	$('sy').value = "";
	$('tnm').value = "";
	$('ex').value = "";
	$('ey').value = "";
	flagFromTo = 0;//フォーカスを初期化
	setFocus();//フォーカスを初期化
	setDateForm('searchForm', 'syearmonth', null ,'sday', null ,'shour', null ,'sminute', null);//時間をセットしたフォームを生成
	clearRtCookie();//cookieの設定
	clearSrchParamCookie();//選択方法記録消去
	updateFromToBox()//boxを更新
	updateMaps();//地図を更新
}
//出発地・目的地設定状態をf_box・t_boxに反映
function updateFromToBox(){
	var vfnm = $('fnm').value;
	var vfx  = $('sx').value;
	var vfy  = $('sy').value;
	var vtnm = $('tnm').value;
	var vtx  = $('ex').value;
	var vty  = $('ey').value;
	//f_box
	if(vfnm && vfx && vfy){
		$('f_boxNm').innerHTML   = vfnm;
		$('f_boxDiv').innerHTML  = "";
		$('f_boxNm').style.color = "";
	}else if(vfnm && !vfx && !vfy){
		$('f_boxNm').innerHTML   = vfnm.split("／駅")[0];
		$('f_boxDiv').innerHTML  = '<img id="g-rtCdSDiv" class="g-sprite ' + (vfnm.indexOf("／駅") < 0 ? 'g-spSearchFromToDivBus' : 'g-spSearchFromToDivTrain') + '" src="./common_image/trans.gif" alt="' + (vfnm.indexOf("／駅") < 0 ? 'バス停' : '駅') + '" />';
		$('f_boxNm').style.color = "";
	}else{
		$('f_boxNm').innerHTML   = "未選択";
		$('f_boxDiv').innerHTML  = "";
		$('f_boxNm').style.color = "#aaa";
	}
	//t_box
	if(vtnm && vtx && vty){
		$('t_boxNm').innerHTML   = vtnm;
		$('t_boxDiv').innerHTML  = "";
		$('t_boxNm').style.color = "";
	}else if(vtnm && !vtx && !vty){
		$('t_boxNm').innerHTML   = vtnm.split("／駅")[0];
		$('t_boxDiv').innerHTML  = '<img id="g-rtCdSDiv" class="g-sprite ' + (vtnm.indexOf("／駅") < 0 ? 'g-spSearchFromToDivBus' : 'g-spSearchFromToDivTrain') + '" src="./common_image/trans.gif" alt="' + (vtnm.indexOf("／駅") < 0 ? 'バス停' : '駅') + '" />';
		$('t_boxNm').style.color = "";
	}else{
		$('t_boxNm').innerHTML   = "未選択";
		$('t_boxDiv').innerHTML  = "";
		$('t_boxNm').style.color = "#aaa";
	}
}

/******************************************************************************/
//地図制御
/******************************************************************************/
//地点設定後、SGアイコンを表示して地図を表示
function updateMaps(){
	var params = new iconData(2);
	var vfnm = $('fnm').value;
	var tfnm = $('tnm').value;
	var fLng = $('sx').value / 3600000;
	var fLat = $('sy').value / 3600000;
	var tLng = $('ex').value / 3600000;
	var tLat = $('ey').value / 3600000;
	var sbuff = '<div style="width:250px;" class="tM hM">'
	          + '<img src="./common_image/icon_sg_normal_s.gif" width="24" height="24" style="vertical-align:middle;margin-right:8px;" alt="出発地" />'
	          + getRtCookieFromName()
	          + '</div>';
	var gbuff = '<div style="width:250px;" class="tM hM">'
	          + '<img src="./common_image/icon_sg_normal_g.gif" width="24" height="24" style="vertical-align:middle;margin-right:8px;" alt="目的地" />'
	          + getRtCookieToName()
	          + '</div>';
	if(vfnm)params.setParams(0, fLng, fLat, "./common_image/map_rt_s.gif", 24, 70, sbuff);//出発地のアイコンを表示
	if(tfnm)params.setParams(1, tLng, tLat, "./common_image/map_rt_g.gif", 24, 70, gbuff);//出発地のアイコンを表示
	initIcon(params);
	var startLat = MAP_DEFAULT_LAT;
	var startLng = MAP_DEFAULT_LNG;
	var startScale = MAP_DEFAULT_SCALE;
	if((vfnm && fLng && fLat) && (tfnm && tLng && tLat)){
		startLat = getMiddleLatLng([fLat, tLat], [fLng,  tLng])[0];
		startLng = getMiddleLatLng([fLat, tLat], [fLng, tLng])[1];
		startScale = getBestScale([fLat, tLat], [fLng, tLng]);
	}else if(vfnm && fLng && fLat){
		startLat = fLat;
		startLng = fLng;
		startScale = MAP_DEFAULT_SCALE;
	}else if(tfnm && tLng && tLat){
		startLat = tLat;
		startLng = tLng;
		startScale = MAP_DEFAULT_SCALE;
	}
	//マップ反映
	tt('--> openMap() startScale:' + startScale + ', startLng:' + startLng + ', startLat:' + startLat);
	openMap(600, 390, startScale, startLng, startLat);
}
/******************************************************************************/
//住所フォーム制御
/******************************************************************************/
//任意の座標を設定するふきだしを生成
function setLatLngMenu() {
	closeAllAddrList();//住所検索を消去
	setMenu('<div style="width:200px;" class="tM hM">'
	        + 'ここを<span id="latLanMenuCond" class="tB">' + (flagFromTo ? '目的地' : '出発地') + '</span>に設定しますか？'
	        + '<p class="tS tGr">'
	        + '北緯 ' + roundLatLng(getClickLat()) + '度　東経 ' + roundLatLng(getClickLon()) + '度'
	        + '</p>'
	        + '<p style="margin-top:8px;">'
	        + '<a href="javascript:void(0);" onclick="closeMenu();setLatLng(' + getClickLat() + ', ' + getClickLon() + ', \'clickmap\')">[はい]</a>'
	        + '　<a href="javascript:void(0);" onclick="closeMenu();">[いいえ]</a>'
	        + '</p>'
	);
}
//住所フォームの例表示
function showExampleAddr(){
	$('boxAddr').isExample = true;
	$('boxAddr').style.color = "#aaa";
	$('boxAddr').value = "例　西町3丁目60";
	Event.observe("boxAddr", "focus", addrOnfocus);
	Event.observe("boxAddr", "blur", addrOnBlur);
}
//住所フォームのフォーカス時
function addrOnfocus(){
	hideAddrExample();//例を消去
	openAddrGuide();//住所入力ガイドを表示
	addrLng = 0;//入力欄フォーカス時に値をキャンセル
	addrLat = 0;//入力欄フォーカス時に値をキャンセル
}
//住所フォームのフォーカス時
function addrOnBlur(){
	setTimeout(closeAddrGuide, 400);//住所入力ガイドを時間差(枠内のボタン押下を拾う為)で消去
}
//住所フォームの例消去
function hideAddrExample(){
	var t = $('boxAddr');
	if (t.isExample){
		t.isExample = false;
		t.value = "";
		t.style.color = "";
	}
}

/******************************************************************************/
//検索パネル：路線図から選択
//-----------------------------------------------------------------------------
//このセクションのみ時刻表の路線図から選択でも使用している
/******************************************************************************/
var map_w       = page == "timetable" ? 960 : 600;//マップの横幅
var map_h       = page == "timetable" ? 390 : 390;//マップの縦幅
var rz_w        = 3850;//路線図の横幅
var rz_h        = 2640;//路線図の縦幅
var rz_cellX    = 7;//路線図の横タイル幅
var rz_cellY    = 7;//路線図の縦タイル幅
var minX        = 0;//ドラッグ可能範囲(最小X)
var maxX        = -rz_w + map_w;//ドラッグ可能範囲(最大X)
var minY        = 0;//ドラッグ可能範囲(最小Y)
var maxY        = -rz_h + map_h;//ドラッグ可能範囲(最大Y)
var rz_detailJs = (page == "timetable" ? "." : "") + './js/bus_map_list.js?' + new Date().getTime();//詳細路線図のファイル名
var rz_dragX    = 0;
var rz_dragY    = 0;
var rz_flagDragging = false;//路線図がドラッグ中か否かのフラグ
var rz_timerSetDrag = 0;
var rz_timerClearDrag = 0;
//詳細路線図の読み込み
function rz_loadDetail(){
	var scrElem = document.createElement("script");
	scrElem.setAttribute("type", "text/javascript");
	scrElem.setAttribute("language", "JavaScript");
	scrElem.setAttribute("src", rz_detailJs);
	document.getElementsByTagName("head")[0].appendChild(scrElem);
}
//開始
function rz_open(x, y){
	var moveToX = Math.floor((rz_w / rz_cellX) * (x - 1));
	var moveToY = Math.floor((rz_h / rz_cellY) * (y - 1));
	if(!flagGotRosenzu){
		//路線図未読み込み
		rz_loadDetail();//詳細路線図の読み込み
		$('busMap').onmousedown = rz_startDrag;
		flagGotRosenzu = true;
	}
	var posX = -moveToX;
	var posY = -moveToY;
	$('busMap').style.left = (posX >= minX ? minX : posX <= maxX ? maxX : posX) + "px";
	$('busMap').style.top = (posY >= minY ? minY : posY <= maxY ? maxY : posY) + "px";
	
	if(page == "timetable"){
		hideElem('panelKoiki');
		showElem('panelKakudai');
	}else{
		selectPanel(1);
	}
}
//ドラッグ開始
function rz_startDrag(e){
	var e = e || window.event;
	var t = e.target || e.srcElement;
	
	if(!(t.tagName == "IMG" || t.tagName == "AREA"))return;
	
	if(document.all){//IE
		if(page == "timetable"){
			rz_dragX = e.offsetX + $("busMapHolder").offsetLeft;
			rz_dragY = e.offsetY + $("busMapHolder").offsetTop;
		}else{
			rz_dragX = e.offsetX + $("kensakuPanelHolder").offsetLeft + $("busMapHolder").offsetLeft + $("panel1").offsetLeft;
			rz_dragY = e.offsetY + $("kensakuPanelHolder").offsetTop + $("busMapHolder").offsetTop + $("panel1").offsetTop;
		}
	}else{//FX
		rz_dragX = e.pageX - parseInt($('busMap').style.left);
		rz_dragY = e.pageY - parseInt($('busMap').style.top);
	}
	document.onmousemove = rz_dragging;
	document.onmouseup   = rz_stopDrag;
	rz_setCurClosedHand();//カーソルを変更
	return false;
	
}
//ドラッグ継続
function rz_dragging(e){
	var e = e || window.event;
	var t = e.target || e.srcElement;
	
	if(rz_timerClearDrag)clearTimeout(rz_timerClearDrag);//先に走っている状態解除タイマーをキャンセル
	rz_timerSetDrag = setTimeout(rz_setDrag, 100);//時間差でドラッグ状態フラグを立てる
	
	var dgtgt = $('busMap');
	var posX, posY;
	
	if(document.all){//IE
		posX = e.clientX - rz_dragX + (document.documentElement.scrollLeft || document.body.scrollLeft) - 2;
		posY = e.clientY - rz_dragY + (document.documentElement.scrollTop || document.body.scrollTop) - 2;
		$('busMap').style.left = (posX >= minX ? minX : posX <= maxX ? maxX : posX) + "px";
		$('busMap').style.top = (posY >= minY ? minY : posY <= maxY ? maxY : posY) + "px";
	}else{//FX
		posX = e.pageX - rz_dragX;
		posY = e.pageY - rz_dragY;
		$('busMap').style.left = (posX >= minX ? minX : posX <= maxX ? maxX : posX) + "px";
		$('busMap').style.top = (posY >= minY ? minY : posY <= maxY ? maxY : posY) + "px";
	}
	return false;
}
//ドラッグ終了
function rz_stopDrag(e){
	document.onmousemove = {};
	document.onmouseup = {};
	rz_setCurHand();//カーソルを変更
	
	if(rz_timerSetDrag)clearTimeout(rz_timerSetDrag);//先に走っている状態開始タイマーをキャンセル
	rz_timerClearDrag = setTimeout(rz_clearDrag, 300);
}
//ドラッグ状態の開始
function rz_setDrag(){
	rz_flagDragging = true;
}
//ドラッグ状態の解除
function rz_clearDrag(){
	rz_flagDragging = false;
}
//カーソルの変更
function rz_setCurPointer(){
	if(rz_flagDragging)return;//ドラッグ状態の場合は無視
	$('rz_img').style.cursor = "pointer";
}
function rz_setCurHand(){
	$('rz_img').style.cursor = "url('" + (page == "timetable" ? "." : "") + "./common_image/cur_hand.cur'), move";
}
function rz_setCurClosedHand(){
	$('rz_img').style.cursor = "url('" + (page == "timetable" ? "." : "") + "./common_image/cur_closedhand.cur'), move";
}

/******************************************************************************/
//検索パネル：頭文字から選択
/******************************************************************************/
var timerFs = 0;

function fs_toggle(kana){
	fs_cancelHide();
	var chrList = [
		["わ"],// 0
		["あ", "い", "う", "え", "お"],// 1
		["か", "き", "く", "け", "こ"],// 2
		["さ", "し", "す", "せ", "そ"],// 3
		["た", "ち", "つ", "て", "と"],// :
		["な", "に", "ぬ", "ね", "の"],// :
		["は", "ひ", "ふ", "へ", "ほ"],
		["ま", "み", "む", "め", "も"],
		["や", "ゆ", "よ"],
		["ら", "り", "る", "れ", "ろ"]
	];
	var buff = "";
	for(var i = 0, len = chrList[kana].length; i < len; i++){
		buff += '<a href="javascript:void(0);" class="fs_c tM" onclick="fs_hide();fs_send(\'' + chrList[kana][i] + '\'); return false;">' + chrList[kana][i] + '</a>';
	}
	$("fs_c_holder").innerHTML = buff;
	$("fs_c_holder").style.left = $("fs" + kana).offsetLeft + "px";
	$("fs_c_holder").style.top = "0";
	$("fs_c_holder").style.display = "block";
}
function fs_onmouseout(){
	timerFs = setTimeout(fs_hide, 400);
}
function fs_cancelHide(){
	clearTimeout(timerFs);
}
function fs_hide(){
	hideElem("fs_c_holder");
}
/*********************/
//頭文字処理
var listStationDoc = null;
var firstStringChar = "";

//処理開始
function fs_send(kana){
	tt("fs_send()>> kana:" + kana);
	
	var url = LIST_STATION_URL;
	hideElem('fs_list')//ローディング開始
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: stringUtils.getUrlParam(LIST_STATION_FIRST_NAME, kana),
			onFailure: function(httpObj) {showLoadingErr('fs_list',httpObj)},
			onSuccess: function(req) {
				showElem('fs_list')//ローディング解除
				//tt("fs_send()>> onSuccess");
				listStationDoc = req.responseXML;
				var listStationData = new RouteListStation();
				listStationData.init(listStationDoc);
				var listCount = listStationData.getListCount();
				var buff = "";
				if(!listCount){
					buff += '<p class="tC" style="margin-top:12px;">該当する駅・バス停はありません</p>';
				}else{
					for (var i = 0; i < listCount; i++){
						buff += "<a"
						      + " class=\"item\""
						      + " href=\"javascript:void(0);\" onclick=\"setFromTo('" + listStationData.getName()[i] + "', 'initial');return false;\">"
						      + listStationData.getName()[i]
						      + "<br />"
						      + "<span class=\"tS hS tGr\">"
						      + listStationData.getKana()[i]
						      + "</span>"
						      + "</a>";
								/*
								+ listStationData.getId()[i] + ", "
								+ listStationData.getPointX()[i] + ", "
								+ listStationData.getPointY()[i]
								*/
					}
				}
				$('fs_list').innerHTML = buff;
			}
		});
}
/******************************************************************************/
//検索パネル：路線名から選択
/******************************************************************************/
//路線一覧処理
var listRouteDoc = "";
function rm_send(){
	//再表示しない
	if(isGotRouteList)return;
	//showLoading('routeListArea',true);//ローディング開始
	var url = LIST_ROUTE_URL;
	var params = "";
	params += stringUtils.getUrlParam("cache", new Date().getTime());
	hideElem('rm_list')//ローディング表示
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: params,
			onFailure: function(httpObj) {showLoadingErr('rm_list',httpObj)},
			onSuccess: function(req) {
				showElem('rm_list')//ローディング解除
				listRouteDoc = req.responseXML;
				var listRouteData = new RouteListRoute();
				listRouteData.init(listRouteDoc);
				var buff = "";
				var listCount = listRouteData.getListCount();
				var thisId = listRouteData.getId();
				var thisName = listRouteData.getName();
				var thisKana = listRouteData.getKana();
				var thisDivision = listRouteData.getDivision();
tt("listCount:"+listCount);
tt("--------------for START");
				for (var i = 0; i < listCount; i++){
					//閉じた状態
					buff += '<a'
					      + ' href="javascript:void(0);"'
					      + ' onclick="requestListRouteStationStop(\'' + thisId[i] + '\');return false;"'
					      + ' id="' + ('li_closed_' + thisId[i]) + '"'
					      + ' class="rm_listClosed"'
					      + '>'
					      + '<img'
					      + ' src="./common_image/icon_stalist_'+(Number(thisDivision[i]) ? 'train' : 'bus') + '.gif"'
					      + ' class="rm_listDivisionIcon" width="48" height="16"'
					      + ' alt="' + (Number(thisDivision[i]) ? "電車" : "バス") + '"'
					      + ' />'
					      + thisName[i]
					      + '　<span class="tS hS tGr">' + thisKana[i] + '</span>'
					      + '　<span'
					      + ' id="' + ('li_status_' + thisId[i]) + '"'
					      + ' class="rm_listStatus tM hS"></span>'
					      + '</a>';
					//開いた状態
					buff += '<a'
					      + ' href="javascript:void(0);"'
					      + ' onclick="closeStationStopList(\'' + thisId[i] + '\');return false;"'
					      + ' id="' + ('li_opened_' + thisId[i]) + '"'
					      + ' class="rm_listOpened"'
					      + '>'
					      + '<img'
					      + ' src="./common_image/icon_stalist_'+(Number(thisDivision[i]) ? 'train' : 'bus') + '.gif"'
					      + ' class="rm_listDivisionIcon" width="48" height="16"'
					      + ' alt="' + (Number(thisDivision[i]) ? '電車' : 'バス') + '"'
					      + ' />'
					      + thisName[i]
					      + '　<span class="tS hS tGr">' + thisKana[i] + '</span>'
					      + '</a>';
					//バス停一覧表示用
					buff += '<div'
					      + ' id="' + ('li_detail_' + thisId[i]) + '"'
					      + ' class="rm_listDetail tLf">'
					      + '</div>';
				}
				$('rm_list').innerHTML = buff;
				isGotRouteList = true;
			}
		});
}
//バス停一覧処理
var listStationStopDoc = null;
function requestListRouteStationStop(routeId){
	tt("requestListRouteStationStop()>> routeId:" + routeId);
	//読み込み済みの場合は開くだけ
	if($("li_detail_" + routeId).innerHTML != ""){
		openStationStopList(routeId);
		return;
	}
	$("li_status_" + routeId).innerHTML = "読み込み中...";
	var url = LIST_ROUTE_URL;
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: 'rcd=' + routeId,
			onSuccess: function(req) {
				$("li_status_" + routeId).innerHTML = "";
				listStationStopDoc = req.responseXML;
				var listStationStopData = new RouteListStationStop();
				listStationStopData.init(listStationStopDoc);
				var listCount = listStationStopData.getStationStopCount();
				var buff = "";
				/*
				buff += "<li>"
						+ "<a href=\"javascript:void(0);\" onclick=\"closeStationStopList('" + listStationStopData.getId() + "');return false;\">閉</a>"
						+ listStationStopData.getName() + ", "
						+ "(" + listStationStopData.getKana() + "), "
						+ listStationStopData.getId() + "</li>"
				*/
				for (var i = 0; i < listCount; i++){
					buff += '<a'
					      + ' class="item"'
					      + ' href="javascript:void(0);"'
					      + ' onclick="setFromTo(\'' + listStationStopData.getStopName()[i] + '\', \'list\');return false;"'
					      + ' title="' + listStationStopData.getStopKana()[i] + '"'
					      + '>'
					      + listStationStopData.getStopName()[i]
					      + "</a>";
							/*
							+ "<span class=\"tS hS tGr\">" + listStationStopData.getStopKana()[i] + "</span>　"
							+ "<br /><span class=\"tS hS tGr\">"
							+ "#:" + listStationStopData.getStopNumber()[i] + ", "
							+ "id:" + listStationStopData.getStopId()[i] + ", "
							+ "x:" + listStationStopData.getStopPointX()[i] + ", "
							+ "y:" + listStationStopData.getStopPointY()[i] + "</span>"
							+ "　<span class=\"tS hS tGr\">"
							+ "[路線]"
							+ listStationStopData.getStopParentRouteId()[i] + "-"
							+ listStationStopData.getStopParentKana()[i] + "-"
							+ listStationStopData.getStopParentName()[i] + "　"
							+ "[系統]"
							+ listStationStopData.getStopChildRouteId()[i] + "-"
							+ listStationStopData.getStopChildKana()[i] + "-"
							+ listStationStopData.getStopChildName()[i] + "</span>"
							*/
				}
				buff += '<hr style="height:0;width:0;clear:left;visibility:hidden;" />';
				$('li_detail_' + listStationStopData.getId()).innerHTML = buff;
				openStationStopList(routeId);
			}
		});
}
//バス停一覧閉じる処理
function closeStationStopList(tgtId){
	//tt('closeStationStopList()>> 【閉】tgtId:' + tgtId);
	$("li_opened_" + tgtId).style.display = "none";
	$("li_closed_" + tgtId).style.display = "block";
	$("li_detail_" + tgtId).style.display = "none";
}
//バス停一覧開く処理
function openStationStopList(tgtId){
	//tt('openStationStopList()>> 【開】tgtId:' + tgtId);
	$("li_opened_" + tgtId).style.display = "block";
	$("li_closed_" + tgtId).style.display = "none";
	$("li_detail_" + tgtId).style.display = "block";
}
/******************************************************************************/
//検索パネル：地図から検索：住所検索
/******************************************************************************/
var param = "";
var addrStr = "";//確定住所格納
var addrLng = 0;//確定住所経度格納
var addrLat = 0;//確定住所緯度格納

//住所検索（手入力から開始）
function getAddrByInput(){
	tt("getAddrByInput()>>");
	var addressDoc = null;
	var addressData = new AddressData();
	
	var url = "./AddressSuggest?";
	var str = $('boxAddr').value//ボックスを取得
	if((str == "") || ($('boxAddr').isExample)){
		//空欄なら検索終了
		alert("住所が入力されていません。住所を入力してください。");
		$('boxAddr').focus();
		return;
	}
	var params = "";
	params += stringUtils.getUrlParam("word", str);
	params += stringUtils.getUrlParam("lmt", 1000);
	params += stringUtils.getUrlParam("cache", new Date().getTime());
	hideElem('addrSugList');//ローディング開始
	openSugList();//リストを表示
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: params,
			onFailure: alertLoadingErr,
			onSuccess: function(req) {
				showElem('addrSugList');//ローディング解除
				addressDoc = req.responseXML;
				addressData = new AddressData();
				addressData.init(addressDoc);
				var listCount = addressData.getListCount();
				if(listCount == 0){
					//レベルに該当する住所がなければ検索終了
					alert("該当する住所がありません。\n「住所を選んで入力」をお試しください。");
					$('boxAddr').focus();
					return;
				}
				var buff = "";
				for (i = 0; i < listCount; i++) {
					var thisAddrX = addressData.getPointX()[i];
					var thisAddrY = addressData.getPointY()[i];
					var thisAddrStr = addressData.getAddress()[i];
					var thisAddr1 = addressData.getAddress01()[i];
					var thisAddr2 = addressData.getAddress02()[i];
					var thisAddr3 = addressData.getAddress03()[i];
					var thisAddr4 = addressData.getAddress04()[i];
					var thisAddr5 = addressData.getAddress05()[i];
					var thisAddr6 = addressData.getAddress06()[i];
					//var thisAddr = addressData["getAddress" + (lv ? "0" +(lv + 1) : "")]()[i];
					//var thisAddrKana = addressData.getAddressKana()[i];
					buff += '<a'
					      + ' class="item"'
					      + ' href="javascript:void(0);"'
					      + ' onclick="sendSelectedKouho(\''+ thisAddrStr + '\', ' + thisAddrX + ', ' + thisAddrY + ', \'' + thisAddr1 + '\', \''+thisAddr2+'\', \''+thisAddr3+'\', \''+thisAddr4+'\', \''+thisAddr5+'\', \''+thisAddr6+'\');return false;"'
					      + '>'
					      + thisAddrStr
					      + '</a>';
				}
				$('addrSugList').innerHTML = buff;
			}
		})
}
//住所候補リストから選択された住所を住所検索に引き渡す
function sendSelectedKouho(str, x, y, v1, v2, v3, v4, v5, v6){
	$('boxAddr').value = str;//ボックスを設定
	addrLng = x / 3600000;//保持している経度に設定
	addrLat = y / 3600000;//保持している緯度に設定
	var prm = "";
	var lv = 0;
	if(v1){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_1, v1);
		lv++;
	}
	if(v2){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_2, v2);
		lv++;
	}
	if(v3){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_3, v3);
		lv++;
	}
	if(v4){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_4, v4);
		lv++;
	}
	if(v5){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_5, v5);
		lv++;
	}
	if(v6){
		prm += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_6, v6);
		lv++;
	}
	getAddrByFirst(lv, str, x, y, prm);
	
	switchSugToAddr();//住所検索リストに切り替え
}

//住所検索（頭文字から開始）
function getAddrByFirst(lv, str, x, y, prm){
	$('mp_addrKanaDiv').style.display = "none";//かな選択領域は表示しない
	$('mp_addrListDiv').style.display = "block";//リスト表示領域を表示
	var addressDoc = null;
	var addressData = new AddressData();
	var url = "./AddressSearch?";
	if(!prm){
		if(lv == 0){
			addrParams = stringUtils.getUrlParam("wordkana", str);
			addrParams += stringUtils.getUrlParam("lmt", 1000);
			addrParams += stringUtils.getUrlParam("cache", new Date().getTime());
			hideAddrExample();//例表示解除
			$('boxAddr').value = "";//ボックスを空欄に
			addrLng = 0;//確定住所経度も空に
			addrLat = 0;//確定住所緯度も空に
		}else if(lv > 6){
			centerAddr();//lvが6を超えたら強制検索終了
		}else{
			$('boxAddr').value += (!isNaN($('boxAddr').value.slice(-1)) && !isNaN(str.charAt(0)) ? " - " : "") + str;//ボックスに追加
			addrLng = x / 3600000;//保持している経度に設定
			addrLat = y / 3600000;//保持してい緯度に設定
			if(lv == 1){
				addrParams = "";
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_1, str);
			}else if(lv == 2){
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_2, str);
			}else if(lv == 3){
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_3, str);
			}else if(lv == 4){
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_4, str);
			}else if(lv == 5){
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_5, str);
			}else if(lv == 6){
				addrParams += stringUtils.getUrlParam(ADDR_SEARCH_KEYWORD_6, str);
			}
			addrParams += stringUtils.getUrlParam("lmt", 1000);
			addrParams += stringUtils.getUrlParam("cache", new Date().getTime());
		}
	}else{
		addrParams = prm;
	}
	hideElem('addrList');//ローディング開始
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: addrParams,
			onFailure: alertLoadingErr,
			onSuccess: function(req) {
				showElem('addrList');//ローディング解除
				addressDoc = req.responseXML;
				addressData = new AddressData();
				addressData.init(addressDoc);
				var listCount = addressData.getListCount();
				if(listCount == 0)centerAddr();//レベルに該当する住所がなければ検索終了
				var buff = "";
				for (i = 0; i < listCount; i++) {
					var thisAddrX = addressData.getPointX()[i];
					var thisAddrY = addressData.getPointY()[i];
					var thisAddr = addressData["getAddress" + (lv ? "0" +(lv + 1) : "")]()[i];
					var thisAddrKana = addressData.getAddressKana()[i];
					buff += '<a'
					      + ' class="item"'
					      + ' href="javascript:void(0);"'
					      + ' onclick="getAddrByFirst(' + (lv + 1) + ', \'' + thisAddr + '\', ' + thisAddrX + ', ' +thisAddrY + ');return false;"'
					      + '>'
					      + thisAddr
					      + '</a>';
				}
				buff += '<hr style="height:0;width:0;clear:left;visibility:hidden;" />';
				$('addrList').innerHTML = buff;
			}
		})
}

//選択された住所を地図に表示
function centerAddr(){
	tt("centerAddr()>>");
	resetOverlays();//マップ上の要素を消去
	closeAllAddrList();//住所検索閉じる
	if(addrLng && addrLat){
		addrStr = $('boxAddr').value;//センタリングされた時点で住所確定としテキストボックスの値を取得
		resetOverlays();//マップ上の表示を消去
		var params = new iconData(1);
		params.setParams(0, addrLng, addrLat, "trans.gif", 1, 1,
				'<div style="width:200px;" class="tM hM">'
					+ 'ここを<span id="latLanMenuCond" class="tB">' + (flagFromTo ? '目的地' : '出発地') + '</span>に設定しますか？'
					+ '<p class="tS tGr">'
					+ '豊田市' + addrStr + '付近'
					+ "</p>"
					+ '<p style="margin-top:8px;">'
					+ '<a href="javascript:void(0);" onclick="clearAllBalloon();setLatLng(' + addrLat + ', ' + addrLng + ', \'addr\', \'' + addrStr + '\')">[はい]</a>'
					+ '　<a href="javascript:void(0);" onclick="clearAllBalloon();">[いいえ]</a>'
					+ '</p>'
			);
		initIcon(params);
		openMap(600, 390, 10000, addrLng, addrLat, 0);
	}else{
		//addrLng, addrLatが設定されていない状態（＝手打ちで検索が要求されているとき）
		getAddrByInput();
	}
}
//表示されているリストを切り替え
function switchSugToAddr(){
	closeAllAddrList();//すべての住所リストを消す
	resetOverlays();//マップ上の要素を消去
	closeMenu();//メニュー閉じる
	$('mp_addrSearch').style.display = "block";
	$('mp_addrKanaDiv').style.display = "none";//かな選択領域は可視化しない
	$('mp_addrListDiv').style.display = "block";//リスト表示領域は可視化
}
//頭文字による住所リストを表示
function openAddrList(){
	closeAllAddrList();//すべての住所リストを消す
	resetOverlays();//マップ上の要素を消去
	closeMenu();//メニュー閉じる
	$('mp_addrSearch').style.display = "block";
	$('mp_addrKanaDiv').style.display = "block";//かな選択領域を可視化
	$('mp_addrListDiv').style.display = "none";//リスト表示領域は可視化しない
}
//手入力による住所リストを表示
function openSugList(){
	closeAllAddrList();//すべての住所リストを消す
	resetOverlays();//マップ上の要素を消去
	closeMenu();//メニュー閉じる
	$('mp_addrSugSearch').style.display = "block";
}
//住所入力ガイドを表示
function openAddrGuide(){
	tt("openAddrGuide()>>");
	closeAllAddrList();//すべての住所リストを消す
	resetOverlays();//マップ上の要素を消去
	closeMenu();//メニュー閉じる
	$('mp_addrGuide').style.display = "block";
}
//頭文字による住所リストを消す
function closeAddrList(){
	$('mp_addrSearch').style.display = "none";
	$('addrList').innerHTML = "";
}
//頭文字による住所リストを消す
function closeSugList(){
	$('mp_addrSugSearch').style.display = "none";
	$('addrSugList').innerHTML = "";
}
//住所入力ガイドを消す
function closeAddrGuide(){
	$('mp_addrGuide').style.display = "none";
}
//すべての住所リストを消す
function closeAllAddrList(){
	closeAddrList();
	closeSugList();
	closeAddrGuide();
}















//##############################################################################
//##
//##  検索結果画面
//##
//##############################################################################

//初期化
var sY                        = null;//検索時刻年
var sM                        = null;//検索時刻月
var sD                        = null;//検索時刻日
var sH                        = null;//検索時刻時
var sMin                      = null;//検索時刻分
var sFnm                      = null;//出発地点名称
var sFromX                    = null;//出発地点緯度
var sFromY                    = null;//出発地点経度
var sTnm                      = null;//到着地点名称
var sToX                      = null;//到着地点緯度
var sToY                      = null;//到着地点経度
var sBasis                    = null;//出発指定か到着指定か
var sSort                     = null;//並び順
var sMthd                     = null;//交通手段(市内ルートのみ使用)
var currentKouho              = null;//現在表示されているルート候補
var sSrchParam                = null;//選択方法の記録
var sMl                       = null;//メールフォーム
//マップ描画リスト(3次元配列)
var plotIconNum               = new Array();//1候補あたりのアイコンの数(2次元)
var plotLatList               = new Array();//3次元(区間の出発・到着で1セットのLat配列)
var plotLngList               = new Array();//3次元(区間の出発・到着で1セットのLng配列)
var plotLatFlatList           = new Array();//2次元(すべてのLatをフラットに並べた配列)
var plotLngFlatList           = new Array();//2次元(すべてのLngをフラットに並べた配列)
var plotIdList                = new Array();//3次元
var plotStrList               = new Array();//3次元
var plotTypeList              = new Array();//2次元
//マップ線リスト(3次元配列)
var lineLatList               = new Array();
var lineLngList               = new Array();
var lineColorList             = new Array();
var lineWidthList             = new Array();
//マップ線幅
var lineWidth                 = 8;
//周辺情報描画リスト
var aroundProtSerial          = new Array();//周辺アイコンのID配列
var aroundProtNames           = new Array();//周辺アイコンの名称配列
var aroundProtKana            = new Array();//周辺アイコンのかな配列
var aroundProtCategory        = new Array();//周辺アイコンのカテゴリ番号配列
var aroundProtCategoryName    = new Array();//周辺アイコンのカテゴリ名配列
var aroundProtSubCategory     = new Array();//周辺アイコンのサブカテゴリ番号配列
var aroundProtSubCategoryName = new Array();//周辺アイコンのサブカテゴリ名配列
var aroundLat                 = new Array();//周辺緯度配列を初期化
var aroundLng                 = new Array();//周辺経度配列を初期化
//マップ移動用値保持
var fromLng                   = null;//出発地経度
var fromLat                   = null;//出発地緯度
var fromPlotId                = null;//出発地プロットID
var toLng                     = null;//目的地経度
var toLat                     = null;//目的地緯度
var toPlotId                  = null;//目的地プロットID
var zenLng                    = null;//全体表示中心経度
var zenLat                    = null;//全体表示中心緯度
var zenScale                  = null;//全体表示スケール
//マップ初期スケール
scale                         = MAP_DEFAULT_SCALE;

//onload時のcookie取得
function getCookies(){
	sMthd = getCookie(SEARCH_MTHD);//sMthd=0:電車バス＋徒歩, 1:車(modeパラメータとして使用)
	sY = getCookie(SEARCH_YEAR);
	sM = getCookie(SEARCH_MONTH);
	sD = getCookie(SEARCH_DAY);
	sH = getCookie(SEARCH_HOUR);
	sMin = getCookie(SEARCH_MINUTE);
	sBasis = getCookie(SEARCH_BASIS);
	sSort = getCookie(SORT);
	sFnm = getCookie(SEARCH_FROM_NAME);
	sFromX = getCookie(SEARCH_FROM_X);
	sFromY = getCookie(SEARCH_FROM_Y);
	sTnm = getCookie(SEARCH_TO_NAME);
	sToX = getCookie(SEARCH_TO_X);
	sToY = getCookie(SEARCH_TO_Y);
	sSrchParam = getSrchParamCookie();
	sMl = getCookie("rt_ml");
}

SEARCH_DAY = "sday";
function requestRouteSearch() {
	tt("requestRouteSearch()>>");
	
	clearAllLoading();
	$('gRoute').innerHTML = "";//ルート表示を消去
	showLoading('gRoute',true);//ローディング開始

	var url = "/RouteSearchPlus?";
	var ajax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: stringUtils.getUrlParam(BEHAVIOR, 'busRoute') 
						+ stringUtils.getUrlParam("mode", sMthd) 
						+ stringUtils.getUrlParam(SEARCH_YEAR, sY) 
						+ stringUtils.getUrlParam(SEARCH_MONTH, sM) 
						+ stringUtils.getUrlParam(SEARCH_DAY, sD) 
						+ stringUtils.getUrlParam(SEARCH_HOUR, sH) 
						+ stringUtils.getUrlParam(SEARCH_MINUTE, sMin) 
						+ stringUtils.getUrlParam(SEARCH_BASIS, sBasis) 
						+ stringUtils.getUrlParam(SORT, sSort) 
						+ stringUtils.getUrlParam(SEARCH_FROM_NAME, sFnm) 
						+ stringUtils.getUrlParam(SEARCH_FROM_X, sFromX) 
						+ stringUtils.getUrlParam(SEARCH_FROM_Y, sFromY) 
						+ stringUtils.getUrlParam(SEARCH_TO_NAME, sTnm)
						+ stringUtils.getUrlParam(SEARCH_TO_X, sToX) 
						+ stringUtils.getUrlParam(SEARCH_TO_Y, sToY) 
						+ (page == sSrchParam[0]
						        ? stringUtils.getUrlParam("michiSearchParamFrom", sSrchParam[1])
						        + stringUtils.getUrlParam("michiSearchParamTo", sSrchParam[2])
						        : ""
						  ),
			onFailure: function(httpObj) {
				showLoadingErr('gRoute', httpObj);
				//マップ初期表示	
				openMap(600, 390, (scale ? scale : MAP_DEFAULT_SCALE), MAP_DEFAULT_LNG, MAP_DEFAULT_LAT);
				$('gRoute').innerHTML = buff;
			},
			onSuccess: function(req) {
				showLoading('gRoute',false);//ローディング終了
				var routeDataXML = req.responseXML;
				var routeResult = new RouteResult();
				routeResult.init(routeDataXML);
				var i, listCount = routeResult.getListCount();
				var buff = "";
				if(listCount){
					//結果がある場合
					if(sMthd == 0)$('sendMail').style.display = "block";//電車・バス検索のみメール連携使用可
					buff += "<div id=\"gRoute-head\">"
								+ "候補ルート";
					if((sMthd == 0) && (listCount >= 2)){
						//電車・バス検索で候補が二つ以上あるの場合
						buff += "　　<span class=\"tS hS\">表示順："
								+ (sSort==0
								    ? "　<span style=\"color:#f80;\">時刻順</span>"
								    : "　<a href=\"javascript:void(0);\" onclick=\"researchByOtherSort(0);return false;\">時刻順</a>"
								  )
								+ (sSort==1
								    ? "　<span style=\"color:#f80;\">のりかえ回数順</span>"
								    : "　<a href=\"javascript:void(0);\" onclick=\"researchByOtherSort(1);return false;\">のりかえ回数順</a>"
								  )
								+ (sSort==2
								    ? "　<span style=\"color:#f80;\">運賃順</span>"
								    : "　<a href=\"javascript:void(0);\" onclick=\"researchByOtherSort(2);return false;\">運賃順</a>"
								  )
								+ "</span>";
					}
					buff += "</div>";
					for (var i = 0; i < listCount; i++){
						//１候補の処理
						plotIconNum[i] = listCount;
						plotLatList[i] = new Array();
						plotLngList[i] = new Array();
						plotLatFlatList[i] = new Array();
						plotLngFlatList[i] = new Array();
						plotIdList[i] = new Array();
						plotStrList[i] = new Array();
						plotTypeList[i] = new Array();
						lineLatList[i] = new Array();
						lineLngList[i] = new Array();
						lineColorList[i] = new Array();
						lineWidthList[i] = new Array();
						var routeData = routeResult.getRouteData()[i];
						var routeDataCount = routeData.getListCount();
						var routeComment   = routeData.getRouteComment();
						var thisTotalDepTime = routeData.getMoveData()[0].getDepInfo().getTime();
						var thisTotalArvTime = routeData.getMoveData()[routeDataCount - 1].getArvInfo().getTime();
						var buffMove = [];
						buffMove.push(routeComment && routeComment.length ? '<p style="margin:0 10px 12px;padding:4px 2px 4px 5px;border:1px solid #faa;background:#fee;">' + routeComment + '</p>' : '');
						buffMove.push('<div class="gRoute-rtS">');
						buffMove.push('<p class="gRoute-rtSTime">', thisTotalDepTime, '</p>');
						buffMove.push('<p class="gRoute-rtSName">', '<img src="./common_image/icon_sg_normal_s.gif" width="24" height="24" style="vertical-align:middle;margin-right:8px;" alt="出発地" />', sFnm, '</p>');
						buffMove.push('</div>');
						for (var j = 0; j < routeDataCount; j++) {
							var moveData = routeData.getMoveData()[j];
							
							//**********値を取得**********
							var thisDepLng = moveData.getDepInfo().getPointX() / 3600000;
							var thisDepLat = moveData.getDepInfo().getPointY() / 3600000;
							var thisDepName = moveData.getDepInfo().getName();
							var thisDepDate = moveData.getDepInfo().getDate();
							var thisDepTime = moveData.getDepInfo().getTime();
							var thisDepId = (j+1)*100+1;
							var thisArvLng = moveData.getArvInfo().getPointX() / 3600000;
							var thisArvLat = moveData.getArvInfo().getPointY() / 3600000;
							var thisArvName = moveData.getArvInfo().getName();
							var thisArvDate = moveData.getArvInfo().getDate();
							var thisArvTime = moveData.getArvInfo().getTime();
							var thisArvId = (j+1)*100+2;
							var thisRoutelineName = moveData.getRouteName() + "／" + moveData.getRoutelineName();
							var thisComment = moveData.getComment();
							var thisAmountTime = moveData.getAmountTime();
							var thisFare = moveData.getFare();
							//**********ルート表示テーブルを生成**********
							if ((moveData.getMethod() == routeResult.METHOD_BUS)||(moveData.getMethod() == routeResult.METHOD_RAIL)) {
								if(moveData.getMethod() == routeResult.METHOD_BUS){
									thisLineColor = "#ff8800";//線の色を設定
									thisType = "bus";//タイプを設定
								}else{
									thisLineColor = "#ff0000";//線の色を設定
									thisType = "train";//タイプを設定
								}
								buffMove.push(
									'<table class="gRoute-rtTable gRoute-' + (moveData.getMethod() == routeResult.METHOD_BUS ? 'rtBus' : 'rtTrain') + '"><tr>',
									'<td class="gRoute-rtTdArrowTop"></td>',
									'<td class="gRoute-rtTdFromName tM">',
									'<span onclick="centerTarget(', thisDepId, ')">', thisDepName, '</span>',
									'</td><td class="gRoute-rtTdFromTime tM">',
									'<span>', thisDepTime, '</span>',
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowMiddle"><span class="print">↓</span></td>',
									'<td class="gRoute-rtTdInfo tM">',
									'<p>', thisRoutelineName, '</p>',
									'<p>運賃', (thisFare != '0' ? thisFare + '円</p>' : '&nbsp;--</p>'),
									(thisComment.length ? '<p>' + thisComment + '</p>': ""),
									'</td><td class="gRoute-rtTdInfoRight tM">',
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowBottom"><span class="print">━</span></td>',
									'<td class="gRoute-rtTdToName tM">',
									'<span onclick="centerTarget(', thisArvId, ')">', thisArvName, '</span>',
									'</td><td class="gRoute-rtTdToTime tM">',
									'<span>', thisArvTime, '</span>',
									'</td></tr></table>'
								);
							} else if (moveData.getMethod() == routeResult.METHOD_WALK) {
								thisLineColor = "#888888";//線の色を設定
								thisType = "walk";//タイプを設定
								var thisModthdName = moveData.getMethodName() == "" ? "徒歩" : moveData.getMethodName();
								buffMove.push(
									'<table class="gRoute-rtTable gRoute-rtWalk"><tr>',
									'<td class="gRoute-rtTdArrowTop" style="height:20px"></td>',
									'<td rowspan="2" class="gRoute-rtTdInfo tM">',
									(parseInt(thisAmountTime) >= 1 ? '<p>' + thisModthdName + ' 約' + parseInt(thisAmountTime) + '分</p>' : '<p>' + thisModthdName + '</p>'),
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowBottom" style="height:20px"></td>',
									'</tr></table>'
								);
							} else if (moveData.getMethod() == routeResult.METHOD_BICYCLE) {
								thisLineColor = "#888888";//線の色を設定
								thisType = "bicycle";//タイプを設定
								buffMove.push(
									'<table class="gRoute-rtTable gRoute-rtWalk"><tr>',
									'<td class="gRoute-rtTdArrowTop"></td>',
									'<td class="gRoute-rtTdFromName tM">',
									'</td><td class="gRoute-rtTdFromTime tM">',
									'<span>', moveData.getDepInfo().getTime(), '</span>',
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowMiddle"><span class="print">↓</span></td>',
									'<td class="gRoute-rtTdInfo tM">',
									'<p>自転車 約', thisAmountTime, '分</p>',
									'</td><td class="gRoute-rtTdInfoRight tM">',
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowBottom"><span class="print">━</span></td>',
									'<td class="gRoute-rtTdToName tM">',
									'</td><td class="gRoute-rtTdToTime tM">',
									'<span>', moveData.getArvInfo().getTime(), '</span>',
									'</td></tr></table>'
								);
							} else if (moveData.getMethod() == routeResult.METHOD_CAR) {
								thisLineColor = "#8fe300";//線の色を設定
								thisType = "car";//タイプを設定
								buffMove.push(
									'<table class="gRoute-rtTable gRoute-rtCar"><tr>',
									'<td class="gRoute-rtTdArrowTop" style="height:20px"></td>',
									'<td rowspan="2" class="gRoute-rtTdInfo tM">',
									'<p>車 約', thisAmountTime, '分</p>',
									'</td></tr><tr>',
									'<td class="gRoute-rtTdArrowBottom" style="height:20px"></td>',
									'</tr></table>'
								);
							}

							//**********ふきだし文字列を生成**********
							var thisDepStr = "<div style=\"width:200px;\" class=\"tM hM\">";
							if(thisType == "walk"){
								thisDepStr += "<p>"
										+ "<img src=\"./common_image/icon_route_bywalk_1.gif\" width=\"19\" height=\"19\" style=\"margin-right:3px;\" alt=\"徒歩\" />"
										+ "出発"
										+ "　<span class=\"tGr\">" + thisDepTime + "</span>"
										+ "</p>";
							}
							if(thisType == "bus"){
								thisDepStr += "<p>"
										+ "<img src=\"./common_image/icon_route_bybus_1.gif\" width=\"19\" height=\"19\" style=\"margin-right:3px;\" alt=\"バス\" />"
										+ "<span class=\"tB\">" + thisDepName + "</span>バス停を出発"
										+ "　<span class=\"tGr\">" + thisDepTime + "</span>"
										+ "</p>"
										+ "<p>" + thisRoutelineName + "</p>"
										+ "<p>運賃：" + thisFare + "円</p>";
							}
							if(thisType == "train"){
								thisDepStr += "<p>"
										+ "<img src=\"./common_image/icon_route_bytrain_1.gif\" width=\"19\" height=\"19\" style=\"margin-right:3px;\" alt=\"電車\" />"
										+ "<span class=\"tB\">" + thisDepName + "</span>駅を出発"
										+ "　<span class=\"tGr\">" + thisDepTime + "</span>"
										+ "</p>"
										+ "<p>" + thisRoutelineName + "</p>"
										+ "<p>運賃：" + thisFare + "円</p>";
							}
							if(thisType == "car"){
								thisDepStr += "<p>"
										+ "<img src=\"./common_image/icon_route_bycar_1.gif\" width=\"19\" height=\"19\" style=\"margin-right:3px;\" alt=\"車\" />"
										+ "出発"
										+ "　<span class=\"tGr\">" + thisDepTime + "</span>"
										+ "</p>";
							}
							thisDepStr += "</div>";

							var thisArvStr = "<div style=\"width:200px;\" class=\"tM hM\">";
							
							if(thisType == "walk"){
								thisArvStr += "到着"
										+ "　<span class=\"tGr\">" + thisArvTime + "</span>";
							}
							if(thisType == "bus"){
								thisArvStr += "<span class=\"tB\">" + thisArvName + "</span>バス停に到着"
										+ "　<span class=\"tGr\">" + thisArvTime + "</span>";
							}
							if(thisType == "train"){
								thisArvStr += "<span class=\"tB\">" + thisArvName + "</span>駅に到着"
										+ "　<span class=\"tGr\">" + thisArvTime + "</span>";
							}
							if(thisType == "car"){
								thisArvStr += "到着"
										+ "　<span class=\"tGr\">" + thisArvTime + "</span>";
							}
							thisArvStr += "</div>";

							//**********線の処理**********
							var thisLineCount = moveData.getLineInfo().getListCount();
							for(var k = 0; k < thisLineCount; k++){
								//緯度経度取得
								var thisLineLng = moveData.getLineInfo().getPointX()[k] / 3600000;
								var thisLineLat = moveData.getLineInfo().getPointY()[k] / 3600000;
								//マップ線配列に格納
								lineLatList[i].push(thisLineLat);
								lineLngList[i].push(thisLineLng);
								lineColorList[i].push(thisLineColor);
								lineWidthList[i].push(lineWidth);
							}//END for k

							//**********マップ描画用配列に格納**********
							plotLatList[i].push([thisDepLat, thisArvLat]);
							plotLngList[i].push([thisDepLng, thisArvLng]);
							plotLatFlatList[i].push(thisDepLat, thisArvLat);
							plotLngFlatList[i].push(thisDepLng, thisArvLng);
							plotIdList[i].push([thisDepId, thisArvId]);
							plotStrList[i].push([thisDepStr, thisArvStr]);
							plotTypeList[i].push(thisType);
						}//END for j(moveDataごと)

// 2008/12/05 doi from
// のりかえ＆運賃検索でも最後の徒歩は含む場合有（到着バス停と最終のバス停名が違う場合）
						var lastMoveData = routeData.getMoveData()[routeDataCount-1];
//console.log('lastMoveData:' + lastMoveData.getDepInfo().getName() + '-->' + 'sTnm:' + sTnm);
						if(page == PAGE_ROUTE || (page != PAGE_ROUTE && lastMoveData.getMethod() == routeResult.METHOD_WALK && lastMoveData.getDepInfo().getName() != sTnm)){
// 2008/12/05 doi to
						//市内ルート検索のみ候補ルート末尾に目的地を追加
						//if(page == PAGE_ROUTE){
							buffMove.push(
								'<div class="gRoute-rtG">',
								'<p class="gRoute-rtGTime">', thisTotalArvTime, '</p>',
								'<span class="gRoute-rtSName">', '<img src="./common_image/icon_sg_normal_g.gif" width="24" height="24" style="vertical-align:middle;margin-right:8px;" alt="目的地" />', sTnm, '</span>',
								'</div>'
							);
						}

						buff += "<!--↓ルート閉" + (i+1) + "↓-->"
								+ "<div class=\"gRoute-hidden\" id=\"routeHidden" + (i+1) + "\" onclick=\"openKouho(" + (i+1) + ", " + listCount + ");\">"
								+ "<div class=\"gRoute-numC\">ルート" + (i+1) + "を表示</div>"
								+ "<div class=\"gRoute-info\">"
								+ (((page == PAGE_ROUTE) && (sMthd == 1)) ? "" : "<img src=\"common_image/icon_route_nori.gif\" width=\"40\" height=\"14\" alt=\"のりかえ回数\" />" + routeData.getTotalTransferCount() + "回")
								+ "<img src=\"common_image/icon_route_time.gif\" width=\"14\" height=\"14\" alt=\"時間\" />" + routeData.getTotalAmountTime() + "分"
								+ (((page == PAGE_ROUTE) && (sMthd == 1)) ? "" : "<img src=\"common_image/icon_route_fare.gif\" width=\"14\" height=\"14\" alt=\"運賃\" />" + routeData.getTotalFare() + "円")
								+ "</div>"
								+ "</div>"
								+ "<!--↑ルート閉" + (i+1) + "↑-->"
								+ "<!--↓ルート開" + (i+1) + "↓-->"
								+ "<div class=\"gRoute-opened\" id=\"routeOpened" + (i+1) + "\" style=\"display:none;\">"
								+ "<div class=\"gRoute-midashi\">"
								+ "<div class=\"gRoute-numO\">ルート" + (i+1) + "</div>"
								+ "<div class=\"gRoute-info\">"
								+ (((page == PAGE_ROUTE) && (sMthd == 1)) ? "" : "<img src=\"common_image/icon_route_nori.gif\" width=\"40\" height=\"14\" alt=\"のりかえ回数\" />" + routeData.getTotalTransferCount() + "回")
								+ "<img src=\"common_image/icon_route_time.gif\" width=\"14\" height=\"14\" alt=\"時間\" />" + routeData.getTotalAmountTime() + "分"
								+ (((page == PAGE_ROUTE) && (sMthd == 1)) ? "" : "<img src=\"common_image/icon_route_fare.gif\" width=\"14\" height=\"14\" alt=\"運賃\" />" + routeData.getTotalFare() + "円")
								+ "</div>"
								+ "</div>"
								+ "<div class=\"gRoute-shosaiArea" + listCount + "dan\"><div class=\"gRoute-shosai" + listCount + "dan\">"
								+ buffMove.join("")
								+ "</div></div>"
								+ "</div>"
								+ "<!--↑ルート開" + (i+1) + "↑-->";
					}//END for i(候補ごと)
					
				}else{
					//結果が無い場合
					buff += "<div id=\"gRoute-head\">"
								+ "候補ルート"
								+ "</div>";
					buff += "<!--↓ルート開↓-->"
							+ "<div class=\"gRoute-opened\" id=\"routeOpened1\">"
							+ "<div class=\"gRoute-midashi\">"
							+ "<div class=\"gRoute-numO\"></div>"
							+ "<div class=\"gRoute-info\"></div>"
							+ "</div>"
							+ "<div class=\"gRoute-shosaiArea1dan\"><div class=\"gRoute-shosai1dan\">"
							+ "<div class=\"gRoute-nashiMsg tS tGr\">該当するルートが見つかりませんでした</div>"
							+ "</div></div>"
							+ "</div>"
							+ "<!--↑ルート開↑-->";
					//マップ初期表示	
					openMap(600, 390, (scale ? scale : MAP_DEFAULT_SCALE), MAP_DEFAULT_LNG, MAP_DEFAULT_LAT);
				}

				$('gRoute').innerHTML = buff;

				if(listCount){
					//ルート候補タブを開く
					openKouho(1, listCount);
					//カテゴリボタンの選択状態をリセット
					clearCButton('cb', 9);
					//カテゴリボタンをセット
					setCategoryButton();
				}
			}
		});
}

/******************************************************************************/
//検索パネル：ルート候補開閉
//    統合に伴いcommon.jsから移動
/******************************************************************************/
//openedDivName：開いた状態のdiv名,　hiddenDivName：閉じた状態のDiv名,　openTgt：開くターゲットのDiv番号,　totalNum：表示する全候補数
//totalNumを省略ならopenTgtを開くだけでほかは変化させない
function openRoute(openedDivName, hiddenDivName, openTgt, totalNum){
	if(totalNum){
		for(var i=1; i<=totalNum; i++){
			$(openedDivName+i).style.display = (i==openTgt) ? '' : 'none';
			$(hiddenDivName+i).style.cursor = (i==openTgt) ? 'default' : 'pointer';
			$(hiddenDivName+i).style.display = (i==openTgt) ? 'none' : '';
		}
	}else{
		$(openedDivName+openTgt).style.display = '';
		$(openedDivName+openTgt).style.cursor = 'default';
	}
}



/******************************************************************************/
//ルート候補タブを開く
function openKouho(tgt, tnum){
	currentKouho = tgt;//現在のカテゴリ値を変更
	openRoute('routeOpened', 'routeHidden', tgt, tnum);//common.js
	resetOverlays();//マップ上の表示を消去
	setIconParamData(true, false);//アイコンをparamにセット(ルートアイコンのみ)
	setPointData();//マップの各緯度経度をセット
	setLineData();//マップに線をセット
	openMap(600, 390, zenScale, zenLng, zenLat);//マップ展開
	hideWhole();//マップの全域図を隠す
	clearCButton('cb', 9);//カテゴリボタンをリセット
}

//マップ上の表示を消去
function resetOverlays(){
	clearPolyLine();
	clearAllIcon();//アイコン全消去
	clearAllBalloon();//バルーンを消去
}

//マップの主な値をセット
function setPointData(){
	//出発地・到着地の値を抽出・設定
	var lenMove = plotIdList[currentKouho-1].length;
	fromLng = plotLngList[currentKouho-1][0][0];//出発地経度
	fromLat = plotLatList[currentKouho-1][0][0];//出発地緯度
	fromPlotId = plotIdList[currentKouho-1][0][0];//出発地プロットID
	toLng = plotLngList[currentKouho-1][lenMove-1][1];//目的地経度
	toLat = plotLatList[currentKouho-1][lenMove-1][1];//目的地緯度
	toPlotId = plotIdList[currentKouho-1][lenMove-1][1];//目的地プロットID
	var zenLatLngArr = getMiddleLatLng(lineLatList[currentKouho-1], lineLngList[currentKouho-1]);
	zenLat = zenLatLngArr[0];//全体表示中心緯度
	zenLng = zenLatLngArr[1];//全体表示中心経度
	zenScale = getBestScale(lineLatList[currentKouho-1], lineLngList[currentKouho-1]);//全体表示中心経度

/*
	//全体表示スケール計算
	zenDist = Math.sqrt(Math.pow(toLng - fromLng, 2) + Math.pow(toLat - fromLat, 2));//2点間の直線距離
	var scrow = zenDist * (1200000);//切り上げしていない値
	var sc = 0;
	for(var i = 0; scrow < zoomList[i]; i++){
		var sc = zoomList[i];
	}
	zenScale = sc;
*/
}

//マップに線をセット
function setLineData(){
	presetPolyLine(lineLngList[currentKouho- 1], lineLatList[currentKouho - 1], lineColorList[currentKouho - 1], lineWidthList[currentKouho - 1]);
}

//マップにアイコンパラメータをセット
function setIconParamData(rt, arnd){
	//clearAllIcon();//アイコン全消去
	//clearAllBalloon();//バルーンを消去
	var len = 0;
	if(rt){
		var lenRoute = plotLatList[currentKouho-1].length;
		len += lenRoute;
	}
	if(arnd){
		var lenAround = aroundLat.length;
		len += lenAround;
	}
	if(!len)return;

	var params = new iconData(len);

	if(arnd){
		for (var i = 0; i < len; i++){
			params.setParams(i+200, aroundLng[i], aroundLat[i], convertPlotUrl(aroundProtCategory[i]), SIZE_PLOT_WIDTH, SIZE_PLOT_HEIGHT,
				"<div class=\"hM\" style=\"width:200px;\">"
					+ "<p class=\"tB tM\"><a href=\"./KankoSearch?&act=rank&bhvr=dtl&prov=0&srl=" + aroundProtSerial[i] + "&michiRouteParam=rou_city\" target=\"_blank\">" + aroundProtNames[i] + "</a></p>"
					+ "<p class=\"tS tGr\">" + aroundProtKana[i] + "</p>"
					+ "<p class=\"tS tGr\">" + aroundProtCategoryName[i] + " ＞ " + aroundProtSubCategoryName[i] + "</p>"
					+ "</div>"
			);//周辺のアイコンをプロット
		}//END for i
	}

	if(rt){
		for (var i = 0; i < lenRoute; i++){//moveDataごと
			var thisType = "";
			for (var j = 0; j < 2; j++){//出発と到着ごと

				if((i == 0) && (j == 0)){
					//出発地
					thisWidth = 69;
					thisHeight = 70;
					switch(plotTypeList[currentKouho-1][i]){
						case 'train':
							thisType = "./common_image/map_rt_strain.gif";break;
						case 'bus':
							thisType = "./common_image/map_rt_sbus.gif";break;
						case 'walk':
							thisType = "./common_image/map_rt_swalk.gif";break;
						case 'bicycle':
							thisType = "./common_image/map_rt_swalk.gif";break;
						case 'car':
							thisType = "./common_image/map_rt_scar.gif";break;
						default:
							thisType = "./common_image/map_rt_swalk.gif";break;
					}
				}else if((i == lenRoute - 1) && (j == 1)){
					//目的地
					thisWidth = 24;
					thisHeight = 70;
					thisType = "./common_image/map_rt_g.gif";
				}else{
					//経由地
					thisWidth = 24;
					thisHeight = 70;
					switch(plotTypeList[currentKouho-1][i]){
						case 'train':
							thisType = "./common_image/map_rt_train.gif";break;
						case 'bus':
							thisType = "./common_image/map_rt_bus.gif";break;
						case 'walk':
							thisType = "./common_image/map_rt_walk.gif";break;
						case 'bicycle':
							thisType = "./common_image/map_rt_walk.gif";break;
						case 'car':
							thisType = "./common_image/map_rt_car.gif";break;
						default:
							thisType = "./common_image/map_rt_walk.gif";break;
					}
				}
				params.setParams(
					plotIdList[currentKouho-1][i][j],
					plotLngList[currentKouho-1][i][j],
					plotLatList[currentKouho-1][i][j],
					thisType,
					thisWidth,
					thisHeight,
					plotStrList[currentKouho-1][i][j]
				);
			}//END for j
		}//END for i
	}
	initIcon(params);
}
//マップを全体表示
function zentai(){
	openMap(600, 390, zenScale, zenLng, zenLat);//マップ展開
	hideWhole();//マップの全域図を隠す
}
//マップを出発アイコンIDにセンタリング
function centerFromPoint(){
	if(!fromPlotId)return;
	centerTarget(fromPlotId);
}
//マップを到着アイコンIDにセンタリング
function centerToPoint(){
	if(!toPlotId)return;
	centerTarget(toPlotId);
}
//マップ外から施設アイコンIDをセンタリング
function centerTarget(tgt){
	clearAllBalloon();//バルーンを消去
	if(iconFlag[tgt]){
		//アイコン表示フラグあり
		openBalloon(tgt);
	}else{
		//アイコン表示フラグなし
		openMap(600, 390, (scale ? scale : MAP_DEFAULT_SCALE), iconX[tgt], iconY[tgt], tgt);
	}
}

function showCondition(){
	//検索条件表示セット
	var buff = "<span class=\"tB\">"
					+ "<img src=\"./common_image/icon_sg_normal_s.gif\" width=\"24\" height=\"24\" style=\"vertical-align:middle;margin-right:8px;\" alt=\"出発地\" />"
					+ sFnm
					+ "　→　"
					+ "<img src=\"./common_image/icon_sg_normal_g.gif\" width=\"24\" height=\"24\" style=\"vertical-align:middle;margin-right:8px;\" alt=\"目的地\" />"
					+ sTnm
					+ "</span>"
					+ "　（検索条件：" + sY + "年" + sM + "月" + sD + "日" + sH + "時" + (sMin<10 ? "0"+sMin : sMin) + "分に"
					+ (Number(sBasis) ? "到着" : "出発") + "）";
	$('condition').innerHTML = buff;
	//メール転送の値表示セット
	$('MLSubject').value = "みちナビとよた　検索結果";
	//$('MLSubject').value = sFnm + "⇒" + sTnm + "のルート案内";
	if(sMl){
		var ml = sMl.split('||');
		if(ml.length == 3){
			$('MLTo').value = ml[0];
			$('MLDomain').value = ml[1];
			$('MLNickname').value = decodeCookie(ml[2]);
			$('MLSave').checked = true;
		}
	}
}

/*交通手段を変更しての再検索
*******************************************************************************/
function researchByOtherMethod(type){
	if(sMthd == type)return;//既に表示されている手段の場合
	sMthd = type;
	requestRouteSearch();
}

/*ソートを変更しての再検索
*******************************************************************************/
function researchByOtherSort(type){
	//$('srt').value = tgt;
	//$('searchForm').submit();
	if(sSort == type)return;//既に表示されているソートの場合
	sSort = type;
	requestRouteSearch();
}

/*携帯送信
*******************************************************************************/
function showSendMail(){
	$('sendMail').style.display = "none";
	$('sendMailOpened').style.display = "block";
	$('sendMailFormHolder').style.display = "block";
}
function closeSendMail(){
	$('sendMail').style.display = "block";
	$('sendMailOpened').style.display = "none";
	$('sendMailFormHolder').style.display = "none";
}
function submitSendMail(){
	var mlS = $('MLSubject').value;
	var mlC = $('MLContent').value;
	var mlT = $('MLTo').value;
	var mlD = $('MLDomain').value;
	var mlN = $('MLNickname').value;
	var mlSave = $('MLSave').checked;
	if(!mlS || !mlT || !mlD || !mlN){
		alertErr('タイトル、メールアドレス、送信者名はかならず入力してください。');
		return;
	}
// 2009/03/27 doi encodeURIComponentを追加
	var url = "./MailTo?";
	url += stringUtils.getUrlParam(BEHAVIOR, 'busRoute') 
					+ stringUtils.getUrlParam("mode", sMthd) 
					+ stringUtils.getUrlParam(SEARCH_YEAR, sY) 
					+ stringUtils.getUrlParam(SEARCH_MONTH, sM) 
					+ stringUtils.getUrlParam(SEARCH_DAY, sD) 
					+ stringUtils.getUrlParam(SEARCH_HOUR, sH) 
					+ stringUtils.getUrlParam(SEARCH_MINUTE, sMin) 
					+ stringUtils.getUrlParam(SEARCH_BASIS, sBasis) 
					+ stringUtils.getUrlParam(SORT, sSort) 
					+ stringUtils.getUrlParam(SEARCH_FROM_NAME, encodeURIComponent(sFnm)) 
					+ stringUtils.getUrlParam(SEARCH_FROM_X, sFromX) 
					+ stringUtils.getUrlParam(SEARCH_FROM_Y, sFromY) 
					+ stringUtils.getUrlParam(SEARCH_TO_NAME, encodeURIComponent(sTnm))
					+ stringUtils.getUrlParam(SEARCH_TO_X, sToX) 
					+ stringUtils.getUrlParam(SEARCH_TO_Y, sToY) 
					+ stringUtils.getUrlParam("subject", encodeURIComponent(mlS)) 
					+ stringUtils.getUrlParam("content", encodeURIComponent(mlC)) 
					+ stringUtils.getUrlParam("email_to", mlT) 
					+ stringUtils.getUrlParam("email_domain", "@" + mlD) 
					+ stringUtils.getUrlParam("nickname", encodeURIComponent(mlN));
	if(mlSave){
		setCommonCookie("rt_ml", mlT + "||" + mlD + "||" + encodeCookie(mlN), '', 'Tue, 31-Dec-2030 23:59:59');
	}else{
		setCommonCookie("rt_ml", '', '', '');
	}
	closeSendMail();
	window.open(url, '');
}















/******************************************************************************/
//地図汎用
/******************************************************************************/
//緯度経度四捨五入
function roundLatLng(v){
	return (Math.round(v * 10000))/10000;
}
//2点間の中心緯度取得
/*
function getBetweenPointLatLng(lat1, lng1, lat2, lng2){
	return [((lat2 - lat1) / 2) + lat1, ((lng2 - lng1) / 2) + lng1];
}
*/
//2点間の最適スケール取得
/*
function getBetweenPointScale(lat1, lng1, lat2, lng2){
	var zenDist = getStraightDistance(lat1, lng1, lat2, lng2);
	var scrow = zenDist * (1200000);//切り上げしていない値
	var sc = zoomList[0];
	for(var i = 0; scrow < zoomList[i]; i++){
		var sc = zoomList[i];
	}
	return sc;
}*/

//2点間の直線距離取得
function getStraightDistance(lat1, lng1, lat2, lng2){
	return Math.sqrt(Math.pow(lng2 - lng1, 2) + Math.pow(lat2 - lat1, 2));//2点間の直線距離
}

//緯度経度の配列に対しすべての地点の平均緯度経度を取得
//latList:緯度の配列, lngList:経度の配列
function getAverageLatLng(latList, lngList){
	var latLen = latList.length;
	var lngLen = lngList.length;
	var latAvr = 0;
	var lngAvr = 0;
	for (var i = 0; i < latLen; i++){
		latAvr += latList[i];
		lngAvr += lngList[i];
	}
	return [latAvr /= latLen, lngAvr /= lngLen];
}

//緯度経度の配列に対し、すべての地点の中心緯度経度を取得
//latList:緯度の配列, lngList:経度の配列
function getMiddleLatLng(latList, lngList){
	var max = getMaxLatLng(latList, lngList);
	var min = getMinLatLng(latList, lngList);
	return [(max[0] + min[0]) / 2, (max[1] + min[1]) / 2];
}

//緯度経度の配列に対し、最大緯度経度（最北東の角）を取得
//latList:緯度の配列, lngList:経度の配列
function getMaxLatLng(latList, lngList){
	return [latList.slice(0).sort().reverse()[0], lngList.slice(0).sort().reverse()[0]];
}

//緯度経度の配列に対し、最小緯度経度（最南西の角）を取得
//latList:緯度の配列, lngList:経度の配列
function getMinLatLng(latList, lngList){
	return [latList.slice(0).sort()[0], lngList.slice(0).sort()[0]];
}

//緯度経度の配列に対し、最適なスケールを取得
//latList:緯度の配列, lngList:経度の配列
function getBestScale(latList, lngList){
	var max = getMaxLatLng(latList, lngList);
	var min = getMinLatLng(latList, lngList);
	//var zenDist = getStraightDistance(min[0], min[1], max[0], max[1]);
	//var scrow = zenDist * (900000);//切り上げしていない値
	var scLat = (max[0] - min[0]) * 1085700 + (max[0] - min[0]) * (1085700 * 0.154);//入る範囲のおよそのLat + 入る範囲のおよそのLatの余白部分
	var scLng = (max[1] - min[1]) * 705000 + (max[1] - min[1]) * (705000 * 0.1);//入る範囲のおよそのLng + 入る範囲のおよそのLngの余白部分
	var scrow = (scLat > scLng) ? scLat : scLng;
//console.log("scLat:"+scLat+", scLng:"+scLng);
	var sc = zoomList[0];
	for(var i = 0; (scrow < zoomList[i]) && (i < 8); i++){//i < 8: 最詳細の縮尺は含まない
		var sc = zoomList[i];
	}
////console.log("getBestScale>> max:"+max+", min:"+min+", scrow:"+scrow+", sc:"+sc);
	return sc;
}

//マップの全域図を隠す
function hideWhole(){
	wholeFlag = true;
	switchWhole();
}
//マップの全域図を表示する
function showWhole(){
	wholeFlag = false;
	switchWhole();
}




