var flickrCols = 0;
var flickrRows = 0;
var flickrCount = 0
var flickrAppletId = null;
var flickrApiKey = null;
var flickrUserId = null;
var flickrGotSets = false;
var flickrSets = null;
var flickrPhotoSetId = null;
var flickrUseSet = false;
var flickrLastSet = null;

function flickrGetUserPhotos(appletid,api_key,user_id,cols,rows,pagename) {

	perpage = cols * rows;

	cells = $('img.FlickrThumb');
	cells.each( function(n,i) {
		$(i).attr("src","/media/images/fetching100x100.png");

	});
	if (!flickrPhotoSetId) {
		url = "http://api.flickr.com/services/rest/?api_key=" + api_key + "&format=json&method=flickr.photos.search&user_id=" + user_id + "&per_page=" + perpage
	} else {
		url = "http://api.flickr.com/services/rest/?api_key=" + api_key + "&format=json&method=flickr.photosets.getphotos&user_id=" + user_id + "&per_page=" + perpage + "&photoset_id=" + flickrPhotoSetId
	}
	if(pagename) {
		url = url + "&page=" + pagename;
	}
	script = $("<script/>");
	script.attr('src',url);
	flickrAppletId = appletid
	container = $("#flickr"+appletid);
	flickrSets = $('#flickrsets'+appletid);
	flickrCols = cols;
	flickrRows = rows;
	flickrCount = 0;
	flickrApiKey = api_key;
	flickrUserId = user_id;
	container.append(script);

	if(flickrGotSets == false && flickrUseSet == false) {
		flickrGotSets = true;
		url="http://api.flickr.com/services/rest/?api_key=" + api_key + "&format=json&method=flickr.photosets.getlist&user_id=" + user_id;
		script = $("<script/>");
		script.attr('src',url);
		container.append(script);
	}
}

function jsonFlickrApi(result) {

	if (result.stat != "ok") {
		alert("Flickr Error: " + result.message);
		return;
	}

	if(result.photosets) {
		sets = $(result.photosets.photoset);
		setdiv = $("<div/>");
		setdiv.css("margin-top","2px");
		setdiv.html("Photo Sets");
		flickrSets.css("background","#222222");
		flickrSets.append(setdiv);
		flickrSets.append("<hr/>");

		sets.each( function(i,set) {
			setdiv = $("<div style='margin:0;cursor:pointer;padding:3px;border-right:solid 1px #888888;'/>");
			setdiv.html(set.title._content + ' (' + set.photos + ')');
			flickrSets.append(setdiv);
			setdiv.click( function(e) {
				sdiv = $(e.currentTarget);
				sdiv.css("background","#000000");
				sdiv.css("border-right","1px solid #000000");
				sdiv.css("border-top","1px solid #888888");
				sdiv.css("border-bottom","1px solid #888888");
				sdiv.css("border-left","1px solid #888888");
				if(flickrLastSet) {
					flickrLastSet.css("background","none");
					flickrLastSet.css("border-right","1px solid #888888");
					flickrLastSet.css("border-top","none");
					flickrLastSet.css("border-bottom","none");
					flickrLastSet.css("border-left","none");
				}
				flickrLastSet = sdiv;
				flickrPhotoSetId = set.id;
				flickrGetUserPhotos(flickrAppletId, flickrApiKey, flickrUserId, flickrCols, flickrRows, 1);
			});
			setdiv.mouseover( function(e) {
				sdiv = e.currentTarget;
				$(sdiv).css("color","#ffff00");
			});
			setdiv.mouseout( function(e) {
				sdiv = e.currentTarget;
				$(sdiv).css("color","#ffffff");
			});
		});
	}

	if (result.photos || result.photoset) {

		if(result.photos) {
			photos = $(result.photos.photo);
			pNum = parseInt(result.photos.page);
		}
		if(result.photoset) {
			photos = $(result.photoset.photo);
			pNum = parseInt(result.photoset.page);

		}

		next = $("#flickr" + flickrAppletId + "Next");
		prev = $("#flickr" + flickrAppletId + "Prev");

		if (next) {
			next.unbind();
			next.click( function() {
				flickrGetUserPhotos(flickrAppletId, flickrApiKey, flickrUserId, flickrCols, flickrRows, pNum + 1);
			});
		}
		if (prev) {
			prev.unbind();
			prev.click( function() {
				flickrGetUserPhotos(flickrAppletId, flickrApiKey, flickrUserId, flickrCols, flickrRows, pNum -1);
			});
		}

		flickrCount = 0;
		if (photos.size() > 0) {

			photos.each(flickrDisplayPhoto);
			var t = $("#ftarg" + flickrAppletId);
			t.css('width',"auto");
			var frameDim = {
				width:$('#imgFrame').width(),
				height:$('#imgFrame').height()
			};

			t.src = "http://farm" + photos[0].farm + ".static.flickr.com/" + photos[0].server + "/" + photos[0].id + "_" + photos[0].secret + ".jpg";
			var imgDim = {
				width:t.width(),
				height:t.height()
			};

			if(imgDim.width > frameDim.width) {
				t.css("width","100%");
			}
			var d = $("#fdesc" + flickrAppletId)
			d.html(photos[0].title)
		}
	}

	cells = $('img.FlickrThumb');
	cells.each( function(n,i) {
		if ($(i).attr('src').indexOf("fetching100x100.png") > 0) {
			$(i).attr('src',"/media/images/blank100x100.png");
		}
	});
}

function flickrSetPhotoset(sid) {
	flickrPhotoSetId = sid;
	flickrUseSet = true;
}

function flickrDisplayPhoto(i,photo) {
	var r = Math.floor(flickrCount / flickrCols);
	var c = flickrCount - (r * flickrCols)

	img = $("#fimg" + flickrAppletId + "-" + r + "-" + c);
	var src = "http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_t.jpg";
	img.attr("src",src);
	var a = $("#fa" + flickrAppletId + "-" + r + "-" + c);
	img.unbind();
	img.click( function() {
		var t = $("#ftarg" + flickrAppletId);
		t.css("width","auto");
		var frameDim = {
			width:$('#imgFrame').width(),
			height:$('#imgFrame').height()
		};

		var src = "http://farm" + photo.farm + ".static.flickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + ".jpg";
		t.attr("src",src);
		var imgDim = {
			width:t.width(),
			height:t.height()
		};

		if(imgDim.width > frameDim.width) {
			t.css("width","100%");
		}
		var d = $("#fdesc" + flickrAppletId)
		d.html(photo.title)
	});
	flickrCount++;

}
