/*
*****************************************************************************
FJB - An unobtrusive, navigable flickr badge
Original script written by Christian Heilmann (Thanks Christian!)
http://icant.co.uk/sandbox/flickr/

Script modifications by Ryan Allen (www.kxmode.com)

Change log:

2009/09/08
- removed obfuscation to make script easier to read
- abstract variable fjb renamed to flickr

*****************************************************************************
*/

flickr = {
	// begin: property changes
	pics: 6,
	nextLabel: 'next',
	prevLabel: 'prev',
	linkID: 'flickrlink',
	largePicID: 'flickrshot',
	navClass: 'nav',
	loadingMessage: 'Loading images...',
	fullImageLink: 'See full image on flickr',
	// end: property changes
	
ls:null, current:1, init:function() {
		flickr.srcLink = document.getElementById(flickr.linkID);
		if(!flickr.srcLink) { return; }
		flickr.srcLink.innerHTML = flickr.loadingMessage;
		var furl = flickr.srcLink.href.replace(/.*photos\//,'');
		var url = 'http://flickr.com/services/feeds/photos_public.gne?id=' + furl + '&format=json';
		var script = document.createElement('script');
		script.type = 'text/javascript';
		script.src = url;
		document.getElementsByTagName("head")[0].appendChild(script);
	},
	compute:function(obj) {
		flickr.stream = document.createElement('ul');
		flickr.stream.id = flickr.linkID;
		var output = '',temp = '';
		for(i in obj.items) {
			temp = obj.items[i].media.m;
			temp = temp.replace(/_m.jpg/g,'_s.jpg');
			output += '<li><a href="'+obj.items[i].link + '" title="'+obj.items[i].title + '" onclick="flickr.show(this);return false"><img src="' + temp+'" alt="'+obj.items[i].title+'" /></a></li>';
		}
		var rep = flickr.srcLink.parentNode.nodeName.toLowerCase() === 'p' ? flickr.srcLink.parentNode : flickr.srcLink;
		rep.parentNode.replaceChild(flickr.stream,rep);
		flickr.stream.innerHTML = output;
		var prevlink = '<li class="'+flickr.navClass+'"><a href="#" onclick="flickr.navigate(-1);return false">'+flickr.prevLabel+'</a></li>';
		flickr.stream.innerHTML = prevlink+flickr.stream.innerHTML;
		var nextlink = '<li class="'+flickr.navClass+'"><a href="#" onclick="flickr.navigate(1);return false">'+flickr.nextLabel+'</a></li>';
		flickr.all = obj.items.length;
		flickr.stream.innerHTML += nextlink;
		for (var i = 1; i <= flickr.all-1; i++) {
			flickr.stream.getElementsByTagName('li')[i].style.display = 'none';
		}
		flickr.navigate(0);
	},
	navigate:function(offset) {
		for (var i = 1; i <= flickr.all; i++) {
			flickr.stream.getElementsByTagName('li')[i].style.display = 'none';
		}
		var change = flickr.pics*offset;
		flickr.current += change;
		for(var i = flickr.current; i < flickr.current+flickr.pics; i++) {
			if(flickr.stream.getElementsByTagName('li')[i]) {
				flickr.stream.getElementsByTagName('li')[i].style.display = 'block';
			}
		}
		var fl = flickr.stream.getElementsByTagName('a')[0];
		fl.style.display = flickr.current == 1 ? 'none' : 'block';
		var ll = flickr.stream.getElementsByTagName('a')[flickr.all+1];
		ll.style.display = flickr.current > flickr.all-flickr.pics ? 'none' : 'block';
	},
	show:function(o) {
		if (flickr.ls === null) {
			flickr.ls = document.createElement('div');
			document.body.appendChild(flickr.ls);
			flickr.ls.id = flickr.largePicID;
			flickr.ls.style.position = 'absolute';
		}
		var prev = '<p><a href="'+o.href+'" target="_blank">'+flickr.fullImageLink+'</a></p>';
		flickr.ls.innerHTML = '<a href="#" onclick="this.parentNode.style.display=\'none\';this.parentNode.parent.focus();return false" class="flickrcloser">X</a><h4>'+o.title+'</h4><a href="#" onclick="this.parentNode.style.display=\'none\';this.parentNode.parent.focus();return false">'+o.innerHTML.replace(/_s.jpg/,'_m.jpg')+'</a>'+prev;
		flickr.ls.style.display = 'block';
		var y = 0;
		if (self.pageYOffset) {
			y = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			y = document.documentElement.scrollTop;
		} else if (document.body) {
			y = document.body.scrollTop;
		}
		flickr.ls.style.top = y+'px';
		flickr.ls.parent = o;flickr.ls.getElementsByTagName('a')[0].focus();
	},
	addLoadEvent:function(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	}
};
function jsonFlickrFeed(obj) {
	flickr.compute(obj);
}
flickr.addLoadEvent(flickr.init);
