Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
function timeStamp_DrTerror_js() {
/* Updated again for the new event cycle */
/* Note: The terror offsets are no longer used,
* but are kept as parameters, so the code isn't
* broken. */
return '2016.11.03 19:38 (UTC-5)';
}
/* Create Event Widget */
function createCountdownWidget() {
function timeDiff(time1, time2) {
// Time comes in milliseconds, but we just want the difference in days, hours,
// and minutes.
// And don't care which one is higher
var diff = Math.floor(Math.abs(time1 - time2) / (1000 * 60));
var divisors = [24 * 60, 60, 1];
var abbrevs = ['D', 'H', 'M'];
for (i = 0; i < divisors.length; i++) {
var remainder = diff - Math.floor( diff / divisors[i]) * divisors[i];
if (diff > remainder || i === divisors.length - 1) {
abbrevs[i] = ((diff - remainder) / divisors[i]) + abbrevs[i];
}
else {
abbrevs[i] = '';
}
diff = remainder;
}
while (abbrevs.length > 1 && !abbrevs[0]) {
abbrevs.shift();
}
return abbrevs.join(' ');
}
function updateEventsWidget(w, now, eventCycleType) {
if (!w) {
w = $('#dr-terror-activity').get(0);
}
if (!w) {
return;
}
var divTextMiddle = $(w).find('div#events-text-middle').get(0);
var divTextBottom = $(w).find('div#events-text-bottom').get(0);
// Determine time of the end of today's event
var todayCutOff = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 8, 0, 0, 0);
var tomorrowCutOff = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1, 8, 0, 0, 0);
var eventCycleEnd = todayCutOff.getTime() < now.getTime() ? tomorrowCutOff : todayCutOff;
// Next and current event determination
var nextEvent = '';
var event = '';
if (eventCycleType === 0) {
event = 'hammerman';
nextEvent = 'drt';
}
else if (eventCycleType === 1) {
event = 'drt';
nextEvent = 'volcano';
}
else if (eventCycleType === 2) {
event = 'volcano';
nextEvent = 'gearheart';
}
else if (eventCycleType === 3) {
event = 'gearheart';
nextEvent = 'imitation';
}
else if (eventCycleType === 4) {
event = 'imitation';
nextEvent = 'drt';
}
else if (eventCycleType === 5) {
event = 'drt';
nextEvent = 'volcano';
}
else if (eventCycleType === 6) {
event = 'volcano';
nextEvent = 'hammerman';
}
var remaining = timeDiff(now, eventCycleEnd);
var tilNextEvent = '';
if (nextEvent === 'gearheart') {
divTextBottom.innerHTML = 'Next Event: WAR FACTORY';
}
else if (nextEvent === 'hammerman') {
divTextBottom.innerHTML = 'Next Event: HAMMERMAN\'S FLEET';
}
else if (nextEvent === 'drt') {
divTextBottom.innerHTML = 'Next Event: TROPICAL DR. T';
}
else if (nextEvent === 'volcano') {
divTextBottom.innerHTML = 'Next Event: VOLCANO DR. T';
}
else if (nextEvent === 'imitation') {
divTextBottom.innerHTML = 'Next Event: IMITATION GAME';
}
if (remaining) {
divTextMiddle.innerHTML = remaining + ' REMAINING';
}
}
function createEventsWidget() {
var widget = document.getElementById("intel-box-back");
if (widget !== null) {
widget.parentNode.removeChild(widget);
}
widget = document.createElement("div");
widget.id = 'events-box-back';
// Front of box
var widgetFront = document.createElement('div');
widgetFront.id = 'events-box-front';
// Image - Use an div to help
var divImage = document.createElement('div');
divImage.id = 'events-div-image';
var imgImage = document.createElement('img');
// Actual image - couldn't get content to work on my computer
imgImage.id = 'events-image';
// Image default dimensions
imgImage.width="90px";
imgImage.height="50px";
// Current Event
var divTextTop = document.createElement('div');
divTextTop.id = 'events-text-top';
// Time Left
var divTextMiddle = document.createElement('div');
divTextMiddle.id = 'events-text-middle';
// Next Event
var divTextBottom = document.createElement('div');
divTextBottom.id = 'events-text-bottom';
// Change countdown
var divChangeBox = document.createElement('div');
divChangeBox.id = 'countdown-switch-box';
var divChangeText = document.createElement('div');
divChangeText.id = 'countdown-switch-text';
divChangeText.innerHTML = 'Switch to Intel Countdown';
// Calculate which event information to show
var now = new Date();
now.setSeconds(0);
now.setMilliseconds(0);
// Event cycle starts on Monday now; getDay() returns day of week
// from Sunday (as 0)
var eventCycleType = now.getDay() - 1;
if (eventCycleType < 0) {
eventCycleType = 6;
}
// Determine image to use
if (eventCycleType === 3) {
imgImage.src = "https://vignette.wikia.nocookie.net/boombeach/images/1/14/Colonel_Gearheart.png/revision/latest?cb=20150506115021";
}
else if (eventCycleType === 0 || eventCycleType == 4) {
imgImage.src = "https://vignette.wikia.nocookie.net/boombeach/images/c/c3/Hammerman.png/revision/latest?cb=20150213181715";
}
else {
imgImage.src = "https://vignette.wikia.nocookie.net/boombeach/images/0/03/Terrorc.png/revision/latest?cb=20150506231414";
}
if (eventCycleType === 3) {
// Set class names
widget.className = 'events-gearheart';
widgetFront.className = 'events-gearheart';
divImage.className = 'events-gearheart';
imgImage.className = 'events-gearheart';
// Event Name
divTextTop.innerHTML = 'WAR FACTORY ACTIVE';
} else if (eventCycleType === 0 || eventCycleType === 4) {
// Set class names
widget.className = 'events-hammerman';
widgetFront.className = 'events-hammerman';
divImage.className = 'events-hammerman';
imgImage.className = 'events-hammerman';
if (eventCycleType === 0) {
// Event Name
divTextTop.innerHTML = 'HAMMERMAN\'S FLEET ACTIVE';
} else {
// Event Name
divTextTop.innerHTML = 'IMITATION GAME ACTIVE';
}
} else {
// Set class names
widget.className = 'events-terror';
widgetFront.className = 'events-terror';
divImage.className = 'events-terror';
imgImage.className = 'events-terror';
// Event Name
if (eventCycleType === 1 || eventCycleType === 5) {
divTextTop.innerHTML = 'TROPICAL DR. T ACTIVE';
} else {
divTextTop.innerHTML = 'VOLCANO DR. T ACTIVE';
}
}
// Register onclick event
divChangeBox.addEventListener("click", createCountdownWidget);
// Append some children
widget.appendChild(widgetFront);
widgetFront.appendChild(divImage);
widgetFront.appendChild(divTextTop);
widgetFront.appendChild(divTextMiddle);
widgetFront.appendChild(divTextBottom);
widgetFront.appendChild(divChangeBox);
divImage.appendChild(imgImage);
divChangeBox.appendChild(divChangeText);
// Calculate which widget we should show
updateEventsWidget(widget, now, eventCycleType);
// Return the created widget
return widget;
}
// Intel Countdown
function createIntelWidget() {
var widget = document.getElementById('events-box-back');
if (widget !== null) {
widget.parentNode.removeChild( widget );
}
widget = document.createElement('div');
widget.id = 'intel-box-back';
// Front of box
var widgetFront = document.createElement('div');
widgetFront.id = 'intel-box-front';
// Image - Use a div to help
var divImage = document.createElement('div');
divImage.id = 'events-div-image';
var imgImage = document.createElement('img');
// Actual image - couldn't get content to work on my computer
imgImage.id = 'intel-image';
// Image default dimensions
imgImage.width="75px";
imgImage.height="75px";
// Image url
imgImage.src = 'https://vignette.wikia.nocookie.net/boombeach/images/0/05/Intel_75px.png/revision/latest?cb=20151230203622';
// Current Event
var divTextTop = document.createElement('div');
divTextTop.id = 'intel-text-top';
divTextTop.innerHTML = 'NEXT INTEL RESET IN';
// Time Left
var divTextMiddle = document.createElement('div');
divTextMiddle.id = 'intel-text-remaining';
// Calculate remaining time
var now = new Date();
var resetTime = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(),
now.getUTCDate(), 0, 0, 0, 0));
// It resets midnight Sunday
resetTime.setDate( resetTime.getDate() + (7 - resetTime.getUTCDay()) );
divTextMiddle.innerHTML = timeDiff( now, resetTime );
// Change countdown
var divChangeBox = document.createElement('div');
divChangeBox.id = 'countdown-switch-box';
var divChangeText = document.createElement('div');
divChangeText.id = 'countdown-switch-text';
divChangeText.innerHTML = 'Switch to Event Countdown';
// Register onclick event
divChangeBox.addEventListener("click", createCountdownWidget);
// Append some children
widget.appendChild(widgetFront);
widgetFront.appendChild(divImage);
widgetFront.appendChild(divTextTop);
widgetFront.appendChild(divTextMiddle);
widgetFront.appendChild(divChangeBox);
divImage.appendChild(imgImage);
divChangeBox.appendChild(divChangeText);
// Return the created widget
return widget;
}
// Determines the current widget
function getCurrentWidget() {
if (document.getElementById('events-box-back') !== null) {
return 'events';
}
else {
return 'intel';
}
}
var widget = null;
// Display the widget opposite the current one.
// Due to how getCurrentWidget is setup, the events widget is always
// the first one to be shown.
if (getCurrentWidget() === 'events') {
// Create the widget
widget = createIntelWidget();
}
else {
widget = createEventsWidget();
}
// Add the widget after the main page ad, if it exists
var divParent = null;
var divBefore = null;
var divAd = document.getElementById('HOME_TOP_RIGHT_BOXAD');
if (divAd !== null) {
divParent = divAd.parentNode;
divBefore = divAd.nextSibling;
}
if (divParent === null) {
// If not, add it after the search box, as long as its int the right rail
var divRail = document.getElementById('WikiaRail');
var divAfter = null;
if (divRail !== null) {
divAfter = divRail.getElementsByClassName('WikiaSearch')[0];
}
if (typeof divAfter !== 'undefined' && divAfter !== null) {
divParent = divAfter.parentNode;
divBefore = divAfter.nextSibling;
}
else if (divRail !== null) {
// If we didn't find a search box in the right rail, we atleast found
// a right rail, add it to the top
divParent = divRail;
divBefore = divRail.firstChild;
}
}
if (divParent === null) {
return;
}
// Now find the appropriate spot in the rail to add the widget
return divParent.insertBefore(widget, divBefore);
}
/* Doesn't work when not on Fandom */
addOnloadHook(createCountdownWidget);
//window.onload = createCountdownWidget();