/* utf-8 */
var myIcon = [];
var map = null;
var markers = [];
var pointLatLng = [];
var pointInfo = [];
var datacount = 0;
var formParam = null;
var fIsCenterSet = true;

var gifs = Array('','midori.gif','hana.gif','ha.gif','kiiro.gif','aka.gif')

var kinds = Array('1,佐藤錦','2,紅秀峰','3,紅さやか','4,ナポレオン','8,高砂','0,全ての品種');
var modes = Array('1,もぎとりできる果樹園','2,直販している果樹園');

function onLoadMap()
{
	for(var idx=1; idx<6; idx++){
		myIcon[idx] = new GIcon();
		myIcon[idx].image = "http://agrin.jp/hp/cherry/gif/"+gifs[idx];
		myIcon[idx].iconSize = new GSize(40, 40);
		myIcon[idx].iconAnchor = new GPoint(15, 31);
		myIcon[idx].infoWindowAnchor = new GPoint(16, 0);
	}

	map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	
	getParams();
	setKindModeString();
	getPointList();

	GEvent.addListener(map, "moveend", function(){ setPointList(); });
}

function setKind(kind)
{
	formParam['kind'] = kind;
	setKindModeString();
	getPointList();
}

function setMode(mode)
{
	formParam['mode'] = mode;
	setKindModeString();
	getPointList();
}

function getPointList()
{
	var qstr = '';
	qstr = formParam['area'];
	qstr += '&kind='+formParam['kind'];
	qstr += '&mode='+formParam['mode'];

	var datacountvl = document.getElementById('datawindow');
	
	datacountvl.innerHTML = 'データ読み込み中...';
	map.clearOverlays();
	pointLatLng = [];
	pointInfo = [];
	markers = [];

	GDownloadUrl("/cgi/hp/cherry/pointlist.cgi?area="+qstr, function(data){
		if(data){
			var xml = GXml.parse(data);
			if(xml && xml.documentElement){
				if(fIsCenterSet){
					var cherrydb = xml.documentElement.getElementsByTagName("careadb");
					for(var idx=0; idx<cherrydb.length; idx++) {
						if(cherrydb[idx].getAttribute("code") == formParam['area']){
							map.setCenter(new GLatLng(parseFloat(cherrydb[idx].getAttribute("lat")),parseFloat(cherrydb[idx].getAttribute("lng"))), 12);
						}					
					}
					fIsCenterSet = false;
				}
				var cherrydb = xml.documentElement.getElementsByTagName("cherrydb");
				datacount = cherrydb.length;
				datacountvl.innerHTML = '登録されている情報は'+datacount+"件です";
				for(var idx=0; idx<cherrydb.length; idx++) {
					addPointText(idx, map, parseFloat(cherrydb[idx].getAttribute("lat")),parseFloat(cherrydb[idx].getAttribute("lng")),cherrydb[idx].getAttribute("url"),cherrydb[idx].getAttribute("name"),cherrydb[idx].getAttribute("status"));
					pointInfo[idx] = '<a href="'+cherrydb[idx].getAttribute("url")+'">'+cherrydb[idx].getAttribute("name")+'</a><br>';
					pointLatLng[idx] = new GLatLng(parseFloat(cherrydb[idx].getAttribute("lat")),parseFloat(cherrydb[idx].getAttribute("lng")));
				}
				setPointList();
			}
		}
	});
}

function setPointList()
{
	var pointstring = '';
	var pointvl = document.getElementById('pointlist');
	var bounds = map.getBounds();
	
	for(idx in markers){
		if(bounds.contains(pointLatLng[idx])){
			pointstring += pointInfo[idx];
		}
	}

	pointvl.innerHTML = pointstring;
}

function addPointText(index, map, lat, lng, url,text, status)
{
	var point = new GPoint(lng, lat);
	var marker;
	if(status > 0 && status < 6)
		marker = new GMarker(point, myIcon[status]);
	else
		marker = new GMarker(point);
	markers[index] = marker;
	map.addOverlay(marker);
	GEvent.addListener(marker, "mouseover", function(){ marker.openInfoWindowHtml(text); });
	GEvent.addListener(marker, "click", function(){ location.href = url; });
}

function getParams()
{
	formParam = new Array;
	if(location.search.length > 1){
		var m_Array = location.search.substr(1).split("&"); 
		for(idx in m_Array){
			var tmpArray = m_Array[idx].split("=");
			formParam[tmpArray[0]] = tmpArray[1];
		}
	}
}

function setKindModeString()
{
	var datavl;
	var string = '';
	var idx;
	
	if(formParam['kind'] == null){
		formParam['kind'] = 0;
	}
	datavl = document.getElementById('kinddata');
	for(idx in kinds){
		var tmpArray = kinds[idx].split(",");
		if(formParam['kind'] == tmpArray[0]){
			string += '<b>'+tmpArray[1]+'</b>';
		}
		else{
			string += '<a href="#" onClick="setKind('+tmpArray[0]+');return false;">'+tmpArray[1]+'</a>';
		}
		string += '<br>';
	}
	datavl.innerHTML = string;

	string = '';
	if(formParam['mode'] == null){
		formParam['mode'] = 1;
	}
	datavl = document.getElementById('modedata');
	for(idx in modes){
		var tmpArray = modes[idx].split(",");
		if(formParam['mode'] == tmpArray[0]){
			string += '<b>'+tmpArray[1]+'</b>';
		}
		else{
			string += '<a href="#" onClick="setMode('+tmpArray[0]+');return false;">'+tmpArray[1]+'</a>';
		}
		string += ' ';
	}
	datavl.innerHTML = string;
}

