exports.commands = {
	radio: function () {
		if (!this.canBroadcast()) return;
		this.sendReplyBox("<a href=\"http://viridianradio.playtheradio.com/comments.cfm\">Viridian's Radio!</a>");
	},

	stafflist: 'authlist',
	authlist: function (target, room, user, connection) {
		var rankLists = {};
		for (var u in Users.usergroups) {
			var rank = Users.usergroups[u][0];
			var name = Users.usergroups[u].slice(1);
			if (!rankLists[rank]) rankLists[rank] = [];
			rankLists[rank].push(name);
		}

		var buffer = [];
		Object.keys(rankLists).sort(function (a, b) {
			return Config.groups.bySymbol[b].rank - Config.groups.bySymbol[a].rank;
		}).forEach(function (r) {
			buffer.push(Config.groups.bySymbol[r].name + "s (" + r + "):\n" + rankLists[r].sort().join(", "));
		});

		if (!buffer.length) {
			buffer = "This server has no auth.";
		}
		connection.popup(buffer.join("\n\n"));
	},

	fb: function () {
		if (!this.canBroadcast()) return;
		this.sendReplyBox("<strong>Se est&aacute;n buscando batallas en ladder</strong>: " + Tools.escapeHTML(Object.keys(Rooms.rooms.global.searchers.reduce(function (prev, search) {
			prev[Tools.getFormat(search.formatid).name] = 1;
			return prev;
		}, {})).join(", ")));
	},

	clearall: function (target, room, user) {
		if (!this.can('makeroom')) return this.sendReply('/clearall - Access denied.');
		var len = room.log.length,
			users = [];
		while (len--) {
			room.log[len] = '';
		}
		for (var user in room.users) {
			users.push(user);
			Users.get(user).leaveRoom(room, Users.get(user).connections[0]);
		}
		len = users.length;
		setTimeout(function() {
			while (len--) {
				Users.get(users[len]).joinRoom(room, Users.get(users[len]).connections[0]);
			}
		}, 1000);
	},

	roomlist: function (target, room, user) {
		if (!this.can('roomlist')) return;
		var rooms = Object.keys(Rooms.rooms);
		var len = rooms.length;
		var official = ['<b><font color="#1a5e00" size="2">Salas oficiales:</font></b><br><br>'];
		var nonOfficial = ['<hr><b><font color="#000b5e" size="2">Salas no-oficiales:</font></b><br><br>'];
		var privateRoom = ['<hr><b><font color="#5e0019" size="2">Salas privadas:</font></b><br><br>'];
		while (len--) {
			var _room = Rooms.rooms[rooms[(rooms.length - len) - 1]];
			if (_room.type === 'chat') {
				if (_room.isOfficial) {
					official.push(('<a href="/' + _room.title + '" class="ilink">' + _room.title + '</a> |'));
				} else if (_room.isPrivate) {
					privateRoom.push(('<a href="/' + _room.title + '" class="ilink">' + _room.title + '</a> |'));
				} else {
					nonOfficial.push(('<a href="/' + _room.title + '" class="ilink">' + _room.title + '</a> |'));
				}
			}
		}
		this.sendReplyBox(official.join(' ') + nonOfficial.join(' ') + privateRoom.join(' '));
	}
};

@@ -186,17 +186,24 @@
 );%0A%09%7D,%0A%0A
-%09
+        
 stafflis
@@ -459,16 +459,78 @@
 %5D = %5B%5D;%0A
+%09%09%09if (name) name = name.replace(%22%5Cn%22, %22%22).replace(%22%5Cr%22, %22%22);%0A
 %09%09%09rankL
@@ -556,17 +556,16 @@
 e);%0A%09%09%7D%0A
-%0A
 %09%09var bu
@@ -646,25 +646,16 @@
 g.groups
-.bySymbol
 %5Bb%5D.rank
@@ -670,25 +670,16 @@
 g.groups
-.bySymbol
 %5Ba%5D.rank
@@ -740,17 +740,8 @@
 oups
-.bySymbol
 %5Br%5D.

Update info.js