var map;
var twitter_account;
var Skyarch_msg = "<div><p style=\"margin:15px auto;\"><a href=\"http://www.skyarch.net/\"><img src=\"http://www.skyarch.net/profile/access-map/img/mark_skyarch.gif\" alt=\"\" width=\"240\" height=\"25\"></a></p>"
				+ (typeof twitter_account != 'undefined' ? ('<p>Twitter: <a href="http://twitter.com/'+twitter_account+'">@'+twitter_account+'</a></p>') : "")
				+ "</div>";
var arrangement = 0.1;

var SkyarchMap = {
	isInfoWindowOpen : false,
	show : null,
	number : 0,
	temp : {},
	init : function() {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(startPoint.y + arrangement, startPoint.x), zoomDefault);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(330, 5)));
		// Search Controler
		map.addControl(new google.maps.LocalSearch());
		var options = {suppressInitialResultSelection : false};
		var Search=new google.maps.LocalSearch(options);
		// WheelZoom
		map.enableScrollWheelZoom();
		map.enableContinuousZoom();
		if( navigator.userAgent.match( "MSIE" ) ){ document.getElementById( "map" ).attachEvent( "onmousewheel" , this.mouseWheelZooming ); }
		if( navigator.userAgent.match( "Gecko" ) ){ document.getElementById( "map" ).addEventListener( "DOMMouseScroll" , this.mouseWheelZooming , false ); }
		if( navigator.userAgent.match( "Safari" ) ){ document.getElementById( "map" ).onmousewheel = this.mouseWheelZooming; }
		// Marker Manager
		var mgr = new GMarkerManager(map, mgrOptions);
		SkyarchMap.update();

		GEvent.addListener(map, "moveend", function() {
			SkyarchMap.update();
		});
	},
	clear : function(flag) {
		if ( ! SkyarchMap.isInfoWindowOpen ) {
			if (flag) map.clearOverlays();
			return true;
		} else {
		    SkyarchMap.isInfoWindowOpen = false;
		    return false;
		}
	},
	mouseWheelZooming : function(event){
		if( navigator.userAgent.match( "MSIE" ) ){ var delta = event.wheelDelta; event.returnValue = false; } //IE
		if( navigator.userAgent.match( "Gecko" ) ){ var delta = event.detail * -1; event.preventDefault(); } //Gecko
		if( navigator.userAgent.match( "Safari" ) ){ var delta = event.wheelDelta; event.returnValue = false; } //Safari
	},
	update : function () {
		var bounds = map.getBounds();
		if ( SkyarchMap.clear(false) ) {
			$.getJSON(PHPpath
							+"?"+"y="+(map.getCenter()).lat()+"&"+"x="+(map.getCenter()).lng()
							+"&"+"n="+(bounds.getNorthEast()).lat()+"&"+"s="+(bounds.getSouthWest()).lat()
							+"&"+"e="+(bounds.getNorthEast()).lng()+"&"+"w="+(bounds.getSouthWest()).lng()
							+"&"+"num="+SkyarchMap.number
				, null,
				function(json, status) {
					if ( json != SkyarchMap.show ) {
						SkyarchMap.clear(true);
						$.each(json, function(index, item){
							if ( item.html.category ) {
								var markerIcon = new GIcon();
								markerIcon.image = "/img/map_icon/"+item.html.category+".png";
								markerIcon.iconSize = new GSize(20, 34);
								markerIcon.iconAnchor = new GPoint(20, 60);
								markerIcon.infoWindowAnchor = new GPoint(10, 1);
							}
							var marker = new GMarker( new GLatLng(item.lat, item.lng ), markerIcon);
							// info window
							GEvent.addListener(marker, "click", function() {
								SkyarchMap.isInfoWindowOpen = true;
								marker.openInfoWindowHtml(item.html.window);
							});
							map.addOverlay( marker );
						});

						var marker = new GMarker(new GLatLng(startPoint.y, startPoint.x) );
						map.addOverlay(marker)
						GEvent.addListener(marker, "click", function() {
							SkyarchMap.isInfoWindowOpen = true;
							marker.openInfoWindowHtml(Skyarch_msg);
						});
						if ( ! SkyarchMap.show ) { // ロード時
							SkyarchMap.isInfoWindowOpen = true;
							marker.openInfoWindowHtml(Skyarch_msg);
						}
						SkyarchMap.show = json;
					}
				}
			);
		}

	},
	changeFocus : function(x, y, zoom){
	    map.setCenter(new GLatLng(parseFloat(y), parseFloat(x)), zoomDefault+parseInt(zoom)-1);
		SkyarchMap.update();
	},
	changeNumber : function(val) {
		SkyarchMap.number = val;
		SkyarchMap.update();
	}
};

