var geocoder = null;

$(document).ready(function() {

	window.applyLatLng = function(obj,latlng) {
		var map = obj.data("map");
		map.setCenter(latlng);
		var marker = obj.data("marker");
		if (marker == null) {
			marker = new google.maps.Marker({
			position:map.getCenter(),
			map:map
		});
		}
		else {
			marker.setPosition(map.getCenter());
		}
	}

	window.drawMap = function() {
		$("div[data-class=googlemap][data-loaded=0]").each(function() {
			var self = $(this);
			var myOptions = {
				zoom: 15,
				center: new google.maps.LatLng(59.974772,30.308533),
				mapTypeId: google.maps.MapTypeId.ROADMAP
			};

			var map = new google.maps.Map(self.get(0),myOptions);
			self.attr("data-loaded",1);
			self.data("map",map);
			if (geocoder == null) {
				geocoder = new google.maps.Geocoder();
			}
			if (self.attr("data-address").length > 0) {
				geocoder.geocode({address:self.attr("data-address")},function(results,status) {
					if (status == google.maps.GeocoderStatus.OK) {
						applyLatLng(self,results[0].geometry.location);
					}
					else {
						self.css("display","none");
					}
				});
			}
		});
	}

	window.initializeMap = function() {
		if ($("#map").length > 0) {
			var script = document.createElement("script");
			script.type = "text/javascript";
			script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&language=ru&callback=drawMap";
			document.body.appendChild(script);
		}
	}

	window.initializeMap();
});

