// 47netの地図用
var map;
var userlay;
var userData = new Array();
var xfile = "./common/skiareas.xml";
var lat_mst = new Array('','36.951202','36.886851','36.951202','38.182293');
var lng_mst = new Array('','138.79884','138.177102','138.79884','139.461324');
var zoom_mst = new Array('',10,10,10,6);
var maxDisp = 20;
var n = 0;
var jFlg = false;
var cFlg = false;

function load() {
	map = new ZdcMap(document.getElementById("47Map"));
	map.setMapType('4');
	map.reflashMap();
	lat_tky = WGS2TKY_lat(lat_mst[1],lng_mst[1]);
	lng_tky = WGS2TKY_lng(lat_mst[1],lng_mst[1]);
	map.setMapLocation(new ZdcPoint(lng_tky,lat_tky),10);
	map.addMapScaleBar(new ZdcScaleBar());
	map.addMapControl(new ZdcControl());
	map.setWheelType('2');
	readXml();

	ZdcEvent.addListener(map, "dragmapend", function() {
		if(map.getMsgOpenStatus()) map.closeMsgWindow();
		makeData();
	});
	ZdcEvent.addListener(map, "scrollmapend", function() {
		if(map.getMsgOpenStatus() && !cFlg && !jFlg) map.closeMsgWindow();
		makeData();
		cFlg = false
	});
}

// WGS84 → Tokyo
function WGS2TKY_lat(lat_tmp,lng_tmp){
	return parseFloat(lat_tmp) + 0.00010696*parseFloat(lat_tmp) - 0.000017467*parseFloat(lng_tmp) - 0.0046020;
}
function WGS2TKY_lng(lat_tmp,lng_tmp){
	return parseFloat(lng_tmp) + 0.000046047*parseFloat(lat_tmp) + 0.000083049*parseFloat(lng_tmp) - 0.010041;
}

function readXml(){
	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 skiareas = xmlDoc.documentElement.getElementsByTagName("skiarea");
			for (var i = 0; i < skiareas.length; i++) {
				// var lonlat = new ZdcCommon.WGS2TKY(skiareas[i].getAttribute("longitude"),skiareas[i].getAttribute("latitude"));
				var lat_tky = WGS2TKY_lat(skiareas[i].getAttribute("latitude"),skiareas[i].getAttribute("longitude"));
				var lng_tky = WGS2TKY_lng(skiareas[i].getAttribute("latitude"),skiareas[i].getAttribute("longitude"));
				userData[i] = {
					lat: lat_tky,
					lng: lng_tky,
					no: skiareas[i].getElementsByTagName("no")[0].childNodes[0].nodeValue,
					title: skiareas[i].getElementsByTagName("title")[0].childNodes[0].nodeValue,
					description: skiareas[i].getElementsByTagName("description")[0].childNodes[0].nodeValue,
					address: skiareas[i].getElementsByTagName("address")[0].childNodes[0].nodeValue,
					link: skiareas[i].getElementsByTagName("link")[0].childNodes[0].nodeValue
				};
			} 
			makeData();
		}
	}
	request.send(null);
}

function makeData(){
	if (!map.getMsgOpenStatus()) {
		map.clearUserLayer();
		if(jFlg == false){ n = 0; }
	}

	// マーカーの作成
	editData();
}

function editData(){
	var bounds = map.getMapBoundBox(map.getMapLocation(),map.getMapScale());

	var d = 0;
	var flg = 0;

	userlay = new ZdcUserLayer();
	userlay.setLayerScale(1,18);
	userlay.setLayerType('manual');
	for (var i = 0; i < userData.length; i++) {
		var lat = userData[i].lat;
		var lon = userData[i].lng;
		if	(
			 (bounds.maxlat >= lat && bounds.minlat <= lat) &&
			 (bounds.maxlon >= lon && bounds.minlon <= lon)
			)
		{
			no = userData[i].no;
			if(no == n){ flg = 1; }
			if(flg || d < maxDisp -1){
				var title = userData[i].title;
				var description = userData[i].description;
				var address = userData[i].address;
				var link = userData[i].link;
				createMarker(lat,lon,title,description,address,link,no);
				d++;
			} 
			if (d >= maxDisp) { break; }
		}
	}
	map.addUserLayer(userlay); 
}

function createMarker(lat,lon,title,description,address,link,no) {
	var lonlat = new ZdcPoint(lon,lat);
	var icon = new ZdcIcon();
	var marker = new ZdcMarker(lonlat,icon);

	ZdcEvent.addListener(marker, "mouseclickmarker", function() {
		if(map.getMsgOpenStatus()) map.closeMsgWindow();
		if (link != '') { window.open(link); }
	});
	ZdcEvent.addListener(marker, "mouseclickmarker", function() {
		n = no; cFlg = true;
	});

	if(no == n && jFlg){
		jFlg = false;
	}

	userlay.addMarker(marker);
}


function areaJump(n){
	if(n < lat_mst.length){
		var lat_tky = WGS2TKY_lat(lat_mst[n],lng_mst[n]);
		var lng_tky = WGS2TKY_lng(lat_mst[n],lng_mst[n]);
		var lonlat = new ZdcPoint(lng_tky,lat_tky);
		map.scrollToCenter(lonlat);
		if(map.getMapScale() != zoom_mst[n]){ map.setMapScale(zoom_mst[n]); }
		if(map.getMsgOpenStatus()) map.closeMsgWindow();
		makeData();
	}

	return false;
}

function pointDisp(nn){
	n = nn;
	jFlg = true;
	
	for (var i = 0; i < userData.length; i++) {
		var lat_set = userData[i].lat;
		var lng_set = userData[i].lng;
		var no_set = userData[i].no;
		if(no_set == n){
			var lonlat = new ZdcPoint(lng_set,lat_set);

			cFlg = true;
			if(map.getMsgOpenStatus()) map.closeMsgWindow();
			map.clearUserLayer();
			map.scrollToCenter(lonlat);
			map.setMapScale(12);
			editData();

			break;
		}
	}
	return false;
}

function getData(no, objID) {
    $('#' + objID).innerHTML = '<div id="nowloading"><img src="/img/nowloading.gif"></div>';
	$.ajax({            
		url : "./areainfo.php",
		type : "get",
		cache : false,
		data : ({ n: no }),
		success: function(request) {
			$('#' + objID).html(request);
		}
	});
}

jQuery.event.add(window, "load", function(){ getData(1, 'skiInfo'); load(); });
