// ==UserScript==
// @name Access keys
// @author Faux
// @namespace http://faux.uwcs.co.uk/
// @version 0.1
// @description Offers ctrl+alt+{specified key} links for the first 26 links on the page. May collide with shortcuts, woe.
// add excluded sites here (if the script causes problems on those sites)
// @exclude http://www.some.example.com/*
// ==/UserScript==

var prefix = 'zomgfaux';

// On load, add all of the labels.
window.opera.addEventListener('BeforeEvent.load',function (e)
{
	if( e.event.target instanceof Document )
	{
		for( var i = 0; i < 26 && document.links[i]; i++ )
			document.links[i].innerHTML = document.links[i].innerHTML + '<span style="display: none; padding: .5em; border: 2px dotted black; position: relative; z-index:24; top: 2px; left: 5px; background-color: #ffffe1; color: black" class="' + prefix + 'akey" id="' + prefix + i + '">' + String.fromCharCode(97 + i) + '</div>';
		;
	}
}, false);

// Grab our access key label by numbers.
function get(i)
{
	return document.getElementById(prefix + i);
}

// Set all our access key label's style.display to arg.
function setall(st)
{
	for (var i=0; i<26; i++)
		get(i).style.display=st;
}

// Handle a key in our range being pressed.
document.addEventListener('keyup', function(e)
{
	if (!(e.ctrlKey && e.altKey))
		return;

	if (e.keyCode >= 65 && e.keyCode <= 91) // A-Z
	{
		get(e.keyCode - 65).parentNode.click();
		e.preventDefault();
	}

}, false);

// The magic combo was pressed, show the labels!
document.addEventListener('keydown', function(e)
{
	if (e.ctrlKey && e.altKey)
		setall("");

}, false);

// Ctrl was released, hide, hide.
document.addEventListener('keyup',function (e)
{
	if (e.keyCode == 17) // e.ctrlKey not workey here?
		setall("none");

} ,false);