var map = null;
var geocoder = null;
var marker = null;
var changemap = 1;

function ShowMap(Elem ) 
{
	this.element= Elem;
    this.show();
}

function ShowMapOnPage(Elem ) 
{
	this.element= Elem;
    this.show();
}

function ShowMapAdd(Elem ) 
{
	this.element= Elem;
    this.show();
}



ShowMapOnPage.prototype.show = function() 
{
  if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        var center = new GLatLng(plat,plng);
        map.setCenter(center, pzoom);
        var mapTypeControl = new GMapTypeControl();
        var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
        var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
        map.addControl(mapTypeControl, topRight);
        map.addControl(new GSmallMapControl());
        marker = new GMarker(center);
        map.addOverlay(marker);
      }
}


ShowMap.prototype.show = function() 
{
  //53.73896488496292, 21.708984375
  if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        var center = new GLatLng(plat,plng);
        map.setCenter(center, pzoom);
        
        geocoder = new GClientGeocoder();
        
        //kontola
        var mapTypeControl = new GMapTypeControl();
        var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
        var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
        map.addControl(mapTypeControl, topRight);
        map.addControl(new GSmallMapControl());
        
        marker = new GMarker(center, {draggable: true});

        GEvent.addListener(marker, "dragstart", function() {
          map.closeInfoWindow();
        });

        GEvent.addListener(marker, "dragend", function(overlay, point) {
        	
        	LatLng 	= marker.getLatLng();
			z		= map.getZoom();
			
			document.form.lat.value=LatLng.lat();
			document.form.lng.value=LatLng.lng();
			document.form.zoom.value= z;
			
			 marker.openInfoWindowHtml("Zaznaczone<br> sprawdz czy sie pokazaly koordynaty pod mapka!");
        });
        map.addOverlay(marker);
      }
}



ShowMapAdd.prototype.show = function() 
{

  if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        var center = new GLatLng(plat,plng);
        map.setCenter(center, pzoom);
        
        geocoder = new GClientGeocoder();
        
        //kontola
        var mapTypeControl = new GMapTypeControl();
        var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
        var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
        map.addControl(mapTypeControl, topRight);
        map.addControl(new GSmallMapControl());
        
        marker = new GMarker(center, {draggable: true});

        GEvent.addListener(marker, "dragstart", function() {
          map.closeInfoWindow();
        });

        GEvent.addListener(marker, "dragend", function(overlay, point) {
        	
        	LatLng 	= marker.getLatLng();
			z		= map.getZoom();
			
			document.form.lat.value=LatLng.lat();
			document.form.lng.value=LatLng.lng();
			document.form.zoom.value= z;
			
        });
        map.addOverlay(marker);
      }
}

function changecityonmap()
{
	if(document.form.city.value != "" && changemap == 1 && document.form.address.value == "")
	showAddressAdd(document.form.city.value + ", PL" , 12); 
}

function changeaddressonmap()
{
	if(document.form.address.value != "" && document.form.city.value != "" && changemap == 1)
	showAddressAdd(document.form.address.value + ", " +document.form.city.value + ", PL" , 14); 
}

function geolocator()
{
	showAddress(document.form.address.value + ", " +document.form.cityname.value + ", PL"); 
}

function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " nie znalazl");
            } else {
              
              map.removeOverlay(marker);
              
              map.setCenter(point, 9);
              marker = new GMarker(point, {draggable: true});
              
			GEvent.addListener(marker, "dragend", function(overlay, point) 
			{
        		
 
        		
        		LatLng 	= marker.getLatLng();
				z		= map.getZoom();
			
				document.form.lat.value=LatLng.lat();
				document.form.lng.value=LatLng.lng();
				document.form.zoom.value= z;
			
				 marker.openInfoWindowHtml("Zaznaczone<br> sprawdz czy sie pokazaly koordynaty pod mapka!");
       		 });
              
              
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
              
              LatLng 	= marker.getLatLng();
				z		= map.getZoom();
			
			document.form.lat.value=LatLng.lat();
			document.form.lng.value=LatLng.lng();
			document.form.zoom.value= z;
              
            }
          }
        );
      }
}


function showAddressAdd(address,zoom) {
      if (geocoder) {
        geocoder.getLatLng( address,
          function(point) {
            if(point) {
    
              map.removeOverlay(marker);
              map.setCenter(point, zoom);
              marker = new GMarker(point, {draggable: true});
              
			 GEvent.addListener(marker, "dragend", function(overlay, point) 
			 {
        		changemap = 0; //punkt ustiony recznie
        		
        		LatLng 	= marker.getLatLng();
				z		= map.getZoom();
			
				document.form.lat.value=LatLng.lat();
				document.form.lng.value=LatLng.lng();
				document.form.zoom.value= z;

       		 });
              

              map.addOverlay(marker);
              
              LatLng 	= marker.getLatLng();
					
			document.form.lat.value=LatLng.lat();
			document.form.lng.value=LatLng.lng();
			document.form.zoom.value= map.getZoom();
              
            }
          }
        );
      }
}

