// 地図追加機能H画面用地図表示JS
// @author BJBSH:Zhoucw
// @version 1.0 2009/07/20 初版作成

var defaultsSettings = {
	keido : null,
	ido : null,
	address:null,
	width:600,
	height:500,
	visible:true,
	subMap:false,
	header:false,
	footer:true,
	option:false,
	zoomTool:true,
	// mantis:13983 対応 zhoucw 2009/08/09 start
	zoomToolStyle:1,
	// mantis:13983 対応 zhoucw 2009/08/09 end
	outerBorder:true,
	outerBorderColor:'#3366ff',
	innerBorderColor:'#6699ff',
	history:true,
	mapType:0,
	mapEnv:0,
	extScrollEvent:false,
	mmpZoomToolPos:5,
	// mantis:13983 対応 zhoucw 2009/08/11 start
	mmpZoomToolSize:1,
	// mantis:13983 対応 zhoucw 2009/08/11 end
	mmpZoomToolOpacity:1,
	mmpScaleBar:true,
	mmpScaleBarPos:4,
	smpWidth:150,
	smpHeight:150,
	smpPos:1,
	smpViewType:0,
	smpExpand:true,
	smpLevelDiff:3,
	smpAutoZoom:false,
	smpZoomTool:true,
	smpZoomToolOpacity:1,
	smpMainAreaColor:'#ff99cc',
	smpMarginColor:'white',
	hdrText:'map',
	hdrFontFamily:null,
	hdrFontSize:'9pt',
	hdrFontStyle:null,
	hdrFontWeight:null,
	hdrTextColor:'#191970',
	hdrTextAlign:'left',
	hdrBgColr:'#ccccff',
	historyBtn:true,
	ftrText:'(c)1999-2009ZENRIN DataCom/ZENRIN.',
	ftrFontFamily:null,
	ftrFontSize:'9pt',
	ftrFontStyle:null,
	ftrFontWeigth:null,
	ftrTextColor:'#191970',
	ftrTextAlign:'right',
	ftrBgColor:'white',
	centerMark:false,
	dragMode:1,
	wheelZoom:false,
	udtMouseSelect:2,
	udtMouseUnselect:2,
	udtSelectMark:false,
	udtPopup:true,
	udtPopupType:1,
	udtPopupPos:1,
	udtAppearAction:0,
	dshpBdrColor:'red',
	dshpBgColor:'orange',
	dshpOpacity:'0.7',
	initZoomLevel:8,
	isMultiBukken:true,
	multiBukkenUrl:'/jj/cgm/common/JJ902FK003/initMap',
	multibukkenUrlTarget:'',
	multibukkenUrlParam:'',
	multiBukkenDetailUrl:'',
	multibukkenDetailUrlTarget:'/jj/cgm/common/JJ902FK003/detail',
	initKeido2IdoUrl:'',
	imgSrc:'',
	isSignCenterPoint:false,
	isFdsToZenrin: true,
	areaCd: '',
	selectedBukkenShubetsu: '',
	mapMode:'1',
	mapType:2,
	// mantis:13737 対応 BJB:zhoucw 2009/08/05 start
	ekiCd: '',
	ensenCd: ''
	// mantis:13737 対応 BJB:zhoucw 2009/08/05 end
};
var element;
var initBtnElem;

//イベントを一回だけ登録するためのフラグ
var loadFlag = 0;
//スクロール地図オブジェクト
var nmap = null;

//nowloadingFlg
var nowloadingFlg = 0;
// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
//学校gif位置の微調整
var gakkoGifTateOffset = 20;
var gakkoGifYokoOffset = 20;
// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
//中心座標
var centerX;
var centerY;

//地図サイズ
var MYP = 0;
var MTP = 0;

//物件アイコン番号
var bukkenIndex;
//施設アイコン番号
var shisetsuIndex;
//ズームレベルが連続でクリックされたときにリクエストが帰ってくるまではロックをする
var zoomLock = 0;

var initMapUrl = '/jj/cgm/common/JJ902FK003/initMap';
// mantis:13438 対応 BJB:zhoucw 2009/08/05 start
var initFlg;
// mantis:13438 対応 BJB:zhoucw 2009/08/05 end
// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
var bukkenSize = 14;
var shisetsuSize = 9;
var zenrinMapHeight = null;
var zenrinMapWidth = null;
// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
$(function(){

	viewMap(initParams);
});
(function($){
	$.fn.initialize = function(instanceSettings,initBtnId){
		element = $(this)[0];
		if($.isNotNull2Blank(initBtnId)) {
			initBtnElem = $("#"+initBtnId);
		}
		defaultsSettings = $.extend({}, defaultsSettings , instanceSettings || {});
		// mantis:13438 対応 BJB:zhoucw 2009/08/05 start
		if (initFlg == null || initFlg == '') {
			initFlg = "1";
			defaultsSettings.initZoomLevel = instanceSettings.zoomLevel;
		}
		// mantis:13438 対応 BJB:zhoucw 2009/08/05 end
		if($.isNotNull2Blank(defaultsSettings.keido) && $.isNotNull2Blank(defaultsSettings.ido)) {
			$.initMap(defaultsSettings);
		} else if($.isNotNull2Blank(defaultsSettings.address) ) {
			var addrSrch = new GlbsAddressSearch();
			addrSrch.addEventHandler("end",$.writeResult);
			var setting = new GlbsAddressSearchSettings();
			setting.freeWord = defaultsSettings.address;
			addrSrch.search(setting);
		}
		if($.isNotNull2Blank(initBtnId)) {
			var container = $(this);
			initBtnElem.click(function(){
				container.empty();
				$.initMap(defaultsSettings);
				return false;
			});
		}
	}

})(jQuery);

jQuery.initMap = function(instanceSettings) {
	if(defaultsSettings.keido == "0.0" || defaultsSettings.ido == "0.0") {
		closeNowloading();
		return;
	}
	var props = new GlbsProperties();
	props = $.extend({}, props , instanceSettings || {});

	if(!defaultsSettings.isFdsToZenrin) {
		props.initPos = new GlbsPoint(defaultsSettings.keido,defaultsSettings.ido);
	} else {
		props.initPos = new GlbsPoint(fdsToZenrin(defaultsSettings.keido),fdsToZenrin(defaultsSettings.ido));
	}
	props.size = new GlbsSize(instanceSettings.width,instanceSettings.height);

	nmap = new GlbsMap(false);
	$(element).empty();
	nmap.initialize(element,props);

	if(defaultsSettings.isSignCenterPoint) {
		var udata = new GlbsUserData(props.initPos, "/jj/jjcommon/img/arrow_02.gif");
		udata.setPopupStyle(1);
		nmap.selectUserData(nmap.addUserData(udata));
	}

	if(null != initBtnElem) {

		initBtnElem.show();
	}
	if(instanceSettings.isMultiBukken) {

		loadFlag = 0;
		//画面に関するオブジェクト
		var glbsMapView = nmap.getMainMap();
		//中心座標
		var center = glbsMapView.getCenterPos();
		//表示範囲座標（左下・左上）
		var rect = glbsMapView.getExtent();
		//地図の座標を取得する

    	centerX = zenrinToFds(center.toMs().x);

    	centerY = zenrinToFds(center.toMs().y);
    	var gMapData = $(element).siblings("#gMapData");
    	gMapData.empty();
    	gMapData.html('<div id="result"/>');
		//$('<div id="result"/>').appendTo(gMapData);
		getMapXml();
	}
};

jQuery.isNotNull2Blank = function(value){
	if(null != value && value.trim() != "") {
		return true;
	}
	return false;
};

String.prototype.trim = function() {
		return this.replace(/(^[\s\u3000]*)|([\s\u3000]*$)/g, "");
};
jQuery.writeResult = function(event) {
	var ret = event.result;

	if(ret.status = 100) {
		if(null!= ret.items) {
			for(var i =0;i<ret.items.length;i++) {
				defaultsSettings.keido = ret.items[i].x;
				defaultsSettings.ido = ret.items[i].y;
				defaultsSettings.isFdsToZenrin = true;
				$.initMap(defaultsSettings);

				break;
			}
		}
	}
};

//非同期でデータを取りに行く
function getMapXml() {

		//if(typeof defaultsSettings.functionNm == 'function') {
		//	defaultsSettings.functionNm(getMapPositionParameter());
			//defaultsSettings.functionNm = null;
		//}

	// mantis:12812 対応 zhoucw 09/07/27 start
	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
	//中心座標
	var level = glbsMapView.getZoomLevel();
	if (parseInt(level) < 8) {
		closeShisetsuPaneru();
	} else {
		openShisetsuPaneru();
	}
	// mantis:12812 対応 zhoucw 09/07/27 end
	openNowloading();
	var url = '';
	var data = '';
	if( $.isNotNull2Blank(defaultsSettings.multibukkenUrlTarget)) {
		url = $(defaultsSettings.multibukkenUrlTarget).attr("href");
		var data = url.split('?');
		url = data[0];
		data = data[1] + "&" + getMapPositionParameter();
	} else {
		url = initMapUrl;
		data = defaultsSettings.multibukkenUrlParam + "&" + getMapPositionParameter();
	}
	$.ajax({
		type:"POST",
		url:url,
		data:data,
		success:function(ajaxXml){

			document.getElementById("result").innerHTML = ajaxXml;
			var html = $("#mapIcon").html();

			document.getElementById("result").innerHTML = "";

			if(typeof defaultsSettings.functionNm == 'function') {

				doAjaxAfterFun(ajaxXml);
			}
			displayData(html);
		}
	})
	return true;
}

var initKeido;
var initIdo;
//中心位置と表示範囲座標を取得し、Ajax通信を行う際のパラメータを返す
function getMapPositionParameter() {
	if(null == nmap) {
		return "";
	}
	var param = [];

	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
	//中心座標
	var center = glbsMapView.getCenterPos();

	//表示範囲座標（左下・左上）
	var rect = glbsMapView.getExtent();

    //地図画面の表示レベル
    var level = glbsMapView.getZoomLevel();
    param.push("initZoomLevel="+level);

	//地図の座標を取得する
    centX = zenrinToFds(center.toMs().x);
    // 地図中心経度
    param.push("mapCenterKeido="+centX);
	if (initKeido == null || initKeido == "") {
		initKeido = centX;
	}
	param.push("initKeido="+initKeido);
    centY = zenrinToFds(center.toMs().y);
    // 地図中心緯度
    param.push("mapCenterIdo="+centY);
	if (initIdo == null || initIdo == "") {
		initIdo = centY;
	}
	param.push("initIdo="+initIdo);
    rectMinX = zenrinToFds(rect.min.toMs().x);

    // 地図最小経度
    param.push("mapMinKeido="+rectMinX);

    // 地図最小緯度
    //2009/6/3 LiJJ start
	//param.push("searchMapMinKeido="+rect.min.toDms().x);
	param.push("searchMapMinKeido="+ deg2rad(rectMinX));
	//2009/6/3 LiJJ end

    rectMinY = zenrinToFds(rect.min.toMs().y);
    //　地図最小緯度
    param.push("mapMinIdo="+rectMinY);

    // solrを検索する時、地図最小緯度
    //2009/6/3 LiJJ start
    //param.push("searchMapMinIdo="+rect.min.toDms().y);
    param.push("searchMapMinIdo="+ deg2rad(rectMinY));
    //2009/6/3 LiJJ end

    rectMaxX = zenrinToFds(rect.max.toMs().x);
    // 地図最大経度
    param.push("mapMaxKeido="+rectMaxX);
    //　solrを検索する時、地図最大経度
    //2009/6/3 LiJJ start
    //param.push("searchMapMaxKeido="+rect.max.toDms().x);
    param.push("searchMapMaxKeido="+ deg2rad(rectMaxX));
    //2009/6/3 LiJJ end

    rectMaxY = zenrinToFds(rect.max.toMs().y);
    // 地図最大緯度
    param.push("mapMaxIdo="+rectMaxY);
    // solrを検索する時、地図最大緯度
    //2009/6/3 LiJJ start
    //param.push("searchMapMaxIdo="+rect.max.toDms().y);
    param.push("searchMapMaxIdo="+ deg2rad(rectMaxY));
    //2009/6/3 LiJJ end

    // 地図幅
    param.push("mapWidth="+defaultsSettings.width);
    // 地図高さ
    param.push("mapHeight="+defaultsSettings.height);

    // エリアコード
    param.push("ar="+defaultsSettings.areaCd);
    // 駅コード
    param.push("ek="+defaultsSettings.ekiCd);
    // 沿線コード
    param.push("rn="+defaultsSettings.ensenCd);
   	//学校データを取得
	var glbsMapView = nmap.getMainMap();

	var gakkoIdo = centerY;

	var gakkoKeido = centerX;

	var gakkoPoint = glbsMapView.blToPx(new GlbsPoint(fdsToZenrin(gakkoKeido), fdsToZenrin(gakkoIdo)));

	//param.push("mapHeight="+defaultsSettings.height);

	param.push("signTopPx="+(gakkoPoint.y - gakkoGifTateOffset));

	param.push("singLeftPx="+(gakkoPoint.x - gakkoGifYokoOffset));
// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
	if (zenrinMapHeight == null || zenrinMapWidth == null) {
		zenrinMapHeight = gakkoPoint.y * 2;
		zenrinMapWidth = gakkoPoint.x * 2;
	}
	param.push("zenrinMapHeight="+zenrinMapHeight);

	param.push("zenrinMapWidth="+zenrinMapWidth);
// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
	return param.join("&");


	//return "?FICENX=" + centX + "&FICENY=" + centY + "&FIRMNX=" + rectMinX + "&FIRMNY=" + rectMinY + "&FIRMXX=" + rectMaxX + "&FIRMXY=" + rectMaxY + "&MYP=" + defaultsSettings.width + "&MTP=" + defaultsSettings.height + "&PS=4000&CPF=1";

}

//非同期通信後によばれる関数
function displayData(ajaxHtml){

		//ズームのロックをはずす
		zoomLock = 0;
		var result = document.getElementById("result");
		//if(null != result) {
			//マップに表示させるアイコンを作成する
			document.getElementById("result").innerHTML = ajaxHtml;

			var rct = nmap.getExtent();
			nmap.addMapElement(document.getElementById("result"), new GlbsPoint(rct.min.x, rct.max.y));
		//}
		//nowloadingを閉じる
		closeNowloading();

		if(loadFlag == 0) {
	    	//地図の表示位置が変更されたとき（表示レベル変更含む）
	    	nmap.addEventHandler("MapExtentChange", mapExtentChange);
	    	nmap.addEventHandler("ScrollStart", clearData);
	    	//2009/5/4 LiJJ start
	    	//選択した一覧を閉める
	    	//nmap.addEventHandler("DataUnSelect",hideRightColumn2);
	    	//2009/5/4 LiJJ end
			loadFlag ++;
		}

}

var clickX;
var clickY;
//物件がクリックされたときに呼ばれる関数
function bukkenClick(x, y, bukkenCds, count, index){
	if(nowloadingFlg == 0) {

		//nowloading
		openNowloading();
		clickX = x;
		clickY = y;

		//ユーザデータをクリアする
		nmap.clearUserData();

		var url = '';
		var data = '';
		if( $.isNotNull2Blank(defaultsSettings.multibukkenDetailUrlTarget)) {
			url = $(defaultsSettings.multibukkenDetailUrlTarget).attr("href");
			var data = url.split('?');
			url = data[0];
			data = data[1] +"&nc="+ bukkenCds.replace(/,/g,"&nc=") ;
		} else {
			url = defaultsSettings.multiBukkenDetailUrl;
			data = "nc"+ bukkenCds.replace(/,/g,"&nc=") ;
		}
		var pc = $("select[name=pc]");
		if(pc != null && pc.val() != "") {
			data += "&pc="+pc.val();
		}
		$.ajax({
			type:"POST",
			url:url,
			data:data,
			success:function(ajaxXml){
				if (bukkenIndex != null
					&& document.getElementById("bkn" + bukkenIndex + "a") != null
					&& document.getElementById("bkn" + bukkenIndex + "b") != null ) {
						document.getElementById("bkn" + bukkenIndex + "a").style.display='';
					document.getElementById("bkn" + bukkenIndex + "b").style.display='none';
					}
				if (index != null
					&& document.getElementById("bkn" + index + "a") != null
					&& document.getElementById("bkn" + index + "b") != null ) {
					document.getElementById("bkn" + index + "a").style.display='none';
					document.getElementById("bkn" + index + "b").style.display='';
					bukkenIndex = index;
				}
				showRightColumn2(ajaxXml);
				var html = $(".list_right_column2 #mapContents").html();
				bukkenDisp(html);
			}
		})
	}
}

// 物件マウスオーバーされたときに呼ばれる関数
function bukkenOver(x, y, bukkenCds, count) {
	if(nowloadingFlg == 0) {

		//nowloading
		openNowloading();
		clickX = x;
		clickY = y;

		//ユーザデータをクリアする
		nmap.clearUserData();

		var url = '';
		var data = '';
		if( $.isNotNull2Blank(defaultsSettings.multibukkenDetailUrlTarget)) {
			url = $(defaultsSettings.multibukkenDetailUrlTarget).attr("href");
			var data = url.split('?');
			url = data[0];
			data = data[1] +"&nc="+ bukkenCds.replace(/,/g,"&nc=") ;
		} else {
			url = defaultsSettings.multiBukkenDetailUrl;
			data = "nc"+ bukkenCds.replace(/,/g,"&nc=") ;
		}
		var pc = $("select[name=pc]");
		if(pc != null && pc.val() != "") {
			data += "&pc="+pc.val();
		}
		data = data + "&type=1" + "&clickX=" + x + "&clickY=" + y;
		$.ajax({
			type:"POST",
			url:url,
			data:data,
			success:function(ajaxXml){
				//ユーザデータを登録する場所を指定
				var p = nmap.getMainMap().pxToBl(new GlbsPoint(clickY, clickX));
				//ユーザデータを作成する
				var udata = new GlbsUserData(p ,"/jj/jjcommon/img/spacer.gif");
				// mantis:13555 対応 zhoucw 2009/09/25 start
				udata.setPopupStyle(2)
				// mantis:13555 対応 zhoucw 2009/09/25 end
				//吹き出しの位置を調整する
				udata.setIconOffset(new GlbsPoint(20, 4));
				udata.setDoc(ajaxXml);
				var uId = nmap.addUserData(udata);
				nmap.selectUserData(uId);
				//nowloadingを消す
				closeNowloading();
			}
		})
	}
}
//物件の吹き出しを作成する
function bukkenDisp(html) {

		//ユーザデータを登録する場所を指定
		var p = nmap.getMainMap().pxToBl(new GlbsPoint(clickY, clickX));
		//ユーザデータを作成する
		var udata = new GlbsUserData(p ,"/jj/jjcommon/img/spacer.gif");
		// mantis:13555 対応 zhoucw 2009/09/25 start
		udata.setPopupStyle(2)
		// mantis:13555 対応 zhoucw 2009/09/25 end
		//吹き出しの位置を調整する
		udata.setIconOffset(new GlbsPoint(20, 4));
		udata.appendDoc(html);
		var uId = nmap.addUserData(udata);
		nmap.selectUserData(uId);
		//nowloadingを消す
		closeNowloading();

}

//地図の表示位置が変更されたときに呼ばれる
//吹き出しで地図が動かされたときに、0.5秒待ってから検索に行く
//そうしないと地図の位置が止まる前に物件を検索してしまい、吹き出しがずれる
function mapExtentChange(event) {
	nowloadingFlg = 1;
	if(event.levelChanged) {
		//ユーザデータをクリアする
		nmap.clearUserData();
		//ユーザーデータを再度読み込む
		setTimeout(mapChange, 500);
	}else if (event.posChanged) {
		setTimeout(mapChange, 500);
	}
}

function mapChange() {
	clearTimeout();
	getMapXml();
}

// ユーザデータをクリアする
function clearData() {
	//ユーザデータをクリアする
	nmap.clearUserData();
}

//nowloading画像を表示させる
function openNowloading() {
	clearTimeout();

	if($("#nowloading")[0].style.display == "block") {
		//$("#nowloading")[0].style.display = "none";
	} else {
		$("#nowloading")[0].style.display = "block";
	}
}

//nowloading画像を非表示にする
function closeNowloading() {


	$("#nowloading")[0].style.display = "none";

	nowloadingFlg = 0;
}

//FDSから取得したxxx.xxxxの値を、ゼンリンで使えるxxxxxxxxxの値に変換する
function fdsToZenrin(num) {
	var convertNum = 60 * 60 * 1000 * eval(num);
	return Math.round(convertNum);
}

//ゼンリンのxxxxxxxxxをFDSで使えるxxx.xxxxの値に変換する
function zenrinToFds(num) {
	var convertNum = num / (60 * 60 * 1000);
	return convertNum;
}


var pixelSizeXY = [
					{scale:0,x:164705.8824,y:138039.2157},
					{scale:1,x:56470.5882,y:46013.0719},
					{scale:2,x:26823.5294,y:21856.2092},
					{scale:3,x:9176.470588,y:7477.124183},
					{scale:4,x:4941.176471,y:4026.143791},
					{scale:5,x:1941.176471,y:1581.699346},
					{scale:6,x:970.5882353,y:790.8496732},
					{scale:7,x:452.2058824,y:368.4640523},
					{scale:8,x:176.4705882,y:143.7908497},
					{scale:9,x:85.47794118,y:69.64869281},
					{scale:10,x:46.875,y:38.19444444},
					{scale:11,x:22.05882353,y:17.97385621},
					{scale:12,x:13.78676471,y:11.23366013}
				];

/*
var pixelSizeXY = [
					{scale:0,x:164705.8824,y:138039.2157},
					{scale:2,x:79058.82353,y:64418.30065},
					{scale:3,x:34588.23529,y:28183.00654},
					{scale:5,x:12705.88235,y:10352.94118},
					{scale:6,x:7058.823529,y:5751.633987},
					{scale:8,x:1941.176471,y:1581.699346},
					{scale:9,x:1411.764706,y:1150.326797},
					{scale:10,x:661.7647059,y:539.2156863},
					{scale:12,x:187.5,y:152.7777778},
					{scale:14,x:90.99264706,y:74.14215686},
					{scale:15,x:57.90441176,y:47.18137255},
					{scale:17,x:33.08823529,y:26.96078431},
					{scale:18,x:19.30147059,y:15.72712418}
				];
*/

function setScale(rangeLG,rangeLT,initParams){
	initParams.initZoomLevel = 8;
	var size = pixelSizeXY.length;
	var lScreenPixelSizeX = initParams.width;
	var lScreenPixelSizeY = initParams.height;
	for(var i = size -1 ;i >= 0 ;i--) {
		var tmpLG = pixelSizeXY[i].x * lScreenPixelSizeX;
		var tmpLT = pixelSizeXY[i].y * lScreenPixelSizeY;
		if (rangeLG <= tmpLG && rangeLT <= tmpLT) {
			initParams.initZoomLevel = pixelSizeXY[i].scale;
			break;
		}
	}

}

function deg2rad(deg){
	var PI = 3.14159265358979323846;
	return deg/ 180.0 * PI;
}

//物件がクリックされたときに呼ばれる関数
function bukkenClick2(x, y, bukkenCds, count, mapfs, mode, index){
	if(nowloadingFlg == 0) {

		//nowloading
		openNowloading();
		clickX = x;
		clickY = y;

		//ユーザデータをクリアする
		nmap.clearUserData();

		if (mode != null && mode == '2') {
		// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
			clickX = getIdopx(x, bukkenSize);
			clickY = getKeidopx(y, bukkenSize);
			// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
		}
		var url = '';
		var data = '';

		url = defaultsSettings.multibukkenDetailUrlTarget
		data = $("#SEARCH_FORM2").serialize();
		data = data +"&ncs="+ bukkenCds.replace(/,/g,"&ncs=") ;
		// mantis:13995 対応 zhoucw 2009/08/11 start
		data = data + "&mapfs=" + mapfs + "&clickX=" + clickX + "&clickY=" + clickY + "&" + getMapPositionParameter();
		// mantis:13995 対応 zhoucw 2009/08/11 end
		$.ajax({
			type:"POST",
			url:url,
			data:data,
			success:function(ajaxXml){
				//ユーザデータを登録する場所を指定
				var p = nmap.getMainMap().pxToBl(new GlbsPoint(clickY, clickX));
				//ユーザデータを作成する
				var udata = new GlbsUserData(p ,"/jj/jjcommon/img/spacer.gif");
				// mantis:13555 対応 zhoucw 2009/09/25 start
				udata.setPopupStyle(2)
				// mantis:13555 対応 zhoucw 2009/09/25 end
				//吹き出しの位置を調整する
				udata.setIconOffset(new GlbsPoint(20, 4));
				udata.setDoc(ajaxXml);
				var uId = nmap.addUserData(udata);
				nmap.selectUserData(uId);
				//nowloadingを消す
				closeNowloading();
				if (bukkenIndex != null
					&& document.getElementById("bkn" + bukkenIndex + "a") != null
					&& document.getElementById("bkn" + bukkenIndex + "b") != null ) {
						document.getElementById("bkn" + bukkenIndex + "a").style.display='';
					document.getElementById("bkn" + bukkenIndex + "b").style.display='none';
					}
				if (index != null
					&& document.getElementById("bkn" + index + "a") != null
					&& document.getElementById("bkn" + index + "b") != null ) {
					document.getElementById("bkn" + index + "a").style.display='none';
					document.getElementById("bkn" + index + "b").style.display='';
					bukkenIndex = index;
				}
			}
		})
	}
}
// 最初位置戻る
function mapBack(keido,ido) {

// mantis:14540 対応 zhoucw 2009/08/15 start
	var props = new GlbsProperties();
	props = $.extend({}, props , defaultsSettings || {});
//	if(!defaultsSettings.isFdsToZenrin) {
//		props.initPos = new GlbsPoint(keido,ido);
//	} else {
		props.initPos = new GlbsPoint(fdsToZenrin(keido),fdsToZenrin(ido));
//	}
	nmap.scrollTo(props.initPos, true);
	setTimeout(mapChange, 500);
// mantis:14540 対応 zhoucw 2009/08/15 end
}

// 最寄り駅移動
function ekiMove(ekiKeido,ekiIdo,ekiCd) {
	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
    defaultsSettings.initZoomLevel=glbsMapView.getZoomLevel();
	var param = $("#SEARCH_FORM2").serialize();
	param = param + "&ar=" + defaultsSettings.areaCd;
	defaultsSettings.multiBukkenUrl = initMapUrl;
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 start
	defaultsSettings.multibukkenUrlParam =  param + "&ekiIdo=" + ekiIdo + "&ekiKeido=" + ekiKeido + "&mapEkiCd=" + ekiCd + "&syokiFlg=1";
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 end
	$("#gMapArea").initialize(defaultsSettings);
	var props = new GlbsProperties();
	props.initPos = new GlbsPoint(ekiKeido, ekiIdo);
	nmap.scrollTo(props.initPos, true);
	setTimeout(mapChange, 500);
}
// 物件種別選択されている
function bukkenChange1(id) {

	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
	//中心座標
	var center = glbsMapView.getCenterPos();
    defaultsSettings.initZoomLevel=glbsMapView.getZoomLevel();
	document.getElementById(id+"1").style.display='none';
	document.getElementById(id+"2").style.display='';
	if (id  == 'chintai' ) {
		$('#SEARCH_FORM2 :input[name=chintaiFlg]').val('0');
	}
	if (id  == 'newMs' ) {
		$('#SEARCH_FORM2 :input[name=newMsFlg]').val('0');
	}
	if (id  == 'usedMs' ) {
		$('#SEARCH_FORM2 :input[name=usedMsFlg]').val('0');
	}
	if (id  == 'newKodate' ) {
		$('#SEARCH_FORM2 :input[name=newKodateFlg]').val('0');
	}
	if (id  == 'usedKodate' ) {
		$('#SEARCH_FORM2 :input[name=usedKodateFlg]').val('0');
	}
	if (id  == 'tochi' ) {
		$('#SEARCH_FORM2 :input[name=tochiFlg]').val('0');
	}
	var param = $("#SEARCH_FORM2").serialize();
	param = param + "&ar=" + defaultsSettings.areaCd;
	defaultsSettings.isFdsToZenrin = false;
	defaultsSettings.multiBukkenUrl= initMapUrl;
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 start
	defaultsSettings.multibukkenUrlParam = param + "&syokiFlg=1";
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 end
	defaultsSettings.keido =center.toMs().x.toString();
	defaultsSettings.ido = center.toMs().y.toString();
	// mantis:13231 対応 zhoucw 2009/07/31 start
	$("#gMapArea").initialize(defaultsSettings);
	// mantis:13231 対応 zhoucw 2009/07/31 end

}

// 物件種別選択されていない
function bukkenChange2(id) {
	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
	//中心座標
	var center = glbsMapView.getCenterPos();
    defaultsSettings.initZoomLevel=glbsMapView.getZoomLevel();
	document.getElementById(id+"2").style.display='none';
	document.getElementById(id+"1").style.display='';
	if (id  == 'chintai' ) {
		$('#SEARCH_FORM2 :input[name=chintaiFlg]').val('1');
	}
	if (id  == 'newMs' ) {
		$('#SEARCH_FORM2 :input[name=newMsFlg]').val('1');
	}
	if (id  == 'usedMs' ) {
		$('#SEARCH_FORM2 :input[name=usedMsFlg]').val('1');
	}
	if (id  == 'newKodate' ) {
		$('#SEARCH_FORM2 :input[name=newKodateFlg]').val('1');
	}
	if (id  == 'usedKodate' ) {
		$('#SEARCH_FORM2 :input[name=usedKodateFlg]').val('1');
	}
	if (id  == 'tochi' ) {
		$('#SEARCH_FORM2 :input[name=tochiFlg]').val('1');
	}
	var param = $("#SEARCH_FORM2").serialize();
	param = param + "&ar=" + defaultsSettings.areaCd;
	defaultsSettings.isFdsToZenrin = false;
	defaultsSettings.multiBukkenUrl=initMapUrl;
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 start
	defaultsSettings.multibukkenUrlParam = param + "&syokiFlg=1";
	// mantis:0013986 対応 BJB:GuoYF 2009/10/15 end

	defaultsSettings.keido =center.toMs().x.toString();
	defaultsSettings.ido = center.toMs().y.toString();
	// mantis:13231 対応 zhoucw 2009/07/31 start
	$("#gMapArea").initialize(defaultsSettings);
	// mantis:13231 対応 zhoucw 2009/07/31 end
}

// 周辺施設アイコンパネルクリック
function clickShisetsu() {
	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();
	//中心座標
	var center = glbsMapView.getCenterPos();
	var param = $("#SEARCH_FORM2").serialize();
	param = param + "&ar=" + defaultsSettings.areaCd;
	defaultsSettings.initZoomLevel = glbsMapView.getZoomLevel();
	defaultsSettings.keido =center.toMs().x.toString();
	defaultsSettings.ido = center.toMs().y.toString();
	defaultsSettings.multiBukkenUrl=initMapUrl;
	defaultsSettings.multibukkenUrlParam = param + "&syokiFlg=1";
	defaultsSettings.isFdsToZenrin = false;
	// mantis:13231 対応 zhoucw 2009/07/31 start
	$("#gMapArea").initialize(defaultsSettings);
	// mantis:13231 対応 zhoucw 2009/07/31 end

	// mantis:0013986 対応 BJB:GuoYF 2009/10/13 start
	// defaultsSettings.multibukkenUrlParam = "";
	// mantis:0013986 対応 BJB:GuoYF 2009/10/13 start
}

//施設がクリックされたときに呼ばれる関数
function shisetsuClick(x, y, shisetsuCds, count, mapfs, mode, index){


	setTimeout(mapChange, 500);
	if(nowloadingFlg == 0) {

		//nowloading
		openNowloading();
		clickX = x;
		clickY = y;
		if (mode != null && mode == '2') {
		// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
			clickX = getIdopx(x, shisetsuSize);
			clickY = getKeidopx(y, shisetsuSize);
			// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
		}

		//ユーザデータをクリアする
		nmap.clearUserData();

		var url = '';
		var data = '';

		url = defaultsSettings.multibukkenDetailUrlTarget;
		data = $("#SEARCH_FORM2").serialize();
		data = data +"&shcs="+ shisetsuCds.replace(/,/g,"&shcs=") ;

		data = data + "&mapfs=" + mapfs + "&clickX=" + clickX + "&clickY=" + clickY + "&" + getMapPositionParameter();
		$.ajax({
			type:"POST",
			url:url,
			data:data,
			success:function(ajaxXml){
				//ユーザデータを登録する場所を指定
				var p = nmap.getMainMap().pxToBl(new GlbsPoint(clickY, clickX));
				//ユーザデータを作成する
				var udata = new GlbsUserData(p ,"/jj/jjcommon/img/spacer.gif");
				// mantis:13555 対応 zhoucw 2009/09/25 start
				udata.setPopupStyle(2)
				// mantis:13555 対応 zhoucw 2009/09/25 end
				//吹き出しの位置を調整する
				udata.setIconOffset(new GlbsPoint(20, 4));
				udata.setDoc(ajaxXml);
				var uId = nmap.addUserData(udata);
				nmap.selectUserData(uId);
				//nowloadingを消す
				closeNowloading();
				if (shisetsuIndex != null
					&& document.getElementById("shisetsu" + shisetsuIndex + "a") != null
					&& document.getElementById("shisetsu" + shisetsuIndex + "b") != null ) {
					document.getElementById("shisetsu" + shisetsuIndex + "a").style.display='';
					document.getElementById("shisetsu" + shisetsuIndex + "b").style.display='none';
				}
				if (index != null
					&& document.getElementById("shisetsu" + index + "a") != null
					&& document.getElementById("shisetsu" + index + "b") != null ) {
					document.getElementById("shisetsu" + index + "a").style.display='none';
					document.getElementById("shisetsu" + index + "b").style.display='';
					shisetsuIndex = index;
				}
			}
		})
	}
}

function closeFukidasi() {
		//ユーザデータをクリアする
		nmap.clearUserData();
}

function getIdopx(ido,size) {

	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();

	//表示範囲座標（左下・左上）
	var rect = glbsMapView.getExtent();

    // 地図最大緯度
    mxy = zenrinToFds(rect.max.toMs().y);
    // 地図最小緯度
    mny = zenrinToFds(rect.min.toMs().y);
// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
    // 画面から地図高さ取得する
    var tatepx = zenrinMapHeight;

    var IDO_CONTROL_VALUE = 1.0;
    var y = mxy - mny;
    var a = (tatepx / y * (mny + y / 2 - ido));
    var idopx = (((tatepx / y * (mny + y / 2 - ido) + tatepx / 2) / IDO_CONTROL_VALUE) - size);
// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
    return parseInt(idopx);
}

function getKeidopx(keido, size) {

	//画面に関するオブジェクト
	var glbsMapView = nmap.getMainMap();

	//表示範囲座標（左下・左上）
	var rect = glbsMapView.getExtent();
    // 地図最大経度
    mxx = zenrinToFds(rect.max.toMs().x);
    // 地図最小経度
    mnx = zenrinToFds(rect.min.toMs().x);
// mantis:15165 対応 BJB:zhoucw 2009/09/01 start
    // 画面から地図幅取得する
    var yokoPx = zenrinMapWidth;

    var KEIDO_CONTROL_VALUE = 1.0;
    var x = mxx - mnx;
    var keidopx = (((yokoPx / x * (keido - (mnx + x / 2)) + yokoPx / 2) / KEIDO_CONTROL_VALUE) - size);
// mantis:15165 対応 BJB:zhoucw 2009/09/01 end
    return parseInt(keidopx);
}

function rad2deg(rad){
	var PI = 3.14159265358979323846;
	return rad * 180.0 / PI;
}

function checkBukkenShu(selectedBukkenShubetsu) {
	var bs = selectedBukkenShubetsu;
	var num = parseInt(0);
	while (num < parseInt(bs.length)) {
		switch (bs[num]) {
			case '010': document.getElementById("newMs2").style.display='none';
						document.getElementById("newMs1").style.display='';
						$('#SEARCH_FORM2 :input[name=newMsFlg]').val('1');
						break;
			case '011': document.getElementById("usedMs2").style.display='none';
						document.getElementById("usedMs1").style.display='';
						$('#SEARCH_FORM2 :input[name=usedMsFlg]').val('1');
						break;
			case '020': document.getElementById("newKodate2").style.display='none';
						document.getElementById("newKodate1").style.display='';
						$('#SEARCH_FORM2 :input[name=newKodateFlg]').val('1');
						break;
			case '021': document.getElementById("usedKodate2").style.display='none';
						document.getElementById("usedKodate1").style.display='';
						$('#SEARCH_FORM2 :input[name=usedKodateFlg]').val('1');
						break;
			case '030': document.getElementById("tochi2").style.display='none';
						document.getElementById("tochi1").style.display='';
						$('#SEARCH_FORM2 :input[name=tochiFlg]').val('1');
						break;
			case '040': document.getElementById("chintai2").style.display='none';
						document.getElementById("chintai1").style.display='';
						$('#SEARCH_FORM2 :input[name=chintaiFlg]').val('1');
						break;
		}
		num = num + 1;
	}

}

$.callMap_JS = function(initParams) {
	checkBukkenShu(initParams.selectedBukkenShubetsu);
	var param = $("#SEARCH_FORM2").serialize();
	var ar = initParams.areaCd;
	var actionUrl = '/jj/cgm/common/JJ902FK003/initMap?ar=' + ar + "&" + param;
	var param = actionUrl.split('?')[1];
	openNowloading()
	$.callMapByKeido_JS(initParams,param,initParams.keido,initParams.ido);
};

$.callMapByKeido_JS = function(initParams,param,keido,ido) {

	initParams = $.extend({}, initParams , {
		keido : keido,
		ido : ido,
		multibukkenUrlParam:param
	});
	// mantis:13231 対応 zhoucw 2009/07/31 start
	$("#gMapArea").initialize(initParams);
	// mantis:13231 対応 zhoucw 2009/07/31 end
};
// mantis:14178 対応 zhoucw 2009/08/15 start
function viewMap(initParams) {
	$.ajax({
			type:"GET",
			url:"/jj/cgm/common/JJ902FK003/getMapAreaJsp",
			data:null,
			success:function(ajaxXml){
			// mantis:13231 対応 zhoucw 2009/07/31 start
			document.getElementById("JJMapArea").innerHTML = ajaxXml;
			// mantis:13231 対応 zhoucw 2009/07/31 end
				$.callMap_JS(initParams);
			}
		})
}
// mantis:14178 対応 zhoucw 2009/08/15 end
// �\��
function disp_on(id)
{
	var num = parseInt(id);
	document.getElementById("sty"+num).style.display='none';
	document.getElementById("sty"+(num+1)).style.display='';
	document.getElementById("sty"+(num+2)).style.display='';
}

// ��\��
function disp_off(id)
{
	var num = parseInt(id);
	document.getElementById("sty"+num).style.display='';
	document.getElementById("sty"+(num+1)).style.display='none';
	document.getElementById("sty"+(num+2)).style.display='none';
}

// mantis:12812 対応 zhoucw 09/07/27 start
function closeShisetsuPaneru() {

	var form1 = document.getElementById("SEARCH_FORM2");
	var ctgCds = form1.ctgCds;
	// mantis:15005 対応 zhoucw 2009/08/22 start
	if (ctgCds == null) {
		return;
	}
	// mantis:15005 対応 zhoucw 2009/08/22 end
	for(i = 0; i < ctgCds.length; i++) {
		ctgCds[i].disabled = "disabled";
	}
}

function openShisetsuPaneru() {

	var form1 = document.getElementById("SEARCH_FORM2");
	var ctgCds = form1.ctgCds;
	// mantis:15005 対応 zhoucw 2009/08/22 start
	if (ctgCds == null) {
		return;
	}
	// mantis:15005 対応 zhoucw 2009/08/22 end
	for(i = 0; i < ctgCds.length; i++) {
		ctgCds[i].disabled = null;
	}
}
// mantis:12812 対応 zhoucw 09/07/27 end
