/**
 * @author Susumu
 */
var iconTypes = [
    {
    	image: "/common/img/logo_myatria_map.png",
		width: 64,
		height: 64,
		anchorX: 32,
		anchorY: 64,
		windowAnchorX: 32,
		windowAnchorY: 0,
		imageMap: [1, 1, 1, 33, 61, 33, 61, 1]
    },
    {
    	image: "/common/img/logo_atria_map03.png",
		width: 64,
		height: 64,
		anchorX: 32,
		anchorY: 32,
		windowAnchorX: 32,
		windowAnchorY: 0,
		imageMap: [0, 0, 0, 64, 64, 64, 64, 0]
    }
];

var myatriaMarkers = [
	{
		id: 2,
		lat: 43.045789,
		lng: 141.357656,
		name: "マイアトリア中島公園",
		url: "/list/nakajimakoen/",
		location: "札幌市中央区南11条西1丁目1-11",
		icon: iconTypes[0]
	},
	{
		id: 11,
		lat: 36.56383,
		lng: 136.653362,
		name: "金沢香林坊マイアトリア",
		url: "/list/kanazawakorinbo/",
		location: "金沢市香林坊2-4-3",
		icon: iconTypes[0]
	},
	{
		id: 12,
		lat: 33.600984,
		lng: 130.400312,
		name: "マイアトリア築港本町",
		url: "/list/chikkohonmachi/",
		location: "福岡市博多区築港本町5-29",
		icon: iconTypes[0]
	},
	{
		id: 13,
		lat: 35.162883,
		lng: 136.894584,
		name: "マイアトリア栄",
		url: "/list/sakae/",
		location: "愛知県名古屋市中区栄1丁目29番26号",
		icon: iconTypes[0]
	},
	{
		id: 14,
		lat: 34.689014,
		lng: 135.511009,
		name: "マイアトリア北浜",
		url: "/list/kitahama/",
		location: "大阪市中央区東高麗橋2-35",
		icon: iconTypes[0]
	},
	{
		id: 15,
		lat: 35.166183,
		lng: 136.936748,
		name: "マイアトリア今池",
		url: "/list/imaike/",
		location: "名古屋市千種区今池5-38-20",
		icon: iconTypes[0]
	},
	{
		id: 17,
		lat: 35.763334,
		lng: 139.729349,
//		lat: 35.763334,
//		lng: 139.729349,
		name: "マイアトリア東十条",
		url: "/list/higashijujo/",
		location: "東京都北区東十条2丁目14-1",
		icon: iconTypes[0]
	},
	{
		id: 18,
		lat: 43.05322,
		lng: 141.346584,
		name: "マイアトリア南五条",
		url: "/list/minamigojo/",
		location: "北海道札幌市中央区南5条西8丁目3-1",
		icon: iconTypes[0]
	},
	{
		id: 19,
		lat: 43.054269,
		lng: 141.359381,
		name: "マイアトリア南六条",
		url: "/list/minamirokujo/",
		location: "北海道札幌市中央区南6条東1丁目9-3",
		icon: iconTypes[0]
	},
	{
		id: 20,
		lat: 43.05587,
		lng: 141.325572,
		name: "マイアトリア裏参道",
		url: "/list/urasando/",
		location: "北海道札幌市中央区南1条西21丁目1-16",
		icon: iconTypes[0]
	},
	{
		id: 21,
		lat: 35.640487,
		lng: 139.745364,
		name: "マイアトリア田町",
		url: "/list/tamachi/",
		location: "東京都港区芝浦4丁目5番13",
		icon: iconTypes[0]
	},
	{
		id: 23,
		lat: 35.17401,
		lng: 136.886762,
		name: "マイアトリア名駅",
		url: "/list/meieki/",
		location: "名古屋市中村区名駅3-9-6",
		icon: iconTypes[0]
	},
	{
		id: 24,
		lat: 33.593593,
		lng: 130.403823,
		name: "マイアトリア・リバーフェイス",
		url: "/list/riverface/",
		location: "福岡県福岡市博多区中洲5丁目4-6",
		icon: iconTypes[0]
	},
	{
		id: 25,
		lat: 33.588025,
		lng: 130.412588,
		name: "マイアトリア住吉",
		url: "/list/sumiyoshi/",
		location: "福岡県福岡市博多区住吉2丁目4-7",
		icon: iconTypes[0]
	}
];

function getMyatriaMarker(myatriaId) {
	var myatriaMarker;
	for (var i = 0; i < myatriaMarkers.length; i++) {
		if (myatriaMarkers[i].id == myatriaId) {
			myatriaMarker = myatriaMarkers[i];
			break;
		}
	}
	return myatriaMarker;
}

var myatriaId;
var zoom = 17;
var ls;
var map;
var markers;
var aroundId;
var currentMyatriaId;
var maxZIndex = 100;

google.maps.LocalSearch.prototype.formClear = function(form) {
	// オプションでonCloseFormCallbackを設定するとGoogleロゴが出るので、
	// onCloseFormCallbackを設定せずにフォームクリアできるよう修正
	if (this.onCloseFormCallback) {
		this.onCloseFormCallback();
	}
	this.goIdle();
	return false;
}

function initialize() {
	if (GBrowserIsCompatible()) {
		var myatriaMarker = getMyatriaMarker(myatriaId);
		if (!myatriaMarker) {
			return;
		}

		map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(myatriaMarker.lat, myatriaMarker.lng), zoom);
		map.addMapType(G_PHYSICAL_MAP);
		map.removeMapType(G_HYBRID_MAP);

		markers = [];
		for (var i = 0; i < myatriaMarkers.length; i++) {
			var myatriaIcon = new GIcon(G_DEFAULT_ICON);
			myatriaIcon.image = myatriaMarkers[i].icon.image;
			myatriaIcon.iconSize = new GSize(myatriaMarkers[i].icon.width, myatriaMarkers[i].icon.height);
			myatriaIcon.iconAnchor = new GPoint(myatriaMarkers[i].icon.anchorX, myatriaMarkers[i].icon.anchorY);
			myatriaIcon.infoWindowAnchor = new GPoint(myatriaMarkers[i].icon.windowAnchorX, myatriaMarkers[i].icon.windowAnchorY);
			myatriaIcon.imageMap = myatriaMarkers[i].icon.imageMap;

			markerOptions = {
				icon: myatriaIcon,
				zIndexProcess: orderOfCreation
			};
			var point = new GLatLng(myatriaMarkers[i].lat, myatriaMarkers[i].lng);
			markers[i] = new GMarker(point, markerOptions);
			markers[i].myatriaId = myatriaMarkers[i].id;
			map.addOverlay(markers[i]);
			markers[i].html = "<b><a href=\"" + myatriaMarkers[i].url + "\">" + myatriaMarkers[i].name + "</a></b><br />" + myatriaMarkers[i].location;
			GEvent.addListener(markers[i], "click", function() {this.openInfoWindow(this.html)});
		}

		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		var options = {
//			suppressZoomToBounds : true,
			resultList : google.maps.LocalSearch.RESULT_LIST_SUPPRESS,
			suppressInitialResultSelection : true
		};
		ls = new google.maps.LocalSearch(options);
		map.addControl(ls);
	}
}

function orderOfCreation(marker) {
	return ++maxZIndex;
}

function getRandomMarker() {
	var num = Math.floor(Math.random() * markers.length);
	return markers[num];
}

function getRandomMarkerWithoutMyatriaId(myatriaId) {
	var marker;
	var myatriaMarker = getMyatriaMarker(myatriaId);
	while(1) {
		marker = getRandomMarker();
		var markerLatLng = marker.getLatLng();
		if (myatriaMarker.lat != markerLatLng.lat() && myatriaMarker.lng != markerLatLng.lng()) {
			break;
		}
	}
	return marker;
}

function searchGMap(keyword) {
	if (ls) {
		ls.execute(keyword);
	}
}

function goBack() {
	var myatriaMarker = getMyatriaMarker(myatriaId);
	if (map) {
		map.setZoom(zoom);
		map.panTo(new GLatLng(myatriaMarker.lat, myatriaMarker.lng));
	}
	if (ls) {
		ls.formClear();
	}
}

function aroundMyatria() {
	if (ls) {
		ls.formClear();
	}
	if (map) {
		map.setZoom(11);
		innerAroundMyatria();
		aroundId = setInterval("innerAroundMyatria()", 3000);
	}
}

function innerAroundMyatria() {
	if (!currentMyatriaId) {
		currentMyatriaId = myatriaId;
	}
	var marker = getRandomMarkerWithoutMyatriaId(currentMyatriaId);
	currentMyatriaId = marker.myatriaId;
	map.panTo(marker.getLatLng());
	marker.openInfoWindow(marker.html);
}

$(document).ready(
	function(ev) {
		if (!myatriaId) {
			alert("please define myatriaId.\n");
			return false;
		}
		initialize();
		$(window).unload(
			function(ev) {
				GUnload();
			}
		);
	}
);

$(document).click(
	function(ev) {
		if (aroundId) {
			clearInterval(aroundId);
			aroundId = undefined;
		}
	}
);

