// DEFINES ---------------------------------------------------------------------
// 物件ID
var PlsKID = '';
// マップオブジェクト
var PlsMap;
//this.PlsMap;
// ズームバーオブジェクト
var PlsBar;
// 物件緯度・経度オブジェクト
var PlsLatLng;
// 物件アイコンオブジェクト
var PlsIcon;
// ルートカラー
var PlsColor;
// ポップアップ
var PlsPopup;
// グレー文字
var PlsInput;
// ロケーションアイコン
var PlsLocImg = {};
// ロケーションデータ
var PlsLocData = {};
// 徒歩or車フラグ
var PlsDriveMode = 4;
// 列車or道路フラグ
var PlsSearchMode = true;
// JSONファイル名
var PlsJson = 'mapJson.php';
// エラーメッセージ
var errMsgBlankPostCode = '郵便番号を入力してください';
var errMsgFalsePostCode = '郵便番号の書式が不正です';
var errMsgNoAddress = '指定の住所はございません';
var errMsgMultiAddress = '複数の住所が該当します';
var errMsgBlankAddress = '住所を指定してください';
var errMsgBlankStation = '駅名を入力してください';
var errMsgNoStation = '指定の駅はございません';
var titleTrainRoute = '電車ルート検索';
var titleDriveRoute = 'ドライブルート詳細';
var titleLocationList = '周辺施設への徒歩経路を見る';

// UTILITY ---------------------------------------------------------------------
// ダミーパラメータ生成
var $DM = function () { return '&cache=' + new Date().getTime(); };
// 要素取得
var $EL = function (e) { return typeof e === 'string' ? document.getElementById(e) : e; };
// 要素表示
var $ES = function () {
	var e, i = -1;
	while ( e = arguments[++i] ) ( typeof e === 'string' ? document.getElementById(e) : e ).style.display = '';
};
// 要素非表示
var $EH = function () {
	var e, i = -1;
	while ( e = arguments[++i] ) ( typeof e === 'string' ? document.getElementById(e) : e ).style.display = 'none';
};
// イベントハンドリング
var $EV = function (e,t,f) {
	if ( e.addEventListener ) return e.addEventListener( t, f, false );
	if ( e.attachEvent ) return e.attachEvent( 'on' + t, f );
	e[ 'on' + t ] = f;
};
// 要素位置取得
var $EP = function (e,s) {
	s = !s ? document.body : $EL(s);
	if ( typeof e === 'string' ) e = document.getElementById(e);
	var x = y = 0, t = e;
	do { x += t.offsetLeft || 0; y += t.offsetTop || 0; if ( t.offsetParent === s ) break; } while ( t = t.offsetParent );
	t = e;
	do { if ( t === s ) { x -= t.scrollLeft || 0; y -= t.scrollTop || 0; } } while ( t = t.parentNode );
	return { x: x, y: y };
};
// 要素取得 ( 要素基準 )
var $ND = function (e,f,n,t) {
	if ( !( e = e[f] ) ) return null;
	do { if ( e.tagName && ( !t || e.tagName.toLowerCase() === t ) ) return e; } while ( e = e[n] );
	return null;
};
// 関数束縛
var $FB = function (f,s,a) { s = s || null; a = a || []; return function () { return f.apply(s,a); }; };

// COMMON ----------------------------------------------------------------------
// エラーメッセージ表示
var $AL = function (s) { $LDH(); Glayer.showAlert( s, { okLabel: '　　' } ); };
// ローディング表示
var $LD = function (t) {
	t = document.getElementById( t || 'category' );
	var p = $EP(t), s = document.getElementById('loadingImg').style;
	s.display = '';
	s.left = ( ( t.offsetWidth - 220 ) / 2 + p.x ) + 'px';
	s.top = ( ( t.offsetHeight - 19 ) / 2 + p.y ) + 'px';
};
// ローディング非表示
var $LDH = function () { document.getElementById('loadingImg').style.display = 'none'; };
// グレー文字表示クラス
var GrayInput = function ( obj ) {
	this.data = obj;
	this.setValue = function (e,v) {
		if ( typeof e === 'string' ) e = document.getElementById(e);
		e.value = v || '';
		e.style.color = '';
	};
	this.getValue = function (e) {
		if ( typeof e === 'string' ) e = document.getElementById(e);
		return e.value === this.data[ e.id ] ? '' : e.value;
	};
	var i, e;
	for ( i in this.data ) {
		e = document.getElementById(i);
		if ( !e.value.length || e.value === this.data[i] ) {
			e.style.color = '#c0c0c0';
			e.value = this.data[i];
		}
		$EV( e, 'focus', $FB( _focus, this, [e] ) );
		$EV( e, 'blur', $FB( _blur, this, [e] ) );
	}
	function _focus(e) {
		if ( e.value === this.data[ e.id ] ) e.value = '';
		e.style.color = '';
	}
	function _blur(e) {
		if ( e.value.length === 0 || e.value === this.data[ e.id ] ) {
			e.style.color = '#c0c0c0';
			e.value = this.data[ e.id ];
		} else {
			e.style.color = '';
		}
	}
};

// HANDLER ---------------------------------------------------------------------
// 検索フォームの切り替え
var toggleForm = function (e) {
	switch ( e.id ) {
		case 'swAddress':
			e.className = 'noA';
			$EL('swStation').className = '';
			$EH('inputStn','selectStn');
			$ES('inputCode','inputKen','inputAdd');
			PlsSearchMode = true;
			break;
		case 'swStation':
			e.className = 'noA';
			$EL('swAddress').className = '';
			$EH('inputCode','inputKen','inputAdd');
			$ES('inputStn');
			PlsSearchMode = false;
			break;
	}
};
// 郵便番号取得
var getZip = function () {
	$LD('bRootSearch2');
	var v = encodeURIComponent( PlsInput.getValue('code').replace(/[^0-9]/g,'') );
	if (!v) return $AL( errMsgBlankPostCode );
	if ( v.length !== 7 ) return $AL( errMsgFalsePostCode );
	var http = new JKL.ParseXML.JSON( PlsJson + '?cs=z&a=' + v + $DM() );
	http.async( function (d) {
		if ( !d || d.length < 1 ) {
			$AL( errMsgNoAddress );
		} else if ( d.length === 1 ) {
			$EL('ken').selectedIndex = parseInt( d[0].KEN );
			PlsInput.setValue( 'add', d[0].JUSHO );
		} else {
			$AL( errMsgMultiAddress );
		}
		$LDH();
	} );
	http.parse();
};
// ルート挿画(汎用)
var showMapRoute = function ( lat, lng, mth, jun, lock ) {
	// mth -> ルート種別  jun -> 家からの場合は[true]  lock -> 位置を移動しない場合は[true]
	if ( PlsPopup ) PlsPopup.close();
	var m = PlsMap, p = new NTLatLng( lat, lng );
	// ルート種別  10 -> 車(有料道路優先)  129 -> 車(一般道優先)  255 -> 徒歩
	mth = mth || 255;
	m.setProperty('autoload',false);
	m.removeRoute();
	if ( jun ) m.addRoute( new NTRoute( PlsLatLng, p, PlsColor, mth ) );
	else m.addRoute( new NTRoute( p, PlsLatLng, PlsColor, mth ) );
	m.reload();
	m.setProperty('autoload',true);
	if ( !lock ) setTimeout( function () { adjustMapRoute([p]); }, 500 );
};
// MAP 位置・サイズ調整(汎用)
var adjustMapRoute = function (p) { PlsMap.moveTo( PlsLatLng ); PlsBar.setScaleByPoi( { poi: p, center: PlsLatLng } ); };
// 電車ルート検索フォーム表示
var showStationForm = function () {
	$EH('selectStn');
	if ( PlsSearchMode ) {
		var v1 = encodeURIComponent( $EL('ken').value ), v2 = encodeURIComponent( PlsInput.getValue('add') );
		if ( !v1 || !v2 ) return $AL( errMsgBlankAddress );
		var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=9&v=' + v1 + v2 + $DM() );
		http.async( function (d) {
			if ( !d || !d.length ) return $AL( errMsgNoStation );
			var sels = $EL('startSta');
			sels.length = d.length;
			for ( var i = 0, n = d.length; i < n; ++i ) {
				sels.options[i].text = d[i].STNAME;
				sels.options[i].value = d[i].STID + ',' + d[i].LAT + ',' + d[i].LNG;
			}
			$EH('driveWalkList','detailList','categoryList');
			$ES('trainList');
			$EH('trainListIn');
			$ES('trainEntry');
			$EL('category').getElementsByTagName('span')[0].innerHTML = titleTrainRoute;
			$LDH();
		} );
		http.parse();
		return;
	}
	var v = encodeURIComponent( PlsInput.getValue('stn') );
	if (!v) return $AL( errMsgBlankStation );
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=6&v=' + v + $DM() );
	http.async( function (d) {
		if ( !d || !d.length ) return $AL( errMsgNoStation );
		var sels = $EL('startSta');
		sels.length = d.length;
		for ( var i = 0, n = d.length; i < n; ++i ) {
			sels.options[i].text = d[i].STNAME;
			sels.options[i].value = d[i].STID + ',' + d[i].LAT + ',' + d[i].LNG;
		}
		$EH('driveWalkList','detailList','categoryList');
		$ES('trainList');
		$EH('trainListIn');
		$ES('trainEntry');
		$EL('category').getElementsByTagName('span')[0].innerHTML = titleTrainRoute;
		$LDH();
	} );
	http.parse();
};
// 電車ルート取得・挿画
var getTrainList = function () {
	var dt = new Date, v = {
		rd: dt.getYear() + '/' + ( dt.getMonth() + 1 ) + '/' + dt.getDay(),
		rt: dt.getHours() + ':' + dt.getMinutes(),
		rm: '1'
	}, y, m, d;
	if ( ( y = $EL('raYear').value ) && ( m = $EL('raMonth').value ) && ( d = $EL('raMonth').value ) ) v.rd = y + '/' + m + '/' + d;
	if ( ( y = $EL('raTime').value ) && ( m = $EL('raMinute').value ) ) v.rt = y + ':' + m;
	if ( $EL('raMethod2').checked ) v.rm = '2';
	var ag = $EL('startSta').value.split(','), bg = $EL('endSta').value.split(',');
	var http = new JKL.ParseXML.Text( PlsJson + '?k=' + PlsKID + '&cs=8&v1=' + v.rd + '&v2=' + v.rt + '&v3=' + v.rm + '&s1=' + ag[0] + '&s2=' + bg[0] + $DM() );
	http.async( function (d) {
		$EL('trainListIn').innerHTML = d;
		$EH('trainEntry');
		$ES('trainListIn');
		showMapRoute( bg[1], bg[2], 255 );
	} );
	http.parse();
};
// 電車ルートリスト スクロール
var scrollTrain = function (n) { $EL('trainList').scrollTop = $EP( 'trainRoot' + n, 'trainList' ).y; };
// ドライブルート・徒歩経路挿画
var drawDriveRoute = function (d) {
	if ( !d || !d.length ) return $AL( errMsgNoAddress );
	showMapRoute( d[0].lat, d[0].lng, ( PlsDriveMode == 4 ? 10 : 255 ), false, true );
	var dd = $EL('driveWalkListInner'), r = [], s;
	for ( var i = 1, n = d.length; i < n; ++i ) {
		if ( !d[i].snb ) continue;
		if ( !r.length ) {
			r[r.length] = [
				'<p class="DWstart">',
				d[i].snb,
				'<a href="#" onclick="PlsMap.moveTo(new NTLatLng(',
				d[i].lat,
				',',
				d[i].lng,
				'));return false;">移動</a></p>',
				'<p class="DWroot">',
				d[i].nb,
				'</p>'
			].join('');
			continue;
		}
		r[r.length] = [
			'<p class="DWplace">',
			d[i].snb,
			'<a href="#" onclick="PlsMap.moveTo(new NTLatLng(',
			d[i].lat,
			',',
			d[i].lng,
			'));return false;">移動</a></p>',
			'<p class="DWroot">',
			d[i].nb,
			'</p>'
		].join('');
	}
	r[r.length] = '<p class="DWgool">目的地<a href="#" onclick="PlsMap.moveTo(PlsLatLng);return false;">移動</a></p>';
	dd.innerHTML = '' + r.join('') + '';
	$EH('trainList','detailList','categoryList');
	$ES('driveWalkList');
	if ( PlsDriveMode != 4 ) {
		$EL('category').getElementsByTagName('span')[0].innerHTML = titleLocationList;
		$EH('trainList','driveWalkList','detailList');
		$ES('categoryList');
		setTimeout( function () { adjustMapRoute( [ new NTLatLng( d[0].lat, d[0].lng ) ] ); }, 500 );
	} else {
		$EL('category').getElementsByTagName('span')[0].innerHTML = titleDriveRoute;
	}
	$LDH();
};
// ドライブルート・徒歩経路取得
var showDriveRoute = function (dr) {
	$LD('bRootSearch2'); PlsDriveMode = dr;
	if ( PlsSearchMode ) {
		var v1 = encodeURIComponent( $EL('ken').value ), v2 = encodeURIComponent( PlsInput.getValue('add') );
		if ( !v1 || !v2 ) return $AL( errMsgBlankAddress );
		var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=' + dr + '&v=' + v1 + v2 + $DM() );
		http.async( drawDriveRoute );
		http.parse();
		return;
	}
	if ( !$EL('selectStn').style.display ) {
		var ar = $EL('sstn').value.split(',');
		var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=7&cs2=' + dr + '&v1=' + ar[0] + '&v2=' + ar[1] + $DM() );
		http.async( drawDriveRoute );
		http.parse();
		return;
	}
	var v = encodeURIComponent( PlsInput.getValue('stn') );
	if (!v) return $AL( errMsgBlankStation );
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=6&v=' + v + $DM() );
	http.async( function (d) {
		if ( !d.length ) return $AL( errMsgNoStation );
		if ( d.length === 1 ) {
			var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=7&cs2=' + dr + '&v1=' + d[0].LAT + '&v2=' + d[0].LNG + $DM() );
			http.async( drawDriveRoute );
			http.parse();
			return;
		}
		var sels = $EL('sstn');
		sels.length = d.length;
		for ( var i = 0, n = d.length; i < n; ++i ) {
			sels.options[i].text = d[i].STNAME;
			sels.options[i].value = d[i].LAT + ',' + d[i].LNG;
		}
		$EL('selectStn').style.display = '';
		goBackTop();
		$LDH();
	} );
	http.parse();
};
// 施設リスト全て閉じる
var allMemberClose = function () {
	for ( var i = 0, a = $EL('categoryList').getElementsByTagName('dd'), n = a.length; i < n; ++i ) a[i].style.display = 'none';
};
// 施設リスト(カテゴリー)取得
var getCategoryMember = function (p,e) {
	var dd = $ND( e, 'parentNode', 'parentNode', 'dt' ), dw = $ND( dd, 'nextSibling', 'nextSibling', 'dd' );
	if ( !!dw ) {
		// 取得済みの場合
		if ( dw.style.display == 'none' ) {
			if ( p.length === 1 ) allMemberClose();
			$EL('categoryList').scrollTop = $EP(dd).y;
			do { dw.style.display = ''; } while ( dw = $ND( dw, 'nextSibling', 'nextSibling', 'dd' ) );
			return;
		}
		do {
			dw.style.display = 'none';
		} while ( dw = $ND( dw, 'nextSibling', 'nextSibling', 'dd' ) );
		return;
	}
	$LD();
	for ( var i = 0, a = [], s = [], n = p.length; i < n; ++i ) {
		a[a.length] = '&v' + i + '=' + p[i];
		s[s.length] = "'" + p[i] + "'";
	}
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=' + p.length + a.join('') + $DM() );
	http.async( function (d) {
		var st = s.join(',');
		if ( s.length === 1 ) {
			// 第2階層挿画
			allMemberClose();
			for ( var i = 0, r = [], n = d.length; i < n; ++i ) {
				if ( !parseInt( d[i].CNT ) ) {
					r[r.length] = [
						'<dd class="tier2"><dl',
						( !i ? ' class="firstChild"' : '' ),
						'>',
						'<dt><a href="#" onclick="return false;" style="cursor:default;text-decoration:none;color:#bbb;">',
						d[i].CTNM,
						'</a></dt>',
						'</dl></dd>'
					].join('');
					continue;
				}
				r[r.length] = [
					'<dd class="tier2"><dl',
					( !i ? ' class="firstChild"' : '' ),
					'>',
					'<dt><a href="#" onclick="getCategoryMember([',
					st,
					',\'',
					d[i].CTID,
					'\'],this,1);return false;">',
					d[i].CTNM,
					'</a></dt>',
					'</dl></dd>'
				].join('');
			}
		} else {
			// 第3階層挿画
			var r = ['<dd class="tier3">'];
			for ( var i = 0, n = d.length; i < n; ++i ) {
				if ( !parseInt( d[i].CNT ) ) continue;
				r[r.length] = [
					'<a href="#" onclick="getLocateMember([',
					st,
					',\'',
					d[i].CTID,
					'\'],this,0,',
					d[i].CNT,
					');return false;">',
					d[i].CTNM,
					'&nbsp;(',
					Math.min( 60, d[i].CNT ),
					')',
					'</a>'
				].join('');
			}
			r[r.length] = '</dd>';
		}
		var dp = dd.parentNode;
		dp.innerHTML += r.join('');
		$LDH();
	} );
	http.parse();
};
// 施設リスト(カテゴリー)取得 POLUS専用
var getCategoryMemberPolus = function (p,e) {
	var dd = $ND( e, 'parentNode', 'parentNode', 'dt' ), dw = $ND( dd, 'nextSibling', 'nextSibling', 'dd' );
	if ( !!dw ) {
		// 取得済みの場合
		if ( dw.style.display == 'none' ) {
			if ( p.length === 1 ) allMemberClose();
			$EL('categoryList').scrollTop = $EP(dd).y;
			do { dw.style.display = ''; } while ( dw = $ND( dw, 'nextSibling', 'nextSibling', 'dd' ) );
			return;
		}
		do {
			dw.style.display = 'none';
		} while ( dw = $ND( dw, 'nextSibling', 'nextSibling', 'dd' ) );
		return;
	}
	$LD();
	for ( var i = 0, a = [], s = [], n = p.length; i < n; ++i ) {
		a[a.length] = '&v' + i + '=' + p[i];
		s[s.length] = "'" + p[i] + "'";
	}
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=2' + p.length + a.join('') + $DM() );
	http.async( function (d) {
		var st = s.join(',');
		if ( s.length === 1 ) {
			// 第2階層挿画
			allMemberClose();
			for ( var i = 0, r = [], n = d.length; i < n; ++i ) {
				if ( !parseInt( d[i].CNT ) ) {
					r[r.length] = [
						'<dd class="tier2"><dl',
						( !i ? ' class="firstChild"' : '' ),
						'>',
						'<dt><a href="#" onclick="return false;" style="cursor:default;text-decoration:none;color:#bbb;">',
						d[i].CTNM,
						'</a></dt>',
						'</dl></dd>'
					].join('');
					continue;
				}
				if ( !parseInt( d[i].CTID3 ) ) {
					r[r.length] = [
						'<dd class="tier2"><dl',
						( !i ? ' class="firstChild"' : '' ),
						'>',
						'<dt><a href="#" onclick="getCategoryMember([\'',
						d[i].CTID1,
						'\',\'',
						d[i].CTID2,
						'\'],this,1);return false;">',
						d[i].CTNM,
						'</a></dt>',
						'</dl></dd>'
					].join('');
					continue;
				}
				r[r.length] = [
					'<dd class="tier2"><dl',
					( !i ? ' class="firstChild"' : '' ),
					'>',
					'<dt><a href="#" onclick="getLocateMember([\'',
					d[i].CTID1,
					'\',\'',
					d[i].CTID2,
					'\',\'',
					d[i].CTID3,
					'\'],this,0,',
					d[i].CNT,
					');return false;">',
					d[i].CTNM,
					'</a></dt>',
					'</dl></dd>'
				].join('');
			}
		} else {
			// 第3階層挿画
			var r = ['<dd class="tier3">'];
			for ( var i = 0, n = d.length; i < n; ++i ) {
				if ( !parseInt( d[i].CNT ) ) continue;
				r[r.length] = [
					'<a href="#" onclick="getLocateMember([',
					st,
					',\'',
					d[i].CTID,
					'\'],this,0,',
					d[i].CNT,
					');return false;">',
					d[i].CTNM,
					'&nbsp;(',
					Math.min( 60, d[i].CNT ),
					')',
					'</a>'
				].join('');
			}
			r[r.length] = '</dd>';
		}
		var dp = dd.parentNode;
		dp.innerHTML += r.join('');
		$LDH();
	} );
	http.parse();
};
// 施設リスト(施設)取得
var getLocateMember = function ( p, e, offset, total ) {
	$LD();
	offset = offset || 1;
	for ( var i = 0, a = [], s = [], n = p.length; i < n; ++i ) {
		a[a.length] = '&v' + i + '=' + p[i];
		s[s.length] = "'" + p[i] + "'";
	}
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=3&of=' + offset + a.join('') + $DM() );
	http.async( function (d) {
		var dd = $EL('detailIndex'), lp = [], m = PlsMap, lc = PlsLocImg, pd = PlsLocData;
		m.setProperty('autoload',false);
		if ( PlsPopup ) PlsPopup.close();
		m.removeRoute();
		m.clearIcon('locIcon');
		for ( var i = j = 0, r = [], n = d.length; i < n; ++i ) {
			if ( !d[i].slat ) continue;
			++j;
			if ( j > 15 ) break;
			if ( !lc[j] ) lc[j] = new NTImage( 'item/map' + j + '.png', 40, 40 );
			r[r.length] = [
				'<li id="di_',
				j,
				'"><a href="#" onclick="showLocateMsg(this);return false;">',
				d[i].sname,
				'</a><br>',
				( d[i].sadd ? ( '住所:' + d[i].sadd + '<br>' ) : '' ),
				( d[i].stel ? ( 'Tel:' + d[i].stel + '<br>' ) : '' ),
				'<a href="#" onclick="showMapRouteWrap(',
				d[i].slat,
				',',
				d[i].slng,
				',255,true,false,11,' + j + ');return false;">徒歩ルート</a>',
				( d[i].sdis ? ( '&nbsp;(' + d[i].sdis + 'm)' ) : '' ),
				'</li>'
			].join('');
			pd[ 'di_' + j ] = d[i];
			var fl = new NTLatLng( d[i].slat, d[i].slng );
			lp[ lp.length ] = fl;
			var icon = new NTIcon( fl, lc[j] );
			icon.setGroup('locIcon');
			icon.addEvent( 'click', $FB( showLocateMsg, null, [ 'di_' + j ] ) );
			m.addIcon( icon );
		}
		for ( var i = 0, a = dd.getElementsByTagName('a'), n = a.length; i < n; ++i ) a[i].onclick = null;
		dd.innerHTML = r.join('');
		$EH('trainList','driveWalkList','categoryList');
		$ES('detailList');
		m.reload();
		m.setProperty('autoload',true);

		var htTxt = getLocatePage( p, j, offset, total );
		if ( !htTxt.length ) htTxt = '';
		$EL('hitTextLink').innerHTML = htTxt;
		$EL('hitTextLink2').innerHTML = htTxt;

		$EL('hitText').innerHTML = [
			'該当件数が',
			Math.min( 60, total ),
			'件あります。距離の近い順に',
			parseInt( offset ) + '件～' + ( Math.min( ( parseInt( offset ) + Math.min(j,15) ), 61 ) - 1 ) + '件目を',
			'ご案内します',
			( d[0] && d[0].sgtitle ) ? ( '<br />' + d[0].sgtitle ) : ''
		].join('');

		setTimeout( function () { adjustMapRoute( lp ); }, 500 );
		$LDH();
	} );
	http.parse();
};
// 施設リスト(ページネイション)取得
var getLocatePage = function ( p, j, offset, total ) {
	total = Math.min( parseInt( total ), 60 ); offset = parseInt( offset );
	var htTxt = [];
	for ( var i = 1, d = 0; i < total; i += 15 ) {
		if ( offset === i ) {
			htTxt[ htTxt.length ] = [
				'<span>',
				( ++d ),
				'</span>'
			].join('');
			continue;
		}
		htTxt[ htTxt.length ] = [
			'<a href="#" onclick="getLocateMember([\'',
			p[0],
			'\',\'',
			p[1],
			'\',\'',
			p[2],
			'\'],this,',
			i,
			',',
			total,
			');return false;">',
			( ++d ),
			'</a>'
		].join('');
	}
	return ( d <= 1 ) ? '' : htTxt.join('&nbsp;|&nbsp;');
};
// 施設リスト(カテゴリー)に戻る
var goBackTop = function () {
	if ( PlsPopup ) PlsPopup.close();
	var m = PlsMap;
	m.removeRoute();
	m.clearIcon('locIcon');
	PlsLocData = {};
	$EH('trainList','driveWalkList','detailList');
	$ES('categoryList');
	$EL('category').getElementsByTagName('span')[0].innerHTML = titleLocationList;
	m.reload();
};
// 施設ポップアップメッセージ起動
var showLocateMsg = function (e) {
	var obj = typeof e === 'string' ? PlsLocData[e] : PlsLocData[ $ND( e, 'parentNode', 'parentNode', 'li' ).id ];
	var div = document.createElement('div');
	div.innerHTML = [
		obj.sname,
		'<br>',
		( obj.sadd ? ( '住所:' + obj.sadd + '<br>' ) : '' ),
		( obj.stel ? ( 'Tel:' + obj.stel ) : '' )
	].join('');
	var d = new NTLatLng( obj.slat, obj.slng );
	PlsPopup = PlsMap.openMsg( d, { max: { x: 200, y: 100 }, content: div } );
	PlsMap.moveTo(d);
};
// ルート挿画(Log取得用ラッパー)
var showMapRouteWrap = function ( lat, lng, mth, jun, lock, cs, unq ) {
	var http = new JKL.ParseXML.JSON( PlsJson + '?k=' + PlsKID + '&cs=' + cs + '&v0=' + unq + $DM() );
	http.async( function () {} );
	showMapRoute( lat, lng, mth, jun, lock );
	http.parse();
};

