
// Zmienne globalne
var map;
var photos;
var currentPhoto=0;
var marker;

// Ustawienie zdarzeń load i unload
aaManageEvent(window,"load",setUp);
aaManageEvent(window,"unload",GUnload);

// Jeśli przeglądarka jest zgodna z mapą, należy utworzyć mapę i pobrać zdjęcia na podstawie
// identyfikatora użytkownika; używane są ustawienia domyślne - pobieranie informacji o 100 zdjęciach
function setUp() {
  var hash = window.location.hash;
  if (hash) {
    var subLoc = hash.split("#")[1];
    currentPhoto = parseInt(subLoc);
  }
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(38.627952, -90.1843880), 13);
    aaManageEvent(document.getElementById('button'),'click',loadPhoto);
    aaAddScript("http://api.flickr.com/services/rest/?method=flickr.photos.search&user_id=69562477@N00&api_key=98dc95d53bbd454ad501591bbc53532a&format=json&jsoncallback=processPhotos");
  }
}

// Globalne przypisywanie zdjęć; należy najpierw je wczytać
function processPhotos(obj) {
  photos = obj.photos.photo;
  getPhoto();
}

function loadPhoto(evnt) {
  evnt = evnt ? evnt : window.event;
  aaCancelEvent(evnt);
  getPhoto(); 
  return false;
}

// Pobieranie adresu URL zdjęcia;
// pobieranie współrzędnych wykonania zdjęcia
function getPhoto() {
  var photo = photos[currentPhoto];
  var pic = "http://farm" + photo.farm + ".static.flickr.com/" +
            photo.server + "/" + photo.id + "_" + photo.secret + ".jpg";

  // Określenie 'lokalizacji'
  window.location.hash = currentPhoto;
  aaElem("image").src=pic;
  aaElem("required").innerHTML = '<a href="http://flickr.com/photos/69562477@N00/' + photo.id + '"/">Odnośnik do zdjęcia na witrynie Flickr</a>';
  aaAddScript("http://api.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&photo_id=" + photo.id + "&api_key=98dc95d53bbd454ad501591bbc53532a&format=json&jsoncallback=placeMarker");

  // Aktualizacja licznika zdjęć i zerowanie go, jeśli jego wartość przekracza długość tablicy zdjęć
  currentPhoto++;
  if (currentPhoto == photos.length) currentPhoto = 0;
}

// Usunięcie istniejącego wyróżnika i dodanie nowego
function placeMarker(obj) {
  var point = new GLatLng(parseFloat(obj.photo.location.latitude),
                          parseFloat(obj.photo.location.longitude));
  if (marker) map.removeOverlay(marker);
  marker = new GMarker(point);
  map.addOverlay(marker);
  map.setCenter(point, 13);
}


