var map;
var SkyarchMap = {
	isInfoWindowOpen : false,
	show : null,
	init : function() {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(startPoint.x, startPoint.y), 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();
	},
	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
							+"?"+"x="+(map.getCenter()).lat()+"&"+"y="+(map.getCenter()).lng()
							+"&"+"n="+(bounds.getNorthEast()).lat()+"&"+"s="+(bounds.getSouthWest()).lat()
							+"&"+"e="+(bounds.getNorthEast()).lng()+"&"+"w="+(bounds.getSouthWest()).lng()
				, null,
				function(json, status) {
					if ( json != SkyarchMap.show ) {
						SkyarchMap.clear(true);
						$.each(json, function(index, item){
							var marker = new GMarker( new GLatLng(item.lat, item.lng ) );
							// info window
							GEvent.addListener(marker, "click", function() {
								SkyarchMap.isInfoWindowOpen = true;
								marker.openInfoWindowHtml(item.html.window);
							});
							map.addOverlay( marker );
						});
						SkyarchMap.show = json;
					}
				}
			);
		}
	}
};
