/*

http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx=-180&miny=-90&maxx=180&maxy=90&size=medium

for "order" you can use:

    * popularity
    * upload_date

for "set" you can use:

    * public (popular photos)
    * full (all photos)
    * user ID number

for "size" you can use:

    * medium (default value)
    * small
    * thumbnail
    * square
    * mini_square
*/
function getPanoramioImg(lat,lng,offset,size_,CB) {
	logitA("getPanoramioImg:",lat,lng,offset,size_,CB);
	/*
    * minx = center_ln - epsilon
    * miny = center_lt - epsilon2
    * maxx = center_ln + epsilon
    * maxy = center_lt + epsilon2
    1 graad = +- 100km maar kan sterk varieren.
	*/
	var minx = lng - offset;
	var miny = lat - offset;
	var maxx = lng + offset;
	var maxy = lat + offset;
	var size = "small"; // small,medium,thumbnail
	if (size_ == "medium") {
		size = "medium";
	} 	
	var getstr = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy+"&size="+size+"&callback=?";
	logit("getPanoramioImg:"+getstr);
	
	$.getJSON(getstr,{},
    function(data){
    	if (data.count < 1) {
    		// Try for a greater area
  			logit("getPanoramioImg not found for offset:"+offset);
    		if (offset < 2) {
    			getPanoramioImg(lat,lng,(offset*10),size_,CB);
    		} else {
    			if (CB) CB(null);
    		}
    	} else {
	    	var nr_img = data.photos.length;
	    	// copy to array which will be same for Panoramion/Flickr/Picasa
	    	var imgA = [];
	    	if (nr_img > 3) {nr_img = 3;}  // maximum 4 images
    		for (var i=0; i<nr_img; i += 1) {
    			var img = {
    				title	:data.photos[i].photo_title,
    				src		:data.photos[i].photo_file_url,
    				photo_url:data.photos[i].photo_url,
    				owner_name :data.photos[i].owner_name,
    				owner_url:data.photos[i].owner_url,
    				lat		:data.photos[i].latitude,
    				lng		:data.photos[i].longitude
    			};
    			imgA.push(img);
    		}
	    	//var pic = rand(0,(nr_img - 1));
	    	//logit("count="+nr_img+"/"+pic);
	      //CB(data.photos[pic].photo_file_url);
	      if (CB) CB(imgA);
	    }
  });
}

var getFlickrImg_CB = null;
var getFlickrImg_offset = 0;
var getFlickrSize = "";
function jsonFlickrApi(a) {
	logit("jsonFlickrApi:"+a.photos.total);
	if (a.photos.total < 1) {
		// Try for a greater area
		logit("getFlickrImg not found");
		/*
		if (offset < 2) {
			getFlickrImg(lat,lng,(offset*10),getFlickrImg_CB);
		} else {
			getFlickrImg_CB(null);
		}
		*/
		getFlickrImg_CB(null);
	} else {
  	var nr_img = a.photos.photo.length;
  	// copy to array which will be same for Panoramion/Flickr/Picasa
  	var imgA = [];
  	if (nr_img > 4) {nr_img = 4;}  // maximum 4 images
		for (var i=0; i<nr_img; i += 1) {
	  	var photo = a.photos.photo[i];
 		 	var src = ("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + getFlickrSize);
	  	logit("getFlickrImg url:"+src);

			var img = {
				title	:photo.title,
				src		:src,
				photo_url:"http://www.flickr.com/photos/"+photo.owner+'/'+photo.id,
				owner_name :photo.ownername,
				owner_url :"http://www.flickr.com/people/"+photo.owner,
				lat		:photo.latitude,
				lng		:photo.longitude
			};
			imgA.push(img);
		}
    getFlickrImg_CB(imgA);
  }
}

var histFlickrImg = [];

function getFlickrImg(lat,lng,offset,tag,size,CB) {
	logitA("getFlickrImg",lat,lng,offset,tag);
	var display_nr = 3;

	getFlickrImg_CB = CB;
	//getFlickrImg_offset = offset
	// 3aa077b6be24b2fac0524b7c1fe39f59
	//("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_" + "s.jpg");
	//("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_" + "m.jpg");
	var minx = lng - offset;
	var miny = lat - offset;
	var maxx = lng + offset;
	var maxy = lat + offset;
	if (size == "medium") {
		getFlickrSize = ".jpg";
	} else {
		getFlickrSize = "_m.jpg";
	}		
	//var size = "small"; // medium,thumbnail
	//var getstr = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy+"&size="+size+"&callback=?";
	// &nojsoncallback=1 does not work with jquery
	if (tag != "") {
		// if the tag has been displayed before, do not display the same images, but the next 10
		if (typeof(histFlickrImg[tag]) != "undefined") {
			histFlickrImg[tag] += 1;
		} else {
			histFlickrImg[tag] = 1;
		}
		var page_nr = histFlickrImg[tag];
		
		var getstr = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=3aa077b6be24b2fac0524b7c1fe39f59&tags="+tag+"&text=&accuracy=11&content_type=1&media=photos&sort=relevance&per_page="+display_nr+"&page="+page_nr+"&tag_mode=all&extras=geo,owner_name&format=json&callback=?";
	} else {
		var getstr = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=3aa077b6be24b2fac0524b7c1fe39f59&extras=geo,owner_name&tags=&sort=interestingness-desc&per_page=30&bbox=" + minx + "," + miny + "," + maxx + "," + maxy + "&format=json&callback=?";
	}
	logit("getFlickrImg:"+getstr);

	$.getJSON(getstr,{},
    function(data){
    	logit("Received flickr data");
  });
}

var histPicImg = [];

function getPicasaImg(lat,lng,offset,tag,size,CB) {
	logitA("getPicasaImg",lat,lng,offset,tag,size);
	var display_nr = 3;
	//getPicasaImg_offset = offset
	// 3aa077b6be24b2fac0524b7c1fe39f59
	//("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_" + "s.jpg");
	//("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_" + "m.jpg");
	var minx = lng - offset;
	var miny = lat - offset;
	var maxx = lng + offset;
	var maxy = lat + offset;
	//var size = "small"; // medium,thumbnail
	//  "http://picasaweb.google.com/data/feed/api/all?kind=photo&tag=" + this.tag + "&bbox=" + 
  //  options.west + "," + options.south + "," + options.east + "," + options.north + 
  //  "&max-results=30&alt=json-in-script&";
  // 200, 288, 320, 400, 512, 576, 640, 720, 800
	if (size == "medium") {
		imgmax = 400;
	} else {
		imgmax = 288;
	}		
	var maxI = display_nr;

	if (tag != "") {
		// if the tag has been displayed before, do not display the same images, but the next 10
		if (histPicImg[tag]) {
			histPicImg[tag] += display_nr;
		} else {
			histPicImg[tag] = 1;
		}
		var startI = histPicImg[tag];
		
		var getstr = "http://picasaweb.google.com/data/feed/api/all?kind=photo&tag="+tag+"&start-index="+startI+"&max-results="+maxI+"&imgmax="+imgmax+"&alt=json&callback=?";
	} else {
		var getstr = "http://picasaweb.google.com/data/feed/api/all?kind=photo&box=" + minx + "," + miny + "," + maxx + "," + maxy + "&max-results=30&imgmax="+imgmax+"&alt=json&callback=?";
	}
	logit("getPicasaImg:"+getstr);

	$.getJSON(getstr,{},
    function(data){
    	var nr_tot = parseInt(data.feed.gphoto$crowded_length.$t);
    	logit("Received Picasa data:"+nr_tot);
    	if (nr_tot < 1) {
    		// Try for a greater area
  			logit("getPanoramioImg not found for offset:"+offset);
    		if (offset < 0) {
    			//getPanoramioImg(lat,lng,(offset*10),CB);
    		} else {
    			CB(null);
    		}
    	} else {
 		  	var nr_img = data.feed.entry.length;
		  	// copy to array which will be same for Panoramion/Flickr/Picasa
		  	var imgA = [];
		  	if (nr_img > display_nr) {nr_img = display_nr;}  // maximum 4 images
				for (var i=0; i<nr_img; i += 1) {
			  	var photo = data.feed.entry[i];
		 		 	//var src = ("http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + getFlickrSize);
			  	logit("getPicasaImg url:"+photo.content.src);
			  	var gps = '';
			  	if (photo.georss) {
			  		gps = photo.georss$where.gml$Point.gml$pos.$t;
			  		logit("gps:"+gps);
			  	}
			  	var title_ = photo.gphoto$albumctitle.$t;
			  	if (photo.summary) {
			  		title_ += ","+photo.summary.$t;
			  	}
			  	
					var img = {
						title	:title_,
						src		:photo.content.src,
						photo_url:photo.link[1].href,
						owner_name :photo.author[0].name.$t,
						owner_url :photo.author[0].uri.$t,
						lat		:gps,
						lng		:gps
					};

					imgA.push(img);
				}
		    CB(imgA);
    		/*
		   	var nr_img = data.feed.entry.length;
	    	var pic = rand(0,(nr_img - 1));
	    	logit("count="+nr_img+"/"+pic);
	    	var img = data.feed.entry[pic].content.src;
	      CB(img);
	      */
	    }

  });
}

