// Opera UserJS - Countdown script for forumwarz.
// This will place the countdown timer into the title
// Author: TT
// v1.2.2
//set these variables for the "options"
var useShort=true; //set to false if you prefer long string as title
var useExShort=false; //only uses biggest value (e.g. days only when at least one remains). trumps useShort.
var spacer=""; //default is a "nothing" for the spacer. use " " for a space
var useZeros=false; //show 0 days/hours/minutes as "0" instead of excluding them
var trackIncit=true;
var trackDomination=true;
var trackAuctions=true;
var trackVisits=true; // track time until visits reload (also deliveries) on /character/me
var trackItemBuildr=true;
var trackForumBuildr=true;
// !!! DO NOT EDIT BELOW THIS UNLESS YOU KNOW WHAT YOU ARE DOING !!!
var orgTitle = document.title;
var URL = document.location.href;
var isDom = URL.indexOf('forumwarz.com/domination') != -1;
var isIncit = URL.indexOf('forumwarz.com/incit') != -1;
var isAuc = URL.indexOf('forumwarz.com/auctions') != -1;
var isCharMe = URL.indexOf('forumwarz.com/characters/me') != -1;
var isIB = URL.indexOf('forumwarz.com/item_buildr') != -1;
var isFB = URL.indexOf('forumwarz.com/forum_buildr') != -1;
window.opera.addEventListener(
'afterscript', //we definitely want scripts loaded first
function (e) { //only enter main if we are on a proper page and the countdown script loaded
if( e.element.getAttribute('src').indexOf('countdown.js') != -1 && (
(isDom && trackDomination) ||
(isIncit && trackIncit) ||
(isAuc && trackAuctions) ||
(isCharMe && trackVisits) ||
(isIB && trackItemBuildr) ||
(isFB && trackForumBuildr)
)){
setTimeout("checkForCountdown()", 1000); //give it 1 second for safety
}
},
false
);
function checkForCountdown(){ //TODO add end of timer check here or maybe main()
if(document.getElementById("countdown") != null)
main(); //countdown element is not empty. enter main
else
setTimeout("checkForCountdown()", 1000); //else loop
}
//our main function that calls itself (loop)
function main() {
if(document.getElementById("countdown")==null){
document.title=orgTitle;
setTimeout("main()",1000); //keep retrying
return; //exit for now
}
var fCD = document.getElementById("countdown").firstChild.nodeValue; //full countdown
var offset = 0; //default no offset (auctions)
if(isDom || isIncit || isIB) offset = 3; //offset fix for domination, INCIT, and Item_Buildr
if(fCD.indexOf('until the next round begins') != -1 || isFB)
offset = 5; //extra offset fix for "end of round" for INCIT and for Forum_Buildr
if(isCharMe) offset = 6; // character/me offset fix
var newTitle; //start out new title variable
var sArray = fCD.split(" "); //split countdown text by spaces
if(useExShort){
newTitle = sArray[0] + sArray[1].substr(0,1); //grb first char (number) only
} else if(useShort && !useZeros){
switch(sArray.size()-offset){
case 3: //seconds
newTitle = sArray[0] + "s";break;
case 6: //minutes+seconds
newTitle = sArray[0] + "m" + spacer + sArray[3] + "s";break;
case 8: //hours+minutes+seconds
newTitle = sArray[0] + "h" + spacer + sArray[2] + "m" + spacer + sArray[5] + "s";break;
case 10: //days+hours+minutes+seconds
newTitle = sArray[0] + "d" + spacer + sArray[2] + "h" + spacer + sArray[4] + "m" + spacer + sArray[7] + "s";break;
default:
newTitle = fCD;
}
} else if(useShort && useZeros) {
switch(sArray.size()-offset){
case 3: //seconds
newTitle = "0d" + spacer + "0h" + spacer + "0m" + spacer + sArray[0] + "s";break;
case 6: //minutes+seconds
newTitle = "0d" + spacer + "0h" + spacer + sArray[0] + "m" + spacer + sArray[3] + "s";break;
case 8: //hours+minutes+seconds
newTitle = "0d" + spacer + sArray[0] + "h" + spacer + sArray[2] + "m" + spacer + sArray[5] + "s";break;
case 10: //days+hours+minutes+seconds
newTitle = sArray[0] + "d" + spacer + sArray[2] + "h" + spacer + sArray[4] + "m" + spacer + sArray[7] + "s";break;
default:
newTitle = fCD;
}
} else if(!useShort && useZeros) {
switch(sArray.size()-offset){
case 3: //seconds
newTitle = "0 days 0 hours 0 minutes and " + fCD;break;
case 6: //minutes+seconds
newTitle = "0 days 0 hours " + fCD;break;
case 8: //hours+minutes+seconds
newTitle = "0 days " + fCD;break;
default: //case 10 (days,hrs,mins,secs) is same as default so let's just default =P
newTitle = fCD;
}
} else {
newTitle=fCD; //no match. use full countdown string
}
if(isIncit && trackIncit){ //INCIT specific code
var submissions = document.getElementById('submissions_received');
if(submissions!=undefined){ //for when it's not loaded yet
submissions = submissions.innerHTML.split(" ",1); //first chars (number)
if(submissions > 0)
newTitle += spacer + submissions[0] + "sub"; //append number + "sub" to new title
}
var links = document.getElementsByTagName('a'); //grab all links
var ass = "0"; //initialize "ass"
for(i=40;i<60;i++){ //should be the 47th link, but we will search this range if links change
if (links[i].text.indexOf("Assholes Online") != -1){ //find "Assholes Online" link text
ass = links[i].text.split(" ",1); //grab first chars (number)
newTitle += spacer + ass[0] + "ass"; //append number + "ass" to new title
break; //exit loop. we only need one match. I got two for some reason...
}
}
}
document.title=newTitle; //finally, set the new title
setTimeout("main()", 1000); //loop main with delay
}