var Map = {
  
  initialize: function(element, markers)
  {
    if (GBrowserIsCompatible()) 
    {
      Map.map = new GMap2(document.getElementById(element));
      Map.geocoder = new GClientGeocoder();
      Map.bounds = new GLatLngBounds();
      
      Map.map.setUIToDefault();

      Map.recursiveAddMarkers(markers, 0);
    }  
  },

  recursiveAddMarkers: function(markers, i)
  {
    if(i < markers.length)
    {
      var address = markers[i].address;
      var city = markers[i].city;
      var state = markers[i].state;
      var zip = markers[i].zip_code;
      var geocode_string = address + ', ' + city + ', ' + state + ' ' + zip;

      Map.geocoder.getLatLng(geocode_string, function(point) {
        if (point)
        {
          var marker = new GMarker(point);
          var studio = markers[i];
          
          var str = '<p>';

          if (studio.status == 'soon')
            str += '<span class="bold">' + studio.name + '<span class="green"><em> &mdash; Coming Soon!</em></span></span><br />';
          else
            str += '<span class="bold">' + studio.name + '</span><br />';

          str += studio.owner_name + '<br /><br />'
              + studio.address + '<br />'
              + studio.city + ', ' + studio.state + '  ' + studio.zip_code + '<br />';

          if (studio.phone_number != '') {
            studio.phone_number = studio.phone_number.replace('/[^0-9]/', '');
            var areacode = studio.phone_number.substring(0, 3);
            var exch = studio.phone_number.substring(3, 6);
            var num = studio.phone_number.substring(6, 10);
            str += "(" + areacode + ") " + exch + "-" + num + "<br />";
          }

          if (studio.website != '')
            str += '<a href="http://www.' + studio.website + '" rel="external" target="_blank">http://www.' + studio.website + '</a><br />';



          if(studio.promotions == 1)
            str += '<strong><a href="/free-session/sign-up/' + studio.id + '/">Click here to receive your free session<br />at this studio &raquo;</a></strong><br />';

          str += "</p>";

          GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(str);
          });

          Map.map.addOverlay(marker);
          Map.bounds.extend(point);
        }
        i++;
        Map.recursiveAddMarkers(markers, i);
      });
    }
    else
    {
      Map.map.setCenter(Map.bounds.getCenter());
      Map.map.setZoom(Map.map.getBoundsZoomLevel(Map.bounds));
    }
  }
};
