var baseUrl = '/';
var map;
var travelMode = 1;
var directions;
var map_started = false;

var planer_autostart = false;
var planer_addr;

var icons = Array();
var prototype_icon = new GIcon();
prototype_icon.image = "http://maps.google.com/mapfiles/kml/pal2/icon4.png";
prototype_icon.iconSize = new GSize(19, 18);
prototype_icon.infoWindowAnchor = new GPoint(16,16);
prototype_icon.iconAnchor = new GPoint(16,16);


function addIcon(icon, keywords)
{
  var ico;
  
  if(icon instanceof GIcon)
  {
    ico = icon; 
  }
  else
  {
    ico = new GIcon(prototype_icon);
    ico.image = icon;
  }  

  for(var i in keywords)
  {
    icons[keywords[i]] = ico;
  }
}

function startMap()
{
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_artystyczne.png', {0: 'artystyczne', 1: 'wydarzenia artystyczne'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_gastronomia.png', {0: 'gastronomia'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_hotele.png',      {0: 'hotele',      1: 'baza noclegowa'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_muzea.png',       {0: 'muzea',       1: 'muzea i galerie'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_parki.png',       {0: 'parki',       1: 'parki rozrywki'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_plener.png',      {0: 'plener',      1: 'atrakcje plenerowe'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_rezerwaty.png',   {0: 'rezerwaty'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_sezonowe.png',    {0: 'sezonowe',    1:'atrakcje sezonowe'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_sport.png',       {0: 'sport',       1: 'sport i rekreacja'});
  addIcon('http://test.bluebox.rm-it.pl/szwendobylscy/public/img/gmaps_icons/ico_zabytki.png',     {0: 'zabytki'});
  
  map = new GMapsAPI();
  map.place = document.getElementById('gmap');
  map.setIcons(icons);
  map.initialize();
  map.run();
  directions = new GMapsDirections(map.getMapObject(), document.getElementById("planer2"));
}

function showMap(url, data, func)
{
  $(".close").trigger("click");
  $.post(url, data, function(data){ 
      $("body").append(data);
      if(func) func();      
  });
}

function mapSearch()
{
  map.search('hotele');
  map.search('parki');
  map.search('gastronomia');
  map.search('sport');
  map.search('atrystyczne');
  map.search('muzea');
  map.search('zabytki');
  map.search('rezerwaty');
  map.search('plener');
  map.search('sezonowe');
}

function reloadMarkers() {
      map.getMapObject().clearOverlays();      
      $(".marker-list").load(baseUrl + "ajax/planer/getallmarkers");
      $("#sortable").sortable("refresh");
      $.getJSON(baseUrl + "ajax/planer/getallmarkersjson",
      function(data) {
        directions.clear();
        for(var d in data)
        {
          directions.setDirection(data[d], d);
        }
        directions.calculateRoute(travelMode);
			});
}

function addMarker(address) {
   var geocoder = map.getGeocoder();
   geocoder.getLocations(address+', Polska', function(response){   
   if(response.Status.code!=200)
   {
      var data = "<div>Miejscowość '"+address+"' nie istnieje lub została błędnie wpisana!</div>";
      $(data).dialog("destroy");

      $(data).dialog({
          show: 'blind',
          hide: 'blind',
          modal: true,
          draggable: false,
          resizable: false,
          buttons: {
              Zamknij: function(){
                  $(this).dialog('close');
              }
          }
      });
      return false;
   }
   else
   {
     $.post(baseUrl + "planer/add/", {
      address : response.Placemark[0].address }, function(){
        reloadMarkers(travelMode);
      });
   }
   });
}

function removeMarker(idMarker) {
	$.get(baseUrl + "planer/remove?id="+ idMarker +"");
  reloadMarkers();
}

function clearRoute(idMarker) {
	$.get(baseUrl + "planer/clear/");
  reloadMarkers();
}
