﻿//-----------------------------------------------------------
/**
 * ウィンドウ全体の処理
 */
//イベントリスナを登録
function addListener(elem, eventType, func, cap){
	if(elem.attachEvent){
		elem.attachEvent('on' + eventType, func);
	}else if(elem.addEventListener){
		elem.addEventListener(eventType, func, cap);
	}else {
		alert('No support on your browser');
		return false;
	}
};
//イベントリスナを削除
function removeListener(elem, eventType, func, cap){
	if(elem.detachEvent){
		elem.detachEvent('on' + eventType, func);
	}else if(elem.removeEventListener){
		elem.removeEventListener(eventType, func, cap);
	}else {
		alert('No support on your browser');
		return false;
	}
};

function getEventTarget(e){
	var target = null;
	if(e&&e.target){
		target = e.target;
	}else if(e&&e.srcElement){
		target = e.srcElement;
	}
	return target;
};


function init(){
	//print map
	var p = document.getElementById("printbtn");
	if(p) addListener(p, "click", printMap, false);

	//「携帯に送る」ボタンをimgタグからinputタグへ変換する
	var m = document.getElementById("mobilemap");
	if(m){
		var html = '<input type="image" src="http://standard.pmx.proatlas.net/img/sendmobile.gif" onclick="javascript:mail();return false;" alt="">';
		m.innerHTML = html;
	}

	//HTML読込完了後に地図作成処理を開始する
	AlpsMapUtil.callAlpsOnload();
}

addListener(window, "load", init, false);


//-----------------------------------------------------------
/**
 * WebDrive
 */

var _m = null;  // 地図操作クラス（ProAtlasMapCtrl）インスタンス
var _ms = null; // 図形操作クラス（MapsvrCtrl）インスタンス
var _initLayerId = -1;
//var _defaultLayerInfo = '<proatlasmap>  <defaultposition>  <mappackage>map</mappackage>  <position unit="msec">126600000,492750000</position>  <scale>500000</scale>  </defaultposition>  <mappackage id="map" >  <mapservername type="presplit" format="gif">'+MAP_SERVER+'</mapservername>  <layerservername>AlpsApiProxy/WebDrive/v1/MapLayer</layerservername>  <layer >  <scale>5000</scale>  <projection type="UTM" >  <origin unit="dms">35/40/0,139/45/0</origin>  <projfactor>0.9996</projfactor>  </projection>  <projection type="UTM" >  <origin unit="dms">35/10/0,137/0/0</origin>  <projfactor>0.9996</projfactor>  </projection>  <projection type="UTM" >  <origin unit="dms">34/40/0,135/30/0</origin>  <projfactor>0.9996</projfactor>  </projection>  </layer>  <layer >  <scale>10000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>sphere</ellipse>  </projection>  </layer>  <layer >  <scale>25000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>bessele</ellipse>  </projection>  </layer>  <layer >  <scale>70000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>bessele</ellipse>  </projection>  </layer>  <layer >  <scale>250000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>sphere</ellipse>  </projection>  </layer>  <layer >  <scale>500000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>sphere</ellipse>  </projection>  </layer>  <layer >  <scale>1000000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>sphere</ellipse>  </projection>  </layer>  <layer >  <scale>3000000</scale>  <projection type="Mercator">  <origin unit="dms">36/0/0,137/0/0</origin>  <ellipse>sphere</ellipse>  </projection>  </layer>  <layer >  <scale>5000000</scale>  <projection type="UTM">  <origin unit="dms">35/10/0,137/0/0</origin>  <projfactor>0.9996</projfactor>  </projection>  <scrollrange>  <bottomleft unit="dms">24/0/0,122/40/0</bottomleft>  <topright unit="dms">46/0/0,149/0/0</topright>  </scrollrange>  </layer>  <layer >  <scale>26000000</scale>  <projection type="UTM">  <origin unit="dms">35/10/0,137/0/0</origin>  <projfactor>0.9996</projfactor>  </projection>  <scrollrange>  <bottomleft unit="dms">19/0/0,122/0/0</bottomleft>  <topright unit="dms">44/0/0,160/0/0</topright>  </scrollrange>  </layer>  <layer >  <scale>83479934</scale>  <projection type="Mercator">  <origin unit="dms">0/0/0,0/0/0</origin>  <ellipse>bessele</ellipse>  </projection>  </layer>  </mappackage>  <autoscrollanchor src="anchor.gif" size="32" /> <centermark src="'+SERVER+'/asp/webdrive/center.gif" size="32"/> <vacanttile src="'+SERVER+'/asp/webdrive/vacantTile.gif" /> <autoscrollanchor src="'+SERVER+'/asp/webdrive/anchor.gif" size="32" /> <isupdatelayerscalelist value="true" />  </proatlasmap>';


/**
 * WebDriveのJavaScriptを読み込み完了した際にコールされるメソッド。
 */
function alpsAspOnload() {
	var defpos = new Object();
	defpos.pos = new LLPoint(INITPOS);

    var mapElem = document.getElementById("map");
    if(mapElem){
		var initscale = mapElem.getAttribute("initscale");
		if(INITSCALE=="" && initscale != null && initscale != ""){
            INITSCALE = initscale;
//			alps.iniScale=INITSCALE;
		}
	}
	defpos.scale = INITSCALE;
	// 地図操作クラス（ProAtlasMapCtrl）インスタンスの作成
//	_m  = AlpsMapUtil.createMapCtrl('map',_defaultLayerInfo);
	_m  = AlpsMapUtil.createMapCtrl('map',defpos);
	if(INITSCALE!=""){
		_initLayerId = _m.getLayerId(INITSCALE);
	}
USR_POI_CATEGORY='<?xml version="1.0" encoding="UTF-8" ?><mapsvr><poi server=""><category id="3" name="3"><icon status="0" src="http://standard.pmx.proatlas.net/cms/ec62755a787880b1846820bbcfddbe81/icons/I11AG.gif" size="27"/><expand status="0" src="http://standard.pmx.proatlas.net/cms/ec62755a787880b1846820bbcfddbe81/icons/I14DG.gif" size="27"/></category><category id="SMALL3" name="3"><icon status="0" src="http://standard.pmx.proatlas.net/cms/ec62755a787880b1846820bbcfddbe81/icons/I13CG.gif" size="27"/><expand status="0" src="http://standard.pmx.proatlas.net/cms/ec62755a787880b1846820bbcfddbe81/icons/I14DG.gif" size="27"/></category></poi></mapsvr>'
	// 図形操作クラス（MapsvrCtrl）インスタンスの作成
	_ms = new MapsvrCtrl(_m,USR_POI_CATEGORY,"string");

	// POI作成1
	if(_iconpoints){
		var a=new Array();
		var clist = _ms.getCategoryList();
		for(var i = 0; i < _iconpoints.length; i++){
			//alert(_iconpoints[i].icon);
			for(var j = 0; j < clist.length; j++){
				if(clist[j].id==_iconpoints[i].icon){
					var poi = new MapsvrPOI(i.toString(10), "", new LLPoint(_iconpoints[i].pos), _iconpoints[i].icon, null);
					a.push(_iconpoints[i].icon);
					_ms.addContents(poi);
					//alert("addContents("+_iconpoints[i].pos+","+_iconpoints[i].icon+")");
					break;
				}
			}
		}
//		_ms.showCategories(a);
	}

	//アルプス定義カテゴリ カテゴリに追加
			addUserCategory("http://www.citydo.com/prf/common/mapset.xml","xml");
	var a = _ms.category;
	a.push(STATION_ICON_CATEGORY);
	a.push(ROUTE_LINE_CATEGORY);
	_ms.showCategories(a);

    // 地図操作イベントハンドラの登録
    // 地図の移動、縮尺変更等の操作時に、
    // 登録したイベントハンドラが呼び出されます。
    AlpsEvent.addEvent(_m,"mapMoved",mapMoved);              // 地図移動時のイベントハンドラ
    AlpsEvent.addEvent(_m,"layerChanged",layerChanged);    // 縮尺変更時のイベントハンドラ
    AlpsEvent.addEvent(_m,"layerListChanged",layerListChanged);

	//ホイール操作を無効にする
	_m.setEnableWheelOperation(false);
	_m.setEnableAutoLayerChange(true);
	_m.setEnableKeyboardOperation(false);
	_m.setVisibleCenterMark(false);
	document.getElementById("compass").style.visibility ="hidden";

	var mapElem = document.getElementById("map");
	if(mapElem){
		var move = mapElem.getAttribute("move");
		if(move == "false"){
			_m.setEnableDragScroll(false);
			_m.setEnableDbClickCentering(false);
		}
//		var initscale = mapElem.getAttribute("initscale");
//		if(INITSCALE=="" && initscale != null && initscale != ""){
//			INITSCALE = initscale;
//		}
	}

	//Sub Map
	if(document.getElementById('subMap')){
		AlpsMapUtil.createSubMap(_m, 'subMap', false);
	}

	// 地図の初期表示。
//	initMap();
	//アイコンを表示するため明示的にレイヤー変更イベントハンドラを呼ぶ
	layerChanged();
	//そこどこ、マップコード、非同期レイヤリストを取得するため、明示的に地図移動エベントハンドラを呼ぶ
	mapMoved();
	set_layers();

	//戻るボタンにイベントリスナを登録
	var e = document.getElementById("initMap");
	if(e)addListener(e, "click", initMap, false);

	//最寄駅
	var ne = document.getElementById("nrstroute");
	if(ne){
		nearStationSearch();
	}

	alpsAspOnloaded();
};


function addUserCategory(param, strType){
	if(typeof(param)!="string") return this.loadParamObject(param);
	//var contentsServer=null;	//サーバーはアルプス定義ファイルで設定されているはず
	//var drawServer=null;
	var doc=null;
	var popupxsl = null;
	var popupxslServer = null;

	if(strType!=null&&strType=="string"){
		doc=AlpsUtil.getXMLDOMFromStr(param);
	}else{
		doc=AlpsUtil.getXMLDOM(param);
	}
	if(!doc) return;
	var n=doc.getElementsByTagName("poi")[0];
	if(n){
		//contentsServer=n.getAttribute("server");
		var popup=AlpsUtil.getElementAttribute(n,"popup","href");
		if(popup){
			if(typeof(XSLTProcessor)!="undefined"){
				popupxsl=new XSLTProcessor();
				popupxsl.importStylesheet(AlpsUtil.getXMLDOM(popup));
			}else{
				popupxsl=AlpsUtil.getXMLDOM(popup);
			}
		}
		popupxslServer=AlpsUtil.getElementAttribute(n,"popup","server");
		var nl0=n.getElementsByTagName("category");
		for(var i=0;i<nl0.length;i++){
			var n0=nl0[i];
			var c=new MapsvrCategory(n0.getAttribute("id"),n0.getAttribute("name"));
			if(n0.getAttribute("auto")=="no") c.auto=false;
			var nl1=n0.childNodes;
			for(var j=0;j<nl1.length;j++){
				var n1=nl1[j];
				if(n1.nodeType!=1) continue;
				if(n1.nodeName=="icon"){
					var s=parseInt(n1.getAttribute("status")||"0");
					c.iconImage[s]=n1.getAttribute("src");
					c.iconSize[s]=parseInt(n1.getAttribute("size")||"16");
					var dx=parseInt(n1.getAttribute("dx")||"0");
					var dy=parseInt(n1.getAttribute("dy")||"0");
					c.iconDiff[s]=new Point(dx,dy);
				}else if(n1.nodeName=="expand"){
					var s=parseInt(n1.getAttribute("status")||"0");
					c.expandImage[s]=n1.getAttribute("src");
					c.expandSize[s]=parseInt(n1.getAttribute("size")||"16");
					var dx=parseInt(n1.getAttribute("dx")||"0");
					var dy=parseInt(n1.getAttribute("dy")||"0");
					c.expandDiff[s]=new Point(dx,dy);
				}
			}
			_ms.addCategory(c);
		}
	}
	n=doc.getElementsByTagName("shape")[0];
	if(n){
		//これをセットしないと図形描画されない
		_ms.drawServer=n.getAttribute("server");
		var nl0=n.getElementsByTagName("category");
		for(var i=0;i<nl0.length;i++){
			var n0=nl0[i];
			var c=new MapsvrCategory(n0.getAttribute("id"),n0.getAttribute("name"));
			var nl1=n0.childNodes;
			for(var j=0;j<nl1.length;j++){
				var n1=nl1[j];
				if(n1.nodeType!=1) continue;
				if(n1.nodeName=="line"){
					var s=parseInt(n1.getAttribute("status")||"0");
					var style=n1.getAttribute("style");
					c.style[s]=style?("line:"+style):"line";
				}else if(n1.nodeName=="area"){
					var s=parseInt(n1.getAttribute("status")||"0");
					var style=n1.getAttribute("style");
					c.style[s]=style?("area:"+style):"area";
				}else if(n1.nodeName=="circle"){
					var s=parseInt(n1.getAttribute("status")||"0");
					var style=n1.getAttribute("style");
					c.style[s]=style?("circle:"+style):"circle";
				}
			}
			_ms.addCategory(c);
		}
	}
};
//var _bInitMap = false;
var _iconMode = -1;
function initMap(){
	if(!_ms) return;

	routeClear(STATION_POI_ID, ROUTE_LINE_ID);
//	_bInitMap = false;

	_m.moveTo(new LLPoint(INITPOS));
	if(_initLayerId != -1){
		layerto(_initLayerId);
		_bInitMap = true;
	}
};
/*
function initLayerTo(){
//	if(_initLayerId != -1){
//		layerto(_initLayerId);
//		_bInitMap = true;
//		return;
//	}

	var s=_asyncLayerScaleList;
	if(!s) s = _m.getLayerScaleList();
	if(s){
		var id = null;
		var scale;
		if(INITSCALE=="" || s._indexOf(INITSCALE)<0){
			var min = Number.MAX_VALUE;
			for(var i=0;i<s.length;i++){
				if(min>s[i]){
					min = s[i];
				}
			}
			scale = min;
		}
		else{
			scale = INITSCALE;
		}
		var b = false;
		var t=_m.getLayerScaleList();
		for(var i=0; i<t.length;i++){
			if(t[i]==scale){
				_initLayerId=i;
				b = true;
				if(INITSCALE=="")INITSCALE=scale;
				break;
			}
		}
		if(b){
			//alert("initLayerTo("+_initLayerId+")="+ scale);
			layerto(_initLayerId);
			_bInitMap = true;
		}
	}

};
*/
/*
 * 地図の縮尺を変更します。
 * この関数は、表示されている縮尺がクリックされた場合に呼び出されます。
 */
function layerto(index){
  if(!_m)return;
  _m.smoothLayerTo(index);
/*
  // 地図の縮尺を、スムーズに変更します。
  if(_bInitMap) _m.smoothLayerTo(index);
  // 縮尺を瞬時に切り替える場合は、ProAltasMapCtrl.layerTo()を使用します。
  else _m.layerTo(index);
*/
};
// 表示する縮尺設定
/*
var _layers={'5000':'5千',
             '10000':'1万',
             '25000':'2.5万',
             '70000':'7万',
             '250000':'25万',
             '500000':'50万',
             '1000000':'100万',
             '3000000':'300万',
             '5000000':'広域',
             '26000000':'全図'};
*/
var _layers={'5000':'1/1500',
             '10000':'1/3000',
             '25000':'1/8000',
             '70000':'1/21000',
             '250000':'1/75000',
             '500000':'1/15万',
             '1000000':'1/30万',
             '3000000':'1/90万',
             '5000000':'広域',
             '26000000':'全図'};

// 表示する縮尺(imgエレメント)を格納する配列
var _layerCollect=new Array();

var _asyncLayerScaleList=null;

function receiveAsyncLayerScaleList(asyncLayerScaleList){
	_asyncLayerScaleList = asyncLayerScaleList;
	//alert(_bInitMap);
//	if(!_bInitMap){
//		//alert("initLayerTo");
//		initLayerTo();
//	}
};
/*
 * 縮尺表示の変更
 * 地図の縮尺が変更された際に、縮尺の表示を変更します。
 * この関数は、HTMLロード時(window.onload)、縮尺変更時（layerChanged）、
 * 表示している位置の表示可能縮尺が変化した時（layerListChanged）に
 * 呼び出されます。
 */
function set_layers(){
	if(!_m) return;

	var div = document.getElementById("layers");
	if(!div) return;
	if(div.getAttribute("text")=="yes"){
		set_textlayers();
		return;
	}

	var s = _asyncLayerScaleList;
	if(!s) s=_m.getLayerScaleList();

	for(var i=0;i<_layerCollect.length;i++){
		var menu=_layerCollect[i];
		removeListener(menu, "click",onLayerBtn,false);
		document.getElementById("layers").removeChild(menu);
	}
	_layerCollect.length=0;

	if(!s) return;

	for(var i=0;i<_m.getLayerCount();i++){
		var src = "http://standard.pmx.proatlas.net/img/";
		var scale=_m.getLayerScale(i);
		if(!_layers[scale])continue;
		var etype = "img";

		var layerenable = true;
		// 表示している縮尺は、太字を設定します。
		if(i==_m.getCurrentLayerId()){
			src += "s" + scale + ".gif";
			layerenable = false;
		}
		// 地図で表示できる縮尺の場合
		else if(s._indexOf(scale)>=0){
			src += scale + ".gif";
			etype = "input";
		}
		// 地図で表示できない縮尺の場合
		else{
			src += "d"+ scale + ".gif";
			layerenable = false;
		}

		var menu=document.createElement(etype);
		menu.setAttribute("layerid",i);
		menu.setAttribute("src",src);
		if(layerenable==true){
			menu.setAttribute("type","image");
			addListener(menu, "click", onLayerBtn, false);
		}
		_layerCollect.push(menu);
		document.getElementById("layers").appendChild(menu);    // 縮尺を表示
    }

    createMapOpt(_m.getLayerScale(_m.getCurrentLayerId()));
};

/*
 * 縮尺表示の変更
 * 地図の縮尺が変更された際に、縮尺の表示を変更します。
 * この関数は、HTMLロード時(window.onload)、縮尺変更時（layerChanged）、
 * 表示している位置の表示可能縮尺が変化した時（layerListChanged）に
 * 呼び出されます。
 */
function set_textlayers(){
	if(!_m) return;

	var div = document.getElementById("layers");
	if(!div) return;

	var s = _asyncLayerScaleList;
	if(!s) s=_m.getLayerScaleList();

	for(var i=0;i<_layerCollect.length;i++){
		var menu=_layerCollect[i];
		removeListener(menu, "click",onLayerBtn,false);
		document.getElementById("layers").removeChild(menu);
	}
	_layerCollect.length=0;

	if(!s) return;

	for(var i=0;i<_m.getLayerCount();i++){
		var scale=_m.getLayerScale(i);
		if(!_layers[scale])continue;

		var layerenable = false;
		var menu = document.createElement("span");
		// 表示している縮尺は、太字を設定します。
		if(i==_m.getCurrentLayerId()){
			menu.appendChild(document.createTextNode(_layers[scale]));
			menu.style.color="black";
			menu.style.fontWeight="bold";
			menu.style.fontSize="1.2em";
		}
		// 地図で表示できる縮尺の場合
		else if(s._indexOf(scale)>=0){
			menu.appendChild(document.createTextNode(_layers[scale]));
			menu.style.color="blue";
			menu.style.fontWeight="normal";
			layerenable = true;
		}
		// 地図で表示できない縮尺の場合
		else{
			menu.appendChild(document.createTextNode(_layers[scale]));
			menu.style.color="black";
			menu.style.fontWeight="normal";
		}

		if(layerenable==true) addListener(menu, "click", onLayerBtn, false);
		menu.setAttribute("layerid",i);
		_layerCollect.push(menu);
		div.appendChild(menu);    // 縮尺を表示
    }

    createMapOpt(_m.getLayerScale(_m.getCurrentLayerId()));
};
function createMapOpt(scale){
	var e = document.getElementById("mapopt");
	if(e){
		removeMapOpt();
		var sb = document.createElement("img");
		sb.setAttribute("src","http://standard.pmx.proatlas.net/img/sb"+scale+".gif");
		var houi = document.createElement("img");
		houi.setAttribute("src","http://standard.pmx.proatlas.net/img/houi.gif");

		e.appendChild(sb);
		e.appendChild(document.createTextNode(" "));
		e.appendChild(houi);
		e.appendChild(document.createTextNode(" "));
		// init button
		if(e.getAttribute("init")=="yes"){
			var initButton = createInputImage2("initMap","http://www.citydo.com/prf/pic2/init2.gif");
			addListener(initButton,"click",initMap);
			e.appendChild(initButton);
		}
	}
};

function removeMapOpt(){
	var e = document.getElementById("mapopt");
	if(e){
		for(var i=e.childNodes.length-1; i>=0; i--){
			var child = e.childNodes[i];
			e.removeChild(child);
		}
	}
};

function onLayerBtn(e){
	var src = getEventTarget(e);
	if(src){
		var id = new Number(src.getAttribute("layerid"));
		layerto(id);
	}
};
/*
 * 地図で表示している縮尺が変化した際に呼び出される、イベントハンドラです。
 * このイベントハンドラは、AlpsEvent.addEvent()にて、ProAtlasMapCtrlに登録されています。
 */
function layerChanged(){
	set_layers();       // 表示している縮尺リストの更新
	var scale = _m.getLayerScale(_m.getCurrentLayerId());
	var mode = (scale<LIMITSCALE)?1:2;
	if(mode != _iconMode){
		_iconMode = mode;
		iconChange(mode);
	}
};

/*
 * 地図の表示可能な縮尺が変化した際に呼び出される、イベントハンドラです。
 * このイベントハンドラは、AlpsEvent.addEvent()にて、ProAtlasMapCtrlに登録されています。
 */
function layerListChanged(id){
	if(!_m) return;
	// 地図の中心位置で表示できる縮尺（数値の配列）を取得します
	var s =_m.getLayerScaleList();
//	alert(s);
	_asyncLayerScaleList = s;

	if(id==_m.getCurrentPackageId()){
		set_layers();      // 表示している縮尺リストの更新
	}

};

/*
 * 地図が移動した際に呼び出される、イベントハンドラです。
 * このイベントハンドラは、AlpsEvent.addEvent()にて、ProAtlasMapCtrlに登録されています。
 */
function mapMoved(){
	sokodoko();		//中心点の住所表示
	mapcode();		//マップコード
    //if(_iconpoints.length > 1 && document.getElementById("nrstroute")) nearStationSearch();
    //_m.asyncGetLayerScaleList(_m.getCurrentPackageId(),_m.getCenterLatLon(), receiveAsyncLayerScaleList);
	//set_layers();
};

/*
 * アイコンの種類を切り替えます。
 * mode 1:ノーマル  2:スモール
 */
function iconChange(mode){
	//alert("mode="+mode);

	if(!_iconpoints || _iconpoints.length==0) return;
	if(!_ms) return;

	var a = new Array();
	for(var i = 0; i < _iconpoints.length; i++){
		//alert(_iconpoints[i].icon);
		var category = (mode==1) ? (_iconpoints[i].icon) : ("SMALL"+_iconpoints[i].icon);
		var cate = _ms.getCategory(category);
		if(cate){
			_ms.removeContents(i.toString(10));
			var poi = new MapsvrPOI(i.toString(10), "", new LLPoint(_iconpoints[i].pos), category, null);
			_ms.addContents(poi);
			a.push(category);
			//alert(category);
			//alert("addContents("+_iconpoints[i].pos+","+_iconpoints[i].icon+")");
		}
	}
	a.push(STATION_ICON_CATEGORY);
	a.push(ROUTE_LINE_CATEGORY);
	_ms.showCategories(a);
};

//-----------------------------------------------------------
/**
 * Near Station Routing
 */
var _ls=null;
var _lsin=null;
var _lsout=null;
var stations = new Array();
var stios = new Array();
function Landmark(item, no){
	this.item = item;
	this.no = no;
}

//最寄駅検索開始
function nearStationSearch(){
	if(!_ls){
		_ls=new LandmarkSearchService();
//	  	AlpsEvent.addEvent(_ls,"landmarkSearched",landmarkSearched);
	}
	if(_lsin){
  		delete _lsin;
	}

	_lsin=new LandmarkSearchInput();	//検索条件
	setLandmarkSearchInput();			//検索条件のセット

	_ls.landmarkSearch(_lsin,landmarkSearched);
};

function landmarkSearched(lsout){
	setNrStation(lsout);
};

function genreListed(){
	setResult();
};

function setLandmarkSearchInput(){
	if(!_iconpoints || _iconpoints.length==0) return;
	if(MAX_RADIUS == 'undefined') MAX_RADIUS = "10000";
	_lsin.search="";
	_lsin.genre="12,99";
	_lsin.point=new LLPoint(_iconpoints[0].pos);
	_lsin.radiusmax=MAX_RADIUS;
	_lsin.radiusstep=STEP_RADIUS;
	_lsin.radiusmin=MIN_RADIUS;
	_lsin.address="";
	_lsin.outdatum="Tokyo97";
	_lsin.searchstation="true";
	_lsin.rrso="true";
};

function setNrStation(lsout){
	var label = document.getElementById("nrstlabel");
	if(label){
		for(var i=label.childNodes.length-1; i>=0; i--){
			label.removeChild(label.childNodes[0]);
		}
		label.appendChild(document.createTextNode("最寄り駅:"));
	}
	var td = document.getElementById("nrstlist");
	if(td){
		for(var i=td.childNodes.length-1; i>=0; i--){
			td.removeChild(td.childNodes[0]);
		}
		var items=lsout.resultItem;
		if(!items || items.length==0){
			var d = parseFloat(MAX_RADIUS);
			d = d / 1000;
			var r = d.toString();
			var n = r.indexOf(".");
			if(n != -1 && r.length>n+2) r = r.substring(0, n+2);
			text="　半径" + r + "km以内に駅がありません。";
			td.appendChild(document.createTextNode(text));
			return;
		}
		else if(items.length>0){

			for(var i=0;i<items.length;i++){
				var item=items[i];
				var land = new Landmark(item,i+1);
				if(item.genreCode=="12"){
					stations.push(land);
				}
				else if(item.genreCode=="99"){
					stios.push(land);
				}
			}
			stations.sort(landmarkSort);
			stios.sort(landmarkSort);
			var selStation = createStationList("station", stations,null);
			if(selStation){
				td.appendChild(selStation);
				td.appendChild(document.createElement("br"));
				var station = getStationName(stations, selStation.value);
				addListener(selStation, "change", stationChanged, false);
				//
				var matchname = station;
				var index = station.indexOf("【");
				var index2 = station.indexOf("［");
				if(index2 != -1) index = index2;
				if(index != -1)matchname = station.substring(0,index);
				else matchname = station;
				var selStio = createStationList("stio",stios,matchname);
				td.appendChild(selStio);
			}
			//ルート表示ボタン・クリアボタン
			var td2 = document.getElementById("nrstbtn");
			if(td2){
				for(var i=td2.childNodes.length-1; i>=0; i--){
					td2.removeChild(div.childNodes[0]);
				}
				var rb = createInputImage("route","route.gif");
				var cb = createInputImage("routeclear","clear.gif");
				td2.appendChild(rb);
				td2.appendChild(cb);
				addListener(rb, "click", routing, false);
				addListener(cb, "click", onRouteClear, false);
			}
		}
	}
};

function landmarkSort(a,b){
	var d1 = parseFloat(a.item.distance);
	var d2 = parseFloat(b.item.distance);
	return (d1-d2<0)?-1:((d1-d2>0)?1:0);
};

function createStationList(id,array,match){
	if(!array || array.length==0) return null;

	var e = document.createElement("select");
	e.setAttribute("id", id);
	for(var i=0;i<array.length;i++){
		var item = array[i].item;
		var name = item.name;
		var no = array[i].no;
		if(match==null || (match!=null && name.indexOf(match))==0){
			var o = document.createElement("option");
			o.setAttribute("value", no);
			o.appendChild(document.createTextNode(name));
			e.appendChild(o);
		}
	}
	return e;
};

function stationChanged(){
	var stationList = document.getElementById("station");
	var station = getStationName(stations,stationList.value);
	var stioList = document.getElementById("stio");
	if(stioList){
		for(var i=stioList.childNodes.length-1; i>=0; i--){
			var op = stioList.childNodes.item(0);
			stioList.removeChild(op);
		}
		for(var i=0;i<stios.length;i++){
			var item = stios[i].item;
			var name = item.name;
			//
			var matchname = station;
			var index = station.indexOf("【");
			var index2 = station.indexOf("［");
			if(index2 != -1) index = index2;
			if(index != -1)matchname = station.substring(0,index);
			else matchname = station;
			if(name!=null && name.indexOf(matchname)==0){
				var o = document.createElement("option");
				o.setAttribute("value", stios[i].no);
				o.appendChild(document.createTextNode(name));
				stioList.appendChild(o);
			}
		}
	}
};
function getStationPoint(array,no){
	if(!array || array.length==0) return "";
	var pt = "";
	for(var i=0; i<array.length; i++){
		var item = array[i].item;
		if(array[i].no==no){
			pt=item.point.toString();
		}
	}
	return pt;
};
function getStationName(array,no){
	if(!array || array.length==0) return "";
	var name = "";
	for(var i=0; i<array.length; i++){
		var item = array[i].item;
		if(array[i].no==no){
			name = item.name;
		}
	}
	return name;
};
function createButton(id, value){
	var b = document.createElement("input");
	b.setAttribute("type", "button");
	b.setAttribute("value", value);
	b.setAttribute("id", id);
	return b;
};
function createInputImage(id, src){
	var b = document.createElement("input");
	b.setAttribute("type", "image");
	b.setAttribute("src", "http://standard.pmx.proatlas.net/img/"+src);
	b.setAttribute("id", id);
	return b;
};
function createInputImage2(id, src){
	var b = document.createElement("input");
	b.setAttribute("type", "image");
	b.setAttribute("src", src);
	b.setAttribute("id", id);
	return b;
};
function onRouteClear(){
	routeClear(ROUTE_LINE_ID, STATION_POI_ID);
//橋本追加080325
    showhide('pr1',0);
//橋本追加080325

};
//-----------------------------------------------------------
/**
 * SmartRouting
 */
var _sr=null;
var _srin=null;

//検索開始
function routing(){
	onRouteClear();
//alert("routing");
	if(!_sr){
		_sr=new SmartRoutingService();
//	  	AlpsEvent.addEvent(_sr,"routinged",routinged);
	}
//	if(_srin){
// 		delete _srin;
//	}

	if(!_srin) _srin=new SmartRoutingInput();	    //検索条件
	//検索条件を初期化
	if(_srin!=null){
		_srin.point="";
		_srin.tollPriority="";
		_srin.costPriority="";
		_srin.transport="";
		_srin.travelingFlag="";
		_srin.useAroundTollRoad="";
		_srin.outdatum="";
	}

	setSmartRoutingInput();			    //検索条件のセット

	_sr.routing(_srin,routinged);

};

function routinged(srout){
	setNrStRouteResult(srout, new LLPoint(_rpt1), STATION_POI_ID, _stio, new LLPoint(_stiopt), ROUTE_LINE_ID);
};

var _station = null;
var _stio = null;
var _stiopt = null;
var _rpt1 = null;
function setSmartRoutingInput(){
	var p = "";
	if(!_iconpoints || _iconpoints.length>1) p=_m.getCenterLatLon().toString();
	else p = _iconpoints[0].pos;

	_rpt1 = p;

	var stioList = document.getElementById("stio");
	if(stioList){
		var name = getStationName(stios, stioList.value);
		_stiopt = getStationPoint(stios, stioList.value);
		//出入口取得できなければ、駅で代用
		if(_stiopt==''){
			var stationList = document.getElementById("station");
			if(stationList){
				name = getStationName(stations, stationList.value);
				_stiopt = getStationPoint(stations, stationList.value);
			}
		}
//	alert(_stiopt);
		if(_stiopt!=""){
			p = p + "," + _stiopt;
			_srin.point= p;
			_srin.tollPriority="3";
			_srin.costPriority="1";
			_srin.transport="2";
			_srin.travelingFlag="0";
			_srin.useAroundTollRoad="0";
			_srin.outdatum="Tokyo97";

			var stationList = document.getElementById("station");
			if(stationList) _station=stationList.value;
			_stio = name;
		}
	}
};

var ROUTE_LINE_ID = "route-line-1";
var STATION_POI_ID = "station-poi-1";

var ROUTE_LINE_CATEGORY = "ROUTE_LINE";
var STATION_ICON_CATEGORY="EKI_1";


//ルートの表示
function setNrStRouteResult(srout, rpt1, stioId, name, stiopt, lineId){
//	alert("setNrStRouteResult("+ srout + "," + stioId + "," + name+ "," + stiopt + "," + lineId+ ")++");
	var text;
	var ritems=srout.routeItem;
	var pitems=srout.pointItem;
	var ditems=srout.distanceItem;

	if(!ritems){
//alert("1");
		text="検索エラー。";
//alert(text);
		onRouteClear();
		return;
	}
	else if(ritems.length==0){
//alert("2");
		text="0件";
//alert(text);
		onRouteClear();
		return;
	}
	else{
//alert("3");

		var points = new Array;
		var distance = "";
		//緯度経度配列
		//物件位置
		points.push(rpt1);
		for(var i=0;i<ritems.length;i++){
			var item = ritems[i];
			points.push(item.point);
		}
		//駅位置
		points.push(stiopt);
//			alert("4");

		//距離
		//if(ditems && ditems.length>0){
		//	distance = ditems[0].distance;
		//}
		//カテゴリに追加

//アルプス定義カテゴリ
//			addUserCategory("http://www.citydo.com/prf/common/mapset.xml","xml");
//
//			var a = _ms.category;
//			a.push(STATION_ICON_CATEGORY);
//			a.push(ROUTE_LINE_CATEGORY);
//			_ms.showCategories(a);

		//前のライン/駅アイコンを消去
		routeClear(lineId, stioId);

		var line = new MapsvrLine(lineId, distance, points, ROUTE_LINE_CATEGORY);
		//ライン描画
		_ms.addContents(line);
//橋本追加080324
    document.f1.line.value="CFF0000:W6:P" + points;
    showhide('pr1',1);
//橋本追加080324

		//駅アイコン追加
		var poi = new MapsvrPOI(stioId,name,stiopt,STATION_ICON_CATEGORY,name);
		_ms.addContents(poi);

		//var cats = _ms.getCategoryList();

//		alert("new MapsvrPOI("+stioId+","+name+","+stiopt+","+STATION_ICON_CATEGORY+","+name+")");
	}
};

function routeClear(lineId, stioId){
	_ms.removeContents(lineId);
	_ms.removeContents(stioId);
};

//-----------------------------------------------------------
/**
 * Sokodoko
 */
var _sd=null;
var _sdin=null;

//検索開始
function sokodoko(){
	var e = document.getElementById("sokodoko");
	if(!e) return;

	if(!_sd){
		_sd=new SokodokoService();
//	  	AlpsEvent.addEvent(_sd,"geoDecoded",geoDecoded);
	}
	if(_sdin){
  		delete _sdin;
	}

	_sdin=new SokodokoInput();		//検索条件
	setSokodokoInput();				//検索条件のセット
	_sd.geoDecode(_sdin, geoDecoded);
};

function geoDecoded(sdout){
	setSokodokoResult(sdout);
};

function setSokodokoInput(){
     var p=_m.getCenterLatLon();
	_sdin.point=p;
};

function setSokodokoResult(sdout){
	var text;
	var items=sdout.resultItem;
	var d = document.getElementById("sokodoko");
	if(!d) return;
	for(var i=0; i<d.childNodes.length; i++){
		d.removeChild(d.childNodes[i]);
	}
	if(!items || items.length==0){
		text="住所不明";
	}
	else if(items.length>0){
		var item=items[0];
		text=item.name;
		text += "  付近";
//橋本追加080325
	document.f1.stioname.value=text;
//橋本追加080325

	}
	d.appendChild(document.createTextNode(text));
};
//-----------------------------------------------------------
/**
 * MapCode
 */
function mapcode(){
	var e = document.getElementById("mapcode");
	if(!e)return;

	var xmlhttp=AlpsUtil.getXMLHttp();
	if(!xmlhttp)return;
  var url = CONTEXT + "/mapcode?"
			+ 'c=' + _m.getCenterLatLon();
	xmlhttp.open("GET",url,true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState==4){
			if(xmlhttp.status==200){
				var res=xmlhttp.responseText;
				var text = document.createTextNode(res);
				var d = document.getElementById("mapcode");
				var old = d.lastChild;
				if(d.childNodes.length>1)d.removeChild(old);
				d.appendChild(text);
			}
			else{
				//failure
				//alert("failure");
			}
		}
	}
	xmlhttp.send(null);
};

//-----------------------------------------------------------
/**
 * PrintMap
 */
//橋本追加080325

function printMap(){
	if(!_m) return;
	var e = null;

	var c = _m.getCenterLatLon().toString();
	var scale = _m.getLayerScale(_m.getCurrentLayerId());
	var stioname = "";
	var stio = "";
	var stiopt = "";
  var rpt1 = "";
	document.f1.scale.value=scale;
	document.f1.c.value=c;
  var tmpMSG = document.getElementsByName("stioname");
	var routing = document.getElementsByName("routing.x");

	if(-1 != _ms.getContentsIndex(ROUTE_LINE_ID)){
		//駅出入口
		if(_stio != 'undefined' && _stio != ''){
			stio = _stio;
    	document.f1.stio.value= stio;

		}

		//経路の基点
		if(_stiopt != 'undefined' && _stiopt != '') stiopt = _stiopt;
		if(_rpt1 != 'undefined' && _rpt1 != '') {
      rpt1 = _rpt1;
     	document.f1.pos1.value=rpt1;
     	document.f1.pos2.value=stiopt;

    }

		if(routing) routing[0].setAttribute("value","1");
	}
	else{
		if(routing) routing[0].setAttribute("value","");
	}

};
//橋本追加080325

function showhide(id,flg){
    if(document.getElementById){
      if(flg == "0"){
        document.getElementById(id).style.display = "none";
      }else{
        document.getElementById(id).style.display = "block";
      }
    }
};
