User:CzechOut/global.js
From Tardis Wiki, the free Doctor Who reference
Clear your cache often around here
After changes are made to this site's CSS or Javascript, you have to bypass your browser's cache to see the changes. You can always do this by going to your browser's preferences panel. But many browsers also offer keyboard shortcuts to save you that trouble. The following shortcuts work in the versions of the browsers that Tardis currently supports. They may not work in earlier versions.
- Firefox: hold down Shift while performing a page reload.
- Opera offers no default keyboard shortcut, but you can create a custom keyboard shortcut with the value Clear disk cache
- Safari users should simultaneously hold down ⌘ + Option + E. You may need to enable the Develop menu first
- Chrome: press Ctrl + F5 or Shift + F5 while performing a page reload.
/* Workaround for incorrect values of wgAction
if (skin == "oasis" || skin == "wikia") {
var locParam = location.href.substr(location.href.indexOf("action=")+7).split("&");
wgAction = (location.href.indexOf("action=") == -1) ? "view" : locParam[0];
}
*/
importArticles({
type: "script",
articles: [
"w:c:dev:SearchGoButton/code.js",
"w:c:dev:FastDelete/code.js",
],
});
// Skin Switch Button for monobook to oasis and vice versa
$( function () {
if ( !document.getElementById( 'ca-skins' ) ) {
if ( skin === 'oasis' || skin === 'wikia' ) {
$( '<li id="ca-skins"><a href="/index.php?title=' + encodeURIComponent( wgPageName ) + '&useskin=monobook">MB</a></li>' ).appendTo( '#AccountNavigation' ); $( '<li id="ca-skins"><a href="/index.php?title=' + encodeURIComponent( wgPageName ) + '&useskin=wikiamobile">WM</a></li>' ).appendTo( '#AccountNavigation' );
} else {
$( '<li id="ca-skins"><a href="/index.php?title=' + encodeURIComponent( wgPageName ) + '&useskin=wikia">Oasis</a></li>' ).appendTo( '#p-cactions > .pBody > ul' ); $( '<li id="ca-skins"><a href="/index.php?title=' + encodeURIComponent( wgPageName ) + '&useskin=wikiamobile">Mobile</a></li>' ).appendTo( '#p-cactions > .pBody > ul' );
}
}
} );
var fdButtons = [];
/*fdButtons[fdButtons.length] = {
'summary': 'deeting in accordance with [[Forum:Timeline pages]]. Do not recreate. See [[Forum:Time]] for any new timeline that may have been created.',
'label': 'time'
};*/
fdButtons[fdButtons.length] = {
'summary': 'violates [[T:VAN]], [[T:USER VAN]], [[T:SPAM]] or similar policy; no vandalism or spam allowed here',
'label': 'spam'
};
fdButtons[fdButtons.length] = {
'summary': 'this page has now been transferred to [[w:c:factionparadox]], per [[forum:How do we best include Faction Paradox on the wiki?]] and [[forum:BBV and canon policy]]',
'label': 'move 2 FP'
};
fdButtons[fdButtons.length] = {
'summary': 'this page is now unnecessary, perhaps because of another related deletion. Questions can be left at [[user talk:CzechOut]].',
'label': 'unnecessary'
};
fdButtons[fdButtons.length] = {
'summary': 'not [[DWU]] subject; if you\'d like further explanation, please leave a message at [[user talk:CzechOut]]',
'label': 'not DWU'
};
fdButtons[fdButtons.length] = {
'summary': 'not [[FPU]] subject; this wiki doesn\'t contain info about the DWU in particular; if you\'d like further explanation, please leave a message at [[user talk:CzechOut]]',
'label': 'not FPU'
};
/*
fdButtons[fdButtons.length] = {
'summary': 'poorly formed page for any one of a number of reasons. probably better to delete outright than to try to rework. if you\'d like further explanation, please leave a message at [[user talk:CzechOut]]',
'label': 'Bad page'
};
fdButtons[fdButtons.length] = {
'summary': 'images should approach widescreen (16:9) dimensions when possible; it\'s likely that this pic could have been cropped to those dimensions; see [[T:ICC]] and [[Tardis:Guide to images]]',
'label': '16x9'
};
fdButtons[fdButtons.length] = {
'summary': 'size > 1mb',
'label': 'Big pic'
};
fdButtons[fdButtons.length] = {
'summary': 'violates [[T:ICC]]',
'label': 'T:ICC'
};
fdButtons[fdButtons.length] = {
'summary': '(near) duplication',
'label': 'dupe'
};*/
/*
fdButtons[fdButtons.length] = {
'summary': 'Pictures from [[Dimensions in Time]] narrative disallowed; none of sufficient quality exist due to the limitations placed on its broadcast',
'label': 'DIT'
};*/
/*
* ChatHacks.js, by Monchoman45.
* Version 7.0
*
* Features:
* Ability to clear your chat window
* A host of slash commands (including /me and /afk)
* Ability to create multi user private chats
* Inline alerts every time your away status changes
* Icons next to messages by staff and chat mods in the room
* Pings when someone mentions your name or any other specified phrases
*/
if(wgCanonicalSpecialPageName == 'Chat') {
window.hasFocus = true;
window.dinged = false;
window.ding = 0;
window.titleorig = document.title;
function Unding() { //for fixing the title after you've been dinged
document.getElementsByTagName('title')[0].innerHTML = window.titleorig;
clearInterval(window.ding);
window.dinged = false;
}
$(window).bind('focus', Unding);
$(window).bind('focus', function() {window.hasFocus = true;});
$(window).bind('blur', function() {window.hasFocus = false;});
//Function for adding messages to the window
NodeChatDiscussion.prototype.iconPing = function (chat) {
var icon = '';
for(var i in this.model.users.models) {
if(this.model.users.models[i].attributes.name == chat.attributes.name) {
if(this.model.users.models[i].attributes.isStaff) {
icon = ' <img class="stafficon" src="/extensions/wikia/Chat/images/icon-staff.png">';
}
else if(this.model.users.models[i].attributes.isModerator) {
icon = ' <img class="modicon" src="/extensions/wikia/Chat/images/icon-chatmod.png">';
}
break;
}
}
if(icon) {this.chatUL.children().last().children('.username').html(this.chatUL.children().last().children('.username').html() + icon);}
if(mainRoom.isInitialized && chat.attributes.name != wgUserName && !chat.attributes.isInlineAlert) {
window.dinged = true;
//resolve HTML
var text = document.createElement('span');
text.innerHTML = chat.attributes.text;
text = text.textContent;
var pings = document.getElementById('pings').value.removeTrailing('\n').split('\n');
for(var i = 0; i < pings.length; i++) {
if(text.toLowerCase().indexOf(pings[i].toLowerCase()) != -1 || this != mainRoom.viewDiscussion) {
if(!window.hasFocus) { //Only annoy people if the window isn't focused
document.getElementById('sound').innerHTML = '<audio src="http://images.wikia.com/monchbox/images/0/01/Beep-sound.ogg" autoplay=""></audio>';
if(!window.dinged) {window.ding = setInterval('FlashTitle()', 500);}
}
this.scrollToBottom();
if(this == mainRoom.viewDiscussion) {
var ref = text.toLowerCase().indexOf(pings[i].toLowerCase());
var phrase = text.slice(ref, ref + pings[i].length);
this.chatUL.children().last().children('.message').html(text.replace(phrase, '<span style="color:red;">' + phrase + '</span>'));
}
break;
}
}
}
//Kill emoticons
this.chatUL.children().last().children('.message img').each(function() {this.outerHTML = '<span onclick="this.outerHTML = decodeURIComponent(\'' + encodeURIComponent(this.outerHTML) + '\');" style="color:blue; cursor:pointer;" title="' + i18n['emote'] + '">' + this.title + '</span>';});
}
mainRoom.model.chats.bind('afteradd', $.proxy(mainRoom.viewDiscussion.iconPing, mainRoom.viewDiscussion));
//Away status functions
NodeChatController.prototype.setAway = function (msg){
if(!msg) {var msg = '';}
$().log("Attempting to go away with message: " + msg);
var setStatusCommand = new models.SetStatusCommand({
statusState: STATUS_STATE_AWAY,
statusMessage: msg
});
this.inlineAlert(i18n['away']);
this.socket.send(setStatusCommand.xport());
}
NodeChatController.prototype.setBack = function (){
if( !this.comingBackFromAway ) { // if we have sent this command (but just haven't finished coming back yet), don't keep spamming the server w/this command
$().log("Telling the server that I'm back.");
this.comingBackFromAway = true;
var setStatusCommand = new models.SetStatusCommand({
statusState: STATUS_STATE_PRESENT,
statusMessage: ''
});
this.inlineAlert(i18n['back']);
this.socket.send(setStatusCommand.xport());
}
}
//Send message function
NodeChatController.prototype.sendMessage = function (event) {
if(!this.active) {
return true;
}
if (event.which == 13 && !event.shiftKey) {
event.preventDefault();
mainRoom.resetActivityTimer();
var inputField = this.viewDiscussion.getTextInput();
var send = Preparse.call(this, inputField.val());
if (inputField.val() && send) {
var chatEntry = new models.ChatEntry({roomId: this.roomId, name: wgUserName, text: inputField.val()});
if( this.isPrivate == true ) { //is prive
if( this.afterInitQueue.length < 1 || this.model.users.length < 2 ){
this.mainController.socket.send( this.model.privateRoom.xport() );
}
if( !this.isInitialized ) {
this.afterInitQueue.push(chatEntry.xport());
//temp chat entry in case of slow connection time
chatEntry.set({temp : true, avatarSrc: wgAvatarUrl });
this.model.chats.add(chatEntry);
} else {
this.socket.send(chatEntry.xport());
}
} else {
this.socket.send(chatEntry.xport());
}
event.preventDefault();
}
inputField.val('');
$().log('submitting form');
inputField.focus();
}
}
mainRoom.viewDiscussion.unbind('sendMessage');
mainRoom.viewDiscussion.bind('sendMessage', $.proxy(mainRoom.sendMessage, mainRoom));
//Functions that have to be changed for interwiki chat
NodeChatController.prototype.openPrivateRoom = function(users) {
users.push( wgUserName );
$.ajax({
type: 'POST',
url: wgScript + '?action=ajax&rs=ChatAjax&method=getPrivateRoomID',
data: {
users : users.join(',')
},
success: $.proxy(function(data) {
$().log("Attempting create private room with users " + users.join(','));
var data = new models.OpenPrivateRoom({roomId: data.id, users: users});
this.baseOpenPrivateRoom(data, true);
this.showRoom(data.get('roomId') );
this.chats.privates[ data.get('roomId') ].isPrivate = true;
this.chats.privates[ data.get('roomId') ].init();
//this.socket.send(data.xport());
}, this)
});
this.viewUsers.hideMenu();
}
NodeRoomController.prototype.onJoin = function(message) {
var joinedUser = new models.User();
joinedUser.mport(message.joinData);
var connectedUser = this.model.users.findByName(joinedUser.get('name'));
if(typeof connectedUser == "undefined"){
this.model.users.add(joinedUser);
this.fire('afterJoin', joinedUser);
//TODO: move it to other class
if( !this.isPrivate ) {
// Create the inline-alert (on client side so that we only display it if the user actually IS new to the room and not just disconnecting/reconnecting).
var newChatEntry = new models.InlineAlert({text: $.msg('chat-user-joined', [joinedUser.get('name')] ) });
this.model.chats.add(newChatEntry);
}
this.disableRoom(joinedUser, false);
} else {
// The user is already in the room... just update them (in case they have changed).
this.model.users.remove(connectedUser);
this.model.users.add(joinedUser);
}
}
NodeRoomController.prototype.onPart = function(message) {
var partedUser = new models.User();
partedUser.mport(message.data);
var connectedUser = this.model.users.findByName(partedUser.get('name'));
if(typeof connectedUser != "undefined"){
//TODO: move it to other class
if( !this.isPrivate ) {
var newChatEntry = new models.InlineAlert({text: $.msg('chat-user-parted', [connectedUser.get('name')] ) });
this.model.chats.add(newChatEntry);
}
this.model.users.remove(connectedUser);
this.disableRoom(connectedUser, true);
}
}
NodeRoomController.prototype.disableRoom = function(user, flag) {
if( this.isPrivate == false ) {
//TODO: fix it for multiuser priv chat
var privateUser = this.model.privateUsers.findByName(user.get('name'));
if(typeof privateUser != "undefined"){
var roomId = privateUser.get('roomId');
if( typeof( this.chats.privates[roomId] ) != "undefined" ){
this.chats.privates[roomId].model.room.set({
'blockedMessageInput': flag
});
}
//try to reconnect
if(flag === false && this.chats.privates[roomId].model.chats.length > 0) {
this.socket.send( this.chats.privates[roomId].model.privateRoom.xport() );
}
}
}
}
NodeChatController.prototype.showRoom = function(roomId) {
$().log(roomId);
if( this.activeRoom == roomId ) {
return false;
}
this.activeRoom = roomId;
if(roomId == 'main') {
this.chats.main.setActive(true);
} else {
this.chats.main.setActive(false);
}
for(var i in this.chats.privates) {
if(i == roomId) {
this.chats.privates[i].setActive(true);
} else {
this.chats.privates[i].setActive(false);
}
}
for(var i in this.chats.opens) {
if(i == roomId) {
this.chats.opens[i].setActive(true);
} else {
this.chats.opens[i].setActive(false);
}
}
return true;
}
NodeChatController.prototype.openPublicRoom = function(roomId) {
this.chats.opens[roomId] = new NodeRoomController(roomId);
this.chats.opens[roomId].mainController = this; //set main controller for this chat room
this.showRoom(roomId);
this.chats.opens[roomId].init();
}
/*//For interwiki chatting, a merger of NodeRoomController's private management functions, and NodeChatController's public management functions.
NodeInterwikiController = $.createClass(NodeRoomController, {
constructor: function (roomId) {
NodeInterwikiController.superclass.constructor.apply(this,arguments);
this.socket.bind('updateUser', $.proxy(this.onUpdateUser, this)); //Check
this.bind('afterJoin', $.proxy(this.afterJoin, this));
this.viewUsers = new NodeChatUsers({model: this.model, el: $('body')});
this.viewUsers.bind('showPrivateMessage', $.proxy(this.privateMessage, this) );
this.viewUsers.bind('kickBan', $.proxy(this.kickBan, this) );
this.viewUsers.bind('giveChatMod', $.proxy(this.giveChatMod, this) );
this.viewUsers.bind('blockPrivateMessage', $.proxy(this.blockPrivate, this) ); //Check
this.viewUsers.bind('allowPrivateMessage', $.proxy(this.allowPrivate, this) ); //Check
this.viewUsers.bind('mainListClick', $.proxy(this.mainListClick, this) ); //Check
this.viewUsers.bind('privateListClick', $.proxy(this.privateListClick, this) ); //Check
this.viewUsers.bind('clickAnchor', $.proxy(this.clickAnchor, this) ); //Check
this.viewUsers.render();
this.viewDiscussion.show();
return this;
}
});*/
NodeChatController.prototype.inlineAlert = function(text) {
for(var i in text.split('\n')) {
this.viewDiscussion.chatUL.append('<li class="inline-alert">' + text.split('\n')[i] + '</li>');
}
this.viewDiscussion.scrollToBottom();
}
function FlashTitle() {
if(document.getElementsByTagName('title')[0].innerHTML == window.titleorig) {
document.getElementsByTagName('title')[0].innerHTML = i18n['activity'].replace(/\$1/g, wgSiteName);
}
else {
document.getElementsByTagName('title')[0].innerHTML = window.titleorig;
}
}
function Preparse(input) { //Parse slash commands.
if(input.charAt(0) == '/') {
var com = input.split(' ');
com[0] = com[0].substring(1, com[0].length);
var ref = '.' + com[0].toLowerCase();
if(window.commands[com[0].toLowerCase()] == undefined) {return;}
while(typeof eval('window.commands' + ref) != 'function') {
if(typeof eval('window.commands' + ref) == 'string') {
ref = ref.substring(0, ref.lastIndexOf('.')) + '.' + eval('window.commands' + ref).toLowerCase();
continue;
}
if(typeof eval('window.commands' + ref) == 'object') {
if(!com[1]) {
if(typeof eval('window.commands' + ref).default == 'function') {eval('window.commands' + ref).default.call(this, '', chat);}
return;
}
if(eval('window.commands' + ref)[com[1].toLowerCase()]) {ref += '.' + com[1].toLowerCase();}
else if(eval('window.commands' + ref).default) {
ref += '.default';
if(typeof eval('window.commands' + ref) == 'function') {break;}
}
else {return;}
com = com.slice(1, com.length);
continue;
}
}
com = com.slice(1, com.length);
return eval('window.commands' + ref).call(this, com.join(' '), input);
}
else {return true;}
}
window.commands = {
'away': 'afk',
'afk': function(com, text) {
if($('#ChatHeader .User').hasClass('away') == false) {toggleAway();} //if you're away, hitting enter has already sent you back
},
'clear': function(com, text) { //Clear the active chat window
this.clearWindow();
},
'me': function(com, text) { //Emote
if(com) {$('#Write [name="message"]').val('* ' + wgUserName + ' ' + com);}
else {$('#Write [name="message"]').val('* ' + wgUserName);}
return true;
},
'nc': function(com, text) { //Nobody cares
$('#Write [name="message"]').val('[[' + i18n['uncyc'] + '|' + (com ? com : i18n['nobodycares']) + ']]');
return true;
},
'devoice': function(com, text) { //IRCpwnt
$('#Write [name="message"]').val('* ChanServ set channel mode -v ' + (com ? com : wgUserName));
return true;
},
'coppa': function(com, text) { //Too young
if(com) {$('#Write [name="message"]').val('http://coppa.org ' + com);}
else {$('#Write [name="message"]').val('http://coppa.org ' + i18n['coppa']);}
return true;
},
'silence': function(com, text) { //Idle
$('#Write [name="message"]').val('People idle, enjoy the silence. http://www.youtube.com/watch?v=diT3FvDHMyo');
return true;
},
'kick': 'kickban',
'ban': 'kickban',
'kb': 'kickban',
'kickban': function(com, text) { //Kickban a user
if(com) {
var mod = new models.KickBanCommand({userToBan: com});
this.socket.send(mod.xport());
}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'unban': function(com, text) { //Unban a user
if(com) {
api.newQuery(POST, 'action=userrights&user=' + com + '&remove=bannedfromchat', function(result) {
if(result.userrights.removed[0] == 'bannedfromchat') {
this.inlineAlert(i18n['unbanned'].replace(/\$1/g, com));
}
else {
this.inlineAlert(i18n['notbanned'].replace(/\$1/g, com));
}
});
api.send(0, true);
}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'mod': function(com, text) { //Make a user a mod
if(com) {
var giveChatModCommand = new models.GiveChatModCommand({userToPromote: com});
this.socket.send(giveChatModCommand.xport());
}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'demod': function(com, text) { //Remove a user's mod right
if(com) {
api.newQuery(POST, 'action=userrights&user=' + com + '&remove=chatmoderator', function(result) {
if(result.userrights.removed[0] == 'chatmoderator') {
this.inlineAlert(i18n['demodded'].replace(/\$1/g, com));
}
else {
this.inlineAlert(i18n['notmod'].replace(/\$1/g, com));
}
});
api.send(0, true);
}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'block': function(com, text) { //Block a user from private chatting you
if(com) {this.blockPrivate({name: com});}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'unblock': function(com, text) { //Unblock a user from private chatting you - should merge this into a toggle
if(com) {this.allowPrivate({name: com});}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
'chat': 'private',
'room': 'private',
'private': function(com, text) { //Invoke a private room
if(com) {
var arr = com.split('#');
for(var i in arr) {array[i] = arr[i].removeTrailing(' ');}
mainRoom.openPrivateChat(arr);
}
else {this.inlineAlert(i18n['erruser'].replace(/\$1/g, text.split(' ')[0]));}
},
/*'enter': 'join',
'join': function(com, text) { //Now for a command with chutzpah - join any chat on Wikia
//Need to fix this so that joined rooms can be selected
if(com) {
var data = new models.OpenPrivateRoom({roomId: com});
mainRoom.baseOpenPrivateRoom(data, true);
$('.private').before('<h1 id="Room_' + com + '" class="public wordmark" onclick="mainRoom.showRoom(' + com + ')"><span class="font-">' + com + '</span><span id="MsgCount_' + com + '" class="splotch">0</span></h1>');
mainRoom.showRoom(com);
mainRoom.chats.privates[com].init();
}
else {this.inlineAlert(i18n['errroom'].replace(/\$1/g, text.split(' ')[0]));}
},
'leave': 'part',
'part': function(com, text) { //Leave the room you're looking at, or the room you specify
if(!com) {var id = this.roomId; var chat = this;}
else {var id = com; var chat = mainRoom.chats.privates[com];}
$('#Room_' + id).remove();
chat.socket.autoReconnect = false;
chat.socket.socket.disconnect();
if(!com) {mainRoom.show('main');}
},*/
'roomid': 'id',
'id': function(com, text) {
this.inlineAlert(i18n['id'] + ': ' + this.roomId);
},
'self': function(com, text) { //Send a message to yourself
if(com) {
newstr = '';
for(var i = 0; i < com.length; i++) {
switch(com.charAt(i)) {
case '[':
if(com.charAt(i + 1) == '[') {
var k = com.indexOf(']', i);
if(com.charAt(k + 1) == ']') {
var substr = com.substring(i + 2, k);
if(substr.indexOf('|') != -1) {
var link = substr.substring(0, substr.indexOf('|'));
var linktext = substr.substring(substr.indexOf('|') + 1, substr.length);
}
else {
var link = substr;
var linktext = link;
}
var linkspl = link.split(' ');
link = '';
for(var j in linkspl) {link += linkspl[j] + '_';}
link = link.substring(0, link.length - 1);
newstr += '<a href="/wiki/' + link + '">' + linktext + '</a>';
i = k + 1;
}
}
else if(com.substring(i + 1, i + 8) == 'http://') {
var k = com.indexOf(']', i);
var splstr = com.substring(i + 1, k).split(' ');
if(splstr == com.substring(i + 1, k)) {
var linktext = '[1]';
}
else {
var linktext = build(splstr, 1);
}
newstr += '<a href="' + splstr[0] + '">' + linktext + '</a>';
i = k;
}
break;
default:
newstr += com.charAt(i);
break;
}
}
this.viewDiscussion.chatUL.append('<li><img class="avatar" src="' + $('#ChatHeader .User img').attr('src') + '"><span class="username">' + wgUserName + '</span><span class="message" style="color:#999;"> (' + i18n['self'] + ') ' + newstr + '</span></li>');
}
else {
this.viewDiscussion.chatUL.append('<li><img class="avatar" src="' + $('#ChatHeader .User img').attr('src') + '"><span class="username">' + wgUserName + '</span><span class="message" style="color:#999;"> (' + i18n['self'] + ')</span></li>');
}
this.viewDiscussion.scrollToBottom();
},
'help': function(com, text) {
if(com) {
var ref = com.replace(/ /g, '.');
var str = '';
var subcoms = [];
var subdirs = [];
while(typeof eval('window.commands.' + ref) == 'string') {ref.substring(0, ref.lastIndexOf('.')) + '.' + eval('window.commands' + ref).toLowerCase();}
var command = eval('window.commands.' + ref);
if(i18n['help-' + ref]) {str += i18n['help'].replace(/\$1/g, ref.replace(/\./g, ' ')).replace(/\$2/g, i18n['help-' + ref].replace(/\$1/g, i18n['example']).replace(/\$1/g, i18n['exampleuser']));}
if(typeof command == 'object') {
for(var i in command) {
if(typeof command[i] == 'function') {subcoms.push(i);}
if(typeof command[i] == 'object') {subdirs.push(i);}
}
}
if(subcoms.length > 0) {str += '\n' + i18n['subcoms'] + ': ' + subcoms.join(', ');}
if(subdirs.length > 0) {str += '\n' + i18n['subdirs'] + ': ' + subdirs.join(', ');}
str = str.removeTrailing('\n');
if(str != '') {this.inlineAlert(str);}
else {this.inlineAlert(i18n['nohelp'].replace(/\$1/g, command));}
}
else {
var str = [];
for(var i in window.commands) {
if(typeof window.commands[i] == 'function' || typeof window.commands[i] == 'object') {str.push(i);}
}
this.inlineAlert(i18n['commands'].replace(/\$1/g, str.join(', ')));
}
}
};
//Parser helping function - takes an array of text created with .split(' '),
//and an index number for where to start, then rebuilds the string.
//Can also accept an index value for where to stop.
function build(text, index, stop) {
var newtext = '';
if(stop == undefined || stop == 0) {stop = text.length}
else if(stop < 0) {stop += text.length}
if(index == stop || index == text.length - 1) {return text[index];}
for(var i = index; i < stop; i++) {
newtext += text[i] + ' ';
}
return newtext;
}
function toggleAway(msg) {
if(!msg) {var msg = '';}
if($('#ChatHeader .User').hasClass('away') == true) {
mainRoom.setBack();
}
else {
mainRoom.setAway(msg);
}
}
toggleAway.back = function() { //Force back status
if($('#ChatHeader .User').hasClass('away') == true) {mainRoom.setBack();}
}
toggleAway.away = function(msg) { //Force away status
if(!msg) {var msg = '';}
if($('#ChatHeader .User').hasClass('away') == false) {mainRoom.setAway(msg);}
}
NodeChatController.prototype.clearWindow = function() {
this.viewDiscussion.chatUL.html('');
this.inlineAlert(i18n['cleared']);
}
function active() { //Returns the NodeChatController for the active window
if(mainRoom.activeRoom && mainRoom.activeRoom != 'main') {return mainRoom.chats.privates[mainRoom.activeRoom];}
else {return mainRoom;}
}
String.prototype.removeTrailing = function(char) { //Remove extraneous characters
var str = this;
while(str.charAt(0) == char) {str = str.substring(1, str.length);}
while(str.charAt(str.length - 1) == char) {str = str.substring(0, str.length - 1);}
return str;
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
$(function () {
if(!importScriptURI) {function importScriptURI(a){var b=document.createElement("script");b.setAttribute("src",a);b.setAttribute("type","text/javascript");document.getElementsByTagName("head")[0].appendChild(b);return b}}
importScriptURI('http://c.wikia.com/index.php?title=User:Monchoman45/ChatHacks.js/i18n.js&action=raw&ctype=text/javascript');
importScriptURI('http://monchbox.wikia.com/index.php?title=MediaWiki:APIQuery.js&action=raw&ctype=text/javascript'); //APIQuery for /unban
$('head').append('<style type="text/css">\n.stafficon {\n\tmargin-bottom:-4px;\n\twidth:14px;\n\theight:14px;\n}\n.modicon {\n\tmargin-bottom:-3px;\n\twidth:14px;\n\theight:14px;\n}\n.UserStatsMenu {\n\tcolor:#000;\n}\n.Write [name="message"] {\n\twidth:93%;\n}\n.inline-alert span {\n\tcolor:#006CB0;\n\tcursor:pointer;\n}\n.inline-alert span:hover {\n\ttext-decoration:underline;\n}\n#pingspan {\n\tposition:absolute;\n\tz-index:5;\n\ttop:23px;\n\tmargin-left:15px;\n\tfont-size:15px;\n\tfont-weight:normal;\n\tline-height:15px;\n}\n#pings {\n\tresize:none;\n\tmargin-left:0;\n\tfont-size:12px;\n\theight:100px;\n\tdisplay:block;\n}\n#pingspan div span {\n\tfont-size:55%;\n}\n#ChatHeader {\n\tz-index:9999;\n}\n#ChatHeader {\n\tz-index:9999;\n}\n</style>');
//Unbind all of the window listeners that set your status to back
$(window).unbind('mousemove').unbind('focus').unbind('keypress');
//Add the sound space
$('body').append('<span id="sound" style="display:none;"></span>');
});
}
else {
$(function () {
var a = document.getElementsByTagName('a');
for(var i = 0; i < a.length; i++) {
if(a[i].href && a[i].href.indexOf('/wiki/Special:Chat') != -1) {
a[i].onclick = function(event) {event.preventDefault(); OpenChatWindow();}
}
}
if(document.body.className.indexOf('skin-oasis') != -1) {window.chatcheck = setInterval('ChatCheck()', 200);}
});
function ChatCheck() {
if($('.chat-join button').length != 0) {
$('.chat-join button').replaceWith('<a class="wikia-button" onclick="OpenChatWindow()">' + $('.chat-join button').html() + '</a>');
clearInterval(window.chatcheck);
}
}
function OpenChatWindow() {
window.chatwindow = window.open('/wiki/Special:Chat?useskin=wikia', 'chat');
window.chatwindow.onload = function () {
window.chatwindow.importScriptPage('User:' + wgUserName + '/global.js', 'c');
window.chatwindow.importScript('User:' + wgUserName + '/wikia.js');
}
}
}