(function(){
	window.map = {};
	window.map = {
		gmap:    null,
		defzoom: 17,
		initialize: function(){
			if (!GBrowserIsCompatible())
				return;
			var copyOSM = new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a>");
			copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, " "));

			var tilesMapnik = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'});

			var mapMapnik   = new GMapType([tilesMapnik], G_NORMAL_MAP.getProjection(), "Карта");
			this.gmap       = new GMap2(document.getElementById("map"), { mapTypes: [mapMapnik, G_SATELLITE_MAP] });


			this.gmap.enableContinuousZoom();
			this.gmap.enableScrollWheelZoom();

			this.gmap.addControl(new GHierarchicalMapTypeControl());
			this.gmap.addControl(new GOverviewMapControl());
			this.gmap.addControl(new GLargeMapControl());
			this.gmap.addControl(new GMapTypeControl());
		},
		
		goToAndOpenInfo: function( obj ){
			var point = new GLatLng( obj.lat, obj.lng );
			this.gmap.panTo( point );
			this.openInfoWindowHtml( point, obj.description );
			
			return true;
		},
		
		addMarker: function( obj ){
			var marker = this.createMarker( obj );
			this.gmap.addOverlay( marker );
		},
		
		setCenter: function( obj ){
			var point = new GLatLng( obj.lat, obj.lng );
			this.gmap.setCenter( point, this.defzoom );
		},
		
		createMarker: function( obj ){
			var point = new GLatLng( obj.lat, obj.lng );
			var marker = new GMarker( point );
			var _this = this;
			if (obj.description.length > 0){
				GEvent.addListener(marker, "click", function() {
					_this.openInfoWindowHtml( point, obj.description );
				});
			};
			return marker;
		},
		
		openInfoWindowHtml: function( point, description ){
			this.gmap.openInfoWindowHtml( point, '<div style="padding-bottom:10px;line-height:16px">'+description+'</div>' );
		}
	}
})()

$(document).ready(function() {
	window.map.initialize();
});

$(window).unload( function () {
	GUnload();
});


