// ==UserScript==
// @name Own name colourifier
// @namespace http://www.wordowl.com/misc/
// @description Allows you to customise the colour your own name appears in links
// @version 1.1.1
// @include http://www.starpirates.net/*
// @exclude http://www.starpirates.net/*itemguide*
// ==/UserScript==
var colour = GM_getValue('highlightcolour', 'moderator');
var list = ['freeplayer', 'eliteplayer', 'moderator', 'admin', 'csr', 'green', 'rainbow'];
var customcolour = GM_getValue('customcolour', '#FFFFFF');
var playerid = GM_getValue('playerid', '-1');
// controls whether highlighting is done based on win/loss record or lasthit outcome
GM_registerMenuCommand( "Colour me non Notorious", c_nonnotorious );
GM_registerMenuCommand( "Colour me Notorious", c_notorious );
GM_registerMenuCommand( "Colour me Moderator", c_mod );
GM_registerMenuCommand( "Colour me Admin", c_min );
GM_registerMenuCommand( "Colour me CSR", c_csr );
GM_registerMenuCommand( "Somewhere over the rainbow", c_rainbow );
GM_registerMenuCommand( "Colour me crazy bright green", c_green );
GM_registerMenuCommand( "Care to try your luck with random colours?", c_random );
GM_registerMenuCommand( "I wanna pick my own!", c_custom );
function handleoutcome(outcome) {
colour = outcome;
GM_setValue('highlightcolour', outcome);
alert("Note you will need to reload the page for it to take effect.");
}
function c_nonnotorious() { handleoutcome('freeplayer'); }
function c_notorious() { handleoutcome('eliteplayer'); }
function c_mod() { handleoutcome('moderator'); }
function c_min() { handleoutcome('admin'); }
function c_csr() { handleoutcome('csr'); }
function c_rainbow() { handleoutcome('rainbow'); }
function c_green() { handleoutcome('green'); }
function c_random() { handleoutcome('random'); }
function c_custom() {
colour = 'custom';
GM_setValue('highlightcolour', 'custom');
var newcolour = "";
var re = /#[0-9A-F]{6}/i;
while(newcolour == "") {
var temp = prompt("Please enter your custom colour value here:", customcolour);
if(re.test(temp)) {
newcolour = temp;
} else {
alert("Please enter a valid colour in #xxxxxx format, e.g. #FF0000 for red.");
}
}
customcolour = newcolour;
GM_setValue('customcolour', customcolour);
alert("Note you will need to reload the page for it to take effect.");
}
function HighGraphics(dummy) {
var result=0; //High Graphics mode=1, Less Graphics mode=0
var LG=xpath("//div[@class='ingameheader']");
if(LG.snapshotLength==0) {
result=1;
}
return result;
}
if(playerid == '-1') {
if(HighGraphics()==1) {
var td = xpath("//td[@class='playerheading']");
if(td.snapshotLength > 0) {
var re_profile_id = new RegExp("profiles\.+[^?]?id=([0-9]+)");
var result = td.snapshotItem(0).innerHTML.match(re_profile_id);
if(result !=null) {
playerid = result[1];
}
}
} else {
var a = xpath("//a[@class='textstatsbox']");
if(a.snapshotLength > 0) {
var re_profile_id = new RegExp("profile.*id=([0-9]+)");
var result = a.snapshotItem(0).getAttribute('href').match(re_profile_id);
if(result != null) {
playerid = result[1];
}
}
}
GM_setValue('playerid', playerid);
}
//alert("player id: "+playerid);
var a = xpath("//a[@class='freeplayer'] | //a[@class='eliteplayer'] | //a[@class='moderator'] | //a[@class='admin'] | //a[@class='csr']");
var re = new RegExp("id=" + playerid + "$", "i");
if(a.snapshotLength > 0) {
var collist = [ 'red', 'yellow', 'lime', 'cyan', '#6666FF', 'magenta' ];
for(i = 0; i < a.snapshotLength; i++) {
if(re.test(a.snapshotItem(i).getAttribute('href'))) {
var nextcolour = "";
if(colour != 'random') {
nextcolour = colour;
} else {
var rnd = Math.floor(Math.random() * list.length);
nextcolour = list[rnd];
}
switch(nextcolour) {
case 'freeplayer':
case 'eliteplayer':
case 'moderator':
case 'admin':
case 'csr':
a.snapshotItem(i).className = nextcolour;
break;
case 'rainbow':
var text = a.snapshotItem(i).innerHTML;
var newtext = '';
var num = 0;
for(j = 0; j < text.length; j++) {
num = j % collist.length;
newtext += '' + text.charAt(j) + '';
}
a.snapshotItem(i).innerHTML = newtext;
break;
case 'green':
a.snapshotItem(i).innerHTML = '' + a.snapshotItem(i).innerHTML + '';
break;
case 'custom':
a.snapshotItem(i).innerHTML = '' + a.snapshotItem(i).innerHTML + '';
break;
}
}
}
}
function xpath(query) {
return document.evaluate(query, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}