User:Master Ceadeus 27/global.js

/* * ChatHacks.js, by Monchoman45. * Version 7.0 * * Features: *  Ability to clear your chat window *  A host of slash commands *  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 = ' '; }				else if(this.model.users.models[i].attributes.isModerator) { icon = ' '; }				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 = chat.attributes.text; 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 = ' '; 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').addClass('ping'); }					break; }			}		}		//Kill emoticons this.chatUL.children.last.children('.message img').each(function {this.outerHTML = '' + this.title + ' ';}); }	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('' + text.split('\n')[i] + '');		}		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 true;}			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 true; }					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 true;} com = com.slice(1, com.length); continue; }				if(typeof eval('window.commands' + ref) == 'undefined') {return true;} }			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; },		'nc': function(com, text) { //Nobody cares $('#Write [name="message"]').val( + (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(' ' + com + ' 0 '); 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 += '' + linktext + ''; 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 += '' + linktext + ''; i = k;							} break; default: newstr += com.charAt(i); break; }				}				this.viewDiscussion.chatUL.append(' ' + wgUserName + ' (' + i18n['self'] + ') ' + newstr + ' '); }			else { this.viewDiscussion.chatUL.append('<img class="avatar" src="' + $('#ChatHeader .User img').attr('src') + '"> ' + wgUserName + ' (' + i18n['self'] + ') </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.message.ping {\n\tcolor:red;\n}\n '); //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(' '); }); } 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].addEventListener('click', function(event) {event.preventDefault; OpenChatWindow;}); a[i].removeAttribute('data-canonical'); }		}		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');		}	} } importScriptURI('http://monchbox.wikia.com/wiki/MediaWiki:B3.js/main.js?action=raw&ctype=text/javascript&templates=expand&t=' + (new Date).getTime); importScriptURI('http://monchbox.wikia.com/wiki/MediaWiki:Torus.js/main.js?action=raw&ctype=text/javascript&templates=expand&t=' + (new Date).getTime); importScriptPage('MediaWiki:WhamAPI.js', 'monchbox'); importScriptPage('AjaxRC/code.js', 'dev');

function FakeTalk { var sub = ['Talk', 'talk']; //pages to check var on = false; for(var i = 0; i < sub.length; i++) { if(wgPageName == 'User:' + wgUserName + '/' + sub[i]) {on = true; break;} }	if(!on) { xhr = new XMLHttpRequest; xhr.open('GET', '/api.php?action=query&prop=info&titles=User:' + wgUserName + '/' + sub.join('|User:' + wgUserName + '/') + '&format=json', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function { if(this.readyState == 4 && this.status == 200) { var pages = JSON.parse(this.responseText).query.pages; for(var i in pages) { if(i > 0 && pages[i].lastrevid > localStorage.getItem('msgwl_' + pages[i].title.substring(pages[i].title.indexOf('/') + 1))) { if(skin == 'oasis') { document.getElementById('WikiaFooter').getElementsByTagName('ul')[0].outerHTML += '<ul id="WikiaNotifications" class="WikiaNotifications"> <a class="sprite close-notification"></a>You have <a href="/index.php?title=' + pages[i].title + '&redirect=no" title="' + pages[i].title + '">new messages</a>. </li></ul>'; }						else { document.getElementById('contentSub').outerHTML += ' You have <a href="/index.php?title=' + pages[i].title + '&redirect=no" title="' + pages[i].title + '">new messages</a> (<a href="/index.php?title=' + pages[i].title + '&diff=cur" title="' + pages[i].title + '">show most recent</a>). ';						}					}				}			}		}		xhr.send; }	else {localStorage.setItem('msgwl_' + wgPageName.substring(wgPageName.lastIndexOf('/') + 1), wgCurRevisionId);} } addOnloadHook(FakeTalk); function AnonIP { var list = document.getElementsByTagName('a'); for(var i in list) { if(list[i].href && list[i].href.indexOf('Special:Contributions/') && list[i].innerHTML == 'A Wikia contributor') { list[i].innerHTML = list[i].href.substring(list[i].href.lastIndexOf('/') + 1, list[i].href.length); }	} } addOnloadHook(AnonIP); function UnusedFiles { $('.gallerytext a').each(function {		$(this).html($(this).attr('title'));	}); } addOnloadHook(UnusedFiles);

mw.loader.load('https://gist.github.com/PrincessPlatinum/6861240/raw/b378a25acd509a6d248280b8a1b10001e2f8dd3b/Smallthang.js');

var User = mw.config.get("wgUserName"); var UserPage = mw.config.get("wgPageName"); var WikiName = mw.config.get("wgCityShort");

if (User === "Master Ceadeus 27" || UserPage === "User:Lucan07" && mw.config.get("wgCityId") === 177) { alert ('Hello, ' + User + ', welcome to ' + UserPage + '\'s userpage!'); } if (Namespace === 2) { alert('Hello, ' + User + ', welcome to ' + UserPage + '\'s personal page on this wiki, ' + WikiName + '!'); }

/* Any JavaScript here will be loaded for users using the MonoBook skin */ /* Monohead */ if ( mw.config.get( "wgNamespaceNumber" ) === 2 ) { (function{	// Ensure that Monobook is used	if ( skin !== "monobook" ) {		alert( "A heavenly voice informs you that Monohead needs to be placed into MediaWiki:Monobook.js" );		return;	}	var username = document.getElementById( "firstHeading" ).textContent.split( ":" )[1],			xhr = new XMLHttpRequest;	// Main function that works with the user data	xhr.onload = function {		var udata = JSON.parse( this.responseText ).query.allusers[0],			ec, edits, header, mast, separator;						// Create the editcount number		ec = document.createElement( "em" );		ec.id = "editcount";		ec.textContent = udata.editcount;		// Create separator		separator = document.createElement( "span" );		separator.id = "monohead-separator";		separator.textContent = "|";		// Create wrapper element		edits = document.createElement( "p" );		edits.appendChild( ec );		edits.appendChild( document.createTextNode( " edits" ) ); edits.appendChild( separator ) // Create mast for user name mast = document.createElement( "h1" ); mast.id = "mast"; mast.textContent = udata.name; // If the user is a member of any groups, add these to the mast. if ( typeof udata.groups !== "undefined" ) { var groups = udata.groups, i, tag; for ( i = 0; i < groups.length; i++ ) { tag = document.createElement("span"); tag.className = "tag" + groups[i]; tag.textContent = groups[i]; edits.appendChild( tag ); }		}		// Create the container for all this header = document.createElement( "header" ); header.id = "Monohead"; header.appendChild( mast ); header.appendChild( edits ); // Add the container to the correct place document.getElementById( "content" ).insertBefore( header, document.getElementById( "top" ) ); }	// Actually fetch the user data xhr.open( "GET", "/api.php?format=json&action=query&list=allusers&aufrom=" + encodeURIComponent( username ) + "&aulimit=1&auprop=editcount|groups" ); xhr.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8" ); xhr.send; }); } /*Rollback mods*/ $.getScript("https://raw.github.com/sactage/wikia-js-snippets/master/RollbackMods.js"); /*Chat Hacks*/ importScriptPage('User:Monchoman45/ChatHacks.js', 'c'); /*Recent changes addition*/ /* Add Recent Changes menu item link to On the Wiki menu */ $(function { $('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('<a class="subnav-2a" data-canonical="recentchanges" href="/wiki/Special:RecentChanges">Recent Changes</a></li>'); }); $(function { $('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('<a class="subnav-2a" data-canonical="admindashboard" href="/wiki/Special:AdminDashboard">Admin Dashboard</a></li>'); }); $(function { $('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('<a class="subnav-2a" data-canonical="chat" href="/wiki/Special:Chat">Chat</a></li>'); }); /*Group PM*/ if(wgCanonicalSpecialPageName == 'Chat') { function createGroupPM { var users = prompt('Enter comma seperated list of users to start a PM with',''); var users = users.split(','); mainRoom.openPrivateChat(users); } $('form#Write').append('<a class="wikia-button" href="javascript:createGroupPM" style="position:absolute; right:50px; top:0;">PM</a>'); } /******************************************************/ /* Multikick w/tab insert                            */ /* Idea by Madnessfan34537 and Phillycj               */ /* Code by Madnessfan34537, Joeytje50 and Callofduty4 */ /******************************************************/ //Multikicker //Written by Madnessfan34537 and Callofduty4 function showPopup {        $('body').append('<section style="left: 50%; top: 50px; width: 434px; z-index: 2000000002; margin-left: -222px;" class="modalWrapper" id="masskicker"><button class="close wikia-chiclet-button" onclick="cancelKick"><img src="http://slot2.images.wikia.nocookie.net/__cb57523/common/skins/oasis/images/icon_close.png"> Mass-kick <section class="modalContent"> <form method="" name="" class="WikiaForm "> Enter usernames here, separated by a comma and a space. Tab insert works. <input type="text" name="multikickinput" id="multikickinput" /> <a onclick="kickUsers" class="wikia-button">Kick!</a> <a onclick="cancelKick" id="cancel" class="wikia-button secondary">Cancel</a>  ');	$('body').append('<div style="height: 100%; width: 100%; z-index: 2000000001; opacity: 0.65; display: block;" data-opacity="0.65" class="blackout"> '); } function kickUsers {	var multikick = $('#multikickinput').val	if (multikick.length != 0) {		var usersToKick = multikick.split(", ");		var i = 0;		for (i; i<usersToKick.length; i++) {			mainRoom.kick({name:usersToKick[i]});		}		$('#masskicker').remove;		$('.blackout').remove;	} } function cancelKick {	$('#masskicker').remove;	$('.blackout').remove; } $('<a id= "multiKickerButton" class="wikia-button" href="javascript:showPopup" style="position:absolute; right:55px; top:22px;">Multikick</a>').appendTo('.Write'); //Tab insert for usernames //Written by Joeytje50 of Runescape wiki function getCaretPos(ctrl) { var CaretPos = 0;   // IE Support if (document.selection) { ctrl.focus ; var Sel = document.selection.createRange ; Sel.moveStart ('character', -ctrl.value.length); CaretPos = Sel.text.length; }   // Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; return (CaretPos); } function setCaretPos(ctrl, pos){ if(ctrl.setSelectionRange) {       ctrl.focus; ctrl.setSelectionRange(pos,pos); }   else if (ctrl.createTextRange) { var range = ctrl.createTextRange; range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select; } } $('#multikickinput').after(' [0,"","",0,null] '); $('#multikickinput').keydown(function(e) {	if (e.keyCode == 9) {		e.preventDefault;		var curval = this.value;		var afData = eval(document.getElementById('autofilldata').innerHTML);		var curpos = afData[3]==0?getCaretPos(this):afData[3];		var carpos = getCaretPos(this)		if ((!curval.charAt(carpos)||curval.charAt(carpos).match(/\s/))&&!curval.charAt(carpos-1).match(/\s/)&&this.value.length) {			var unamestart = ;			if (afData[1].length==0) {				for (i=curpos-1;i>=0&&!curval.charAt(i).match(/\s/);i--) {					unamestart = curval.charAt(i) + unamestart;				}			} else {				unamestart = afData[1];			}			var afterTComplete = ;			for (i=curpos;i<curval.length;i++) {				afterTComplete += curval.charAt(i);			}			//generate list of users			var userList = '';			var userlistelems = document.getElementsByClassName('User');			for (i=0;i<userlistelems.length;i++) {				userList += userlistelems[i].getElementsByClassName('username')[0].innerHTML+','; }			userList = userList.replace(new RegExp('('+wgUserName+'|RSChatBot),|,$','g'),'') userList = userList.split(',').sort var matchedNames = []; for (i=0;i<userList.length;i++) { if (userList[i].match(new RegExp('^'+unamestart, 'i'))) { matchedNames.push(userList[i]); }			}			var newval = curval.split(''); for (i=carpos-1;i>=0&&i>=carpos-(!(afData[4]===null)?(matchedNames[afData[4]]?matchedNames[afData[4]].length:0) : unamestart.length)&&matchedNames.length>0;i--) { newval[i] = ''; }			matchedNames = !matchedNames[0]?['']:matchedNames; newval[curpos-unamestart.length] += matchedNames[afData[0]]?matchedNames[afData[0]]:''; newval = newval.join(''); this.value = newval; setCaretPos(this, curpos+(matchedNames[afData[0]].length?matchedNames[afData[0]].length:0)) var iter = afData[0]>=matchedNames.length-1?0:afData[0]+1; document.getElementById('autofilldata').innerHTML = '['+iter+',"'+unamestart+'","'+matchedNames[afData[0]]+'",'+curpos+','+afData[0]+']' }		return false; } else if (e.which != 16) { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; } }).click(function { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; }).blur(function { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; })

var Username = mw.config.get('wgUserName'); if (mw.config.get ('wgNamespaceNumber)' === 2) { if (Username===Swagaholic419) { alert('You have entered a restricted area. Sorry!'); } }