// 47netの地図用

// ====================
// 初期設定
// ====================
var map;
var userlay;
var userData = new Array();
var xfile = "common/shoplist.xml";
var lat_mst = '37.921835';
var lng_mst = '139.0794817';
var jFlg = false;

var cFlg = false;

var sFlg;
var sn = 0;
var pg = 0;

var centerpoint = new Array(
	{ lat:lat_mst, lng:lng_mst, zoom:'7' },
	{ lat:'37.9108647', lng:'139.0651022', zoom:'13' },
	{ lat:'37.901175', lng:'139.0668667', zoom:'12' },
	{ lat:'37.9168183', lng:'139.0430656', zoom:'12' },
	{ lat:'37.8706672', lng:'138.9848161', zoom:'10' },
	{ lat:'37.7639472', lng:'139.0196917', zoom:'11' },
	{ lat:'37.9167753', lng:'139.2186664', zoom:'13' },
	{ lat:'37.9094286', lng:'139.0640411', zoom:'5' }
);

// ====================
// 地図読み込み
// ====================
function load(tp) {
	// データを全て読み込む
	readXml(tp);
}

function readMap(){
	map = new ZdcMap(document.getElementById("47Map"));
	map.setMapType('4');
	map.reflashMap();
	map.setMapLocation(new ZdcPoint(lng_mst,lat_mst),8);
	map.addMapScaleBar(new ZdcScaleBar());
	map.addMapControl(new ZdcControl());
	map.saveMapLocation();
	map.setWheelOff();
	map.setZdcMsgHtmlOption(true,true,"center","small","tag");
	map.setZdcMsgHtmlBorderType(2);
}

// ====================
// ポイントのデータを読み込む
// ====================
function readXml(tp){
	var request = ZdcXmlHttp.create();
	var nowDate = new Date();
	request.open("GET", xfile+"?"+nowDate.getTime(), true);
	request.onreadystatechange = function() {
		if	(
			 (request.readyState == 4) &&
			 (request.status == 200)
			)
		{
			var xmlDoc = request.responseXML;
			var lists = xmlDoc.documentElement.getElementsByTagName("shoplist");
			var loop = lists.length;
			for (var i = 0; i < loop; i++) {
				if(tp == lists[i].getElementsByTagName("no")[0].childNodes[0].nodeValue){
					n = lists[i].getElementsByTagName("no")[0].childNodes[0].nodeValue;
					lat_mst = parseFloat(lists[i].getAttribute("latitude"));
					lng_mst = parseFloat(lists[i].getAttribute("longitude"));
				}
				userData[i] = {
					lat: parseFloat(lists[i].getAttribute("latitude")),
					lng: parseFloat(lists[i].getAttribute("longitude")),
					no: lists[i].getElementsByTagName("no")[0].childNodes[0].nodeValue,
					id: lists[i].getElementsByTagName("id")[0].childNodes[0].nodeValue,
					area: lists[i].getElementsByTagName("area")[0].childNodes[0].nodeValue,
					name: lists[i].getElementsByTagName("name")[0].childNodes[0].nodeValue,
					address: lists[i].getElementsByTagName("address")[0].childNodes[0].nodeValue,
					tel: lists[i].getElementsByTagName("tel")[0].childNodes[0].nodeValue,
					comment: lists[i].getElementsByTagName("comment")[0].childNodes[0].nodeValue,
					link: lists[i].getElementsByTagName("link")[0].childNodes[0].nodeValue
				};
			} 
			readMap();
			makeData();
		}
	}
	request.send(null);
}

function makeData(){
	if (!map.getUserMsgOpenStatus()) {
		map.clearUserLayer();
		allClearMarkerListeners();
//		if(jFlg == false){ n = 0; }
	}
	// マーカーの作成
	editData();
}

//  ====================
// 表示するポインタ抽出
//  ====================
function editData(an){
	var bounds = map.getMapBoundBox(map.getMapLocation(),map.getMapScale());

	userlay = new ZdcUserLayer();
	userlay.setLayerScale(1,18);
	userlay.setLayerType('manual');

	var d = 0;
	var h = 0;
	var flg = false;

	var loop = userData.length;
	for (var i = 0; i < loop; i++) {
		//
		// 検索タイプにより分岐
		//
		sFlg = false;
		if(sn == 0) sFlg = true;											// 検索無し
		if(sn == 1 && userData[i].area == areaNo) sFlg = true;				// エリア検索

		var lat = parseFloat(userData[i].lat);
		var lng = parseFloat(userData[i].lng);

		if(sFlg){
			createMarker(i);
		}

	}
	if(!an){ var an = 0; }
if(an > 0){
	map.clearUserLayer();
}
	map.addUserLayer(userlay);
	map.setMapLocation(new ZdcPoint(centerpoint[an].lng, centerpoint[an].lat), centerpoint[an].zoom);
}

// ====================
// 各ポインタを作成する
// ====================
function createMarker(i) {
	var lnglat = new ZdcPoint(userData[i].lng,userData[i].lat);
	icon = new ZdcIcon();
	var marker = new ZdcMarker(lnglat,icon);

	var html = createHtml(i);

	ZdcEvent.addListener(marker, "mouseclickmarker", function() {
		//if(map.msgopenstatus) map.closeMsgWindow();
		map.setZdcMsgHtmlOption( true, false, null, null, null);
		map.openZdcMsgHtml(html,lnglat,'店舗情報',250,null,new ZdcPixel(0,-9),2);
	});

	userlay.addMarker(marker);
}

function createHtml(i){
	var html  = '<div id="balloon">';
	html += "<div id=\"title\"><a href=\"javascript:openWin('shop/" + userData[i].id + ".html');\"><strong>" + userData[i].name + '</strong></a></div>';
	html += '<div id="address" style="font-size:12px;">' + userData[i].address + '</div>';
	html += '<div id="tel">TEL.' + userData[i].tel + '</div>';

	return html;
}

function pointDisp(nn){
	nn--;
	var html = createHtml(nn);
	lnglat = new ZdcPoint(userData[nn].lng,userData[nn].lat);
	map.openZdcMsgHtml(html,lnglat,userData[nn].name,250,null,new ZdcPixel(0,-9),2);

	return false;
}

//
// エリアで絞り込み
//
function areaSearch(an){
	pg = 0;
	areaNo = an;
	if(map.getUserMsgOpenStatus()) map.closeUserMsgWindow();
	map.clearUserLayer();
	allClearMarkerListeners();
//	if(jFlg == false){ n = 0; }

	// マーカーの作成
	if(an == 0){ sn = 0; }
	else{ sn = 1; }
	editData(an);
}

function allClearMarkerListeners(){
	var loop = userData.length;
	for(var i = 0; i < loop; i++){
		if(userData[i].marker){
			ZdcEvent.clearInstanceListeners(userData[i].marker);
			userData[i].marker = false;
		}
	}
}
