By Chipv
Has 7 other scripts.
//
// ==UserScript==
// @name Conquer Club Turn Watch
// @namespace http://userscripts.org/
// @description Script to work out, from any webpage, if anyone has completed a new turn, and to alert/display last turn log in all active games for the Conquer Club Site
// @include http://www.conquerclub.com/*
// ==/UserScript==
var twversion = "2.0.5";
var twlatestVersion = 0;
var features=[];
var gameid=[];
var alerts = 0;
var sortalg = 0;
var options = 0;
var ingames = [];
var times = [];
var hms = [];
var tourney = [];
var textout=[];
var lengths=[];
var alerting = [];
var gameReq = [];
var __eventListeners = [];
var interval;
var popupInfo;
function previousSib(node){
var tempNode=node.previousSibling;
while(tempNode.nodeType!=1){
tempNode=tempNode.previousSibling;
}
return tempNode;
}
function sortNone (numb, tim) {
ingames.push(gameid[numb]);
times.push(tim);
}
function sortLow(numb, tim) {
var i=0;
while(i < ingames.length && gameid[numb] < ingames[i]){i++;}
if(i == ingames.length){
times.push(tim);
ingames.push(gameid[numb]);
}
else{
times.splice(i,0,tim);
ingames.splice(i,0,gameid[numb]);
}
}
function sortHigh(numb, tim) {
var i=0;
while(i < ingames.length && gameid[numb] > ingames[i]){i++;}
if(i == ingames.length){
times.push(tim);
ingames.push(gameid[numb]);
}
else{
times.splice(i,0,tim);
ingames.splice(i,0,gameid[numb]);
}
}
function sortTimeLow(numb, tim) {
var i=0;
while(i < times.length && tim < times[i]){i++;}
if(i == times.length){
times.push(tim);
ingames.push(gameid[numb]);
}
else{
times.splice(i,0,tim);
ingames.splice(i,0,gameid[numb]);
}
}
function sortTimeHigh(numb, tim) {
var i=0;
while(i < times.length && tim > times[i]){i++;}
if(i == times.length){
times.push(tim);
ingames.push(gameid[numb]);
}
else{
times.splice(i,0,tim);
ingames.splice(i,0,gameid[numb]);
}
}
function addListener(instance, eventName, listener) {
var listenerFn = listener;
instance.addEventListener(eventName, listenerFn, false);
var event = {
instance: instance,
name: eventName,
listener: listenerFn
};
__eventListeners.push(event);
return event;
}
function removeListener(event) {
var instance = event.instance;
instance.removeEventListener(event.name, event.listener, false);
for (var i = 0; i < __eventListeners.length; i++) {
if (__eventListeners[i] == event) {
__eventListeners.splice(i, 1);
break;
}
}
}
function unregisterNewEvents() {
while (__eventListeners.length > 0) {
removeListener(__eventListeners[0]);
}
for(e=0; e< gameReq.length;e++)
{
gameReq[e].abort();
}
if(interval) window.clearTimeout(interval);
}
function getTurns() {
var al = GM_getValue('alerts');
if(typeof(al) == "undefined") {
GM_setValue('alerts',alerts);
}
else{
alerts = al;
}
var st = GM_getValue('sort');
if(typeof(st) == "undefined") {
GM_setValue('sort',sortalg);
}
else{
sortalg = st;
}
var gamesarr = GM_getValue('turngames');
if(typeof(gamesarr) == "undefined") {
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.conquerclub.com/player.php?mode=mygames1',
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'application/xhtml+xml',
},
onload: function(responseDetails) {
var div=document.createElement('div');
div.innerHTML = responseDetails.responseText;
var gamenos = getElementsByClassName(div,'span','gameno',true);
if(gamenos.length) {
for(var i=0;i<gamenos.length;i++) {
var tour = previousSib(gamenos[i].parentNode.parentNode);
if(tour.childNodes[1].colSpan == 7) {
tourney.push(tour.childNodes[1].firstChild.innerHTML);
}
else{
tourney.push("");
}
gameid.push(gamenos[i].innerHTML);
}
GM_setValue('turngames', gameid.join(","));
GM_setValue('tourney', tourney.join(","));
}
div = null;
}
});
}
else{
gameid = gamesarr.split(',');
var tourarr = GM_getValue('tourney');
if(typeof(tourarr) == "undefined") {
for(var t=0; t< gameid.length; t++) {
tourney[t] = "";
}
GM_setValue('tourney', tourney.join(","));
}
else{
tourney = tourarr.split(',');
}
while(gameid.indexOf('') != -1) {
var ix = gameid.indexOf('');
gameid.splice(ix,1);
tourney.splice(ix,1);
}
GM_setValue('turngames', gameid.join(","));
GM_setValue('tourney', tourney.join(","));
}
ingames = [];
times = [];
var hms = [];
var textout=[];
lengths=[];
var alerting = [];
for(var i=0;i<gameid.length;i++) {
gameid[i] = parseInt(gameid[i],10);
details(i);
}
}
var left = document.getElementById("leftColumn");
var ul = left.getElementsByTagName("ul");
if (ul[0]) {
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.fileden.com/files/2008/5/8/1902058/turns.txt?nocache=' + Math.random(),
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'text/html',
},
onload: function(responseDetails) {
features = responseDetails.responseText.split('\n');
var latest = features[0].split('.');
var ver = twversion.split('.');
twlatestVersion = (((parseInt(latest[0]) * 100) + (parseInt(latest[1]) * 10) + parseInt(latest[2])) > ((parseInt(ver[0]) * 100) + (parseInt(ver[1]) * 10) + parseInt(ver[2])));
}
});
GM_addStyle(".miniblock {width:25px;height:17px} .mini {width:10px;height:15px} .minipad {padding:3px 0px;} .minicut {text-align:right;cursor:pointer;margin:0px;padding:0px 3px 0px 3px;} .minimap {cursor:pointer;padding:1px 0px 1px 3px;vertical-align: middle;}");
GM_addStyle("#box {margin:0px;padding:0px;font-size:12px;background:#eee;position:absolute;left:200px;top:50%;border:5px black solid;z-index:100}");
GM_addStyle("#box li {list-style:none;border:1px solid #cdc} #box li:hover{background-color:#cdc} #box li a {text-decoration:none;} #close {cursor:pointer;background-colour:#eee} #close:hover {background-color:#f00}");
GM_addStyle(".pyr1,.attsrc {background-color:#f00;border:3px solid #f00} .pyr2,.fortsrc {background-color:#009a04;border:3px solid #009a04}");
GM_addStyle(".pyr3 {background-color:#00f;border:3px solid #00f} .pyr4,.depl {background-color:#cc0;border:3px solid #cc0}");
GM_addStyle(".pyr5 {background-color:#f0f;border:3px solid #f0f} .pyr6 {background-color:#0cc;border:3px solid #0cc}");
GM_addStyle(".pyr7 {background-color:#f92;border:3px solid #f92} .pyr8 {background-color:#7f7f7f;border:3px solid #7f7f7f}");
GM_addStyle(".fortdest {background-color:#009a04;border:3px dotted #fff} .attdest {background-color:#f00;border:3px dashed #fff}");
GM_addStyle(".weak {border:3px solid #cdc} .critical {border:3px solid #000} .pyr0 {background-color:#fff;border:3px solid #fff}");
GM_addStyle("#alertDiv {background-color:transparent;position:absolute;width:100%;height:100%;top:0px;left:0px;z-index:10000;}");
GM_addStyle("#alertBox {position:relative;min-width:500px;min-height:100px;margin-top:50px;border:2px solid #000;background-color:#F2F5F6;background-image:url('http://www.conquerclub.com/static/icon_msg_alert.gif');background-repeat:no-repeat;background-position:20px 30px;}");
GM_addStyle("#alertDiv > #alertBox {position:fixed;}");
GM_addStyle("#alertBox h1 {margin:0;font:bold 0.9em verdana,arial;background-color:#cdc;color:#000;border-bottom:1px solid #000;padding:2px 0 2px 5px;}");
GM_addStyle("#alertBox p {font:0.7em verdana,arial;padding-left:5px;margin-left:55px;}");
GM_addStyle("#alertBox a {display:inline;position:relative;border:1px solid #000;width:100px;font: verdana,arial;text-transform:uppercase;color:#000;background-color:#cdc;text-decoration:none;}");
GM_addStyle("#alertBox a:hover,#alertBox #closeBtn:hover {background-color:#889988;;color:#fff}");
GM_addStyle("#alertBox #closeBtn {display:block;position:relative;margin:5px auto;padding:3px;border:2px solid #000;width:70px;font:0.7em verdana,arial;text-transform:uppercase;text-align:center;color:#000;background-color:#cdc;text-decoration:none;}");
GM_addStyle(".bomb {border-style:dashed}");
var box = document.createElement('div');
box.id = "box";
box.style.visibility = "hidden";
document.body.appendChild(box);
addListener(window, "unload" , unregisterNewEvents);
getTurns();
}
function getElementsByClassName(oElm, strTagName, strClassName, exact)
{
var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
strClassName = strClassName.replace(/\-/g, "\\-");
var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s)");
var oElement;
for(var i=0; i<arrElements.length; i++){
oElement = arrElements[i];
if (exact)
{
if(oElement.className==strClassName){
arrReturnElements.push(oElement);
}
}
else
{
if(oElement.className.has(strClassName)){
arrReturnElements.push(oElement);
}
}
}
return (arrReturnElements)
}
var classHover = new Array("title=\"No recent activity\"",
"class=\"player1\" title=\"New Turn Taken\"",
"class=\"player4\" title=\"Turn In Progress\"",
"class=\"player2\" title=\"Your Turn Next!\"",
"class=\"player3\" title=\"Teammate's Turn Next\"",
"class=\"player5\" title=\"New Game Chat\"",
"",
"class=\"errormsg\" title=\"Game Finished\""
);
var chkbox = new Array("anyone's turn", "turn is in progress", "your turn", "your teammate's turn" , "new game chat", "being attacked", "game finished");
var sorts = new Array("No Sort", "Game # ↑↑", "Game # ↓↓", "Time Left ↑↑", "Time Left ↓↓");
var sortfn = new Array(sortNone, sortLow, sortHigh, sortTimeLow, sortTimeHigh);
var weakness = new Array("", "weak", "critical");
function createAlert(txt) {
if(document.getElementById("alertDiv")) return;
mObj = document.getElementsByTagName("body")[0].appendChild(document.createElement("div"));
mObj.id = "alertDiv";
mObj.style.visibility = 'hidden';
mObj.style.height = document.documentElement.scrollHeight + "px";
alertObj = mObj.appendChild(document.createElement("div"));
alertObj.id = "alertBox";
alertObj.style.left = (document.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";
h1 = alertObj.appendChild(document.createElement("h1"));
h1.appendChild(document.createTextNode("TURN WATCH ALERT"));
msg = alertObj.appendChild(document.createElement("p"));
msg.innerHTML = "<br />News:<br /><br />" + txt;
btn = alertObj.appendChild(document.createElement("a"));
btn.id = "closeBtn";
btn.appendChild(document.createTextNode("OK"));
btn.href = "javascript:void(0);";
addListener(btn, "click" , function () {
removeAlert();
});
mObj.style.visibility = 'visible';
}
function removeAlert() {
document.getElementsByTagName("body")[0].removeChild(document.getElementById("alertDiv"));
}
function loaded() {
if(document.getElementById('collect'))
document.getElementById('collect').style.display = "none";
for(var u=0; u< gameid.length; u++) {
document.getElementById('turnmenuUl' + gameid[u]).style.display = "block";
}
addListener(document.getElementById('mark'), "click" , function () {
for(var y=0; y< ingames.length; y++) {
if(textout[y]) GM_setValue('log' + gameid[y],textout[y]);
if(lengths[y]) GM_setValue('chat' + gameid[y],lengths[y]);
document.getElementById('span' + gameid[y]).className = '';
}
});
var alertstring = "";
if(alerts) {
var oldalert = GM_getValue('alerting');
if(typeof(oldalert) != "undefined") {
oldarray = oldalert.split(",");
alertstring = "";
for(var x=0; x< oldarray.length; x++) {
if((alerting[x] != oldarray[x]) && alerting[x] != "") {
alertstring += "<a title=\"Go To Game " + gameid[x] + "\" href=\"http://www.conquerclub.com/game.php?game=" + gameid[x] + "&full_log=Y\">Go To Game Page</a>" + alerting[x] + "<br />";
}
}
if(alertstring) {
GM_setValue('alerting',alerting.join(","));
createAlert(alertstring);
}
}
else{
GM_setValue('alerting',alerting.join(","));
createAlert(alertstring);
}
}
}
function Popup(bind, myPlayer, pic, xt, tour, gt) {
this._bind = bind;
this._myPlayer = myPlayer;
this._pic = pic;
this._xt = xt;
this._tour = tour;
this._gt = gt;
}
function pingpopup(delay) {
interval = window.setTimeout(function () {
var tdivs = "";
var myTeam;
var alias = [];
var cards = [];
var names = [];
var player = 0;
var teams = [];
var team = 0;
var ext = popupInfo._xt;
var image = popupInfo._pic;
var tournament = popupInfo._tour;
var gtype = popupInfo._gt;
var fresh = 'http://www.conquerclub.com/game.php?game=' + popupInfo._bind + '&ajax=1';
GM_xmlhttpRequest({
method: 'GET',
url: fresh,
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'application/xml,text/xml',
},
onload: function(responseDetails) {
var chunks = responseDetails.responseText.split("&");
var key = chunks[6];
var armies = chunks[5].replace(/\?-/g,'0-').split(',');
var msize = chunks[8];
var mwidth = chunks[9];
var mheight = chunks[10];
var lines = chunks[15].split(/<br>|<br \/>/);
var rnd = chunks[2];
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.conquerclub.com/maps/' + image + '.xml?nocache='+Math.random(),
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'application/xml,text/xml',
},
onload: function(responseDetails) {
var ltbox="";
var parser = new DOMParser();
var dom = parser.parseFromString(responseDetails.responseText,"application/xml");
var size = (msize == 'S' ? "small" : "large");
var coord = dom.getElementsByTagName('coordinates');
var conti = dom.getElementsByTagName('continent');
var tdivs = "";
var places = [];
var borders = [];
var continents = [];
var shelf = "";
var teambox = "";
for(c=0; c< coord.length; c++) {
var sib = previousSib(coord[c]);
if(sib.getElementsByTagName('bombardment').length)
sib = previousSib(sib);
var terr = armies[c].split('-');
var bounds = sib.getElementsByTagName('border');
var locale = [];
for(var b=0; b<bounds.length; b++) {
locale.push(bounds[b].firstChild.nodeValue);
}
borders.push(locale.join('|'));
places.push(previousSib(sib).firstChild.nodeValue);
tdivs += "<div id=\"tdiv" + c + "\" style=\"opacity:0.6;width:" + (15 + (terr[1].length * 8));
tdivs += "px;height:23px;position:absolute;left:";
tdivs += (parseInt(coord[c].getElementsByTagName(size + "x")[0].firstChild.nodeValue) - 8) + "px;top:";
tdivs += (parseInt(coord[c].getElementsByTagName(size + "y")[0].firstChild.nodeValue) - 33) + "px;\"";
tdivs += "></div>";
}
for(p=0;p<conti.length;p++) {
var locale = [];
var unique = 1;
var pl = 0;
var comp = conti[p].getElementsByTagName('components')[0];
var terr = comp.getElementsByTagName('territory');
var sib = previousSib(comp);
for(var t=0;t<terr.length; t++) {
var ind = places.indexOf(terr[t].firstChild.nodeValue);
var ter = armies[ind].split('-');
var pt = parseInt(ter[0]);
if(!pl) pl = pt;
if(pt != pl) unique = 0;
locale.push(ind);
}
continents.push(locale.join('|'));
shelf += "<a style=\"color:black;\"";
if(unique) {
shelf += " class=pyr" + pt;
}
shelf += " id=shelf" + p + ">" + previousSib(sib).firstChild.nodeValue + "(" + sib.firstChild.nodeValue + ")</a> ";
}
var hm = chunks[3].replace(/^\n|\n$/g, '');
hm = hm.replace(/\n/g, ' ');
if(!hm) {
hm = "Game Finished";
}
maptext = "";
var udiv = document.createElement('div');
udiv.innerHTML = chunks[4];
var lis = udiv.getElementsByTagName('li');
player = 0;
for(l=0; l<lis.length; l++) {
if(!lis[l].innerHTML.match(/<b>Team (\d):/)) {
var anc = lis[l].getElementsByTagName('a');
var img = lis[l].getElementsByTagName('img');
cards[player] = (img[0]? parseInt(img[0].title.charAt(0)) : -1);
teams[player] = team;
var href;
if(anc[0].href.match(/^(.+?)forum\/memberlist(.+?)$/)) {
href = "http://www.conquerclub.com/forum/memberlist" + unescape(RegExp.$2);
}
if(anc[1].href.match(/username=(.+?)$/)) {
names[player] = (RegExp.$1).replace(/\+/g, " ");
}
alias[player] = "<a href=\"" + href + "\" title=\"" + anc[0].title + "\"> <span class=\"player" + (player + 1) + "\"> " + names[player] + " </span></a>";
if(!lis[l].className.match(/status_red/)) {
maptext = "<li><a title=\"Go To Game Page\" href=\"http://www.conquerclub.com/game.php?game=" + popupInfo._bind + "&full_log=Y\">Go To Game " + popupInfo._bind + "</a></li><li><b>Round:</b> " + rnd + "</li><b>Next Player:</b><br />" + alias[player] + "<br /><b>Time Left:</b><br />" + hm;
if(team) {
maptext += "<br />Team: " + team;
}
}
player++;
}
else{
team = RegExp.$1;
}
}
udiv = null;
for(g=0;g<player;g++) {
var rx = '<a id="pyr' + (g+1) + '" href';
var hva = alias[g];
if(cards[g] > -1) {
hva = hva.replace(names[g] + " </span></a>","<img src=\"http://www.conquerclub.com/static/cards.gif\" width=18 height=16 />" + cards[g] + " " + names[g] + " </span></a>");
}
hva = hva.replace(/^<a href/,rx);
hva = hva.replace(/class="rank (.+?)"/,'');
ltbox += hva + ",";
}
for(m=0; m< parseInt(team); m++) {
teambox += "<a style=\"color:black;\" id=team" + (m + 1) + ">Team " + (m + 1) + "</a> ";
}
output = "";
border = "";
if(lines.length > 0) {
var num= lines.length - 1;
while(num > 0 && !lines[num].match(/ - <span class="(.+?)"/)) {
num--;
}
var last = (RegExp.$1).split("player")[1];
var reg = new RegExp(" - <span class=\"" + RegExp.$1 + "\"");
while( num> 0 && lines[num].match(reg)) {
if(lines[num].match(popupInfo._myPlayer)) {
border = "<li style=\"border: 2px solid red\">";
}
else{
border = "<li>";
}
output = border + lines[num].replace(/^(.+?) - /g,'') + "</li>" + output;
num--;
}
if(cards[last - 1] > -1) {
if(names[last - 1] == popupInfo._myPlayer) {
border = "<li style=\"border: 2px solid red\">";
}
else{
border = "<li>";
}
output += border + alias[last - 1] + " now has " + cards[last - 1] + " cards</li>";
}
output = "<br /><li></li><li><b>Last turn:</b> </li>" + output;
}
output = output.replace(/class="rank (.+?)"/,'');
ltbox = ltbox.substr(0,ltbox.length - 2);
output = output.replace(/<br \/><li><\/li>/g,'');
document.getElementById('box').style.width = (parseInt(mwidth) + 160) + "px";
document.getElementById('box').style.height = (parseInt(mheight) + 130) + "px";;
document.getElementById('box').innerHTML = "<table><tr><td><div style=\"width:" + mwidth + "px;height:" + mheight + "px;background-image:url(http://www.conquerclub.com/maps/" + image + "." + msize + "." + ext + ");\"><img style=\"width:" + mwidth + "px;height:" + mheight + "px\" border=1 width=" + mwidth + " height=" + mheight + " src=\"http://www.conquerclub.com/map.php?key=" + key + "&nocache=" + new Date().getTime() + "\" />" + tdivs + "</div></td><td><div style=\"width:150px;height:" + mheight + "px;overflow:auto;\">" + maptext + output + "</div></td></tr><tr><td colspan=2>" + "</td></tr><tr><td colspan=2>" + tournament + gtype + "</td></tr><tr><td colspan=2>" + ltbox + "</td></tr><tr><td colspan=2>" + teambox + "</td></tr><tr><td colspan=2><div style=\"overflow:auto;width:" + mwidth + "px;height:40px;\">" + shelf + "</div></td></tr><tr><td id=\"close\" colspan=2 align=center>Click To Close</td></tr></table>";
addListener(document.getElementById('close'), "click" , function () {
if(interval) window.clearTimeout(interval);
document.getElementById('box').style.visibility='hidden';
document.getElementById('box').innerHTML='';
});
for(c=0; c< coord.length; c++) {
addListener(document.getElementById('tdiv' + c), "mouseover" , function () {
var loc = this.id.split('tdiv')[1];
var bounds = borders[loc].split('|');
var terr = armies[loc].split('-');
for(b=0; b< bounds.length; b++) {
var index = places.indexOf(bounds[b]);
var neighbour = armies[index].split('-');
document.getElementById('tdiv' + index).className = 'pyr' + neighbour[0];
if(neighbour[0] != terr[0]) {
if(parseInt(neighbour[1]) > parseInt(terr[1])) {
if(parseInt(neighbour[1]) > (2 * parseInt(terr[1]))) {
document.getElementById('tdiv' + index).className += ' critical';
}
else{
document.getElementById('tdiv' + index).className += ' weak';
}
}
}
}
});
addListener(document.getElementById('tdiv' + c), "mouseout" , function () {
var bounds = borders[this.id.split('tdiv')[1]].split('|');
for(b=0; b< bounds.length; b++) {
document.getElementById('tdiv' + places.indexOf(bounds[b])).className = '';
}
});
}
var les = document.getElementById('box').getElementsByTagName('li');
for(ls=0;ls<les.length;ls++) {
if(les[ls].innerHTML.match(/deployed(.+?)armies on (.+?)$/)) {
if(RegExp.$2 != '?') {
les[ls].id = places.indexOf(RegExp.$2);
les[ls].innerHTML = les[ls].innerHTML.replace(/deployed/, '<span class=depl>deployed</span>');
addListener(les[ls], "mouseover" , function () {
document.getElementById('tdiv' + this.id).className = 'depl';
});
addListener(les[ls], "mouseout" , function () {
document.getElementById('tdiv' + this.id).className = '';
});
}
}
else if(les[ls].innerHTML.match(/bonus(.+?)added to (.+?)$/)) {
if(RegExp.$2 != '?') {
les[ls].id = places.indexOf(RegExp.$2);
les[ls].innerHTML = les[ls].innerHTML.replace(/bonus/, '<span class=depl>bonus</span>');
addListener(les[ls], "mouseover" , function () {
document.getElementById('tdiv' + this.id).className = 'depl';
});
addListener(les[ls], "mouseout" , function () {
document.getElementById('tdiv' + this.id).className = '';
});
}
}
else if(les[ls].innerHTML.match(/attacked (.+?) from (.+?) and conquered/)) {
if(RegExp.$2 != '?') {
les[ls].id = places.indexOf(RegExp.$1) + "," + places.indexOf(RegExp.$2) + ",";
les[ls].innerHTML = les[ls].innerHTML.replace(/attacked/, '<span class=attsrc>attacked</span>');
addListener(les[ls], "mouseover" , function () {
document.getElementById('tdiv' + this.id.split(',')[0]).className = 'attdest';
document.getElementById('tdiv' + this.id.split(',')[1]).className = 'attsrc';
});
addListener(les[ls], "mouseout" , function () {
document.getElementById('tdiv' + this.id.split(',')[0]).className = '';
document.getElementById('tdiv' + this.id.split(',')[1]).className = '';
});
}
}
else if(les[ls].innerHTML.match(/fortified (.+?) with(.+?)from (.+?)$/)) {
if(RegExp.$3 != '?') {
les[ls].id = places.indexOf(RegExp.$1) + "," + places.indexOf(RegExp.$3) + ",";
les[ls].innerHTML = les[ls].innerHTML.replace(/fortified/, '<span class=fortsrc>fortified</span>');
addListener(les[ls], "mouseover" , function () {
document.getElementById('tdiv' + this.id.split(',')[0]).className = 'fortdest';
document.getElementById('tdiv' + this.id.split(',')[1]).className = 'fortsrc';
});
addListener(les[ls], "mouseout" , function () {
document.getElementById('tdiv' + this.id.split(',')[0]).className = '';
document.getElementById('tdiv' + this.id.split(',')[1]).className = '';
});
}
}
}
for(g=0;g<player;g++) {
addListener(document.getElementById('pyr' + (g+1)), "mouseover" , function () {
var myg = this.id.split('pyr')[1];
for(c=0;c<armies.length;c++) {
var terr = armies[c].split('-');
if(terr[0] == myg) {
var bounds = borders[c].split('|');
var critical = 0;
document.getElementById('tdiv' + c).className = 'pyr' + myg;
for(b=0; b< bounds.length; b++) {
var index = places.indexOf(bounds[b]);
var neighbour = armies[index].split('-');
if(neighbour[0] != terr[0]) {
if(parseInt(neighbour[1]) > parseInt(terr[1])) {
if(parseInt(neighbour[1]) > (2 * parseInt(terr[1]))) {
critical = 2;
break;
}
else if(critical == 0){
critical = 1;
}
}
}
}
document.getElementById('tdiv' + c).className += ' ' + weakness[critical];
}
}
});
addListener(document.getElementById('pyr' + (g+1)), "mouseout" , function () {
for(c=0;c<armies.length;c++) {
document.getElementById('tdiv' + c).className = '';
}
});
}
for(p=0;p<conti.length;p++) {
addListener(document.getElementById('shelf' + p), "mouseover" , function () {
var mys = this.id.split('shelf')[1];
var countries = continents[mys].split('|');
for(c=0;c< countries.length;c++) {
var terr = armies[countries[c]].split('-');
var bounds = borders[countries[c]].split('|');
var critical = 0;
document.getElementById('tdiv' + countries[c]).className = 'pyr' + terr[0];
for(b=0; b< bounds.length; b++) {
var index = places.indexOf(bounds[b]);
var neighbour = armies[index].split('-');
if(neighbour[0] != terr[0]) {
if(parseInt(neighbour[1]) > parseInt(terr[1])) {
if(parseInt(neighbour[1]) > (2 * parseInt(terr[1]))) {
critical = 2;
break;
}
else if(critical == 0){
critical = 1;
}
}
}
}
document.getElementById('tdiv' + countries[c]).className += ' ' + weakness[critical];
}
});
addListener(document.getElementById('shelf' + p), "mouseout" , function () {
for(c=0;c<armies.length;c++) {
document.getElementById('tdiv' + c).className = '';
}
});
}
for(m=0; m< parseInt(team); m++) {
addListener(document.getElementById('team' + (m+1)), "mouseover" , function () {
var myt = this.id.split('team')[1];
for(c=0;c<armies.length;c++) {
var terr = armies[c].split('-');
if(teams[parseInt(terr[0]) - 1] == myt) {
var bounds = borders[c].split('|');
var critical = 0;
document.getElementById('tdiv' + c).className = 'pyr' + terr[0];
for(b=0; b< bounds.length; b++) {
var index = places.indexOf(bounds[b]);
var neighbour = armies[index].split('-');
if(teams[parseInt(neighbour[0]) - 1] != teams[parseInt(terr[0]) - 1]) {
if(parseInt(neighbour[1]) > parseInt(terr[1])) {
if(parseInt(neighbour[1]) > (2 * parseInt(terr[1]))) {
critical = 2;
break;
}
else if(critical == 0){
critical = 1;
}
}
}
}
document.getElementById('tdiv' + c).className += ' ' + weakness[critical];
}
}
});
addListener(document.getElementById('team' + (m+1)), "mouseout" , function () {
for(c=0;c<armies.length;c++) {
document.getElementById('tdiv' + c).className = '';
}
});
}
document.getElementById('box').style.visibility = "visible";
}
});
}
});
pingpopup(120000);
} , delay);
}
function details(gameno) {
var game = 'http://www.conquerclub.com/game.php?game=' + gameid[gameno];
gameReq[gameno] = new XMLHttpRequest();
gameReq[gameno].open('GET', game, true);
gameReq[gameno].onreadystatechange = function() {
if (gameReq[gameno].readyState == 4) {
var html = "";
var text = "";
var maptext = "";
var myPlayer;
var myTeam;
var thistime = 0;
var attacked = 0;
var div=document.createElement('div');
div.innerHTML = gameReq[gameno].responseText;
var logout = getElementsByClassName(document,'div','vnav',true);
var para = logout[0].getElementsByTagName('a');
if(para[0].innerHTML.match(/logout <b>(.+?)<\/b>/)) {
myPlayer = RegExp.$1;
}
var divs = div.getElementsByTagName('div');
var uls = div.getElementsByTagName('ul');
var tds = div.getElementsByTagName('td');
var imgs = div.getElementsByTagName('img');
var spans = div.getElementsByTagName('span');
var header = div.getElementsByTagName('h3');
var alias = [];
var cards = [];
var update = [];
var names = [];
var player = 0;
var teams = [];
var team = 0;
var strikel = "";
var striker = "";
var nextTeam = 0;
var gtype = "";
var mtype = "";
var elim = 0;
var classtype = 1;
var round = (header[1].getElementsByTagName('span')[0]? ", rd" + (header[1].getElementsByTagName('span')[0].innerHTML) : "");
var map = "";
var image = "";
var tournament = "";
var tourind = "";
var ext = "";
alerting[gameno] = "";
if(tourney[gameno]) {
tournament = "<b>" + tourney[gameno] + "</b><br />";
var s = tourney[gameno].split(" ");
tourind = s[0].charAt(0);
if(s[1] == "Speed")
tourind += "S";
}
for(var im=0; im< imgs.length; im++) {
if(imgs[im].id == "inner-map") {
map = imgs[im].alt;
var mu = new RegExp(/url\(maps\/(.+?)\.(L|S)\.(.+?)\)/);
if(imgs[im].parentNode.parentNode.style.backgroundImage.match(mu)) {
image = escape(RegExp.$1);
ext = RegExp.$3;
}
break;
}
}
for(var td=0; td< tds.length; td++) {
if(tds[td].colSpan == 2) {
gtype = tds[td].innerHTML;
mtype = gtype;
gtype = gtype.replace(/ /g, "<br />");
break;
}
}
for(var sp=0; sp<spans.length;sp++) {
if(spans[sp].id == "clock") {
if(spans[sp].innerHTML.match(/(\d+)hrs\n(\d+)min\n(\d+)sec/)) {
thistime = (3600 * parseInt(RegExp.$1)) + (60 * parseInt(RegExp.$2)) + parseInt(RegExp.$3);
}
var hm = spans[sp].innerHTML.replace(/^\n|\n$/g, '');
hms[gameno] = hm.replace(/\n/g, ' ');
break;
}
}
if(!hms[gameno]) {
thistime = (3600 * 24);
if(gtype) {
hms[gameno] = "Game Finished";
thistime++;
}
}
for(u=0;u<uls.length;u++) {
if(uls[u].id == 'players') {
var lis = uls[u].getElementsByTagName('li');
for(l=0; l<lis.length; l++) {
if(!lis[l].innerHTML.match(/<b>Team (\d):/)) {
var anc = lis[l].getElementsByTagName('a');
var img = lis[l].getElementsByTagName('img');
cards[player] = (img[0]? parseInt(img[0].title.charAt(0)) : -1);
teams[player] = team;
var href;
if(anc[0].href.match(/^(.+?)forum\/memberlist(.+?)$/)) {
href = "http://www.conquerclub.com/forum/memberlist" + RegExp.$2;
}
if(anc[1].href.match(/username=(.+?)$/)) {
names[player] = (RegExp.$1).replace(/\+/g, " ");
}
alias[player] = "<a href=\"" + href + "\" title=\"" + anc[0].title + "\" class=\"" + anc[0].className + "\"> <span class=\"player" + (player + 1) + "\"> " + names[player] + " </span></a>";
if(!lis[l].className.match(/status_red/)) {
html = "<li><a title=\"Go To Game Page\" href=\"http://www.conquerclub.com/game.php?game=" + gameid[gameno] + "&full_log=Y\">Go To Game " + gameid[gameno] + "</a></li><b>Next Player:</b><br />" + alias[player] + "<br /><b>Time Left:</b><br />" + hms[gameno];
text = "\nGame " + gameid[gameno] + ": Next Player: " + names[player] + " ";
if(team) {
html += "<br />Team: " + team;
text += "Team: " + team + " ";
nextTeam = team;
}
if(lis[l].className.match(/status_yellow/)) {
text += "Currently Playing ";
classtype = 2;
}
else if (names[player] == myPlayer){
text += "It's your turn! ";
classtype = 3;
}
}
if (names[player] == myPlayer && team) {
myTeam = team;
}
if(lis[l].innerHTML.match(/class="eliminated"/)) {
if(names[player] == myPlayer) {
strikel = "<strike>";
striker = "</strike>";
}
elim++;
}
player++;
}
else{
team = RegExp.$1;
}
if(nextTeam && nextTeam == myTeam && classtype != 3) {
text += "Your team ";
classtype = 4;
}
}
html = "<div style=\"display:none\" id=\"div" + gameid[gameno] + "\"><span id=\"gtype\">Game: <b>" + gameid[gameno] + "</b><br />" + tournament + "Map: <b>" + map + "</b><br/>Players: <b>" + player + "</b><br />" + gtype + "</span><li></li>" + html;
break;
}
}
if(thistime == ((3600 * 24) + 1)) {
classtype = 7;
text = "\nGame " + gameid[gameno] + ": Game Finished";
}
else if(thistime == ((3600 * 24))){
var awul = getElementsByClassName(div,'ul','players',true);
var lis = awul[0].getElementsByTagName('li');
elim = lis.length;
for(l=0; l<lis.length; l++) {
var anc = lis[l].getElementsByTagName('a');
var href;
if(anc[0]) {
if(anc[0].href.match(/^(.+?)forum\/memberlist(.+?)$/)) {
href = "http://www.conquerclub.com/forum/memberlist" + RegExp.$2;
}
if(anc[1].href.match(/username=(.+?)$/)) {
names[player] = (RegExp.$1).replace(/\+/g, " ");
}
html += "<a href=\"" + href + "\" title=\"" + anc[0].title + "\" class=\"" + anc[0].className + "\"> <span class=\"player" + (player + 1) + "\"> " + names[player] + " </span></a><br />";
elim--;
}
else{
html += "<li>Empty</li>";
}
player++;
}
var ims = getElementsByClassName(div, "img", "thumbnail", true);
var mu = new RegExp(/maps\/(.+?)\.thumb\.png/);
if(ims[0].src.match(mu)) {
image = escape(RegExp.$1);
}
var tables = getElementsByClassName(div,'table','listing',true);
var rows = tables[0].getElementsByTagName('tr');
var cells = rows[rows.length - 1].getElementsByTagName('td');
map = cells[2].getElementsByTagName('img')[0].alt;
gtype = "Game Type:<b>" + cells[1].innerHTML.split("<br>")[0] + "</b><br />" + "Play Order:<b>" + cells[1].innerHTML.split("<br>")[1] + "</b><br />";
gtype += "Bonus Cards:<b>" + cells[3].innerHTML.split("<br>")[0] + "</b><br />" + "Fortification:<b>" + cells[3].innerHTML.split("<br>")[1] + "</b><br />";
gtype += "Fog of War: <b>" + cells[4].innerHTML + "</b>";
html = "<div style=\"display:none\" id=\"div" + gameid[gameno] + "\"><span id=\"gtype\">Game: <b>" + gameid[gameno] + "</b><br />" + tournament + "Map: <b>" + map + "</b><br/>Players: <b>" + player + "</b><br />" + gtype + "<li></li><b><li>Awaiting Players</b></span>" + html + "</div>";
}
for(p=0;p<divs.length;p++) {
if(divs[p].id == 'log') {
var lines = divs[p].innerHTML.split(/<br>|<br \/>/);
var output = "";
var border = "";
if(lines.length > 0) {
textout[gameno] = "";
var num= lines.length - 1;
while(num > 0 && !lines[num].match(/ - <span class="(.+?)"/)) {
num--;
}
var last = (RegExp.$1).split("player")[1];
var reg = new RegExp(" - <span class=\"" + RegExp.$1 + "\"");
while( num> 0 && lines[num].match(reg)) {
if(lines[num].match(myPlayer)) {
border = "<li style=\"border: 2px solid red\">";
attacked = 1;
}
else{
border = "<li>";
}
textout[gameno] = lines[num].replace(/<span (.+?)>|<\/span>|^(.+?) - /g,'') + "\n" + textout[gameno];
output = border + lines[num].replace(/^(.+?) - /g,'') + "</li>" + output;
num--;
}
if(names[last - 1] == myPlayer) {
attacked = 0;
}
if(attacked) {
text += ". You have been attacked!";
}
if(cards[last - 1] > -1) {
if(names[last - 1] == myPlayer) {
border = "<div style=\"border: 2px solid red\">";
}
else{
border = "<div>";
}
output += border + alias[last - 1] + " now has " + cards[last - 1] + " cards</div><li></li>";
textout[gameno] += names[last - 1] + " now has " + cards[last - 1] + " cards";
}
output = "<br /><li></li><li><b>Last turn:</b> </li>" + output;
textout[gameno] = "\nLast turn: \n" + textout[gameno];
}
var old = GM_getValue('log' + gameid[gameno]);
html += output + "</div>";
if(old == textout[gameno] && classtype != 3 && classtype !=7) {
classtype = 0;
}
update[gameno] = classHover[classtype];
if(classtype && ((alerts & (1 << (classtype - 1))) || (attacked && (alerts & (1 << 5))))) {
alerting[gameno] = text;
}
}
else if (divs[p].id == 'chat') {
if(!classtype) {
var lines = divs[p].innerHTML.split(/<br>|<br \/>/);
if(lines.length > 0) {
var old = GM_getValue('chat' + gameid[gameno]);
if(typeof(old) != "undefined" && old != lines.length) {
lengths[gameno] = lines.length;
update[gameno] = classHover[5];
if(alerts & (1 << 4)) {
alerting[gameno] = "\nGame " + gameid[gameno] + ": New game chat";
}
}
}
}
break;
}
}
if(/www.conquerclub.com/.test(window.location.host)) {
var leftBar = document.getElementById("leftColumn");
if(leftBar) {
if(document.getElementById('turns')) {
if(gameid[gameno]){
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
ul.style.display = "none";
ul.innerHTML = "<li><table width=100% cellspacing=0 cellpadding=0><tr><td class=\"miniblock\"><a href=\"http://www.conquerclub.com/game.php?game=" + gameid[gameno] + "&full_log=Y\"><img alt=\"X\" class=\"miniblock minimap\" width=25 height=17 title=\"Go To Game " + gameid[gameno] + "\" src=\"http://www.conquerclub.com/maps/" + image + ".thumb.png\"></a></td><td><a style=\"padding:4px 0px\" id=\"show" + gameid[gameno] + "\" href=\"javascript:void(0);\"><span id=\"span" + gameid[gameno] + "\" " + update[gameno] + ">" + strikel + (player - elim) + "/" + player + "p" + round + " " + tourind + striker + "</a></td><td style=\"text-align:center\" class=\"mini\"><a style=\"padding:4px 1px 3px 0px\" href=#box><img title=\"Show Map\" id=box" + gameid[gameno] + " src=\"http://www.conquerclub.com/forum/styles/prosilver/theme/images/icon_search.gif\"></a></td><td style=\"text-align:center\" class=\"mini\"><a style=\"padding:4px 3px\" href=\"javascript:void(0);\"><span title=\"Remove\" class=\"errormsg-inline\" id=\"remove" + gameid[gameno] + "\" ><b>X</b></span></a></td></td></tr></table></li>" + html;
ul.id = "turnmenuUl" + gameid[gameno];
sortfn[sortalg](gameno,thistime);
document.getElementById('perc').innerHTML = (100 * (ingames.length)/(gameid.length)).toFixed(0) + "%";
if(ingames.length <= document.getElementById('twloading').getElementsByTagName('td').length)
document.getElementById('twloading').getElementsByTagName('td')[ingames.length - 1].style.background = "blue";
document.getElementById('turns').insertBefore(ul,document.getElementById('turns').getElementsByTagName('ul')[ingames.indexOf(gameid[gameno]) + options]);
if(thistime == (3600 * 24)) {
addListener(document.getElementById('box' + gameid[gameno]), "click" , function () {
alert("Game Waiting To Begin");
});
}
else{
addListener(document.getElementById('box' + gameid[gameno]), "click" , function () {
if(interval) window.clearTimeout(interval);
popupInfo = new Popup (parseInt(this.id.split('box')[1],10), myPlayer, image, ext, tournament, mtype);
pingpopup(0);
});
}
addListener(document.getElementById('show' + gameid[gameno]), "click" , function () {
var dind = parseInt(this.id.split('show')[1],10);
var gind = gameid.indexOf(dind);
if(textout[gind]) GM_setValue('log' + dind,textout[gind]);
if(lengths[gind]) GM_setValue('chat' + dind,lengths[gind]);
document.getElementById('span' + dind).className = '';
document.getElementById('div' + dind).style.display=(document.getElementById('div' + dind).style.display == ''? 'none':'');
});
addListener(document.getElementById('remove' + gameid[gameno]), "click" , function () {
var dind = parseInt(this.id.split('remove')[1],10);
var gind = gameid.indexOf(dind);
if(!window.confirm('Delete Game ' + dind)) {return false;}
document.getElementById('turns').removeChild(document.getElementById('turnmenuUl' + dind));
times.splice(ingames.indexOf(dind), 1);
ingames.splice(ingames.indexOf(dind), 1);
gameid.splice(gind, 1);
alerting.splice(gind, 1);
tourney.splice(gind,1);
GM_setValue('turngames', gameid.join(","));
GM_setValue('alerting',alerting.join(","));
GM_setValue('tourney', tourney.join(","));
});
if(ingames.length == gameid.length) {
loaded();
}
}
}
else{
ingames.push(gameid[gameno]);
times.push(thistime);
var ul = leftBar.getElementsByTagName("ul");
var gmMenu = document.createElement('div');
gmMenu.id="turns";
ul[0].parentNode.appendChild(gmMenu);
var t = document.createElement('h3');
t.innerHTML = "<b>Turn Watch <span style='font-size:7pt;' ><a href='http://www.conquerclub.com/forum/viewtopic.php?t=50592'>" + twversion + "</a></span></b>";
gmMenu.appendChild(t);
var ul = document.createElement ('ul');
ul.style.borderWidth = "1px 1px 0px";
if(twlatestVersion) {
ul.innerHTML = "<li><a id=\"twlatest\" href=http://userscripts.org/scripts/source/26003.user.js><span class=\"countdown-alert\">New Update Available</span></a></li>";
document.getElementById('turns').appendChild(ul);
}
else{
ul.innerHTML = "<li><a id=\"twlatest\" href=http://userscripts.org/scripts/source/26003.user.js><span>Latest Version Installed</span></a></li>";
document.getElementById('turns').appendChild(ul);
}
var ftext = features.join("\n");
addListener(document.getElementById('twlatest'), "click" , function () {
alert('New version features\n' + ftext);
});
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
ul.innerHTML = "<li><a id=\"mark\" href=\"javascript:void(0);\"><span>Mark All As Read</span></a></li>";
document.getElementById('turns').appendChild(ul);
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
var inner = "<li><a href=\"javascript:void(0);\" onclick=\"document.getElementById('alerts').style.display=(document.getElementById('alerts').style.display == ''? 'none':'');\"><span>Options</span></a></li>";
inner += "<div id=\"alerts\" style=\"display:none\"><b>Show alert box on</b><br />";
for(var b=1; b< chkbox.length + 1; b++) {
inner += "<input id=\"cbox" + b + "\" type=\"checkbox\" value=" + (b-1) + ((alerts & (1 << (b-1))) ? " checked":"") + ">" + chkbox[b-1] + "<br />";
}
inner += "<li></li><b>Sort Games By</b><br />";
for(var u=0; u< sorts.length; u++) {
inner += "<input id=\"sort" + u + "\" type=radio name=\"sort\" value=" + u + ((sortalg == u)? " checked":"") + ">" + sorts[u] + "<br />";
}
inner += "<li></li></div>";
ul.innerHTML = inner;
document.getElementById('turns').appendChild(ul);
for(var s=0; s< sorts.length; s++) {
addListener(document.getElementById('sort' + s), "click" , function () {
sortalg = this.value;
document.getElementById('leftColumn').getElementsByTagName('ul')[0].parentNode.removeChild(document.getElementById('turns'));
GM_setValue('sort',sortalg);
getTurns();
});
}
for(var c=1; c< chkbox.length + 1; c++) {
addListener(document.getElementById('cbox' + c), "click" , function () {
for (var d=1; d< chkbox.length + 1; d++){
if (document.getElementById('cbox' + d).checked==true)
alerts |= 1 << document.getElementById('cbox' + d).value;
else
alerts &= ~( 1 << document.getElementById('cbox' + d).value);
}
GM_setValue('alerts',alerts);
});
}
if(/game.php\?game=(\d+)/.test(window.location.href)) {
var newgame = parseInt(RegExp.$1, 10);
for(var h=0; h<gameid.length; h++) {
if(newgame == gameid[h]) {
newgame = -1;
break;
}
}
if(newgame > -1) {
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
ul.innerHTML = "<li><a id=\"add" + newgame + "\" href=\"javascript:void(0);\">Add This Game</a></li>";
document.getElementById('turns').appendChild(ul);
addListener(ul, "click" , function () {
gameid.push(newgame);
alerting.push("Now watching game " + newgame);
GM_setValue('turngames', gameid.join(","));
GM_setValue('alerting',alerting.join(","));
document.getElementById('turns').removeChild(this);
options--;
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.conquerclub.com/player.php?submit=Search&game_number=' + newgame,
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'text/html',
},
onload: function(responseDetails) {
var div=document.createElement('div');
div.innerHTML = responseDetails.responseText;
var gamenos = getElementsByClassName(div,'span','gameno',true);
var tour = previousSib(gamenos[0].parentNode.parentNode);
if(tour.childNodes[1].colSpan == 7) {
tourney.push(tour.childNodes[1].firstChild.innerHTML);
}
else{
tourney.push("");
}
GM_setValue('tourney', tourney.join(","));
details(gameid.length - 1);
}
});
});
}
}
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
var loading = "<li><a href=\"javascript:void(0);\">Loading Games <span id=\"perc\">0%</span><br /><table width=100% cellspacing=0 cellpadding=0><tr id=\"twloading\">";
for(var ld=0; ld<gameid.length;ld++) {
loading += "<td style=\"background-color:#cdc\"> </td>";
}
ul.innerHTML = loading + "</tr></table></a></li>";
ul.id = "collect";
document.getElementById('turns').appendChild(ul);
document.getElementById('perc').innerHTML = (100/(gameid.length)).toFixed(0) + "%";
document.getElementById('twloading').getElementsByTagName('td')[0].style.background = "blue";
if(gameid[gameno]){
var ul = document.createElement ('ul');
ul.style.borderWidth = "0px 1px";
ul.style.display = "none";
ul.innerHTML = "<li><table width=100% cellspacing=0 cellpadding=0><tr><td class=\"miniblock\"><a href=\"http://www.conquerclub.com/game.php?game=" + gameid[gameno] + "&full_log=Y\"><img alt=\"X\" class=\"miniblock minimap\" width=25 height=17 title=\"Go To Game " + gameid[gameno] + "\" src=\"http://www.conquerclub.com/maps/" + image + ".thumb.png\"></a></td><td><a style=\"padding:4px 0px\" id=\"show" + gameid[gameno] + "\" href=\"javascript:void(0);\"><span id=\"span" + gameid[gameno] + "\" " + update[gameno] + ">" + strikel + (player - elim) + "/" + player + "p" + round + " " + tourind + striker + "</a></td><td style=\"text-align:center\" class=\"mini\"><a style=\"padding:4px 1px 3px 0px\" href=#box><img title=\"Show Map\" id=box" + gameid[gameno] + " src=\"http://www.conquerclub.com/forum/styles/prosilver/theme/images/icon_search.gif\"></a></td><td style=\"text-align:center\" class=\"mini\"><a style=\"padding:4px 3px\" href=\"javascript:void(0);\"><span title=\"Remove\" class=\"errormsg-inline\" id=\"remove" + gameid[gameno] + "\" ><b>X</b></span></a></td></td></tr></table></li>" + html;
ul.id = "turnmenuUl" + gameid[gameno];
gmMenu.appendChild(ul);
if(thistime == (3600 * 24)) {
addListener(document.getElementById('box' + gameid[gameno]), "click" , function () {
alert("Game Waiting To Begin");
});
}
else{
addListener(document.getElementById('box' + gameid[gameno]), "click" , function () {
if(interval) window.clearTimeout(interval);
popupInfo = new Popup (parseInt(this.id.split('box')[1],10), myPlayer, image, ext, tournament, mtype);
pingpopup(0);
});
}
addListener(document.getElementById('show' + gameid[gameno]), "click" , function () {
var dind = parseInt(this.id.split('show')[1],10);
var gind = gameid.indexOf(dind);
if(textout[gind]) GM_setValue('log' + dind,textout[gind]);
if(lengths[gind]) GM_setValue('chat' + dind,lengths[gind]);
document.getElementById('span' + dind).className = '';
document.getElementById('div' + dind).style.display=(document.getElementById('div' + dind).style.display == ''? 'none':'');
});
addListener(document.getElementById('remove' + gameid[gameno]), "click" , function () {
var dind = parseInt(this.id.split('remove')[1],10);
var gind = gameid.indexOf(dind);
if(!window.confirm('Delete Game ' + dind)) {return false;}
document.getElementById('turns').removeChild(document.getElementById('turnmenuUl' + dind));
times.splice(ingames.indexOf(dind), 1);
ingames.splice(ingames.indexOf(dind), 1);
gameid.splice(gind, 1);
alerting.splice(gind, 1);
tourney.splice(gind,1);
GM_setValue('turngames', gameid.join(","));
GM_setValue('alerting',alerting.join(","));
GM_setValue('tourney', tourney.join(","));
});
}
options = document.getElementById('turns').getElementsByTagName('ul').length - 1;
if(/player.php\?mode=find/.test(window.location.href) || /player.php\?mode=mygames/.test(window.location.href) ||
/player.php\?submit=Search/.test(window.location.href)) {
var addgames = getElementsByClassName(document,'span','gameno',true);
for(var a=0; a< addgames.length; a++) {
if(gameid.indexOf(parseInt(addgames[a].innerHTML,10)) == -1) {
var thisnum = parseInt(addgames[a].innerHTML,10);
if(!document.getElementById('gadd' + thisnum)) {
var gadd = document.createElement('a');
gadd.href = "javascript:void(0);";
gadd.id = "gadd" + thisnum;
gadd.innerHTML = "Turn Watch";
addgames[a].parentNode.appendChild(document.createElement('br'));
addgames[a].parentNode.appendChild(document.createElement('br'));
addgames[a].parentNode.appendChild(gadd);
addListener(gadd, "click" , function () {
gameid.push(this.id.split('gadd')[1]);
alerting.push("Now watching game " + this.id.split('gadd')[1]);
var tour = previousSib(this.parentNode.parentNode);
if(tour.childNodes[1].colSpan == 7) {
tourney.push(tour.childNodes[1].firstChild.innerHTML);
}
else{
tourney.push("");
}
GM_setValue('tourney', tourney.join(","));
GM_setValue('turngames', gameid.join(","));
GM_setValue('alerting',alerting.join(","));
this.parentNode.removeChild(this);
details(gameid.length - 1);
});
}
}
}
}
if(ingames.length == gameid.length) {
loaded();
}
}
}
}
div = null;
}
}
gameReq[gameno].send(null);
}