// ==UserScript==
// @name           Flickr FaceTaggr
// @namespace      Flickr
// @description    Adds a list of your contacts on the flickr photo page so you can easily machine tag the photo with them.
// @include        http://*flickr.com/photos/*
// ==/UserScript==

//Written on Yahoo Open Hack Day '08 by Gabe Arnold <gabe@squirrelsoup.net>
//This is a *hack*, I know it's ugly, put your pants back on.

var tagSpace = document.getElementById('tagadder');
var origTagAdder = document.getElementById('tagadderform');
var tagPop = document.getElementById('tagpopular');
tagPop = tagPop.nextSibling;

var faceAdderLink = document.createElement('div');
faceAdderLink.id = 'faceadderlink';
faceAdderLink.style.display = 'block';
faceAdderLink.style.marginTop = '5px';
faceAdderLink.style.fontSize = '12px';
faceAdderLink.style.textDecoration = 'none';
faceAdderLink.innerHTML = '<a style="text-decoration: none;" onclick="document.getElementById(\'userList\').style.display = \'block\';' + 
			'document.getElementById(\'faceadderlink\').style.display = \'none\'; return false;" href="#">' + 
			'Show Friends</a>';
tagSpace.insertBefore(faceAdderLink, tagPop);

var userList = document.createElement('div');
userList.id = 'userList';
userList.style.padding = '.5em';
userList.style.display = 'none';
tagSpace.insertBefore(userList, tagPop);
machineTag = 'flickr:user=' + unsafeWindow.global_name;
userList.innerHTML += ('<a id="popTag'+ machineTag +'" class="tagrsUnUsed" onclick="tagrs_toggleTagInInput(\''+ machineTag +
	'\', ' + unsafeWindow.page_photo_id +'); return false;" href="#">' + unsafeWindow.global_name + '</a><br/>');

var toggle_contact = function() {
	unsafeWindow.tagrs_toggleTagInInput(this.tag, unsafeWindow.page_photo_id);
	this.className = this.isAdded ? 'tagrsUnUsed' : 'tagrsUsed';
	this.isAdded = !this.isAdded;
	return false;
}

var jsonFlickrApi = function(list) {
	unsafeWindow.contacts_list = list;
	for each(user in list.contacts.contact) {
		var machineTag = 'flickr:user=' + user.username;
		contactLink = document.createElement('a');
		//contactLink.id = 'popTag' + machineTag;
		contactLink.tag = machineTag;
		contactLink.href = 'javascript:;';
		contactLink.className = 'tagrsUnUsed';
		contactLink.isAdded = false;
		contactLink.innerHTML = user.username;
		userList.appendChild(contactLink);
		unsafeWindow.YAHOO.util.Event.addListener(contactLink, 'click', toggle_contact);
		br = document.createElement('br');
		userList.appendChild(br);		
	}
};

var listener = {
	flickr_contacts_getList_onLoad: function(success, responseXML, responseText, params){
		var rsp = responseText.replace(/jsonFlickrApi\(/,'');
		rsp = eval('('+rsp);
		jsonFlickrApi(rsp);
	}
};

unsafeWindow.F.API.callMethod('flickr.contacts.getList', {format: 'json', filter : 'friends'}, listener);

