// Opera UserJS - Countdown script for forumwarz. // This will place the countdown timer into the title // Author: TT // v1.2.0 //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() { 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.text.substr(0,1); //first char (number) if(submissions > 0) newTitle += spacer + submissions + "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.substr(0,1); //grab first char (number) newTitle += spacer + ass + "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 }