(function(){

var list_selector = "#links";
var li_selector = list_selector + " li";
var nojsclass = "nojs";
var multiplier = 255;
function randint(min, max)
{
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

function gen_colour()
{
        var rand = [Math.random(), Math.random(), Math.random()];
        return "rgb(" + Math.round(rand[0] * multiplier) +  ", " + Math.round(rand[1] * multiplier) + ", " + Math.round(rand[2] * multiplier) + ")";
}

function apply_colour(elems)
{
	return elems.each(function(i){
        	$(this).css("background-color", gen_colour());
	});
}

function randomise_links(elems)
{
	var links = elems;
	var posArray = [];
	for (var i = 0; i < links.length; i++) {
		var rand = randint(0, links.length - 1);
		for (var j = 0; j < posArray.length; j++) {
			while (rand == posArray[j]) {
				rand = randint(0, links.length - 1);
			}
		};
		posArray[i] = rand;
	};
	for (var i = 0; i < links.length; i++) {
		if (posArray[i] != i) {
			var temp = links[posArray[i]];
			links[posArray[i]] = links[i];
			links[i] = temp;
		};
	};
	return links;
}

function setup_links(selector)
{
	return randomise_links(apply_colour($(selector))).hover(
		function(e){
                	$(this).fadeTo(300, 0); 
        	},
		function(e){
			$(this).fadeTo(300, 1);
		});
}

$(window).load(function(){
$(list_selector).append(setup_links($(li_selector).detach())).removeClass(nojsclass);

}).click(function() {
        apply_colour($(li_selector));
});

})();

