OnLoad = function() {
	flickr = new FlickrLatestSets('http://' + document.domain + '/blog/flickr.php', 'flickr-latest-sets');
	flickr.LoadSets();
}

Event.observe(window, 'load', OnLoad);

FlickrLatestSets = function(url, nodeId) {
	this.url = url;
	this.node = document.getElementById(nodeId);
	this.delayNode = null;
	
	this.LoadSets = function() {
		var request = new AsyncHTTPRequest();
		request.SetCallback(this, 'LoadSetsCallback', 'DelayCallback');
		request.Open('GET', this.url);
	}
	
	this.DelayCallback = function(state) {
		if (state == 'start') {
			if (this.delayNode == null) {
				this.delayNode = document.createElement('div');
				this.delayNode.appendChild(document.createTextNode('Loading...'));
				this.delayNode.setAttribute('id', 'flickr-loader');
			}
			this.node.appendChild(this.delayNode);
		} else if (state == 'end') {
			if (this.delayNode != null) {
				this.node.removeChild(this.delayNode);
				this.delayNode = null;
			}
		} else if (state == 'error') {
			if (this.delayNode != null) {
				this.node.removeChild(this.delayNode);
				this.delayNode = null;
			}
			this.delayNode = document.createElement('div');
			this.delayNode.appendChild(document.createTextNode('Error loading flickr sets'));
			this.delayNode.setAttribute('id', 'flickr-error');
			this.node.appendChild(this.delayNode);
		}
	}
	
	this.LoadSetsCallback = function(doc) {
		if (!doc) {
			this.DelayCallback('error');
		} else {
			var errors = doc.getElementsByTagName('error');
			if (errors.length >= 1) {
				this.DelayCallback('error');
			} else {
				var sets = doc.getElementsByTagName('set');
				for (var i = 0; i < sets.length; i++) {
					var link = document.createElement('a');
					link.setAttribute('href', sets[i].getAttribute('url'));
					var img = document.createElement('img');
					img.setAttribute('src', sets[i].getAttribute('img'));
					img.setAttribute('alt', sets[i].firstChild.nodeValue);
					link.appendChild(img);
					this.node.appendChild(link);
				}
			}
		}
	}
}
