 function initialize() {
      var mapOptions = {
        center: new google.maps.LatLng(44.557, 27.013),
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      var map = new google.maps.Map(document.getElementById('map'), mapOptions);
      var input = document.getElementById('searchTextField');
      var autocomplete = new google.maps.places.Autocomplete(input);
      autocomplete.bindTo('bounds', map);
      var infowindow = new google.maps.InfoWindow();
      var marker = new google.maps.Marker({
        map: map
      });
      google.maps.event.addListener(autocomplete, 'place_changed', function() {
        infowindow.close();
        var place = autocomplete.getPlace();
        if (place.geometry.viewport) {
          map.fitBounds(place.geometry.viewport);
        } else {
          map.setCenter(place.geometry.location);
          map.setZoom(15);  // Why 17? Because it looks good.
        }
        var image = new google.maps.MarkerImage(
            place.icon, new google.maps.Size(35, 35),
            new google.maps.Point(0, 0), new google.maps.Point(17, 34),
            new google.maps.Size(30, 30));
        marker.setIcon(image);
        marker.setPosition(place.geometry.location);
        var address = '';
        if (place.address_components) {
          address = [
            (place.address_components[0] &&
             place.address_components[0].short_name || '')].join(' ');
        }
        infowindow.setContent('<div><b>' + place.name + '</b><br>' + address);
        infowindow.open(map, marker);
      });
      // Sets a listener on a radio button to change the filter type on Places
      // Autocomplete.
      var setupClickListener = function(id, types) {
        var radioButton = document.getElementById(id);
        google.maps.event.addDomListener(radioButton, 'click', function() {
          autocomplete.setTypes(types);
        });
      }
      setupClickListener('changetype-all', []);
    }
    google.maps.event.addDomListener(window, 'load', initialize);
