// ==UserScript==
// @name           Gmail Delete Button
// @namespace      http://www.arantius.com/article/arantius/gmail+delete+button/
// @description    Add a "Delete" button to Gmail's interface.
// @include        http*://mail.google.com/*
// ==/UserScript==

//
// Version 3.0.1:
//  - Ukranian translation.
// Version 3.0:
//  - Completely rebuilt, based on the injection technique designed for
//    my related script 'Gmail Action Links'
//
// --------------------------------------------------------------------
// Originally written by Anthony Lieuallen of http://www.arantius.com/
// Licensed for unlimited modification and redistribution as long as
// this notice is kept intact.
// When distributing this original script or any script based on this
// code on the web, a link to the homepage (URL in namespace above) is
// required.
// --------------------------------------------------------------------
//

(function() {
function _gdb_watch_click(e) {
	var el=e.target;
	if (!el) return;
	if (!el.id) return;
	if ('_gdb_'!=el.id) return;
	e.preventBubble();
	
	var action='tr';
	var cont=el;
	while (null!=cont && 'TABLE'!=cont.tagName) cont=cont.parentNode;
	if (!cont) return;
	
	var box=cont.getElementsByTagName('select')[0];
	box.onfocus();
	var action_index=-1;
	for (var i=0; i<box.options.length; i++) {
		if (action==box.options[i].value && !box.options[i].disabled ) {
			action_index=i;
			break;
		}
	}
	if (-1==action_index) return;
	box.selectedIndex=action_index;
	box.onchange();
}

if (window.document.location.href.match(/name=js/)) {
	//try to find button-maker function
	var key='', lang='';
	for (var i in unsafeWindow) {
		var x=unsafeWindow[i];
		if (String(x).indexOf('rc_^i')>=0 && String(x).indexOf('&nbsp;')>=0) {
			key=i;
		}
		if (String(x).indexOf('help/intl/')==0) {
			lang=x.substr(10);
			lang=lang.substr(0,lang.length-1);
		}
	}
	if (''==key) return;

	//hide original button-maker function
	unsafeWindow['__'+key]=unsafeWindow[key];

	//replace with wrapper function
	unsafeWindow[key]=function(a) {
		eval('var b=__'+key+'(a);');
		if (b.indexOf('ac_dl')>=0) return b;

		//figure out language
		var buttonText='Delete';
		switch (lang) {
		case 'it':    buttonText='Elimina'; break;
		case 'es':    buttonText='Borrar'; break;
		case 'fr':    buttonText='Supprimer'; break;
		case 'pt-BR': buttonText='Apaga'; break;
		case 'de':    buttonText='L&#246;schen'; break;
		case 'bg':    buttonText='&#1048;&#1079;&#1090;&#1088;&#1080;&#1081;'; break;
		case 'ru':    buttonText='&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;'; break;
		case 'pl':    buttonText='Usu&#324;'; break;
		case 'ja':    buttonText='\u30b4\u30df\u7bb1\u3078\u79fb\u52d5'; break;
		case 'hu':    buttonText='T&#246;r&#246;l'; break;
		case 'uk':    buttonText='&#1042;&#1080;&#1076;&#1072;&#1083;&#1080;&#1090;&#1080;';
		}
		return "<button id='_gdb_' class='ab'><b>"+buttonText+"</b></button>&nbsp;&nbsp;"+b;
	}
} else {
	window.addEventListener('click', _gdb_watch_click, true);
}

})();
