// 47netの地図用

// ====================
// 初期設定
// ====================
var map;
var userlay;
var userData = new Array();
var xfile = "../common/areadataes.xml";
var lat_mst = '37.8608703';
var lng_mst = '139.0239006';
var maxDisp = 20;
var n = 0;
var jFlg = false;
var cFlg = false;
var sFlg;
var sn = 0;
var flowerNo;
var flowerAddress;
var flowerSeason;
var maxList = 10;
var listHtml= new Array();
var pg = 0;
var nowMonth = new Date().getMonth() + 1;

// ====================
// 地図読み込み
// ====================
function load(tp,fn) {
	// データを全て読み込む
	if(fn == 0){ sn = 0; }
	else{ sn = 1; }
	flowerNo = fn;
	readXml(tp);
}

function readMap(){
	map = new ZdcMap(document.getElementById("47Map"));
	map.setMapType('4');
	map.reflashMap();
	map.setMapLocation(new ZdcPoint(lng_mst,lat_mst),9);
	map.addMapScaleBar(new ZdcScaleBar());
	map.addMapControl(new ZdcControl());
	map.saveMapLocation();
	map.setWheelOff();

	ZdcEvent.addListener(map, "dragmapend", function() {
		if(map.getUserMsgOpenStatus()) map.closeUserMsgWindow();
		makeData()
	});
	ZdcEvent.addListener(map, "scrollmapend", function() {
		if(map.getUserMsgOpenStatus() && !cFlg && !jFlg) map.closeUserMsgWindow();
		makeData();
		cFlg = false
	});
}

// ====================
// ポイントのデータを読み込む
//  ====================
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 areadataes = xmlDoc.documentElement.getElementsByTagName("areadata");
			var loop = areadataes.length;
			for (var i = 0; i < loop; i++) {
				if(areadataes[i].getElementsByTagName("description")[0].childNodes[0].nodeValue == 0){ var desc = " "; }
				else{ var desc = areadataes[i].getElementsByTagName("description")[0].childNodes[0].nodeValue; }
				if(areadataes[i].getElementsByTagName("address2")[0].childNodes[0].nodeValue == 0){ var add2 = ""; }
				else{ var add2 = areadataes[i].getElementsByTagName("address2")[0].childNodes[0].nodeValue; }
				if(tp == areadataes[i].getElementsByTagName("no")[0].childNodes[0].nodeValue){
					n = areadataes[i].getElementsByTagName("no")[0].childNodes[0].nodeValue;
					lat_mst = parseFloat(areadataes[i].getAttribute("latitude"));
					lng_mst = parseFloat(areadataes[i].getAttribute("longitude"));
					jFlg = true;
				}
				userData[i] = {
					lat: parseFloat(areadataes[i].getAttribute("latitude")),
					lng: parseFloat(areadataes[i].getAttribute("longitude")),
					no: areadataes[i].getElementsByTagName("no")[0].childNodes[0].nodeValue,
					name: areadataes[i].getElementsByTagName("name")[0].childNodes[0].nodeValue,
					address1: areadataes[i].getElementsByTagName("address1")[0].childNodes[0].nodeValue,
					address2: add2,
					seastt1: areadataes[i].getElementsByTagName("seastt1")[0].childNodes[0].nodeValue,
					seastt2: areadataes[i].getElementsByTagName("seastt2")[0].childNodes[0].nodeValue,
					seaend1: areadataes[i].getElementsByTagName("seaend1")[0].childNodes[0].nodeValue,
					seaend2: areadataes[i].getElementsByTagName("seaend2")[0].childNodes[0].nodeValue,
					flower: areadataes[i].getElementsByTagName("flower")[0].childNodes[0].nodeValue,
					floweretc: areadataes[i].getElementsByTagName("floweretc")[0].childNodes[0].nodeValue,
					description: desc,
					img: areadataes[i].getElementsByTagName("img")[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(){
	var bounds = map.getMapBoundBox(map.getMapLocation(),map.getMapScale());

	var d = 0;
	var h = 0;
	var flg = false;

	listHtml = new Array();

	userlay = new ZdcUserLayer();
	userlay.setLayerScale(1,18);
	userlay.setLayerType('manual');
	var loop = userData.length;
	for (var i = 0; i < loop; i++) {
		//
		// 検索タイプにより分岐
		//
		sFlg = false;
		if(userData[i].seastt1 > 12){ var sea1 = userData[i].seastt1 - 12; }
		else{ var sea1 = userData[i].seastt1; }
		if(userData[i].seaend1 == 0){ var sea2 = sea1; }
		else{ var sea2 = userData[i].seaend1; }
		if(sn == 0) sFlg = true;																					// 検索無し
		if(sn == 1 && userData[i].flower == flowerNo) sFlg = true;				// 花種類検索
		if(sn == 2){																									// 条件検索
			if((flowerNo == "" || userData[i].flower == flowerNo)
					&& (flowerAddress == "" || userData[i].address1 == flowerAddress)
					&& (flowerSeason == "" || (parseInt(sea1) <= flowerSeason && parseInt(sea2) >= flowerSeason))){ sFlg = true; }
		}

		// ここからリスト
		if(sFlg) h++;
		if(pg <= h && pg + maxList >= h && sFlg) makeList(i);

		var lat = parseFloat(userData[i].lat);
		var lng = parseFloat(userData[i].lng);
		if	(
			 (bounds.maxlat >= lat && bounds.minlat <= lat) &&
			 (bounds.maxlon >= lng && bounds.minlon <= lng)
			)
		{
			if(userData[i].no == n){ flg = true; }
			if((flg || d < maxDisp -1) && sFlg){
				createMarker(i);
				d++;
			} 
			if (d >= maxDisp) { flg = false; }
		}
	}
	dispList(h);
	dispList_side(h);
	map.addUserLayer(userlay); 
}

// ====================
// 各ポインタを作成する
// ====================
function createMarker(i) {
	var lnglat = new ZdcPoint(userData[i].lng,userData[i].lat);
	icon = new ZdcIcon();
	if(userData[i].seastt1 > 12){ var sea1 = userData[i].seastt1 - 12; }
	else{ var sea1 = userData[i].seastt1; }
	if(userData[i].seaend1 == 0){ var sea2 = sea1; }
	else{ var sea2 = userData[i].seaend1; }

	if(parseInt(sea1) <=  nowMonth && parseInt(sea2) >= nowMonth){
		icon.size = new ZdcSize(25, 32);
		icon.shadowsize = new ZdcSize(27, 27);
		icon.offset = new ZdcPixel(-13, -16);
		icon.shdoffset = new ZdcPixel(13,6);
		icon.msgoffset = new ZdcPixel(0, -10);
		icon.image = '../common/img/icon_icon.png';
		icon.shadowimage = '../common/img/icon_shadow.png';
	} else {
		icon.size = new ZdcSize(24, 29);
		icon.shadowsize = new ZdcSize(23, 22);
		icon.offset = new ZdcPixel(-9, -16);
		icon.shdoffset = new ZdcPixel(13,6);
		icon.msgoffset = new ZdcPixel(0, -10);
		icon.image = '../common/img/icon_icon2.png';
		icon.shadowimage = '../common/img/icon_shadow2.png';
	}
	var marker = new ZdcMarker(lnglat,icon);

	userData[i].marker = marker;

	msgwin = new ZdcUserMsgWindow();
	msgwin.setImage('../common/img/msg_window.png',
						new ZdcSize(400,200),
						'../common/img/msg_textarea.png',
						new ZdcSize(365,160),
						'../common/img/msg_close.png',
						new ZdcSize(13,13),
						'../common/img/msg_shadow.png',
						new ZdcSize(493,156),
						'../common/img/msg_print.png');

	msgwin.setDocPosition(37,-192,47,-182,45,190,90,-190);
	msgwin.setDocOffset(0,-239);
	msgwin.setTextClass("msgstyle");

	var node = document.createElement('div');
	var node_name = document.createElement('div');
	var node_img = document.createElement('img');
	var node_flowerinfo = document.createElement('div');
	var node_des= document.createElement('div');

	node.appendChild(node_name);
	node.appendChild(node_img);
	node.appendChild(node_flowerinfo);
	node.appendChild(node_des);

	node.setAttribute('id', 'balloon');
	node.setAttribute('idName', 'balloon');

	node_name.setAttribute('id', 'title');
	node_name.setAttribute('idName', 'title');
	node_name.innerHTML = "<strong>" + userData[i].name + "</strong>（" + userData[i].address1 + "）";

	if(userData[i].img != 0){ var img = userData[i].img ; }
	else{ var img = '/images/nophoto.jpg'; }
	node_img.setAttribute('src', img);

	//
	// 花の名前
	//
	if(userData[i].flower != 9999){
		var flowerName = flowers[userData[i].flower];
	} else {
		var flowerName = userData[i].floweretc;
	}
	//
	// 花の時期
	//
	if(userData[i].seastt1 > 12){ var mon1 = userData[i].seastt1 - 12; }
	else{ var mon1 = userData[i].seastt1; }
	var seasonName = mon1 + "月" + sTime[userData[i].seastt2];
	if(userData[i].seaend1 > 0){
		if(userData[i].seaend1 > 12){ var mon2 = userData[i].seaend1 - 12; }
		else{ var mon2 = userData[i].seaend1; }
		seasonName += " 〜 " + mon2 + "月" + sTime[userData[i].seaend2];
	}
	node_flowerinfo.setAttribute('id', 'flowerinfo');
	node_flowerinfo.setAttribute('idName', 'flowerinfo');
	node_flowerinfo.innerHTML = '<div id="flower"><strong>花の種類</strong><br />'  + flowerName + '</div>'
														+ '<div id="season"><strong>季節</strong><br />'  + seasonName + '</div>';

	node_des.setAttribute('id', 'description');
	node_des.setAttribute('idName', 'description');
	node_des.innerText   = userData[i].description;
	node_des.textContent = userData[i].description;

	ZdcEvent.addListener(marker, "mouseclickmarker", function() {
		if(map.getUserMsgOpenStatus()) map.closeUserMsgWindow();
		marker.openUserMsgWindow(msgwin,lnglat, node,2);
	});
	ZdcEvent.addListener(marker, "mouseclickmarker", function() {
		n = userData[i].no; cFlg = true;
	});

	if(userData[i].no == n && jFlg){
		map.openUserMsgWindow(msgwin,lnglat,node,new ZdcPixel(0,-9),3);
		jFlg = false;
	}

	userlay.addMarker(marker);
}

//
// クリックした所を表示させる
//
function pointOpen(nn){
	n = nn;
	jFlg = true;

	var loop = userData.length;
	for (var i = 0; i < loop; 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.getUserMsgOpenStatus()) map.closeUserMsgWindow();
			map.clearUserLayer();
			allClearMarkerListeners();
			map.scrollToCenter(lonlat);
			editData();

			break;
		}
	}
	return false;
}

//
// リスト次項・前項
//
function listRefrash(pn){
	pg = pn;
	makeData();

	return false;
}

//
// 花のタイプで絞り込み
//
function typeSearch(tn){
	pg = 0;
	flowerNo = tn;
	if(map.getUserMsgOpenStatus()) map.closeUserMsgWindow();
	map.clearUserLayer();
	allClearMarkerListeners();
	if(jFlg == false){ n = 0; }

	// マーカーの作成
	if(tn == 0){ sn = 0; }
	else{ sn = 1; }
	editData();
}

//
// 条件検索
//
function search(){
	pg = 0;
	var F1 = window.document.F1;
	flowerNo = F1.flower_type.value;
	flowerAddress = F1.area.value;
	if(F1.season.value != ""){ flowerSeason = parseInt(window.document.F1.season.value); }
	else{ flowerSeason = ""; }

	if(map.getUserMsgOpenStatus()) map.closeUserMsgWindow();
	map.clearUserLayer();
	allClearMarkerListeners();
	if(jFlg == false){ n = 0; }

	// マーカーの作成
	sn = 2;
	editData();
}

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;
		}
	}
}

function makeList(i){
	if(userData[i].img != 0){ var img = userData[i].img ; }
	else{ var img = '/images/nophoto.jpg'; }

	//
	// 花の名前
	//
	if(userData[i].flower != 9999){
		var flowerName = flowers[userData[i].flower];
	} else {
		var flowerName = userData[i].floweretc;
	}
	//
	// 花の時期
	//
	if(userData[i].seastt1 > 12){ var mon1 = userData[i].seastt1 - 12; }
	else{ var mon1 = userData[i].seastt1; }
	var seasonName = mon1 + "月" + sTime[userData[i].seastt2];
	if(userData[i].seaend1 > 0){
		if(userData[i].seaend1 > 12){ var mon2 = userData[i].seaend1 - 12; }
		else{ var mon2 = userData[i].seaend1; }
		seasonName += " 〜 " + mon2 + "月" + sTime[userData[i].seaend2];
	}

	listHtml.push(
		{no: userData[i].no,
		img: img,
		name: userData[i].name,
		address: userData[i].name + '（'  + userData[i].address1 + '）',
		flower: flowerName,
		season: seasonName,
		description: userData[i].description});
}

function dispList(h){
	tableNode = document.createElement('table');
	tableNode.setAttribute('class', 'tbl_border');
	tableNode.setAttribute('className', 'tbl_border');
	theadNode = document.createElement('thead');
	trNode = document.createElement('tr');

	th01Node = document.createElement('th');
	th02Node = document.createElement('th');
	th03Node = document.createElement('th');
	th04Node = document.createElement('th');

	th01Text = document.createTextNode(' ');
	th02Text = document.createTextNode('場所');
	th03Text = document.createTextNode('花の種類');
	th04Text = document.createTextNode('季節');

	th01Node.appendChild(th01Text);
	th02Node.appendChild(th02Text);
	th03Node.appendChild(th03Text);
	th04Node.appendChild(th04Text);

	trNode.appendChild(th01Node);
	trNode.appendChild(th02Node);
	trNode.appendChild(th03Node);
	trNode.appendChild(th04Node);

	theadNode.appendChild(trNode);

	tbodyNode = document.createElement('tbody');

	var loop = listHtml.length;
	for(var i = 0; i < loop; i++){
		tr01Node = document.createElement('tr');
		tr02Node = document.createElement('tr');

		if(i % 2 == 1){
			tr01Node.setAttribute('bgColor', '#fcf5f5');
			//tr02Node.setAttribute('bgColor', '#fcf5f5');
		}else{
			tr01Node.setAttribute('bgColor', '#f0f5fa');
			//tr02Node.setAttribute('bgColor', '#f0f5fa');
		}

		td01Node = document.createElement('td');
		td02Node = document.createElement('td');
		td03Node = document.createElement('td');
		td04Node = document.createElement('td');
		td05Node = document.createElement('td');

		td01Node.setAttribute('rowSpan', '2');
		td01Node.setAttribute('width', '80');
		td05Node.setAttribute('colSpan', '3');

		td01Img = document.createElement('img');
		td01Img.setAttribute('src', listHtml[i].img);
		td02Text = document.createElement('a');
		td02Text.setAttribute('href', '#top');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td02Text.setAttribute('onclick', new Function("pointOpen(" + listHtml[i].no + ")"));
		} else {
			td02Text.setAttribute('onclick', 'pointOpen(' + listHtml[i].no + ')');
		}
		td02Text.innerText   = listHtml[i].address;
		td02Text.textContent = listHtml[i].address;
		td03Text = document.createTextNode(listHtml[i].flower);
		td04Text = document.createTextNode(listHtml[i].season);
		td05Text = document.createTextNode(listHtml[i].description);

		td01Node.appendChild(td01Img);
		td02Node.appendChild(td02Text);
		td03Node.appendChild(td03Text);
		td04Node.appendChild(td04Text);
		td05Node.appendChild(td05Text);

		tr01Node.appendChild(td01Node);
		tr01Node.appendChild(td02Node);
		tr01Node.appendChild(td03Node);
		tr01Node.appendChild(td04Node);
		tr02Node.appendChild(td05Node);

		tbodyNode.appendChild(tr01Node);
		tbodyNode.appendChild(tr02Node);
	}
	tableNode.appendChild(theadNode);
	tableNode.appendChild(tbodyNode);

	//
	// 次・前のリンク作成
	//
	trNode = document.createElement('tr');
	td01Node = document.createElement('td');
	td01Node.setAttribute('colSpan', '2');
	td01Node.setAttribute('id', 'listlink1');
	td01Node.setAttribute('idName', 'listlink1');
	td02Node = document.createElement('td');
	td02Node.setAttribute('colSpan', '2');
	td02Node.setAttribute('id', 'listlink2');
	td02Node.setAttribute('idName', 'listlink2');
	if(pg > 0){
		var bp = pg - maxList;
		if(bp < 0) bp = 0;
		td01Text = document.createElement('a');
		td01Text.setAttribute('href', '#list');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td01Text.setAttribute('onclick', new Function("listRefrash(" + bp + ")"));
		} else {
			td01Text.setAttribute('onclick', 'listRefrash(' + bp + ')');
		}
		td01Text.innerText   = "　<< 前　";
		td01Text.textContent = "　<< 前　";
	} else {
		td01Text = document.createTextNode("　<< 前　");
	}
	if(pg + maxList < h){
		var np = pg + maxList;
		td02Text = document.createElement('a');
		td02Text.setAttribute('href', '#list');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td02Text.setAttribute('onclick', new Function("listRefrash(" + np + ")"));
		} else {
			td02Text.setAttribute('onclick', 'listRefrash(' + np + ')');
		}
		td02Text.innerText   = "　次 >>　";
		td02Text.textContent = "　次 >>　";
	} else {
		td02Text = document.createTextNode("　次 >>　");
	}
	td01Node.appendChild(td01Text);
	td02Node.appendChild(td02Text);
	trNode.appendChild(td01Node);
	trNode.appendChild(td02Node);
	tbodyNode.appendChild(trNode);

	target = document.getElementById('arealist');
	target.removeChild(target.firstChild);
	target.appendChild(tableNode);
}

function dispList_side(h){
	tableNode = document.createElement('table');
	tbodyNode = document.createElement('tbody');

	tr00Node = document.createElement('tr');

	td00Node = document.createElement('td');
	td00Node.setAttribute('colSpan', '2');
	td00Node.setAttribute('class', 'td_head');
	td00Node.setAttribute('className', 'td_head');
	if(flowers[flowerNo] != null){
		td00Text = document.createTextNode(flowers[flowerNo]);
	} else if(flowerNo == "9999") {
		td00Text = document.createTextNode("その他");
	} else {
		td00Text = document.createTextNode("全て");
	}
	td00Node.appendChild(td00Text);
	tr00Node.appendChild(td00Node);
	tbodyNode.appendChild(tr00Node);

	var loop = listHtml.length;
	for(var i = 0; i < loop; i++){
		tr01Node = document.createElement('tr');

		td01Node = document.createElement('td');
		td01Node.setAttribute('class', 'td_list');
		td01Node.setAttribute('className', 'td_list');
		td01Node.setAttribute('colSpan', '2');

		td01Text = document.createElement('a');
		td01Text.setAttribute('href', '#top');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td01Text.setAttribute('onclick', new Function("pointOpen(" + listHtml[i].no + ")"));
		} else {
			td01Text.setAttribute('onclick', 'pointOpen(' + listHtml[i].no + ')');
		}
		td01Text.innerText   = listHtml[i].address;
		td01Text.textContent = listHtml[i].address;

		td01Node.appendChild(td01Text);

		tr01Node.appendChild(td01Node);

		tbodyNode.appendChild(tr01Node);
	}
	tableNode.appendChild(tbodyNode);

	//
	// 次・前のリンク作成
	//
	trNode = document.createElement('tr');
	td01Node = document.createElement('td');
	td01Node.setAttribute('id', 'listlink1');
	td01Node.setAttribute('idName', 'listlink1');
	td02Node = document.createElement('td');
	td02Node.setAttribute('id', 'listlink2');
	td02Node.setAttribute('idName', 'listlink2');
	if(pg > 0){
		var bp = pg - maxList;
		if(bp < 0) bp = 0;
		td01Text = document.createElement('a');
		td01Text.setAttribute('href', '#top');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td01Text.setAttribute('onclick', new Function("listRefrash(" + bp + ")"));
		} else {
			td01Text.setAttribute('onclick', 'listRefrash(' + bp + ')');
		}
		td01Text.innerText   = "<< 前";
		td01Text.textContent = "<< 前";
	} else {
		td01Text = document.createTextNode("<< 前");
	}
	if(pg + maxList < h){
		var np = pg + maxList;
		td02Text = document.createElement('a');
		td02Text.setAttribute('href', '#top');
		if(navigator.userAgent.indexOf("MSIE")!=-1){
			td02Text.setAttribute('onclick', new Function("listRefrash(" + np + ")"));
		} else {
			td02Text.setAttribute('onclick', 'listRefrash(' + np + ')');
		}
		td02Text.innerText   = "次 >>";
		td02Text.textContent = "次 >>";
	} else {
		td02Text = document.createTextNode("次 >>");
	}
	td01Node.appendChild(td01Text);
	td02Node.appendChild(td02Text);
	trNode.appendChild(td01Node);
	trNode.appendChild(td02Node);
	tbodyNode.appendChild(trNode);

	target = document.getElementById('search_list');
	target.removeChild(target.firstChild);
	target.appendChild(tableNode);
}
