getFlickr={
	html:[],
	tags:[],
	triggerClass:'getflickrphotos',
	loadingMessage:'loading...',
	viewerID:'flickrgetviewer',
	closeMessage:'close',
	closePhotoMessage:'click to close',
	photoCount:7,
	leech:function(tag, func, num){
		getFlickr.func = func;
		getFlickr.tag = tag;
		getFlickr.photoCount = num;
		var s = document.createElement('script');
		s.src = 'http://flickr.com/services/feeds/photos_public.gne?tags=' + tag + '&format=json';
		document.getElementsByTagName('head')[0].appendChild(s);
	},
	getLinks:function(){
		var links = document.getElementsByTagName('a');
		for(var i=0,j=links.length;i<j;i++){
			if(links[i].className.indexOf(getFlickr.triggerClass)!=-1){
				getFlickr.addEvent(links[i],'click',getFlickr.getData);
				// friggin fix this now Apple!
				if((/Safari|Konqueror|KHTML/gi).test(navigator.userAgent)){
					links[i].onclick=function(){return false;}
				}
			}
		}
	},
	getData:function(e){
		var x = getFlickr.getTarget(e);
		if(x.nodeName.toLowerCase() != 'a'){x = x.parentNode}
		var tag = x.href.match(/([\w|\+]+)?\/?$/);
		getFlickr.currentLink = x;
		getFlickr.currentText = x.innerHTML;
		x.innerHTML = getFlickr.loadingMessage;
		getFlickr.leech(tag,'getFlickr.feedLink');
		getFlickr.cancelClick(e);
	},
	feedLink:function(){
		getFlickr.currentLink.innerHTML = getFlickr.currentText;
		var viewer = document.getElementById(getFlickr.viewerID);
		if(viewer === null){
			var viewer = document.createElement('div');
			viewer.id = getFlickr.viewerID;
			document.body.appendChild(viewer);
		} else {
			viewer.innerHTML = '';
		}
		var closer = document.createElement('a');
		closer.href = '#';
		closer.innerHTML = getFlickr.closeMessage;
		closer.onclick = function(){
			this.parentNode.parentNode.removeChild(this.parentNode);
			return false;
		}
		viewer.appendChild(closer);
		var ul = document.createElement('ul');
		ul.innerHTML = getFlickr.html[getFlickr.tag].replace(/_m/g,'_s');
		viewer.appendChild(ul);
		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;
		}
		viewer.style.top = y+'px'; 
		getFlickr.addEvent(ul, 'click', getFlickr.showPic);
	},
	showPic:function(e){
		var t = getFlickr.getTarget(e);
		if(t.nodeName.toLowerCase()==='img'){
			var p = document.getElementById('flickrgetviewer');
			var s = t.src.replace('_s','_m');
			var x = t.parentNode.cloneNode(false);
			var cont = document.createElement('div');
			x.innerHTML = '<img src="'+s+'" title="+getFlickr.closePhotoMessage+" />';
			cont.appendChild(x);
			if(p.getElementsByTagName('div').length>0){
				p.replaceChild(cont,p.getElementsByTagName('div')[0]);				
			} else {
				p.appendChild(cont);				
			}
			cont.onclick = function(){
				this.parentNode.removeChild(this);
				return false;
			}
		}
		getFlickr.cancelClick(e);
	},
	returnList:function(feed){
		var x = feed.items;
		var t;
		getFlickr.html[getFlickr.tag] = '';
		getFlickr.tags[getFlickr.tag] = '';
		var max = x.length > getFlickr.photoCount ? getFlickr.photoCount : x.length; // add by C.K
		for(var i=0,j=max;i<j;i++){
			getFlickr.html[getFlickr.tag]+='<li><a target="_blank" href="'+x[i].link+'"><img src="'+x[i].media.m+'" alt="'+x[i].title+'" /></a></li>';
			t+= x[i].tags + ' ';
		}
		t=t.replace(/\s$/,'');
		var x = t.split(' ');
		x=x.sort();
		for(var i=0,j=x.length;i<j;i++){
			if(i>0 && x[i-1]!=x[i]){
				getFlickr.tags[getFlickr.tag]+=x[i]+' ';
			}
		}
		if(getFlickr.func !== undefined){
 			eval(getFlickr.func+'()');
		}
	},
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if(!target){return false;}
		while(target.nodeType!=1 && target.nodeName.toLowerCase()!='body'){
			target=target.parentNode;
		}
		return target;
	},
	cancelClick:function(e){
			if(window.event){
				window.event.cancelBubble = true;
				window.event.returnValue = false;
			}
			if(e && e.stopPropagation && e.preventDefault){
				e.stopPropagation();
				e.preventDefault();
			}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if(elm.addEventListener){
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if(elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	}
}
function jsonFlickrFeed(feed){
	getFlickr.returnList(feed);
}
getFlickr.addEvent(window, 'load', getFlickr.getLinks);
