var map;
var default_set = new Array();

$(function(){
	$("body").unload(function() {
		GUnload();
	});
});

function loadUserMap(map_sets) {
	for (var i = 0; i < map_sets.length; i++) {
		map_set = map_sets[i];
		var tmp_set = {
			id: 'defaultMap',
			lat: null,
			lng: null,
			zoom: 12,
			display: [],
			scale: 'large',
			overview: true,
			maptype: true,
			open_message: false
		};
		for (var key in map_set) {
			tmp_set[key] = map_set[key];
		}
		if (!tmp_set.lat && map_set.display.length) {
			tmp_set.lat = map_set.display[0].lat;
		}
		if (!tmp_set.lng && map_set.display.length) {
			tmp_set.lng = map_set.display[0].lng;
		}
		default_set.push(tmp_set);
	}
	mapload();
}

function mapload() {
	if(GBrowserIsCompatible()) {
		for(var i = 0; i < default_set.length; i++) {
			map = new GMap2(document.getElementById(default_set[i].id));
			// 各コントロール追加
			if(default_set[i].scale == 'large') {
				map.addControl(new GLargeMapControl());
			} else if(default_set[i].scale == 'small') {
				map.addControl(new GSmallMapControl());
			}
			if(default_set[i].overview) {
				map.addControl(new GOverviewMapControl());
			}
			if(default_set[i].maptype) {
				map.addControl(new GMapTypeControl());
			}
			map.setCenter(new GLatLng(default_set[i].lat, default_set[i].lng), default_set[i].zoom);
	
			if(default_set[i].display != undefined && default_set[i].display.length) {
				// displayのマーカーのみ表示
				for (var j = 0; j < default_set[i].display.length; j++) {
					marker = default_set[i].display[j];
					marker.marker = set_marker(map, marker);
					set_action(map, marker, marker.marker, default_set[i].open_message);
				}
			}
		}
	}
}

// mapにmarker_dataをセットする
function set_marker(map, marker_data) {
	if (marker_data.icon != undefined) {
		var m_icon = new GIcon();
		m_icon.image = marker_data.icon;
		m_icon.iconSize = new GSize(marker_data.icon_width, marker_data.icon_height);
		m_icon.iconAnchor = new GPoint(marker_data.anchor_left, marker_data.anchor_top);
		m_icon.infoWindowAnchor = new GPoint(marker_data.anchor_left, marker_data.anchor_top);
		var marker = new GMarker(new GPoint(marker_data.lng, marker_data.lat), m_icon);
	} else {
		var marker = new GMarker(new GPoint(marker_data.lng, marker_data.lat));
	}
	map.addOverlay(marker);

	return marker;
}

// mapに動きをセットする
function set_action(map, marker_data, marker, open_message) {
	GEvent.addListener(marker, 'click', function() {
		map.panTo(new GLatLng(marker_data.lat, marker_data.lng));
		var timer = window.setTimeout(function() {
			marker.openInfoWindowHtml(marker_data.message);
			clearTimeout(timer);
		}, '500');
	});

	if(open_message == true) {
		// 最初から表示
		marker.openInfoWindowHtml(marker_data.message);
	}
}

