//<![CDATA[
var addresses = new Array();
    var info = new Array();
    var count = 0;
    var azienda = new Array();
    var num = 0;
    function creabusinesses(address ,prmName, prmAddress, prmCity, prmCountry, prmZip, prmOffice,prmState){
      addresses[count]= address;
      info[count] = {
          name: prmName,
          street: prmAddress,
          city: prmCity,
          state: prmState,
          zip: prmZip,
          country: prmCountry,
          phone: prmOffice};
      count++;
      geocoder1 = new GClientGeocoder();
      geocoder1.getLocations(address, dammilatleng);
    }


    var map;
    var geocoder = null;
    var addressMarker;


    var numGeocoded = 0;

    function geocodeAll() {
      if (numGeocoded < addresses.length) {
        geocoder.getLocations(addresses[numGeocoded], addressResolved);
      }
    }

   function addressResolved(response) {
     var delay = 0;
     if (response.Status.code == 620) {
       // Too fast, try again, with a small pause
       delay = 500;
     } else {
       if (response.Status.code == 200) {
         // Success; do something with the address.
         place = response.Placemark[0];
         point = new GLatLng(place.Point.coordinates[1],
                             place.Point.coordinates[0]);
         var marker = createMarker(numGeocoded, point);
         map.addOverlay(marker);
       }
       // Move onto the next address; this skips bad addresses, too.
       numGeocoded += 1;
     }
     window.setTimeout(geocodeAll, delay);
   }

//function createMarker(ind ,punto) {
//    var business = info[ind];
//    var marker = new GMarker(punto);
//    currentMarker = marker;
//    return marker;
//}

function createMarker(ind ,punto) {
    var business = info[ind];
  var marker = new GMarker(punto);
  GEvent.addListener(marker, 'click', function() {
    marker.html = [business.street].join('');
    currentMarker = marker;
    marker.openInfoWindowHtml(marker.html);
  });
  return marker;
}

function formatAddressForMaps(business) {
  var address = business.street + ' ' + business.city + ' ' + business.state + ' ' + business.zip;
  return escape(address.replace(' ', '+'));
}


 window.onload = function load() {

      if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map"));
        bounds = new GLatLngBounds();
        var latitudine = 0;
        var longitudine = 0;
        for (var i = 0; i < azienda.length; i++){
            if(azienda[i]){
				bounds.extend(new GLatLng(azienda[i]["lat"], azienda[i]["lng"]));
				latitudine = azienda[i]["lat"];
				longitudine = azienda[i]["lng"];
//				alert(azienda[i]["punto"])
//				geocoder.getLocations(addresses[numGeocoded], addressResolved);
//				place = response.Placemark[0];
//	            point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
            }
        }

        var latSpan = bounds.toSpan().lat();
        //map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		//map.setCenter(new GLatLng(42.867660853912945, 11.061859130859375), 13);
		//map.setCenter(new GLatLng(latitudine, longitudine), 13);
		//map.setCenter(point, 13);
		map.setCenter(new GLatLng(42.769952, 10.719431), 13);



        var newBounds = map.getBounds();
        var newLatSpan = newBounds.toSpan().lat();
//        if (latSpan/newLatSpan > .90) { map.zoomOut(); }
        map.zoomOut();
        map.zoomOut();
        map.zoomOut();
        map.zoomOut();
        /*map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(47.61630, -122.34546), 13);*/
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setMapType(G_NORMAL_MAP);

        geocoder = new GClientGeocoder();
        window.setTimeout(geocodeAll, 50);
      }
    }

    function dammilatleng(response) {
     var delay = 0;
     if (response.Status.code == 620) {
       // Too fast, try again, with a small pause
       delay = 500;
     } else {
       if (response.Status.code == 200) {
         // Success; do something with the address.
         place = response.Placemark[0];
         point = new GLatLng(place.Point.coordinates[1],
                             place.Point.coordinates[0]);
         azienda[num] = { lat: point.y, lng: point.x, address:addresses[num], punto: point};
       }
     }
     num++;
   }




