- // ==UserScript==
-
- // @version 1.8.4
-
- // @name INCIT Monitor
-
- // @author quangntenemy, Emilien Klein, DG-Root
-
- // @description Forumwarz.com - Shows the status of INCIT and plays sounds.
-
- // @include http://forumwarz.com/incit
-
- // @include http://forumwarz.com/incit#
-
- // @include http://*.forumwarz.com/incit
-
- // @include http://*.forumwarz.com/incit#
-
- // @resource resSoundVoting http://zhost.tk/u/n2/voting.wav
-
- // @resource resSoundNewRound http://zhost.tk/u/zt/newround.wav
-
- // @resource resSoundResults http://zhost.tk/u/h0/results.wav
-
- // @resource resSoundNag http://zhost.tk/u/54/nag.wav
-
- // @resource resSoundUrgency http://zhost.tk/u/p8/urgency.wav
-
- // @resource resSoundNotify http://zhost.tk/u/42/notify.wav
-
- // @resource resSoundHighlight http://zhost.tk/u/rp/highlight.wav
-
- // @resource resSoundCelebrate http://incit.250free.com/alerts/celebrate.wav
-
- // @resource resImgSettings http://zhost.tk/u/na/settings.gif
-
- // @resource resImgGear http://zhost.tk/u/ug/gear.png
-
- // @namespace https://greasyfork.org/users/121268
- // ==/UserScript==
-
- /*
-
- History:
-
- 09.04.2011 - v1.8.4 - Changed resource host to zhost.tk, 250free died.
-
- 25.06.2010 - v1.8.3.1 - Added celebration alert, doesn't quite work. [never released]
-
- 24.06.2010 - v1.8.3 - Fixed a small bug where round history was generated backwards,
-
- made 'reset' button refresh the history and display the most
-
- recent round results.
-
- 24.06.2010 - v1.8.2 - Fixed bug with ads displaying, added option to remove ads,
-
- made INCIT-Bot optional, made branch of code without chat
-
- features not execute (faster script), added multiple previous
-
- round results display,added optional alert box upon voting, sped
-
- up nick name matching by using generated regular expression,
-
- fixed nickname highlighting so message sent and nickname
-
- highlight did not collide.
-
- 20.06.2010 - v1.8.1 - Moved settings, fixed console bug, inserted '@all' as a default nick,
-
- added sub urgency nagging if you're the last one to submit, added settings tabs,
-
- rewrote settings text, added settings titles for controls, added option groups,
-
- added individual volume controls, removed individual checkboxes.
-
- 17.06.2010 - v1.8 - Updated to cache resources for local sounds and added a missing check for notify alerts.
-
- 17.06.2010 - v1.7 - Updated to add chat sounds and nick highlighting.
-
- 10.06.2010 - v1.6 - Updated to add nagging and cleaned up code.
-
- 09.06.2010 - v1.5 - Updated to add options, clean up code, and make audio a function.
-
- 31.05.2010 - v1.4 - Updated to fix audio, parse out INCIT-Bot, and to clean up code.
-
- 29.05.2010 - v1.3 - Updated to add an audiable tone to notify of voting sessions.
-
- 29.05.2010 - v1.2 - Updated minimum timer to be a product of the submissions received.
-
- 29.05.2010 - v1.1 - Updated to a non-polling version to be kinder to the ForumWarz servers.
-
- 29.05.2010 - v1.0 - First version uploaded to userscripts.org
-
- --------------------------------------------------------------------------------
-
- */
-
-
-
- // Settings information.
-
- datCurrentUser = document.getElementById('talk_entry').childNodes[3].innerHTML.split('"your_name":"')[1].split('","colors"')[0];
-
-
-
- /* [['tabName',[
-
- [<!TABFAMILY>['variablename', 'defaultvalue', 'shortDescription', 'longDescription', 'type', ('resource'?), ('additionalAttribs'[[a,b],[c,d]]?)],
-
- [...]],
-
- [<!TABFAMILY2>[...]]
-
- ]
-
- ],
-
- ['tabName2',[
-
- [[...]],
-
- [[...],
-
- [...]]
-
- ]
-
- ]]; */
-
- // This variable identifies the groupings of the settings and their default avalues.
-
- name_sets = [['Sounds',[
-
- [['useSound', true, 'Use sounds', 'Toggle the use of sounds by INCIT Monitor. Default: on', 'checkbox']],
-
- [['useVoteAlert', false, '', 'Grabs your attention with a pop-up alert box when it is time for voting.', 'checkbox'],
-
- ['volVoteSound', '1.0', '', 'Volume of the voting start sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlVoteSound', 'http://www.mdn.fm/files/292806_jerwp/voting.wav', 'Voting started', 'URL to the sound file. Play an alert when voting starts.', 'text', 'resSoundVoting']],
-
- [['useNewRoundAlert', false, '', 'Grabs your attention with a pop-up alert box when a new round starts.', 'checkbox'],
-
- ['volNewRoundSound', '1.0', '', 'Volume of the new round sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlNewRoundSound', 'http://zhost.tk/u/zt/newround.wav', 'New round', 'URL to the sound file. Play an alert when a new round begins.', 'text', 'resSoundNewRound']],
-
- [['useResultsAlert', false, '', 'Grabs your attention with a pop-up alert box when results are displayed.', 'checkbox'],
-
- ['volResultsSound', '1.0', '', 'Volume of the results displayed sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlResultsSound', 'http://zhost.tk/u/h0/results.wav', 'Results shown', 'URL to the sound file. Play an alert when round results are displayed.', 'text', 'resSoundResults']],
-
- // [['useCelebrateAlert', false, '', 'Grabs your attention with a pop-up alert box when you won.', 'checkbox'],
-
- // ['volCelebrateSound', '1.0', '', 'Volume of the round won sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- // ['urlCelebrateSound', 'http://incit.250free.com/alerts/celebrate.wav', 'Won round', 'URL to the sound file. Play an alert when user wins a round.', 'text', 'resSoundCelebrate']],
-
- [['useNagAlert', false, '', 'Grabs your attention with a pop-up alert box when you haven\t submitted and the round gets extended.', 'checkbox'],
-
- ['volSubNagging', '1.0', '', 'Volume of the submission nagging sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlSubNagging', 'http://zhost.tk/u/54/nag.wav', 'Submission nagging', 'URL to the sound file. Play an alert if the user did not submit yet and the round gets extended.', 'text', 'resSoundNag'],
-
- ['useNagUrgencyAlert', false, '', 'Grabs your attention with a pop-up alert box when you are the last required submission before voting starts.', 'checkbox'],
-
- ['volSubNagUrgency', '1.0', '', 'Volume of the urgent submission nagging sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlSubNagUrgency', 'http://zhost.tk/u/p8/urgency.wav', 'Urgent submission nagging', 'URL to the sound file. Play an alert if the user did not submit and only one more submission is needed.', 'text', 'resSoundUrgency'],
-
- ['varNagSensitivity', '1', 'Nagging sensitivity', 'Number of rounds pushed before submission nagging kicks in. (Applies to Urgent Nagging, too.)', 'text']],
-
- ]
-
- ],
-
- ['Chat',[
-
- [['useChatFeatures', true, 'Use chat features', 'Toggle the use of chat enhancing features.', 'checkbox']],
-
- [['varKillAds', false, 'Remove text ads', 'Disables ads that are placed in INCIT chat.', 'checkbox']],
-
- [['useChatNotifyAlert', false, '', 'Grabs your attention with a pop-up alert box when chat has activity.', 'checkbox'],
-
- ['volChatNotify', '1.0', '', 'Volume of the chat activity sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlChatNotify', 'http://zhost.tk/u/42/notify.wav', 'Chat activity', 'URL to the sound file. Play an alert whenever someone in the chat sends a new message.', 'text', 'resSoundNotify']],
-
- [['useChatHighlightAlert', false, '', 'Grabs your attention with a pop-up alert box when one of the below names are mentioned.', 'checkbox'],
-
- ['volChatHighlight', '1.0', '', 'Volume of chat highlight sound. Number between 1.0 and 0.0. Default: 1.0', 'text', undefined, [['style','width: 15%; margin-right: 5px;'],['size',3]]],
-
- ['urlChatHighlight', 'http://zhost.tk/u/rp/highlight.wav', 'Nickname mentoined', 'URL to the sound file. Play an alert whenever one of the names below are mentioned.', 'text', 'resSoundHighlight'],
-
- ['datChatHighlight', datCurrentUser+',@all', 'Nicknames list', 'A comma separated list of nicknames. Do not use spaces if the nickname does not include them, they count.', 'text'],
-
- ['useChatHighlight2', true, 'Highlight alternate nicknames.', 'Enable highlighting feature (whenever someone says your name normally) in INCIT Chat for alternate names.', 'checkbox']]
-
- ]
-
- ],
-
- ['History',[]
-
- ]];
-
- // This variable is dynamically populated with the variable-level contents of name_sets.
-
- extr_sets = [];
-
- // This variable serves as a means of telling where each tab sections off.
-
- splt_sets = [];
-
- i = -1;
-
- for(a in name_sets){
-
- // Iterating the names and arrays.
-
- tempBegin = i+1;
-
- for(b in name_sets[a][1]){
-
- // Iterating the family groups.
-
- for(c in name_sets[a][1][b]){
-
- // Iterating each individual setting.
-
- extr_sets[extr_sets.length]=name_sets[a][1][b][c];
-
- i++;
-
- }
-
- }
-
- splt_sets[a] = [tempBegin,i+1];
-
- }
-
- sets = [];
-
-
-
- lastStamp = Math.round(new Date().getTime() / 1000);
-
- lastRound = [];
-
- lastStats = [];
-
- // lastStats[x][0] = Number of Assholes on.
-
- // lastStats[x][1] = Image URL
-
-
-
- // Stat variables.
-
- numRoundsAttended = 0;
-
- numPeopleInIncit = 0;
-
- numSecondsLeft = 0;
-
- numSubsInIncit = 0;
-
- numRoundsPushed = 0;
-
-
-
- // Flag variables.
-
- numRoundMode = 0;
-
- // 0 = No round change. (What the round type reverts to after alerting.)
-
- // 1 = New Round.
-
- // 2 = Pushed Round
-
- // 3 = Voting Round
-
- // 4 = Results Round
-
- numLastChat = 3;
-
- isPartyStrobe = 0;
-
- isPartyStarted = 0;
-
- isNagTime = 0;
-
- isNagTrip = 0;
-
- isHighlight = 0;
-
- numMinSubs = 5;
-
- numSecsIsPushed = 25;
-
- numCurrentTab = 0;
-
- incitmonitorsets_open = false;
-
-
-
- // Constant variables.
-
- initResizeText = document.getElementById('vertical_resizer').innerHTML;
-
- numSoundLayers = 3;
-
-
-
- // Stylesheet insertion.
-
- GM_addStyle("#settings { z-index: 100; background-color: #c3d9ff; padding-left: 3px; padding-top: 3px; padding-right: 3px; height: 450px; } #settings div.settings_header { background-color: #FFFFFF; background-image: url("+GM_getResourceURL("resImgSettings")+"); background-position: 3px 3px; background-repeat: no-repeat; height: 56px; } #settings div.settings_header a { float: right; font-size: 18px; padding-right: 5px; padding-top: 3px; text-decoration: none; } #settings div.settings_header .nest { padding-top: 30px; display: block; text-decoration: none; width: 100%;} #settings .scroll_list { overflow: auto; height: 358px; } #settings .scroll_list .setting { padding: 3px 3px 3px 3px; background-color: #fff; margin-top: 1px; display: block; text-decoration: none; width: 97%;} #settings .scroll_list .setting .name { text-decoration: underline; } #settings .scroll_list .setting .title { font-weight: bold; font-size: 120%; display: inline; } #settings .scroll_list .setting .text { font-size: 110%; } #settings .scroll_list .setting .votes { float: right; }");
-
-
-
- // Inject settings icon.
-
- newImg = document.createElement("img");
-
- newImg.setAttribute('id', 'incit_monitor_settings');
-
- newImg.setAttribute('src', GM_getResourceURL("resImgGear"));
-
- newImg.setAttribute('alt', 'sets');
-
- newImg.setAttribute('style', 'display: table-cell; vertical-align: middle');
-
- document.getElementById('idc_form').appendChild(newImg);
-
- document.getElementById('incit_monitor_settings').addEventListener("click", openSettings, true);
-
- delete newImg;
-
-
-
- // Establish sound layers.
-
- document.getElementById('vertical_resizer').removeChild(document.getElementById('vertical_resizer').childNodes[0]);
-
- newDiv = document.createElement('div');
-
- newDiv.setAttribute('id', 'layers_text');
-
- document.getElementById('vertical_resizer').appendChild(newDiv);
-
- delete newDiv;
-
- for(i=0;i<numSoundLayers;i++){
-
- newDiv = document.createElement('div');
-
- newDiv.setAttribute('id', 'layers_'+i);
-
- newAudio = document.createElement('audio');
-
- newAudio.setAttribute('src', '');
-
- newAudio.setAttribute('hidden', 'true');
-
- newDiv.appendChild(newAudio);
-
- document.getElementById('vertical_resizer').appendChild(newDiv);
-
- }
-
- document.getElementById('layers_text').innerHTML = initResizeText;
-
-
-
- // Settings display functions.
-
- function establishSettings(){
-
- // Build the settings pane in the background.
-
- // Settings master container.
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('id', 'settings');
-
- newDiv.setAttribute('style', "overflow: visible; position: absolute; width: 250px; height: 450px; right: 1%; top: 0px; display: none;");
-
- // Settings wrapper container.
-
- var newDiv2 = document.createElement('div');
-
- newDiv2.setAttribute('id', 'settings_list');
-
- // Settings header.
-
- var newDiv3 = document.createElement('div');
-
- newDiv3.setAttribute('class', 'settings_header');
-
- // Tabs.
-
- var newDiv0 = document.createElement('div');
-
- newDiv0.setAttribute('class', 'panel');
-
- newDiv0.setAttribute('id', 'settings_panel');
-
- var newDiv1 = document.createElement('div');
-
- newDiv1.setAttribute('class', 'tabs');
-
- newDiv1.setAttribute('id', 'im_tab_container');
-
- var newUl = document.createElement('ul');
-
- newUl.setAttribute('id', 'im_tabs');
-
-
-
- // Build each individual tab.
-
- for(temp in name_sets){
-
- var newLi = document.createElement('li');
-
- newLi.setAttribute('id', name_sets[temp][0]+'_li');
-
- var newA2 = document.createElement('a');
-
- newA2.setAttribute('id', name_sets[temp][0]+'_link');
-
- if(temp==numCurrentTab){
-
- newA2.setAttribute('class', 'current');
-
- }else{
-
- newA2.setAttribute('class', 'not_current');
-
- }
-
- newA2.setAttribute('href', '#');
-
- var newSpan = document.createElement('span');
-
- newSpan.setAttribute('class', 'inner');
-
- newSpan.innerHTML = name_sets[temp][0];
-
- newA2.appendChild(newSpan);
-
- newLi.appendChild(newA2);
-
- newUl.appendChild(newLi);
-
- newDiv1.appendChild(newUl);
-
- }
-
-
-
- // Scroll list.
-
- var newDiv4 = document.createElement('div');
-
- newDiv4.setAttribute('class', 'scroll_list');
-
- newDiv4.setAttribute('id', 'settings_scroll');
-
- var newA = document.createElement("a");
-
- newA.setAttribute('id', 'settings_link');
-
- newA.setAttribute('href', '#');
-
- newA.innerHTML = "x";
-
- var newDiv5 = document.createElement('div');
-
- newDiv5.setAttribute('class', 'nest');
-
- var newInput = document.createElement('input');
-
- newInput.setAttribute('id', 'incit_monitor_save');
-
- newInput.setAttribute('type', 'button');
-
- newInput.setAttribute('value', 'Save');
-
- newInput.setAttribute('style', 'width: 50%;');
-
- var newInput2 = document.createElement('input');
-
- newInput2.setAttribute('id', 'incit_monitor_reset');
-
- newInput2.setAttribute('type', 'button');
-
- newInput2.setAttribute('value', 'Reset');
-
- newInput2.setAttribute('style', 'width: 50%;');
-
- // Attach everything.
-
- newDiv5.appendChild(newInput);
-
- newDiv5.appendChild(newInput2);
-
- newDiv3.appendChild(newA);
-
- newDiv3.appendChild(newDiv5);
-
- newDiv2.appendChild(newDiv3);
-
- newDiv2.appendChild(newDiv1);
-
- newDiv0.appendChild(newDiv4);
-
- newDiv2.appendChild(newDiv0);
-
- newDiv.appendChild(newDiv2);
-
- newDiv.setAttribute('style', "overflow: visible; position: absolute; width: 250px; height: 450px; right: 1%; top: 0px;");
-
- document.body.appendChild(newDiv);
-
- // Emulate "onclick" signals.
-
- document.getElementById("settings_link").addEventListener("click", closeSettings, true);
-
- document.getElementById("incit_monitor_settings").addEventListener("click", openSettings, true);
-
- document.getElementById('incit_monitor_save').addEventListener("click", storeSettings, false);
-
- document.getElementById('incit_monitor_reset').addEventListener("click", resetSettings, false);
-
- // Add individual tab onclick events with an ID for reference.
-
- for(temp in name_sets){
-
- document.getElementById(name_sets[temp][0]+'_li').addEventListener('click',{'tabid':temp,handleEvent:function(){tabSettings(this.tabid);}},false);
-
- }
-
- }
-
-
-
- function tabSettings(input) {
-
- if(input!=numCurrentTab){
-
- // Generate the current tab of the settings.
-
- storeSettings();
-
- document.getElementById(name_sets[numCurrentTab][0]+'_link').setAttribute('class','not_current');
-
- document.getElementById(name_sets[input][0]+'_link').setAttribute('class','current');
-
- numCurrentTab = input;
-
- if(input==2){
-
- generateLastRound(numRoundsAttended-1);
-
- }else{
-
- generateSettings();
-
- }
-
- }
-
- }
-
-
-
- function openSettings() {
-
- // Build the settings pane if it hasn't already been made, then bring it to front.
-
- var c = document.getElementById('settings');
-
- if (!incitmonitorsets_open) {
-
- if(c==null){
-
- establishSettings();
-
- if(numCurrentTab==2){
-
- generateLastRound(numRoundsAttended-1);
-
- }else{
-
- generateSettings();
-
- }
-
- }else{
-
- c.setAttribute('style', "overflow: visible; position: absolute; width: 250px; height: 450px; right: 1%; top: 0px;");
-
- }
-
- incitmonitorsets_open = true;
-
- }
-
- }
-
-
-
- function closeSettings() {
-
- // This can only be called from the settings pane itself, so hide it.
-
- incitmonitorsets_open = false;
-
- document.getElementById('settings').setAttribute('style', "overflow: visible; position: absolute; width: 250px; height: 450px; right: 1%; top: 0px; display: none;");
-
- }
-
-
-
- // Settings operation functions.
-
- function getSettings(){
-
- for(i=0;i<extr_sets.length;i++){
-
- tempValue = GM_getValue(extr_sets[i][0],extr_sets[i][1]);
-
- if(tempValue == extr_sets[i][1] && typeof(extr_sets[i][5])!='undefined'){
-
- sets[extr_sets[i][0]] = GM_getResourceURL(extr_sets[i][5]);
-
- }else{
-
- sets[extr_sets[i][0]] = tempValue;
-
- }
-
- }
-
- }
-
-
-
- function storeSettings(){
-
- // Read the settings pane and save the settings.
-
- for(i=splt_sets[numCurrentTab][0];i<splt_sets[numCurrentTab][1];i++){
-
- tempElement = document.getElementById('sets_'+extr_sets[i][0]);
-
- if(extr_sets[i][4]=='checkbox'){
-
- tempValue = tempElement.checked;
-
- }else if(extr_sets[i][4]=='text'){
-
- tempValue = tempElement.value;
-
- }
-
- if(tempValue == extr_sets[i][1] && typeof(extr_sets[i][5])!='undefined'){
-
- tempValue = GM_getResourceURL(extr_sets[i][5]);
-
- }
-
- sets[extr_sets[i][0]] = tempValue;
-
- GM_setValue(extr_sets[i][0],tempValue);
-
- }
-
-
-
- }
-
-
-
- function generateSettings(){
-
- // Populate the settings pane.
-
- if(document.getElementById('settings_scroll')!=null){
-
- document.getElementById('settings_panel').removeChild(document.getElementById('settings_scroll'));
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'scroll_list');
-
- newDiv.setAttribute('id', 'settings_scroll');
-
- document.getElementById('settings_panel').appendChild(newDiv);
-
- }
-
- for(a in name_sets[numCurrentTab][1]){
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'setting');
-
- for(b in name_sets[numCurrentTab][1][a]){
-
- var newInput = document.createElement('input');
-
- newInput.setAttribute('id', 'sets_'+name_sets[numCurrentTab][1][a][b][0]);
-
- newInput.setAttribute('type', name_sets[numCurrentTab][1][a][b][4]);
-
- newInput.setAttribute('title', name_sets[numCurrentTab][1][a][b][3]);
-
- var newLabel = document.createElement('label');
-
- newLabel.setAttribute('for', 'sets_'+name_sets[numCurrentTab][1][a][b][0]);
-
- newLabel.innerHTML = name_sets[numCurrentTab][1][a][b][2];
-
- if(name_sets[numCurrentTab][1][a][b][4]=='checkbox'){
-
- if(sets[name_sets[numCurrentTab][1][a][b][0]]){ newInput.setAttribute('checked', 'checked'); }
-
- newDiv.appendChild(newInput);
-
- newDiv.appendChild(newLabel);
-
- }else if(name_sets[numCurrentTab][1][a][b][4]=='text'){
-
- newDiv.appendChild(newLabel);
-
- tempValue = sets[name_sets[numCurrentTab][1][a][b][0]];
-
- if(typeof(name_sets[numCurrentTab][1][a][b][5])!='undefined' && tempValue == GM_getResourceURL(name_sets[numCurrentTab][1][a][b][5])){
-
- newInput.setAttribute('value', name_sets[numCurrentTab][1][a][b][1]);
-
- }else{
-
- newInput.setAttribute('value', sets[name_sets[numCurrentTab][1][a][b][0]]);
-
- }
-
- newInput.setAttribute('style', 'width: 93%;');
-
- newDiv.appendChild(newInput);
-
- }
-
- if(typeof(name_sets[numCurrentTab][1][a][b][6])!='undefined'){
-
- for(c in name_sets[numCurrentTab][1][a][b][6]){
-
- newInput.setAttribute(name_sets[numCurrentTab][1][a][b][6][c][0],name_sets[numCurrentTab][1][a][b][6][c][1]);
-
- }
-
- }
-
- }
-
- document.getElementById('settings_scroll').appendChild(newDiv);
-
- }
-
- }
-
-
-
- function generateLastRound(numRound){
-
- // Populate the last round display.
-
- if(document.getElementById('settings_scroll')!=null){
-
- document.getElementById('settings_panel').removeChild(document.getElementById('settings_scroll'));
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'scroll_list');
-
- newDiv.setAttribute('id', 'settings_scroll');
-
- document.getElementById('settings_panel').appendChild(newDiv);
-
- }
-
- if(numRound<0){
-
- numRound = 0;
-
- }
-
- if(lastRound.length>0){
-
- // Populate a drop-down.
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'setting');
-
- newDiv.setAttribute('style', 'height: 7%;');
-
- var newDiv2 = document.createElement('div');
-
- newDiv2.setAttribute('class', 'votes');
-
- var newDiv3 = document.createElement('div');
-
- newDiv3.setAttribute('class', 'text');
-
- newDiv3.setAttribute('style', 'display: table-cell; vertical-align: middle');
-
- var newInput = document.createElement('input');
-
- newInput.setAttribute('type', 'button');
-
- newInput.setAttribute('value', 'View');
-
- newInput.setAttribute('title', 'Click to view the selected previous round results of INCIT.');
-
- newInput.setAttribute('id', 'history_dropdown_action');
-
- var newSelect = document.createElement('select');
-
- newSelect.setAttribute('id', 'history_dropdown');
-
- for(i=0;i<lastRound.length;i++){
-
- var newOption = document.createElement('option');
-
- newOption.setAttribute('value', lastRound.length-(i+1));
-
- if((lastRound.length-(i+1))==numRound){
-
- newOption.setAttribute('selected', 'selected');
-
- }
-
- newOption.innerHTML = (i+1)+' round'+((i+1)>1 ? 's' : '')+' ago.';
-
- newSelect.appendChild(newOption);
-
- }
-
- newDiv3.appendChild(newSelect);;
-
- newDiv2.appendChild(newInput);
-
- newDiv.appendChild(newDiv2);
-
- newDiv.appendChild(newDiv3)
-
- document.getElementById('settings_scroll').appendChild(newDiv);
-
- document.getElementById('history_dropdown_action').addEventListener('click',function handler(evt){generateLastRound(document.getElementById('history_dropdown').options[document.getElementById('history_dropdown').selectedIndex].value);},false);
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'setting');
-
- var newDiv2 = document.createElement('div');
-
- newDiv2.setAttribute('class', 'text');
-
- newDiv2.innerHTML = 'People: '+lastStats[numRound][0];
-
- var newDiv3 = document.createElement('div');
-
- newDiv3.setAttribute('class', 'votes');
-
- var newA = document.createElement('a');
-
- newA.setAttribute('href', lastStats[numRound][1]);
-
- newA.setAttribute('target', '_blank');
-
- newA.innerHTML = 'Image';
-
- newDiv3.appendChild(newA);
-
- newDiv.appendChild(newDiv3);
-
- newDiv.appendChild(newDiv2);
-
- document.getElementById('settings_scroll').appendChild(newDiv);
-
- for(a in lastRound[numRound]){
-
- // Populate the list of information.
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'setting');
-
- var newDiv2 = document.createElement('div');
-
- newDiv2.setAttribute('class', 'name');
-
- newDiv2.innerHTML = lastRound[numRound][a][0];
-
- var newDiv3 = document.createElement('div');
-
- newDiv3.setAttribute('class', 'votes');
-
- newDiv3.innerHTML = lastRound[numRound][a][3];
-
- var newDiv4 = document.createElement('div');
-
- newDiv4.setAttribute('class', 'title');
-
- newDiv4.innerHTML = lastRound[numRound][a][1];
-
- var newDiv5 = document.createElement('div');
-
- newDiv5.setAttribute('class', 'text');
-
- newDiv5.innerHTML = lastRound[numRound][a][2];
-
- newDiv.appendChild(newDiv3);
-
- newDiv.appendChild(newDiv2);
-
- newDiv.appendChild(newDiv4);
-
- newDiv.appendChild(newDiv5);
-
- document.getElementById('settings_scroll').appendChild(newDiv);
-
- }
-
- }else{
-
- var newDiv = document.createElement('div');
-
- newDiv.setAttribute('class', 'setting');
-
- newDiv.innerHTML = 'This tab will display last round\'s results.';
-
- document.getElementById('settings_scroll').appendChild(newDiv);
-
- }
-
- }
-
-
-
- function resetSettings(){
-
- closeSettings();
-
- document.body.removeChild(document.getElementById('settings'));
-
- openSettings();
-
- }
-
-
-
- // Master function.
-
- function updateINCITinfo(){
-
- // Get the number of seconds left in the INCIT round.
-
- tempArray = document.getElementById('countdown').innerHTML.split(" minute");
-
- tempArray2 = document.getElementById('countdown').innerHTML.split(" second");
-
- tempArray3 = tempArray2[0].split(" and ");
-
- if(tempArray3.length>1){ tempArray2[0]=tempArray3[1]; }
-
- if(!isNaN(+tempArray2[0])){
-
- if(!isNaN(+tempArray[0])){
-
- numSecondsLeft = (+tempArray[0]*60)+(+tempArray2[0]);
-
- }else{
-
- numSecondsLeft = (+tempArray2[0]);
-
- }
-
- }else{
-
- numSecondsLeft = 0;
-
- }
-
-
-
- // Get the number of submissions for the INCIT round.
-
- if(document.getElementById('submissions_received')!=null){
-
- tempArray = document.getElementById('submissions_received').innerHTML.split(" submission");
-
- }
-
- if(!isNaN(+tempArray[0])){ numSubsInIncit = (+tempArray[0]); }
-
-
-
- // Get the number of people currently in the INCIT chat.
-
- tempArray = document.getElementById('show').innerHTML.split(" Asshole");
-
- tempArray2 = tempArray[0].split("\">");
-
- if(!isNaN(+tempArray2[1])){ numPeopleInIncit = (+tempArray2[1]); }
-
-
-
- if(sets['useChatFeatures']){
-
- tempData = document.getElementById('talk_history');
-
- for(i=numLastChat;i<tempData.childNodes.length;i++){
-
- if(tempData.childNodes[i].className=='said' || tempData.childNodes[i].className=='said idc_highlight'){
-
- tempBy = tempData.childNodes[i].childNodes[1].innerHTML;
-
- tempSaid = tempData.childNodes[i].childNodes[2].innerHTML;
-
- tempId = tempData.childNodes[i].id;
-
- if(tempBy=='INCIT-Bot 5000: '){
-
- // Determine what mode the INCIT round is in based off what INCIT-Bot is saying.
-
- i--;
-
- if(tempSaid=='<strong>A new round has begun!</strong>'){
-
- numRoundMode=1;
-
- }else if(tempSaid=='We need at least 5 submissions before we can begin voting. I’m extending the submission period.'){
-
- numRoundMode=2;
-
- isNagTime=1;
-
- numRoundsPushed++;
-
- }else if(tempSaid=='Hey, it’s time to vote! Remember, if you don’t vote, your entry will be disqualified.'){
-
- numRoundMode=3;
-
- }else{
-
- numRoundMode=4;
-
- }
-
- document.getElementById('talk_history').removeChild(document.getElementById(tempId));
-
- }else if(tempBy!=datCurrentUser+': '){
-
- tempVar = new RegExp('('+sets['datChatHighlight'].split(',').join('|')+')');
-
- if(tempSaid.search(tempVar)>(-1)){
-
- if(sets['volChatHighlight']>0){
-
- injectSound(1,sets['urlChatHighlight'],sets['volChatHighlight']);
-
- if(sets['useChatHighlightAlert']){
-
- alert(tempBy+tempSaid);
-
- }
-
- // Drop out.
-
- isHighlight = 1;
-
- }
-
- if(sets['useChatHighlight2']){
-
- document.getElementById(tempId).setAttribute('class', 'said idc_highlight');
-
- }
-
-
-
- }
-
- if(sets['volChatNotify']>0 && !isHighlight){
-
- injectSound(1,sets['urlChatNotify'],sets['volChatNotify']);
-
- if(sets['useChatNotifyAlert']){
-
- alert(tempBy+tempSaid);
-
- }
-
- }
-
- isHighlight = 0;
-
- }
-
- }else if(sets['varKillAds'] && tempData.childNodes[i].className=='ad'){
-
- document.getElementById('talk_history').removeChild(tempData.childNodes[i].id);
-
- }
-
- }
-
- numLastChat = i;
-
- }else{
-
- // Determine what round INCIT is on based on elements.
-
- if(document.getElementById('submitting')!=null && numRoundMode != 2){
-
- numRoundMode=1;
-
- }else if(document.getElementById('voting')!=null){
-
- numRoundMode=3;
-
- }else if(document.getElementById('final_scores')!=null){
-
- numRoundMode=4;
-
- }
-
-
-
- if(numSecondsLeft==numSecsIsPushed && (numRoundMode == 1 || numRoundMode == 2)){
-
- numRoundMode=2;
-
- numRoundsPushed++;
-
- isNagTime=1;
-
- }
-
- }
-
-
-
- // Handle the current round mode.
-
- if(numRoundMode==1){
-
- numRoundMode=0;
-
- numRoundsPushed=0;
-
- isPartyStarted=0;
-
- if(sets['volNewRoundSound']>0){
-
- injectSound(0,sets['urlNewRoundSound'],sets['volNewRoundSound']);
-
- }
-
- if(sets['useNewRoundAlert']){
-
- alert('New round!');
-
- }
-
- }else if(numRoundMode==2){
-
- tempVar = '('+numRoundsPushed+') Pushed round.';
-
- if(numRoundsPushed >= (+sets['varNagSensitivity']) && document.getElementById('thanks_for_submission')!=null && document.getElementById('thanks_for_submission').style.display == 'none' && isNagTime){
-
- if(numSubsInIncit==(numMinSubs-1) && sets['volSubNagUrgency']>0){
-
- injectSound(2,sets['urlSubNagUrgency'],sets['volSubNagUrgency'],tempVar);
-
- }else if(sets['volSubNagging']>0){
-
- injectSound(2,sets['urlSubNagging'],sets['volSubNagging'],tempVar);
-
- }
-
-
-
- if(sets['useNagUrgencyAlert'] && numSubsInIncit==(numMinSubs-1)){
-
- alert('Only one more submission needed, please submit.');
-
- }else if(sets['useNagAlert'] && numSubsInIncit<(numMinSubs-1)){
-
- alert('Please submit.');
-
- }
-
-
-
- isNagTime = 0;
-
- }else{
-
- injectSound(2,'',0,tempVar);
-
- }
-
- }else if(numRoundMode==3){
-
- if(sets['volVoteSound']>0){
-
- injectSound(0,sets['urlVoteSound'],sets['volVoteSound'],'Voting!');
-
- }
-
- if(sets['useVoteAlert']&&!isPartyStarted){
-
- alert('Voting!');
-
- }
-
- isPartyStarted=1;
-
- if(document.getElementById('motivation')!=null){
-
- lastStats[numRoundsAttended]=[numPeopleInIncit,document.getElementById('motivation').childNodes[1].childNodes[1].childNodes[1].childNodes[0].src];
-
- }
-
- }else if(numRoundMode==4){
-
- if(sets['volResultsSound']>0){
-
- injectSound(0,sets['urlResultsSound'],sets['volResultsSound'],'Results.');
-
- }
-
- tempStep = 0;
-
- if(lastStamp<Math.round(new Date().getTime() / 1000)){
-
- if(document.getElementById('final_scores')!=null){
-
- lastRound[numRoundsAttended] = [];
-
- nodeDump = document.getElementById('final_scores').getElementsByTagName('tbody')[0];
-
- for(i=2;i<nodeDump.childNodes.length;i++){
-
- lastRound[numRoundsAttended][tempStep] = [];
-
- tempStep2 = 0;
-
- if(nodeDump.childNodes[i].nodeName=='TR'){
-
- for(q=0;q<nodeDump.childNodes[i].childNodes.length;q++){
-
- if(nodeDump.childNodes[i].childNodes[q].nodeName=='TD'){
-
- lastRound[numRoundsAttended][tempStep][tempStep2] = nodeDump.childNodes[i].childNodes[q].innerHTML;
-
- tempStep2++;
-
- }
-
- }
-
- tempStep++;
-
- }
-
- }
-
- lastStamp=Math.round(new Date().getTime() / 1000)+30;
-
- numRoundsAttended++;
-
- }
-
- }
-
- if(sets['useResultsAlert']&&isPartyStarted){
-
- alert('Results.');
-
- }
-
- isPartyStarted=0;
-
- isPartyStrobe=0;
-
- }
-
- // Update the title bar.
-
- if(isPartyStarted && !isPartyStrobe){
-
- isPartyStrobe = 1;
-
- document.title = numSubsInIncit + "sub/" + numPeopleInIncit + "on/" + numSecondsLeft + "sec";
-
- }else if(isPartyStarted && isPartyStrobe){
-
- isPartyStrobe = 0;
-
- document.title = "voting/" + numPeopleInIncit + "on/" + numSecondsLeft + "sec";
-
- }else{
-
- document.title = numSubsInIncit + "sub/" + numPeopleInIncit + "on/" + numSecondsLeft + "sec";
-
- }
-
-
-
- // Re-run the script in a second.
-
- setTimeout(updateINCITinfo, 1000);
-
- }
-
-
-
- function injectSound(layer,audio,volume,note){
-
- if(sets['useSound']){
-
- if(audio!=''){
-
- if(layer == 1 || layer == 2){
-
- document.getElementById('layers_'+layer).removeChild(document.getElementById('layers_'+layer).childNodes[0]);
-
- }
-
- if(document.getElementById('layers_'+layer).childNodes.length>0 && document.getElementById('layers_'+layer).childNodes[0].src!=decodeURIComponent(audio)){
-
- document.getElementById('layers_'+layer).removeChild(document.getElementById('layers_'+layer).childNodes[0]);
-
- var newAudio = document.createElement('audio');
-
- newAudio.setAttribute('id', 'layers_'+layer+'_audio');
-
- newAudio.setAttribute('src', decodeURIComponent(audio));
-
- newAudio.setAttribute('hidden', 'true');
-
- newAudio.setAttribute('autoplay', 'true');
-
- newAudio.volume = volume;
-
- document.getElementById('layers_'+layer).appendChild(newAudio);
-
- }else if(document.getElementById('layers_'+layer).childNodes.length>0 && document.getElementById('layers_'+layer).childNodes[0].src==decodeURIComponent(audio)){
-
- // YOU DO NOTHING. ABSOLUTELY NOTHING.
-
- }else{
-
- var newAudio = document.createElement('audio');
-
- newAudio.setAttribute('id', 'layers_'+layer+'_audio');
-
- newAudio.setAttribute('src', decodeURIComponent(audio));
-
- newAudio.setAttribute('hidden', 'true');
-
- newAudio.setAttribute('autoplay', 'true');
-
- newAudio.volume = volume;
-
- document.getElementById('layers_'+layer).appendChild(newAudio);
-
- }
-
- }
-
- }
-
- document.getElementById('layers_text').innerHTML=initResizeText + (typeof(note)=='undefined' ? '' : '| '+note);
-
- }
-
-
-
- // Get the settings up and going.
-
- getSettings();
-
- updateINCITinfo();