/**
*  GOOGLE MAP - AROUND POINT
**/
var map = null;  
var bounds = null;
var currentMarker = null;
var mapDiv = null;
var containerDiv = null;
var clickedX = 0;
var clickedY = 0;
var isLoaded = false;

function loadMap() {
  if (GBrowserIsCompatible()) {
    mapDiv.style.background = '#fff';
    mapDiv.style.cursor = '';
    map = new GMap2(mapDiv, {logoPassive: true});
    bounds = new GLatLngBounds();
    for (var i = 0; i < businesses.length; i++) {
      bounds.extend(new GLatLng(businesses[i].lat, businesses[i].lng));
    }
    var latSpan = bounds.toSpan().lat();
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-1);
						map.addControl(new GLargeMapControl());
						//map.addControl(new GMapTypeControl());
    var newBounds = map.getBounds();
    var newLatSpan = newBounds.toSpan().lat();
    if (latSpan/newLatSpan > .90) { map.zoomOut(); }

    for (var i = 0; i < businesses.length; i++)
    {
    	//alert(businesses[i].id + ' : ' + i);
      var marker = createMarker(i, businesses[i].type);
      var latlng = marker.getLatLng();
      var pixel = map.fromLatLngToDivPixel(latlng);
      map.addOverlay(marker);
	    if(c_article_id == businesses[i].id && c_article_type == businesses[i].type) {
	     //alert(businesses[i].id + ' : ' + i);
		   select_art = i;
		
			 html = 	[	
						'<b>', businesses[select_art].name, '</b><br />', 
						 'Województwo: ', businesses[select_art].woj, '<br /> ', 
						 'Powiat: ', businesses[select_art].pow, '<br /> ',
						 'Gmina: ', businesses[select_art].gmi, '<br /> <br />',
						 businesses[select_art].link, '<br /> ',
						 businesses[select_art].www, '<br /> '
						 
					].join('');

      marker.openInfoWindowHtml(html);
		
	    }
    }

	   
	   

  }
}

/**
 * Zooms to the viewport that fits all the markers.
 */
function zoomToAll() {
  map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
}

/**
 * Creates a marker for the given business.
 * @param {Number} ind
 * @return {GMarker}
 */
function createMarker(ind, type) {
  var business = businesses[ind];

  switch(type)
  {
  case 'n':  
    var Icon = new GIcon(G_DEFAULT_ICON);
    Icon.image = "http://maps.google.com/mapfiles/kml/pal2/icon20.png";
    Icon.iconSize = new GSize(20, 20);
    Icon.shadow = '';    
    break;
  case 'g':
    var Icon = new GIcon(G_DEFAULT_ICON);
    Icon.image = "http://www.google.com/intl/en_ALL/mapfiles/marker.png";
    Icon.iconSize = new GSize(20, 34);       
    break;
  case 'a':
     var Icon = new GIcon(G_DEFAULT_ICON);
    Icon.image = "http://maps.google.com/mapfiles/kml/pal2/icon5.png";
    Icon.iconSize = new GSize(20, 20);
    Icon.shadow = '';       
    break;
  case 'w':
    var Icon = new GIcon(G_DEFAULT_ICON);
    Icon.image = "http://maps.google.com/mapfiles/kml/pal2/icon19.png";
    Icon.iconSize = new GSize(20, 20);
    Icon.shadow = '';        
    break;
  }
  markerOptions = { icon:Icon };

  var marker = new GMarker(new GLatLng(business.lat, business.lng), markerOptions);
  GEvent.addListener(marker, 'click', function() {
    marker.html = 	[	
						'<b>', business.name, '</b><br />', 
						'Województwo: ', business.woj, '<br /> ', 
						'Powiat: ', business.pow, '<br /> ',
						'Gmina: ', business.gmi, '<br /> <br />',
						 business.link, '<br /> ',
						 business.www, '<br /> '

						 
					].join('');
    currentMarker = marker;
    marker.openInfoWindowHtml(marker.html);
  });
  return marker;
}

/**
 * Formats business info into a URL-friendly version for maps url.
 * @param {Object} business
 * @return {String}
 */
function formatAddressForMaps(business) {
  var address = business.woj + ' ' + business.pow + ' ' + business.gmi + ' ' + business.zip;
  return escape(address.replace(' ', '+'));
}

/**
 * Convenience function for creating an element and assigning an id to it.
 * @param {String} elementType
 * @param {String} id
 * @return {Element} 
 */
function _cel(elementType, id) {
  var element = document.createElement(elementType);
  element.id = id;
  return element;
}

/**
 * Loads in the Maps API script. This is called after some sort of user interaction.
 * The script loads asynchronously and calls loadMap once it's in.
 */
function loadScript() {
  if (!isLoaded) {
    isLoaded = true;
    var div = document.createElement('div');
    div.className = 'message';
    div.innerHTML = 'Wczytuję mapę...';
    div.style.left = (500/2 - 53) + 'px';
    div.style.top = 500/2 + 'px'; 
    mapDiv.appendChild(div);
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://maps.google.com/maps?file=api&v=2' + 
                 '&async=2&callback=loadMap&key=ABQIAAAAHc2Y2W0Csk4lGfq0mO2p_xTyXDt5_PRZCLbhOkagwl89DZ46ORR_HIYU6da_YybgqTCUJQbHwppT_g';
    document.body.appendChild(script);
  }
}

/**
 * Sets up the gadget by setting CSS and click events.
 */
function loadMapGadget() {
  containerDiv = document.getElementById('container');
  mapDiv = document.getElementById('atrakcje_map');
  
  loadScript(); 
  mapDiv.style.cursor = 'pointer';
  /*
  var urlString = ['http://maps.google.com/staticmap?markers='];
  var markerString = [];
  for (var i = 0; i < businesses.length; i++) {
    markerString.push(businesses[i].lat + ',' + businesses[i].lng + ',red');
  }
  
  urlString.push(markerString.join('|'));
  urlString.push('&size=500x300');
  urlString.push('&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxSPW5CJgpdgO_s4yyMovOaVh_KvvhSfpvagV18eOyDWu7VytS6Bi1CWxw');
  mapDiv.style.background = 'url(\'' + urlString.join('') + '\')';
	*/
}
