// --------------------------------------------------------------------
//
// ==UserScript==
// @name           43Things QuickTag
// @namespace      http://lkbm.ecritters.biz/
// @description    Add a 'Tag as [something]' link next to the names of items on the search..
// @include        http://www.43things.com/search/*
// @include        http://www.43things.com/tag/*
// ==/UserScript==

(function ()
{
	if(GM_getValue('undefined_value') == undefined)
		GM_setValue('tagFieldWidth', '250px');
	var tag_field_width = GM_getValue('tagFieldWidth');
	document.getElementById('container').style.marginLeft = tag_field_width;

	var tag = GM_getValue('tags');

	var tag_input = document.createElement('div');
	tag_input.innerHTML = '<input style="width: 600px" id="LKBM_43QuickTag_tagfield" type="text" value="' + tag + '" /> <span style="display: none; border: 1px solid black" id="current_tag">' + escape(tag) + '</span>';
	if(document.getElementById('searchterms'))	document.getElementById('searchterms').appendChild(tag_input);
	else if(document.getElementById('page-body'))	document.getElementById('page-body').insertBefore(tag_input, document.getElementById('page-body').firstChild);

	document.getElementById('LKBM_43QuickTag_tagfield').addEventListener('blur', function(event, tags)
		{
			var tags = document.getElementById('LKBM_43QuickTag_tagfield').value;
			tag=tags;
			GM_setValue("tags", tags);
			document.getElementById('current_tag').innerHTML=tags;
		},
	false);

	var image_node_list = document.evaluate('//a', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	for(var i = 0; i < image_node_list.snapshotLength; i++)
	{
		var link = image_node_list.snapshotItem(i);
		var url = link.href;
		if(url.search(/things\/view/) > -1 && link.style.textDecoration != "none")	
		{
			var id = url.replace(/.*43things[^0-9]*/g, "");
			var e = document.createElement('span');
			e.id = 'LinkToTag' + id;
			e.addEventListener('click', 
				function(evt)
				{
					var xml_http_request = new XMLHttpRequest();
					var id = evt.target.id.substr(9);
					xml_http_request.overrideMimeType('text/xml');
					xml_http_request.open('POST', 'http://www.43things.com/tags/add?goal_id=' + id + '&tags_to_add=' + document.getElementById('current_tag').innerHTML + '&=Add!&_=', true);
					xml_http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
					xml_http_request.onreadystatechange = function()
					{
						if(xml_http_request.readyState == 4)
						{
							var s = xml_http_request.responseText;
							document.getElementById('span_element' + id).innerHTML = s;
						}
					};
					xml_http_request.send('');
					return;
				},
				false
			);
			e.style.marginLeft = "1em";
			e.innerHTML = "Tag";
			e.style.position = 'absolute';
			e.style.left = '10px';
			link.parentNode.style.marginBottom = '2em';
			link.parentNode.appendChild(e);
			var span_element = document.createElement('span');
			span_element.style.height = "5em";
			span_element.style.overflow = 'auto';
			span_element.style.maxHeight = '5em';

			span_element.name = 'span_element' + id;
			span_element.id = 'span_element' + id;

			span_element.style.position = 'absolute';
			span_element.style.left = '-' + tag_field_width;

			span_element.style.width = tag_field_width;
			span_element.style.fontSize = '6pt';
			span_element.innerHTML = '[unknown]';
			span_element.style.border = '1px solid black';
			e.parentNode.appendChild(span_element);

			e = document.createElement('div');
			var did_it_link = '<input id="checkbox' + id + '" name="checkbox" type="checkbox" onclick="" />'

			e.innerHTML = '<form method="post" target="add_related" action="/things/add_related/' + id + '"><input id="related_goal_name" name="related_goal_name" type="text"><input value="Report Similar Goal" id="reportsimilargoal' + id + '" type="submit" /></form> <a href="http://www.43things.com/people/adopt_goal?bypass_verification=1&goal%5Bid%5D=' + id + '&goal%5Bname%5D=make+snow+angels&submit_ive_done_this.x=70&submit_ive_done_this.y=14&submit_ive_done_this=I%27ve+done+this" target="add_related">Did this!</a>';
			link.parentNode.appendChild(e);
		}
	}
	var iframe = document.createElement('iframe');
	iframe.href = "about:blank";
	iframe.width = "300px";
	iframe.height = "600px";
	iframe.margin = '0';
	iframe.padding = '0';
	iframe.style.position = 'absolute';
	iframe.style.top = '1px';
	iframe.style.right = '-' + tag_field_width;
	iframe.style.width = '375px';
	iframe.id = 'add_related';
	iframe.name = 'add_related';
	document.getElementById('page-body').appendChild(iframe);
})();

