View difference between Paste ID: Bta6nLi9 and
SHOW: | | - or go back to the newest paste.
1-
1+
// Opera UserJS - Countdown script for forumwarz.
2
// This will place the countdown timer into the title
3
// Author: TT
4
// v1.2.2
5
6
//set these variables for the "options"
7
var useShort=true; //set to false if you prefer long string as title
8
var useExShort=false; //only uses biggest value (e.g. days only when at least one remains). trumps useShort.
9
var spacer=""; //default is a "nothing" for the spacer. use " " for a space
10
var useZeros=false; //show 0 days/hours/minutes as "0" instead of excluding them
11
var trackIncit=true;
12
var trackDomination=true;
13
var trackAuctions=true;
14
var trackVisits=true; // track time until visits reload (also deliveries) on /character/me
15
var trackItemBuildr=true;
16
var trackForumBuildr=true;
17
18
// !!! DO NOT EDIT BELOW THIS UNLESS YOU KNOW WHAT YOU ARE DOING !!!
19
20
var orgTitle = document.title;
21
var URL = document.location.href;
22
var isDom = URL.indexOf('forumwarz.com/domination') != -1;
23
var isIncit = URL.indexOf('forumwarz.com/incit') != -1;
24
var isAuc = URL.indexOf('forumwarz.com/auctions') != -1;
25
var isCharMe = URL.indexOf('forumwarz.com/characters/me') != -1;
26
var isIB = URL.indexOf('forumwarz.com/item_buildr') != -1;
27
var isFB = URL.indexOf('forumwarz.com/forum_buildr') != -1;
28
29
30
window.opera.addEventListener(
31
	'afterscript', //we definitely want scripts loaded first
32
	function (e) { //only enter main if we are on a proper page and the countdown script loaded
33
		if( e.element.getAttribute('src').indexOf('countdown.js') != -1 && (
34
			(isDom && trackDomination) ||
35
			(isIncit && trackIncit) ||
36
			(isAuc && trackAuctions) ||
37
			(isCharMe && trackVisits) ||
38
			(isIB && trackItemBuildr) ||
39
			(isFB && trackForumBuildr)
40
		)){
41
			setTimeout("checkForCountdown()", 1000); //give it 1 second for safety
42
		}
43
	},
44
	false
45
);
46
47
function checkForCountdown(){ //TODO add end of timer check here or maybe main()
48
	if(document.getElementById("countdown") != null)
49
		main(); //countdown element is not empty. enter main
50
	else
51
		setTimeout("checkForCountdown()", 1000); //else loop
52
}
53
54
//our main function that calls itself (loop)
55
function main() {
56
	if(document.getElementById("countdown")==null){
57
		document.title=orgTitle;
58
		setTimeout("main()",1000); //keep retrying
59
		return; //exit for now
60
	}
61
	var fCD = document.getElementById("countdown").firstChild.nodeValue; //full countdown
62
63
	var offset = 0; //default no offset (auctions)
64
	if(isDom || isIncit || isIB) offset = 3; //offset fix for domination, INCIT, and Item_Buildr
65
	if(fCD.indexOf('until the next round begins') != -1 || isFB)
66
		offset = 5; //extra offset fix for "end of round" for INCIT and for Forum_Buildr
67
	if(isCharMe) offset = 6; // character/me offset fix
68
69
	var newTitle; //start out new title variable
70
	var sArray = fCD.split(" "); //split countdown text by spaces
71
72
	if(useExShort){
73
		newTitle = sArray[0] + sArray[1].substr(0,1); //grb first char (number) only
74
	} else if(useShort && !useZeros){
75
	  switch(sArray.size()-offset){
76
		case 3: //seconds
77
			newTitle = sArray[0] + "s";break;
78
		case 6: //minutes+seconds
79
			newTitle = sArray[0] + "m" + spacer + sArray[3] + "s";break;
80
		case 8: //hours+minutes+seconds
81
			newTitle = sArray[0] + "h" + spacer + sArray[2] + "m" + spacer + sArray[5] + "s";break;
82
		case 10: //days+hours+minutes+seconds
83
			newTitle = sArray[0] + "d" + spacer + sArray[2] + "h" + spacer + sArray[4] + "m" + spacer + sArray[7] + "s";break;
84
		default:
85
			newTitle = fCD;
86
	  }
87
	} else if(useShort && useZeros) {		
88
	  switch(sArray.size()-offset){
89
		case 3: //seconds
90
			newTitle = "0d" + spacer + "0h" + spacer + "0m" + spacer + sArray[0] + "s";break;
91
		case 6: //minutes+seconds
92
			newTitle = "0d" + spacer + "0h" + spacer + sArray[0] + "m" + spacer + sArray[3] + "s";break;
93
		case 8: //hours+minutes+seconds
94
			newTitle = "0d" + spacer + sArray[0] + "h" + spacer + sArray[2] + "m" + spacer + sArray[5] + "s";break;
95
		case 10: //days+hours+minutes+seconds
96
			newTitle = sArray[0] + "d" + spacer + sArray[2] + "h" + spacer + sArray[4] + "m" + spacer + sArray[7] + "s";break;
97
		default:
98
			newTitle = fCD;
99
	  }
100
	} else if(!useShort && useZeros) {
101
	  switch(sArray.size()-offset){
102
		case 3: //seconds
103
			newTitle = "0 days 0 hours 0 minutes and " + fCD;break;
104
		case 6: //minutes+seconds
105
			newTitle = "0 days 0 hours " + fCD;break;
106
		case 8: //hours+minutes+seconds
107
			newTitle = "0 days " + fCD;break;
108
		default: //case 10 (days,hrs,mins,secs) is same as default so let's just default =P
109
			newTitle = fCD;
110
	  }
111
	} else {
112
		newTitle=fCD; //no match. use full countdown string
113
	}
114
115
	if(isIncit && trackIncit){ //INCIT specific code
116
		var submissions = document.getElementById('submissions_received');
117
		if(submissions!=undefined){ //for when it's not loaded yet
118
			submissions = submissions.innerHTML.split(" ",1); //first chars (number)
119
			if(submissions > 0)
120
				newTitle += spacer + submissions[0] + "sub"; //append number + "sub" to new title
121
		}
122
123
		var links = document.getElementsByTagName('a'); //grab all links
124
		var ass = "0"; //initialize "ass"
125
		for(i=40;i<60;i++){ //should be the 47th link, but we will search this range if links change
126
			if (links[i].text.indexOf("Assholes Online") != -1){ //find "Assholes Online" link text
127
				ass = links[i].text.split(" ",1); //grab first chars (number)
128
				newTitle += spacer + ass[0] + "ass"; //append number + "ass" to new title
129
				break; //exit loop. we only need one match. I got two for some reason...
130
			}
131
		}
132
	}
133
134
	document.title=newTitle; //finally, set the new title
135
	setTimeout("main()", 1000); //loop main with delay
136
}