// --------------------------------------------------------------------
//
// ==UserScript==
// @name           eCritters eeMail Checkboxes
// @namespace      http://lkbm.ecritters.biz/
// @description    Check the messages you want deleted and click the delete button. Note: Still very ugly.
// @include        http://ecritters.biz/eemail.php*
// ==/UserScript==

(function ()
{
	// Stolen from Leif K-Brook's mturk script:
	var eventListeners = [];
	function myAddEventListener(obj, ev, handler, cap)
	{
		obj.addEventListener(ev, handler, cap);
		eventListeners.push({obj: obj, ev: ev, handler: handler, cap: cap});
	}
	function removeEventListeners(ev)
    	{
        	var listener;
		while (listener = eventListeners.pop())
		{
			listener.obj.removeEventListener(listener.ev, listener.handler, listener.cap);
		}
	}
	// End theft

	var trNodeList = document.evaluate('//tr', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	var iseeMailPage = 0;
	var table = 0;
	for(var i = 0; i < trNodeList.snapshotLength; i++)
	{
		var tr = trNodeList.snapshotItem(i);
		var s = tr.innerHTML;
		var tds = s.split("<td");
		if(tds.length == 3)
		{
			var id = tds[1].replace(/.*eemail.php.page=view.amp.id=([0-9]*)">.*/g, "$1");	// " <-- Fixes annoying syntax highlighting
			var s1 = tds[1].replace(/.*(Subject).*\n/g, "$1");	// " <-- Fixes annoying syntax highlighting
			var s2 = tds[2].replace(/.*(From).*\n/g, "$1");	// " <-- Fixes annoying syntax highlighting
			//GM_log(id);
			//GM_log('<' + s + '>');
			if(parseInt(id) > 0)
			{
				table = tr.parentNode;
				iseeMailPage = 1;
				var e = document.createElement('input');
				e.id = 'eemail' + id;
				e.type = 'checkbox';
				e.value = id;
				e.name = 'eemailCheckBox';
				tr.appendChild(e);
			}
			else if(s1 == 'Subject' && s2 == 'From')
			{
				var e = document.createElement('input');
				e.id = 'eemailCheckAll';
				e.type = 'checkbox';
				e.name = 'eemailCheckAll';
				myAddEventListener(e, 'click',
					function()
					{
						return function(event)
						{
							var checkboxes = document.getElementsByName('eemailCheckBox');
							var c = document.getElementById('eemailCheckAll').checked;
							for(var i = 0; i < checkboxes.length; ++i)
							{
								//GM_log('Setting box ' + i);
								checkboxes[i].checked = c;
							}
						};
					}(),
					false);
				tr.appendChild(e);
			}
		}
	}
	if(iseeMailPage)
	{
		e = document.createElement('input');
		e.type = 'submit';
		e.id = 'eeMailListSubmit';
		e.name = 'eeMailListSubmit';
		e.value = 'Delete selected eeMail';
		myAddEventListener(e, 'click',
			function()
			{
				return function(event)
				{
					var checkboxes = document.getElementsByName('eemailCheckBox');
					var deleted = [];
					for(var i = 0; i < checkboxes.length; ++i)
					{
						if(checkboxes[i].checked)
						{
							var id = checkboxes[i].value;
							GM_log('Deleting eeMail id ' + id + '.');
							var e = document.createElement('iframe');
							e.id = 'eeMail' + id + 'DeletionFrame';
							e.src = 'http://ecritters.biz/eemail.php?page=delete&id=' + id;
							e.style.display = 'none';
							table.appendChild(e);
							// table.removeChild(checkboxes[i].parentNode);	// Makes errorness.
							checkboxes[i].parentNode.style.display = 'none';
							deleted.push(id);
						}
					}
					var p = document.createElement(p);
					var tn = document.createTextNode('Deleted ' + deleted.length + 'eeMail messages: ' + deleted.join(', '));
					p.appendChild(tn);
					table.insertBefore(p, null);
				};
			}(),
			false);
		table.appendChild(e);
	}

})();

