var map;
var icons;
var markers;
var geocoder;

function startMap(
	mapId, params)
{
	initMap(mapId);
	initIcon();
	loadXml(params);
	geocoder = new GClientGeocoder();
}

function initMap(mapId) {
	map = new GMap2(document.getElementById(mapId));
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());
	map.setCenter(new GLatLng(35.6751474, 139.5703125), 5);
}

function moveToAddress(address) {
	geocoder.getLatLng(
		address,
		function(point){
			if (!point) {
				alert("入力した住所が見つかりません");
			} else {
				map.setCenter(point, 14);
			}
		}
	);
}

function loadXml(params) {
	map.clearOverlays();
	$.post("./roomxml.php", params, function(xml) {
		var rooms = xml.getElementsByTagName("room");
		markers = new Array(rooms.length);
		for (var i=0; i<rooms.length; i++) {
			if (0 == i) {
				map.setCenter(new GLatLng(rooms[0].getAttribute("lat"), rooms[0].getAttribute("lon")), 15);
			}
			var marker = createMarker(rooms[i]);
			map.addOverlay(marker);
			markers[i] = marker;
		}
	});
}

function initIcon() {
	var iconUrl = new Array(
		"",
		"http://maps.google.co.jp/mapfiles/ms/icons/red.png",
		"http://maps.google.co.jp/mapfiles/ms/icons/blue.png",
		"http://maps.google.co.jp/mapfiles/ms/icons/yellow.png"
	);
	icons = new Array(iconUrl.length);
	for (var i=1; i<=3; i++) {
		icons[i] = new GIcon();
		icons[i].image = iconUrl[i];
		icons[i].iconSize = new GSize(32, 32);
		icons[i].iconAnchor = new GPoint(16, 32);
		icons[i].infoWindowAnchor = new GPoint(16, 0);
	}
}

function createMarker(room) {
	var marker = new GMarker(
		new GLatLng(room.getAttribute("lat"), room.getAttribute("lon")),
		icons[room.getAttribute("class_code")]);
		
	var html = "<div id=\"info\">"
		+ "<img src=\"" + room.getAttribute("image") + "\">"
		+ "所在： " + room.getAttribute("location") + "<br />"
		+ "賃料： " + room.getAttribute("rent") + "<br />"
		+ "間取： " + room.getAttribute("layout") + "<br />"
		+ "種別： " + room.getAttribute("class_name") + "<br />"
		+ "<br />"
		+ "<a href=\"" + room.getAttribute("detail") + "\" target=\"_blank\">詳細を見る</a>"
		+ "</div>";
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}

function viewMarker(i) {
	map.setCenter(markers[i].getPoint(), map.getZoom());
	GEvent.trigger(markers[i], "click");
}
