var map = {
	init:function(pLat, pLon, pZoom)	{
		if (GBrowserIsCompatible())
		{ 
			var myCopyright = new GCopyrightCollection("Карта");
			
			myCopyright.addCopyright(
				new GCopyright(1,
					new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),
					0,'© 2008 www.nikopol.net.ua'));
			
			var tilelayer = new GTileLayer(myCopyright,12,16);
			tilelayer.getTileUrl = function(c, z) 
			{
				var xd = 2438;
				var yd = 1430;
				var xtile = c.x - (xd * Math.pow(2, z-12));
				var ytile = c.y - (yd * Math.pow(2, z-12));
				
				if((xtile<0) | (ytile<0)) { return false; }
				
				return "http://nikopol.net.ua/mapimg/" + z + "/tile_" + xtile + "_" + ytile + ".png";
				//return "http://localhost/~maxx/map5/" + z + "/tile_" + xtile + "_" + ytile + ".png";
				
				//return "image.php?z="+z+"&x="+c.x+"&y="+c.y;
				
			};
			
			tilelayer.isPng = function() { return true;};
			tilelayer.getOpacity = function() { return 1; }
			
			var myTileLayer = new GTileLayerOverlay(tilelayer);
			
			var custommap = new GMapType(
				[tilelayer], 
				new GMercatorProjection(19), 
				"Старая версия", 
				{ /*errorMessage:"Nikopol is over :)" */});
			
			var opts = Object();
			opts.mapTypes = [G_NORMAL_MAP, G_SATELLITE_MAP, G_HYBRID_MAP,custommap];
			//opts.size = new GSize(600, 400);	
			
	
			var map = new GMap2(document.getElementById("map"), opts);
			
			
			
			map.setCenter(new GLatLng(pLat, pLon), pZoom, G_NORMAL_MAP);
			
			map.addControl(new GLargeMapControl());
		   	map.addControl(new GMapTypeControl());
		   	//map.addControl(new GOverviewMapControl());
		   	
		   	map.enableContinuousZoom();
			map.enableDoubleClickZoom();
			map.enableScrollWheelZoom();
			
		
			
			this.getMap=function(){return map;}
			
			var geo = new GClientGeocoder(); 
			
			this.getGeo=function(){return geo;}
			
			
			
			GEvent.addListener(map, 'moveend', function(){ 
				var center = map.getCenter();
				var zoom = map.getZoom();
				var url='http://nikopol.net.ua/map/'+center.lat()+'/'+center.lng()+'/'+zoom;
				document.getElementById('inp_url').value = url;
			});
			
			document.getElementById('inp_url').onclick = function(){this.select();}
		}
		    
		// display a warning if the browser was not compatible
		else 
		{
		  alert("Извините, карта не может быть отображена в вашем браузере.");
		}
	},
	
	searchPlace:function(address){
		
		var geo = this.getGeo();
		var map = this.getMap();
		
		
		var bounds = map.getBounds();
		//geo.setViewport(bounds);
		
        // ====== Perform the Geocoding ======        
        //geo.getLocations(address, function (result){ 
        $.getJSON('http://nikopol.net.ua/map/geo', {request:address}, function(result){
        	
        	
        	map.clearOverlays();
        	
        	var placemarks = [];
	       	var cnt = 0; 
	       	document.getElementById("message").innerHTML = '';
        	
	       	if (result.Status.code == G_GEO_SUCCESS) 
	       	{
				for (var i=0; i<result.Placemark.length; i++) 
				{
					var ad = result.Placemark[i].AddressDetails;
					//if( (ad.Accuracy >= 5) && (ad.Country.AdministrativeArea.Locality.LocalityName=="Никополь"))
					{
						placemarks[cnt++] = result.Placemark[i];
					}
              	}
              	
              	for (var i=0; i<placemarks.length; i++) 
				{
					var p = placemarks[i].Point.coordinates;
                	var marker = new GMarker(new GLatLng(p[1],p[0]));
                	document.getElementById("message").innerHTML += "<br>"+(i+1)+": "+ result.Placemark[i].address + marker.getPoint();
                	
                	//console.log(placemarks[i]);
					map.addOverlay(marker);	
					marker.openInfoWindowHtml(placemarks[i].address);

              	}
              	
              	if(placemarks.length==1)
              	{
              		// centre the map on the first result
					var p = placemarks[0].Point.coordinates;
	              	map.setCenter(new GLatLng(p[1],p[0]),16);	
              	}
              	
              	
              	
            }
            
            if(placemarks.length==0)
          	{
          		alert('Ничего не найдено');
          	}
            
          });
	}
	
	
}