google.load("maps", "2.x");
//google.setOnLoadCallback(initializeEditMap);

if(!centerLat && !centerLng && !zoom) {
  var centerLat = 58.00773400684094;
  var centerLng = 56.240386962890625;
  var zoom = 11;
}

if(!numberMarker) var numberMarker = 0;
if(!markersLatLng) var markersLatLng = new Array();
var geocoder = null;
var map = null;

// Инициализация редакторской карты.	
function initializeEditMap() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(centerLat, centerLng), zoom); // Установка центра карты.
	geocoder = new GClientGeocoder();
    map.setUIToDefault(); // Задание стандартного интерфейса.

    function centerLatLngZoom() {
  	  var center = map.getCenter();
	  var lat = center.lat(); // Узнаем lat середины.
      var lng = center.lng(); // Узнаем lng середины.	  
	  zoom = map.getZoom(); // Узнаем детализацию.
      document.getElementById("lat").value = lat;
	  document.getElementById("lng").value = lng;
	  document.getElementById("zoom").value = zoom;	  
    }
		
	// Узнаем lat, lng, zoom фрагмента карты.
	GEvent.addListener(map, "moveend", function() {
	  centerLatLngZoom();
    });
	
	if(numberMarker > 0) {
	  for(var i = 0; i < numberMarker; i++) {
	    point = new GLatLng(markersLatLng[i][0], markersLatLng[i][1]);
        map.addOverlay(new GMarker(point));
	  }
	}
	
	// Добавление или удаление маркера при клике по карте.
	GEvent.addListener(map, "click", function(marker, point) {
      if (marker) {
        map.removeOverlay(marker);
		latLng = marker.getLatLng();
		lat = latLng.lat();
		lng = latLng.lng();
		for(var i = 0; i < numberMarker; i++) {
	      if(lat == markersLatLng[i][0] && lng == markersLatLng[i][1]) {
		    markersLatLng[i] = "";
		    markersLatLng[i][0] = "";
		    markersLatLng[i][1] = "";
		  }
		}
		document.getElementById("markers").innerHTML = getMarkersLatLng(numberMarker);
      } else {
        map.addOverlay(createMarker(point, numberMarker));
	    ++numberMarker;
	    document.getElementById("markers").innerHTML = getMarkersLatLng(numberMarker);
      }
    });
	
  }
}
	
function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(centerLat, centerLng), zoom); // Установка центра карты.
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    for(var i = 0; i < numberMarker; i++) {
	  point = new GLatLng(markersLatLng[i][0], markersLatLng[i][1]);
      map.addOverlay(new GMarker(point));
	}
	
  }
}
	
// Вывод координат всех маркеров.
function getMarkersLatLng(number) {
  var latlngs = "";
  for(var i = 0; i < numberMarker; i++) {
    if(markersLatLng[i] != "") {
	  latlngs = latlngs + markersLatLng[i][0] + "," + markersLatLng[i][1] + ",";
    }	   
  }
  return latlngs;
}
    
// Создание маркера в заданной точке.
function createMarker(point, number) {
  var marker = new GMarker(point);
  marker.value = number;
	  
  // Внесение в массив под подярковым номером lat и lng маркера.
  latlng = marker.getLatLng();
  lat = latlng.lat();
  lng = latlng.lng();
  markersLatLng[number] = new Array(lat, lng);	  
  return marker;
}

// Поиск и передвижение к найденному адресу.
function showAddress(address) {
  address = 'Пермь '+address;
  if (geocoder) {
    geocoder.getLatLng(address,function(point) {
      if (!point) {
        alert(address +' не найден.');
      } else {
        map.setCenter(point, zoom);
      }
    });
  }
}
